├── .browserslistrc ├── .eslintrc.js ├── .gitignore ├── .project ├── README.md ├── babel.config.js ├── deploy.sh ├── docs ├── index.html └── static │ ├── css │ ├── app.3e300ac023f7de29ca8c672a9ac6c5b2.css │ └── app.3e300ac023f7de29ca8c672a9ac6c5b2.css.map │ ├── fonts │ ├── glyphicons-halflings-regular.68ed1da.woff │ ├── glyphicons-halflings-regular.7ad17c6.eot │ ├── glyphicons-halflings-regular.e49d52e.ttf │ ├── iconfont.03830fc.eot │ └── iconfont.06371d9.ttf │ ├── img │ ├── bg-1.566f420.jpg │ ├── bg-2.766012f.jpg │ ├── bg-3.2e8da71.jpg │ ├── glyphicons-halflings-regular.ff423a4.svg │ ├── iconfont.c936c87.svg │ ├── title.9c81a4f.png │ ├── true.3957df7.png │ └── yyx.png │ └── js │ ├── app.83e47e9611d6a5f61c43.js │ ├── app.83e47e9611d6a5f61c43.js.map │ ├── manifest.3ad1d5771e9b13dbdad2.js │ ├── manifest.3ad1d5771e9b13dbdad2.js.map │ ├── vendor.6db303e2020005647cc1.js │ └── vendor.6db303e2020005647cc1.js.map ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── favicon.ico └── index.html ├── src ├── App.vue ├── assets │ ├── bg-1.jpg │ ├── bg-2.jpg │ ├── bg-3.jpg │ ├── css │ │ └── global.scss │ ├── data │ │ ├── line.png │ │ ├── line1.png │ │ ├── logo.png │ │ ├── mintitle.png │ │ ├── mintitle_1.png │ │ ├── t_1.png │ │ ├── t_2.png │ │ ├── t_3.png │ │ ├── t_4.png │ │ ├── t_5.png │ │ ├── t_6.png │ │ ├── t_7.png │ │ ├── title.png │ │ └── true.png │ └── iconfont │ │ ├── iconfont.css │ │ ├── iconfont.eot │ │ ├── iconfont.js │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ └── iconfont.woff ├── components │ ├── bg │ │ └── index.vue │ ├── databox │ │ ├── index.scss │ │ └── index.vue │ ├── foot │ │ └── index.vue │ ├── github │ │ ├── index.js │ │ └── src │ │ │ └── github.vue │ ├── header │ │ ├── index.scss │ │ ├── index.vue │ │ └── navbar │ │ │ ├── index.vue │ │ │ └── navbar.scss │ ├── icon │ │ ├── index.js │ │ └── src │ │ │ └── icon.vue │ ├── index.js │ ├── loading │ │ └── index.vue │ ├── nodata │ │ └── index.vue │ ├── nouser │ │ └── index.vue │ ├── particles │ │ └── index.vue │ └── topnav │ │ └── index.vue ├── lang │ ├── en.js │ ├── index.js │ └── zh.js ├── main.js ├── router.js ├── store.js └── views │ ├── app │ ├── index.vue │ └── pmodal.vue │ └── data │ ├── dcontent │ ├── dnumber │ │ └── index.vue │ ├── index.vue │ └── myevent │ │ └── index.vue │ ├── dheader │ └── index.vue │ ├── dleft │ ├── index.vue │ └── personal │ │ ├── index.scss │ │ └── index.vue │ ├── dright │ ├── follower.vue │ ├── index.vue │ └── message.vue │ ├── index.vue │ └── test │ └── data.js ├── tests └── unit │ ├── .eslintrc.js │ └── example.spec.js ├── vue.config.js └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | extends: ["plugin:vue/essential", "@vue/prettier"], 7 | rules: { 8 | "no-console": process.env.NODE_ENV === "production" ? "error" : "off", 9 | "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off" 10 | }, 11 | parserOptions: { 12 | parser: "babel-eslint" 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | git-datav 4 | 5 | 6 | 7 | 8 | 9 | com.aptana.ide.core.unifiedBuilder 10 | 11 | 12 | 13 | 14 | 15 | com.aptana.projects.webnature 16 | 17 | 18 | 19 | 1557396748817 20 | 21 | 26 22 | 23 | org.eclipse.ui.ide.multiFilter 24 | 1.0-name-matches-false-false-node_modules 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GitDataV 2 | 3 | GitDataV,是一个github“大数据可视化平台”,通过它你可以更直观的看到你在github里的一些数据: 4 | 个人信息(✔),仓库stars情况(✔),仓库语言分类(✔) 5 | 仓库公开数量(✔)、粉丝数量(✔)、跟随数量(✔)、仓库数据(✔)、最近你的操作(✔) 6 | 最近的粉丝(✔)、最近的跟随(✔)、最新信息(✔) 7 | 左上角箭头小彩蛋: 全屏(✔)、 国际化语言切换(✔)、返回首页(✔)、皮肤切换(开发中..) 8 | 9 | 10 | [GitDataV在线演示使用](https://hongqingcao.github.io/GitDataV/) 11 | 12 | (ps:在线演示为dev.1.0版本,更多功能,可切换dev.2.0或者master分支clone本地运行) 13 | 14 | ###### ![实例效果](https://user-gold-cdn.xitu.io/2018/8/24/1656c59629551995?w=1954&h=934&f=gif&s=3919397) 15 | ###### ![实例效果](https://user-gold-cdn.xitu.io/2019/7/9/16bd4cd0238a41ba?w=1897&h=940&f=png&s=494477) 16 | 17 | ### 开发日志 18 | 19 | - [2018-09 DEV1.0](https://github.com/HongqingCao/GitDataV/tree/dev1.0) 20 | - [2019-05 DEV2.0 重构](https://github.com/HongqingCao/GitDataV/tree/dev2.0) 21 | - [2019-08 DEV2.0 添加数字滚动效果](https://github.com/HongqingCao/GitDataV/tree/dev2.0) 22 | 23 | ## 构建和设置 24 | 25 | ``` bash 26 | # install dependencies 27 | npm install 28 | 29 | # serve with hot reload at localhost:8080 30 | npm run dev 31 | 32 | # build for production with minification 33 | npm run build 34 | 35 | # build for production and view the bundle analyzer report 36 | npm run build --report 37 | 38 | # run unit tests 39 | npm run unit 40 | 41 | # run all tests 42 | npm test 43 | ``` 44 | 45 | 46 | ## 项目目录结构 47 | 48 | ``` bash 49 | ├── README.md 项目介绍 50 | ├── vue.config.js 项目配置 51 | ├── deploy.sh 部署文件 52 | ├── package.json npm包配置文件,里面定义了项目的npm脚本,依赖包等信息 53 | ├── src 源码目录 54 | │ ├── main.js 入口js文件 55 | │ ├── router.js 路由 56 | │ ├── store.js vuex状态 57 | │ ├── app.vue 根组件 58 | │ ├── components 公共组件目录 59 | │ │ └── index.js 把全部组件遍历出来 60 | │ ├── lang 语言切换字典 61 | │ │ └── index.js 语言切换字典 62 | │ ├── assets 资源目录,这里的资源会被wabpack构建 63 | │ │ └── css css基础重置 64 | │ │ └── data 可视化界面需要的图片 65 | │ │ └── iconfont 字体图标 66 | │ │ └── bg.png 67 | │ └── views 页面目录 68 | │ ├── app 入口文件 69 | │ └── data 可视化文件 70 | ├── static 纯静态资源,不会被wabpack构建。 71 | ``` 72 | 73 | ## 相关链接 74 | - [《用Vue构建一个github“可视化大数据平台”-GitDataV,设计开发分享》(掘金)](https://juejin.im/post/5b7f6cd46fb9a019f709b17b) 75 | 76 | ## 技术点 77 | - vue(vue项目构建、指令的灵活运用、组件封装、组件之间通信) 78 | - vue-router(路由预备知识:hash和history区别、动态路由、路由切换传参) 79 | - vuex、vue-i18n(语言切换) 80 | - 网络请求axios(自己封装axios、跨域代理配置) 81 | - 可视化工具echarts、v-charts处理图形(控制大小、布局、颜色、接受数据格式) 82 | - es6(基础语法,比如在梳理数据过程中用到map遍历数组、对象和数组转换等等) 83 | - scss(配置、语法) 84 | - bootstrap、iconfont(用于没有设计师,作为前端设计能力有限,所以引用这两个) 85 | 86 | ## License 87 | 88 | MIT -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/app"] 3 | }; 4 | -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 当发生错误时中止脚本 4 | set -e 5 | 6 | # 构建 7 | npm run build 8 | 9 | # cd 到构建输出的目录下 10 | cd dist 11 | 12 | # 部署到自定义域域名 13 | # echo 'www.example.com' > CNAME 14 | 15 | git init 16 | git add -A 17 | git commit -m 'deploy' 18 | 19 | # 部署到 https://.github.io 20 | 21 | git push -f git@github.com:HongqingCao/GitDataV.git master:gh-pages 22 | 23 | cd - -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | GitDataV
-------------------------------------------------------------------------------- /docs/static/fonts/glyphicons-halflings-regular.68ed1da.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/fonts/glyphicons-halflings-regular.68ed1da.woff -------------------------------------------------------------------------------- /docs/static/fonts/glyphicons-halflings-regular.7ad17c6.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/fonts/glyphicons-halflings-regular.7ad17c6.eot -------------------------------------------------------------------------------- /docs/static/fonts/glyphicons-halflings-regular.e49d52e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/fonts/glyphicons-halflings-regular.e49d52e.ttf -------------------------------------------------------------------------------- /docs/static/fonts/iconfont.03830fc.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/fonts/iconfont.03830fc.eot -------------------------------------------------------------------------------- /docs/static/fonts/iconfont.06371d9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/fonts/iconfont.06371d9.ttf -------------------------------------------------------------------------------- /docs/static/img/bg-1.566f420.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/img/bg-1.566f420.jpg -------------------------------------------------------------------------------- /docs/static/img/bg-2.766012f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/img/bg-2.766012f.jpg -------------------------------------------------------------------------------- /docs/static/img/bg-3.2e8da71.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/img/bg-3.2e8da71.jpg -------------------------------------------------------------------------------- /docs/static/img/glyphicons-halflings-regular.ff423a4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | -------------------------------------------------------------------------------- /docs/static/img/title.9c81a4f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/img/title.9c81a4f.png -------------------------------------------------------------------------------- /docs/static/img/true.3957df7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/img/true.3957df7.png -------------------------------------------------------------------------------- /docs/static/img/yyx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/docs/static/img/yyx.png -------------------------------------------------------------------------------- /docs/static/js/app.83e47e9611d6a5f61c43.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([1],{"+708":function(t,e,a){"use strict";var n={name:"vue-particles",props:{color:{type:String,default:"#dedede"},particleOpacity:{type:Number,default:.7},particlesNumber:{type:Number,default:80},shapeType:{type:String,default:"circle"},particleSize:{type:Number,default:4},linesColor:{type:String,default:"#dedede"},linesWidth:{type:Number,default:1},lineLinked:{type:Boolean,default:!0},lineOpacity:{type:Number,default:.4},linesDistance:{type:Number,default:150},moveSpeed:{type:Number,default:3},hoverEffect:{type:Boolean,default:!0},hoverMode:{type:String,default:"grab"},clickEffect:{type:Boolean,default:!0},clickMode:{type:String,default:"push"}},mounted:function(){var t=this;a("JAHf"),this.$nextTick(function(){t.initParticleJS(t.color,t.particleOpacity,t.particlesNumber,t.shapeType,t.particleSize,t.linesColor,t.linesWidth,t.lineLinked,t.lineOpacity,t.linesDistance,t.moveSpeed,t.hoverEffect,t.hoverMode,t.clickEffect,t.clickMode)})},methods:{initParticleJS:function(t,e,a,n,s,i,r,o,l,c,u,d,v,h,m){particlesJS("particles-js",{particles:{number:{value:a,density:{enable:!0,value_area:800}},color:{value:t},shape:{type:n,stroke:{width:0,color:"#192231"},polygon:{nb_sides:5}},opacity:{value:e,random:!1,anim:{enable:!1,speed:1,opacity_min:.1,sync:!1}},size:{value:s,random:!0,anim:{enable:!1,speed:40,size_min:.1,sync:!1}},line_linked:{enable:o,distance:c,color:i,opacity:l,width:r},move:{enable:!0,speed:u,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:600,rotateY:1200}}},interactivity:{detect_on:"canvas",events:{onhover:{enable:d,mode:v},onclick:{enable:h,mode:m},onresize:{enable:!0,density_auto:!0,density_area:400}},modes:{grab:{distance:140,line_linked:{opacity:1}},bubble:{distance:400,size:40,duration:2,opacity:8,speed:3},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}}},retina_detect:!0})}}},s={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{attrs:{id:"particles-js",color:t.color,particleOpacity:t.particleOpacity,linesColor:t.linesColor,particlesNumber:t.particlesNumber,shapeType:t.shapeType,particleSize:t.particleSize,linesWidth:t.linesWidth,lineLinked:t.lineLinked,lineOpacity:t.lineOpacity,linesDistance:t.linesDistance,moveSpeed:t.moveSpeed,hoverEffect:t.hoverEffect,hoverMode:t.hoverMode,clickEffect:t.clickEffect,clickMode:t.clickMode}})},staticRenderFns:[]},i=a("VU/8")(n,s,!1,null,null,null);e.a=i.exports},"0Rdr":function(t,e){},"68hK":function(t,e){},"8aYe":function(t,e){},ADY3:function(t,e){},AGkO:function(t,e){},FH8L:function(t,e){},KFBZ:function(t,e){},LM4M:function(t,e){},Mjxz:function(t,e){},NHnr:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=a("7+uW"),s={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{attrs:{id:"app"}},[e("router-view")],1)},staticRenderFns:[]};var i=a("VU/8")({name:"App"},s,!1,function(t){a("hjCX")},null,null).exports,r=a("/ocq"),o=a("mvHQ"),l=a.n(o),c=a("mtWM"),u=a.n(c),d={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"modal pm-box fade",class:{in:t.isShow},staticStyle:{display:"block","z-index":"9999"}},[a("div",{staticClass:"modal-dialog",attrs:{role:"document"}},[a("div",{staticClass:"modal-content"},[a("div",{staticClass:"modal-header"},[a("button",{staticClass:"close",attrs:{type:"button"}},[a("span",{on:{click:t.closebtn}},[t._v("×")])]),t._v(" "),a("h4",{staticClass:"modal-title"},[t._v("GitDataV服务条款")])]),t._v(" "),a("div",{staticClass:"modal-body pm-body",staticStyle:{display:"block",height:"auto"}},[a("p",[t._v("感谢您使用GitDataV!我们很高兴你在这里。在访问或使用GitDataV之前,请仔细阅读本服务条款协议:")]),t._v(" "),a("P",[t._v("A、GitDataV通过"),a("a",{attrs:{href:"https://developer.github.com/v3/",target:"_blank"}}),t._v("github官方api提供接口平台")]),t._v(" "),a("p",[t._v("B、本网站只通过用户账号通过官方接口进行查询您的公开相关数据,并对这些数据进行梳理和在网页上展示,网站本身并不存储您任何相关数据")]),t._v(" "),t._m(0),t._v(" "),a("P",[t._v("D、本网站属于非盈利性质,请勿进行商业用途,源码已开源")]),t._v(" "),t._m(1)],1),t._v(" "),a("div",{staticClass:"modal-footer"},[a("button",{staticClass:"btn btn-default",attrs:{type:"button"},on:{click:t.closebtn}},[t._v("知道了")])])])])]),t._v(" "),a("div",{staticClass:"modal-backdrop",class:{in:t.isShow}})])},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("C、本网站由于依赖github官方提供接口,对查询的次数有限制,请勿恶意攻击和压力查询,如果网站有问题请及时与开发者:"),e("a",{attrs:{href:"https://github.com/HongqingCao",target:"_blank"}},[this._v("codercao")]),this._v("联系 ")])},function(){var t=this.$createElement,e=this._self._c||t;return e("p",[this._v("E、其他条款遵循"),e("a",{attrs:{href:"https://help.github.com/articles/github-terms-of-service/",target:"_blank"}},[this._v("GitHub服务条款")])])}]};var v={components:{pmodal:a("VU/8")({name:"pmodal",props:{isShow:null},data:function(){return{sayhidden:!1}},methods:{closebtn:function(){this.$emit("sayhidden",this.sayhidden)}}},d,!1,function(t){a("XL9B")},null,null).exports},data:function(){return{list:{},username:"",errname:"",isShow:!1,inputval:!1,nousename:!1,namelg:!1,checked:!1}},created:function(){},methods:{checkebox:function(){this.checked=!this.checked},generate:function(t){var e=this,a=this.username;if(a.length<=0)this.namelg=!0;else{u.a.get("https://api.github.com/users/"+a).then(function(t){200===JSON.parse(l()(t)).status&&e.$router.push({name:"data",params:{user:a}})}).catch(function(t){e.nousename=!0,e.errname=a,console.log(t.message)})}},onfocus:function(){this.namelg=!1,this.nousename=!1},showpm:function(){this.isShow=!0},sayhidden:function(t){this.isShow=t}}},h={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"app-page"},[a("particles"),t._v(" "),a("indexbg"),t._v(" "),a("div",{staticClass:"container-fluid"},[a("div",{staticClass:"row text-container "},[a("div",{staticClass:"tm-content col-md-6 col-sm-8 col-xs-12 ml-auto section"},[a("div",{staticClass:"content-box"},[t._m(0),t._v(" "),a("P",{staticClass:"mb-5"},[t._v('一个用Vue构建的Github"可视化大数据平台"。通过它,您可以更加直观看到您在Github里的一些数据情况')]),t._v(" "),a("div",{staticClass:"subscribe-form"},[a("div",{staticClass:"row form-section"},[a("div",{staticClass:"col-sm-8 col-xs-10"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.username,expression:"username"}],staticClass:"form-control",attrs:{type:"text",placeholder:"输入您的github账号,然后点击生成..."},domProps:{value:t.username},on:{focus:t.onfocus,input:function(e){e.target.composing||(t.username=e.target.value)}}}),t._v(" "),a("div",{staticClass:"help-box"},[t.namelg?a("strong",[t._v("请输入您的账号,再点生成!")]):t._e(),t._v(" "),t.nousename?a("strong",[t._v("账号:"),a("a",[t._v(t._s(t.errname))]),t._v("Not Found!")]):a("p",[t._v("\n\t\t\t\t\t\t\t\t\t\t \t点击「生成」按钮将视为您同意"),a("button",{on:{click:t.showpm}},[t._v("GitDataV服务条款")])])])]),t._v(" "),a("div",{staticClass:"col-sm-4 col-xs-5"},[a("button",{staticClass:"tm-btn-subscribe",on:{click:function(e){t.generate(t.username)}}},[t._v("生成")])])])])],1)])]),t._v(" "),t.isShow?a("pmodal",{attrs:{isShow:t.isShow},on:{sayhidden:t.sayhidden}}):t._e(),t._v(" "),a("foot")],1)],1)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e("header",{staticClass:"mb-5"},[e("h1",[this._v("GitDataV")])])}]};var m=a("VU/8")(v,h,!1,function(t){a("tg3c")},null,null).exports,p={render:function(){this.$createElement;this._self._c;return this._m(0)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"header"},[e("div",{staticClass:"bg-header"},[e("div",{staticClass:"t-title"},[this._v("\n GitDataV数据平台\n ")])])])}]};var f=a("VU/8")({name:"dheader"},p,!1,function(t){a("TJMZ")},null,null).exports,_={name:"personal",props:{personalData:Object}},g={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"personal-box"},[a("div",{staticClass:"personal-body"},[a("div",{staticClass:"left"},[a("div",{staticClass:"img"},[a("img",{style:{background:"url("+t.personalData.img+")"}})])]),t._v(" "),a("div",{staticClass:"right"},[a("div",{staticClass:"name"},[t._v(t._s(t.personalData.username))]),t._v(" "),a("div",{staticClass:"year"},[a("a",{staticClass:"date"},[t._v(t._s(t.personalData.joinDate))]),t._v(" "),a("a",{staticClass:"time"},[t._v("加入github")])])])])])},staticRenderFns:[]};var b={columns:["季度","提交次数"],rows:[{"季度":"1/1","提交次数":0},{"季度":"1/2","提交次数":1},{"季度":"1/3","提交次数":0},{"季度":"1/4","提交次数":0},{"季度":"1/5","提交次数":50},{"季度":"1/6","提交次数":20}]},C={components:{personal:a("VU/8")(_,g,!1,function(t){a("PXEZ")},null,null).exports},props:{personalData:Object,username:String},data:function(){return this.extend={legend:{textStyle:{color:"#fff"}},grid:{textStyle:{color:"#fff"}},series:{radius:["0","40%"],center:["50%","50%"]}},{personalD:{},starData:{columns:["reposName","getStars"],rows:[]},noStarData:!1,languageData:{columns:["lang","number"],rows:[]},nolanguageData:!1}},created:function(){},methods:{getData:function(t){var e=this;u.a.get("https://api.github.com/users/"+t+"/repos").then(function(t){var a=JSON.parse(l()(t.data));if(a.length<1)e.noStarData=!0;else{for(var n=[],s={},i=0;i0){var a=t.getData.length-7;t.activeIndex0?a("div",{staticClass:"in-title"},[t._v(t._s(t.title))]):t._e(),t._v(" "),a("div",{staticClass:"chart"},[t._t("default")],2)])},staticRenderFns:[]};var ht=a("VU/8")(dt,vt,!1,function(t){a("tCd+")},null,null).exports,mt={name:"nodata",props:{nodata:String}},pt={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"nodata"},[e("icon",{attrs:{type:"socialgithuboutline",size:"2rem",color:"#888"}}),this._v("您没有"+this._s(this.nodata)+"数据\n")],1)},staticRenderFns:[]};var ft={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"modal fade",class:{in:t.isShow}},[a("div",{staticClass:"modal-dialog",attrs:{role:"document"}},[a("div",{staticClass:"modal-content"},[a("div",{staticClass:"modal-header"},[a("button",{staticClass:"close",attrs:{type:"button"}},[a("span",{on:{click:t.closebtn}},[t._v("×")])]),t._v(" "),a("h4",{staticClass:"modal-title"},[t._v("温馨提示")])]),t._v(" "),a("div",{staticClass:"modal-body"},[a("icon",{attrs:{type:"socialgithuboutline",size:"4rem",color:"#888"}}),t._v("用户名有误,或网络原因无法查找到数据"),a("br"),t._v("请重新输入用户名,或者刷新浏览器\n\t ")],1),t._v(" "),a("div",{staticClass:"modal-footer"},[a("button",{staticClass:"btn btn-default",attrs:{type:"button"},on:{click:t.closebtn}},[t._v("关闭")])])])])]),t._v(" "),a("div",{staticClass:"modal-backdrop",class:{in:t.isShow}},[a("particles")],1)])},staticRenderFns:[]};var _t={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"loading"},[e("icon",{attrs:{type:"socialgithuboutline",size:"4rem",color:"#888"}}),this._v("\n\t正在疯狂的计算数据中+-*%....\n\t"),e("particles")],1)},staticRenderFns:[]};var gt={name:"topnav",methods:{fullBox:function(){console.log("点击"),document.fullScreenElement&&null!==document.fullScreenElement||!document.mozFullScreen&&!document.webkitIsFullScreen?document.documentElement.requestFullScreen?document.documentElement.requestFullScreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullScreen&&document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()}}},bt={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"navbar"},[e("ul",[e("li",{on:{click:this.fullBox}},[e("icon",{attrs:{type:"quanping",size:"2.2rem",color:"#fff"}})],1),this._v(" "),e("li",[e("icon",{attrs:{type:"yuyanqiehuan",size:"2.2rem",color:"#fff"}})],1),this._v(" "),e("li",[e("icon",{attrs:{type:"ziyuan",size:"2.2rem",color:"#fff"}})],1),this._v(" "),e("li",[e("icon",{attrs:{type:"zuojiantou1",size:"2.2rem",color:"#fff"}})],1)])])},staticRenderFns:[]};var Ct={header:rt,foot:lt,bg:ut,icon:at,particles:W,github:Q,databox:ht,nodata:a("VU/8")(mt,pt,!1,function(t){a("8aYe")},null,null).exports,nouser:a("VU/8")({name:"nouser",props:{isShow:null},data:function(){return{sayhidden:!1}},methods:{closebtn:function(){this.$router.push({name:"index"})}}},ft,!1,function(t){a("wqyP")},null,null).exports,loading:a("VU/8")({name:"loading"},_t,!1,function(t){a("AGkO")},null,null).exports,topnav:a("VU/8")(gt,bt,!1,function(t){a("xs2z")},null,null).exports},yt=function t(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1];t.installed||(X()(Ct).forEach(function(t){e.component(Ct[t].name,Ct[t])}),e.prototype.$notice=Notification,t.installed=!0)};yt.installed=!1,"undefined"!=typeof window&&window.Vue&&(yt(window.Vue),yt.installed=!0);var xt=H()({},Ct,{install:yt});a("qb6w"),a("muQq"),a("S2ic");n.a.use(G.a),n.a.use(B.a),n.a.use(xt),n.a.config.productionTip=!1,new n.a({el:"#app",router:J,components:{App:i},template:""})},PXEZ:function(t,e){},S2ic:function(t,e){},TJMZ:function(t,e){},V5r6:function(t,e){},XL9B:function(t,e){},aS3d:function(t,e){},fekU:function(t,e){},hjCX:function(t,e){},hlbq:function(t,e){},muQq:function(t,e){},oz88:function(t,e){},ppiP:function(t,e){},qb6w:function(t,e){},"tCd+":function(t,e){},tg3c:function(t,e){},wqyP:function(t,e){},x9KX:function(t,e){},xs2z:function(t,e){}},["NHnr"]); 2 | //# sourceMappingURL=app.83e47e9611d6a5f61c43.js.map -------------------------------------------------------------------------------- /docs/static/js/manifest.3ad1d5771e9b13dbdad2.js: -------------------------------------------------------------------------------- 1 | !function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a 2 | 3 | 4 | 5 | 6 | 7 | 8 | git-datav 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /src/assets/bg-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/bg-1.jpg -------------------------------------------------------------------------------- /src/assets/bg-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/bg-2.jpg -------------------------------------------------------------------------------- /src/assets/bg-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/bg-3.jpg -------------------------------------------------------------------------------- /src/assets/css/global.scss: -------------------------------------------------------------------------------- 1 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;} 2 | body{ 3 | min-height: 100%; 4 | font-family: 'Open Sans', Helvetica, Arial, sans-serif; 5 | font-size: 24px; 6 | font-weight: 300; 7 | overflow-y: scroll; 8 | height: 100%; 9 | margin: 0; 10 | border: 0; 11 | top: 0; 12 | right: 0; 13 | right: 0; 14 | bottom: 0; 15 | } 16 | *{ 17 | box-sizing: border-box; 18 | } 19 | table { border-collapse:collapse; border-spacing:0;} 20 | a{cursor: pointer;text-decoration: none;} 21 | fieldset,img { border:0;} 22 | address,caption,cite,code,dfn,em,strong,th,var,optgroup { font-style:normal; font-weight: normal;} 23 | del,ins{text-decoration:none;} 24 | ol,ul,li { list-style:none;} 25 | caption,th { text-align:left;} 26 | h1,h2,h3,h4,h5,h6 { font-size:100%; font-weight:normal;} 27 | q:before, q:after { content:'';} 28 | abbr,acronym { border:0;font-variant:normal;} 29 | sup{vertical-align:baseline;} 30 | sub{vertical-align:baseline;} 31 | legend{color:#000;} 32 | input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:normal;font-weight:normal; outline:none;border: none;} 33 | input,button,textarea,select{*font-size:100%;} 34 | textarea { resize:none;} 35 | i, em, strong { font-style:normal;} 36 | -------------------------------------------------------------------------------- /src/assets/data/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/line.png -------------------------------------------------------------------------------- /src/assets/data/line1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/line1.png -------------------------------------------------------------------------------- /src/assets/data/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/logo.png -------------------------------------------------------------------------------- /src/assets/data/mintitle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/mintitle.png -------------------------------------------------------------------------------- /src/assets/data/mintitle_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/mintitle_1.png -------------------------------------------------------------------------------- /src/assets/data/t_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_1.png -------------------------------------------------------------------------------- /src/assets/data/t_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_2.png -------------------------------------------------------------------------------- /src/assets/data/t_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_3.png -------------------------------------------------------------------------------- /src/assets/data/t_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_4.png -------------------------------------------------------------------------------- /src/assets/data/t_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_5.png -------------------------------------------------------------------------------- /src/assets/data/t_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_6.png -------------------------------------------------------------------------------- /src/assets/data/t_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/t_7.png -------------------------------------------------------------------------------- /src/assets/data/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/title.png -------------------------------------------------------------------------------- /src/assets/data/true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/data/true.png -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face {font-family: "iconfont"; 3 | src: url('iconfont.eot?t=1535030883945'); /* IE9*/ 4 | src: url('iconfont.eot?t=1535030883945#iefix') format('embedded-opentype'), /* IE6-IE8 */ 5 | url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), 6 | url('iconfont.ttf?t=1535030883945') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ 7 | url('iconfont.svg?t=1535030883945#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family:"iconfont" !important; 12 | font-size:16px; 13 | font-style:normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-rili:before { content: "\e600"; } 19 | 20 | .icon-mima:before { content: "\e608"; } 21 | 22 | .icon-6:before { content: "\e638"; } 23 | 24 | .icon-kuaisu:before { content: "\e61b"; } 25 | 26 | .icon-weixin:before { content: "\e63b"; } 27 | 28 | .icon-all:before { content: "\e696"; } 29 | 30 | .icon-back:before { content: "\e697"; } 31 | 32 | .icon-cart:before { content: "\e698"; } 33 | 34 | .icon-category:before { content: "\e699"; } 35 | 36 | .icon-close:before { content: "\e69a"; } 37 | 38 | .icon-comments:before { content: "\e69b"; } 39 | 40 | .icon-cry:before { content: "\e69c"; } 41 | 42 | .icon-delete:before { content: "\e69d"; } 43 | 44 | .icon-edit:before { content: "\e69e"; } 45 | 46 | .icon-email:before { content: "\e69f"; } 47 | 48 | .icon-favorite:before { content: "\e6a0"; } 49 | 50 | .icon-form:before { content: "\e6a2"; } 51 | 52 | .icon-help:before { content: "\e6a3"; } 53 | 54 | .icon-information:before { content: "\e6a4"; } 55 | 56 | .icon-less:before { content: "\e6a5"; } 57 | 58 | .icon-moreunfold:before { content: "\e6a6"; } 59 | 60 | .icon-more:before { content: "\e6a7"; } 61 | 62 | .icon-pic:before { content: "\e6a8"; } 63 | 64 | .icon-qrcode:before { content: "\e6a9"; } 65 | 66 | .icon-refresh:before { content: "\e6aa"; } 67 | 68 | .icon-rfq:before { content: "\e6ab"; } 69 | 70 | .icon-search:before { content: "\e6ac"; } 71 | 72 | .icon-selected:before { content: "\e6ad"; } 73 | 74 | .icon-set:before { content: "\e6ae"; } 75 | 76 | .icon-smile:before { content: "\e6af"; } 77 | 78 | .icon-success:before { content: "\e6b1"; } 79 | 80 | .icon-survey:before { content: "\e6b2"; } 81 | 82 | .icon-training:before { content: "\e6b3"; } 83 | 84 | .icon-viewgallery:before { content: "\e6b4"; } 85 | 86 | .icon-viewlist:before { content: "\e6b5"; } 87 | 88 | .icon-warning:before { content: "\e6b6"; } 89 | 90 | .icon-wrong:before { content: "\e6b7"; } 91 | 92 | .icon-account:before { content: "\e6b8"; } 93 | 94 | .icon-add:before { content: "\e6b9"; } 95 | 96 | .icon-clock:before { content: "\e6bb"; } 97 | 98 | .icon-remind:before { content: "\e6bc"; } 99 | 100 | .icon-discount:before { content: "\e6c5"; } 101 | 102 | .icon-qq:before { content: "\e61a"; } 103 | 104 | .icon-socialgithuboutline:before { content: "\e874"; } 105 | 106 | .icon-agriculture:before { content: "\e707"; } 107 | 108 | .icon-5:before { content: "\e610"; } 109 | 110 | .icon-icondownload:before { content: "\e714"; } 111 | 112 | .icon-map:before { content: "\e715"; } 113 | 114 | .icon-bad:before { content: "\e716"; } 115 | 116 | .icon-good:before { content: "\e717"; } 117 | 118 | .icon-mobilephone:before { content: "\e72a"; } 119 | 120 | .icon-fenxiang:before { content: "\e6ba"; } 121 | 122 | .icon-emailfilling:before { content: "\e72d"; } 123 | 124 | .icon-favoritesfilling:before { content: "\e730"; } 125 | 126 | .icon-creditlevelfilling:before { content: "\e736"; } 127 | 128 | .icon-statistics2:before { content: "\e625"; } 129 | 130 | .icon-exl:before { content: "\e73f"; } 131 | 132 | .icon-pdf:before { content: "\e740"; } 133 | 134 | .icon-zip:before { content: "\e741"; } 135 | 136 | .icon-xiaoxi:before { content: "\e7a8"; } 137 | 138 | .icon-save:before { content: "\e747"; } 139 | 140 | .icon-weibo:before { content: "\e663"; } 141 | 142 | .icon-tongzhi:before { content: "\e63c"; } 143 | 144 | .icon-xinxiangtianchong:before { content: "\e60a"; } 145 | 146 | .icon-color:before { content: "\e760"; } 147 | 148 | .icon-lunbo-:before { content: "\e6c2"; } 149 | 150 | .icon-ren:before { content: "\e601"; } 151 | 152 | .icon-caidan:before { content: "\e62b"; } 153 | 154 | .icon-kucunguanli:before { content: "\e609"; } 155 | 156 | .icon-tubiao:before { content: "\e602"; } 157 | 158 | .icon-round-user-new:before { content: "\e635"; } 159 | 160 | .icon-buzhouyi:before { content: "\e636"; } 161 | 162 | .icon-anniu:before { content: "\e63f"; } 163 | 164 | .icon-dingbu:before { content: "\e63d"; } 165 | 166 | .icon-mianbaoxie:before { content: "\e63e"; } 167 | 168 | .icon-ziti:before { content: "\e603"; } 169 | 170 | .icon-fenyezuo:before { content: "\e6b0"; } 171 | 172 | .icon-customs-clearance:before { content: "\e863"; } 173 | 174 | .icon-jiazai:before { content: "\e724"; } 175 | 176 | .icon-icon-test:before { content: "\e611"; } 177 | 178 | .icon-management:before { content: "\e6ec"; } 179 | 180 | .icon-icon-test1:before { content: "\e606"; } 181 | 182 | .icon-icon-test2:before { content: "\e633"; } 183 | 184 | .icon-jindu:before { content: "\e624"; } 185 | 186 | .icon-tongzhi1:before { content: "\e61c"; } 187 | 188 | .icon-jindu1:before { content: "\e604"; } 189 | 190 | .icon-quanping:before { content: "\e626"; } 191 | 192 | .icon-delete-copy:before { content: "\e605"; } 193 | 194 | .icon-ziyuan:before { content: "\e60f"; } 195 | 196 | .icon-huakuai:before { content: "\e8fb"; } 197 | 198 | .icon-shurukuang:before { content: "\eafe"; } 199 | 200 | .icon-anzhuang:before { content: "\e67f"; } 201 | 202 | .icon-icon-test3:before { content: "\e6a1"; } 203 | 204 | .icon-zuojiantou1:before { content: "\e60c"; } 205 | 206 | .icon-yuyanqiehuan:before { content: "\e6dd"; } 207 | 208 | .icon-xiazai:before { content: "\e607"; } 209 | 210 | -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/iconfont/iconfont.eot -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/assets/iconfont/iconfont.woff -------------------------------------------------------------------------------- /src/components/bg/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 92 | -------------------------------------------------------------------------------- /src/components/databox/index.scss: -------------------------------------------------------------------------------- 1 | .data-box{ 2 | width: 100%; 3 | box-sizing: border-box; 4 | border: 1px solid #2C58A6; 5 | position: relative; 6 | box-shadow: 0 0 10px #2C58A6; 7 | &.noborder{ 8 | border: none; 9 | box-shadow: none; 10 | } 11 | .line-box { 12 | position: absolute; 13 | width: 100%; 14 | height: 100%; 15 | z-index: 0; 16 | i { 17 | background-color: #4788fb; 18 | box-shadow: 0px 0px 10px #4788fb; 19 | position: absolute; 20 | &.l-t-line{ 21 | width: 5px; 22 | height: 24px; 23 | left: -3px; 24 | top: -3px; 25 | } 26 | &.t-l-line{ 27 | height: 5px; 28 | width: 26px; 29 | left: -3px; 30 | top: -3px; 31 | } 32 | &.t-r-line{ 33 | height: 5px; 34 | width: 26px; 35 | right: -3px; 36 | top: -3px; 37 | } 38 | &.r-t-line{ 39 | width: 5px; 40 | height: 24px; 41 | right: -3px; 42 | top: -3px; 43 | } 44 | &.l-b-line{ 45 | width: 5px; 46 | height: 24px; 47 | left: -3px; 48 | bottom: -3px; 49 | } 50 | &.b-l-line{ 51 | height: 5px; 52 | width: 26px; 53 | left: -3px; 54 | bottom: -3px; 55 | } 56 | &.r-b-line{ 57 | width: 5px; 58 | height: 24px; 59 | right: -3px; 60 | bottom: -3px; 61 | } 62 | &.b-r-line{ 63 | height: 5px; 64 | width: 26px; 65 | right: -3px; 66 | bottom: -3px; 67 | } 68 | } 69 | } 70 | .main-title{ 71 | width: 180px; 72 | height: 35px; 73 | line-height: 33px; 74 | background-color: #2C58A6; 75 | border-radius: 18px; 76 | position: absolute; 77 | text-align: center; 78 | top: -17px; 79 | left: 50%; 80 | margin-left: -90px; 81 | color: #fff; 82 | font-size: 2rem; 83 | font-weight:bold; 84 | box-sizing: border-box; 85 | z-index: 1000; 86 | i{ 87 | color: fff; 88 | } 89 | } 90 | .in-title{ 91 | width: 100%; 92 | height: 40px; 93 | color: #61d2f7; 94 | padding:10px 10px 10px 20px; 95 | font-weight:bold; 96 | font-size: 1.7rem; 97 | margin-top: 10px; 98 | z-index: 1000; 99 | } 100 | .chart{ 101 | position: relative; 102 | width: 100%; 103 | height: calc(100% - 50px); 104 | z-index: 1; 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /src/components/databox/index.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 51 | 52 | 55 | -------------------------------------------------------------------------------- /src/components/foot/index.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | 22 | 40 | -------------------------------------------------------------------------------- /src/components/github/index.js: -------------------------------------------------------------------------------- 1 | import Github from "./src/github"; 2 | export default Github; 3 | -------------------------------------------------------------------------------- /src/components/github/src/github.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 30 | 31 | 73 | -------------------------------------------------------------------------------- /src/components/header/index.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/components/header/index.scss -------------------------------------------------------------------------------- /src/components/header/index.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/components/header/navbar/index.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/components/header/navbar/navbar.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/GitDataV/a8eb8b1ad3d2c85ad3835c887476791555bec922/src/components/header/navbar/navbar.scss -------------------------------------------------------------------------------- /src/components/icon/index.js: -------------------------------------------------------------------------------- 1 | import VpIcon from "./src/icon"; 2 | export default VpIcon; 3 | -------------------------------------------------------------------------------- /src/components/icon/src/icon.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 29 | -------------------------------------------------------------------------------- /src/components/index.js: -------------------------------------------------------------------------------- 1 | import particles from "./particles"; 2 | import github from "./github"; 3 | import icon from "./icon"; 4 | import header from "./header"; 5 | import foot from "./foot"; 6 | import bg from "./bg"; 7 | import databox from "./databox"; 8 | import nodata from "./nodata"; 9 | import nouser from "./nouser"; 10 | import loading from "./loading"; 11 | import topnav from "./topnav"; 12 | const components = { 13 | header, 14 | foot, 15 | bg, 16 | icon, 17 | particles, 18 | github, 19 | databox, 20 | nodata, 21 | nouser, 22 | loading, 23 | topnav 24 | }; 25 | 26 | const install = (Vue = {}) => { 27 | if (install.installed) return; 28 | Object.keys(components).forEach(component => { 29 | Vue.component(components[component].name, components[component]); 30 | }); 31 | Vue.prototype.$notice = Notification; 32 | // Vue.prototype.$message = Message 33 | install.installed = true; 34 | }; 35 | install.installed = false; 36 | if (typeof window !== "undefined" && window.Vue) { 37 | install(window.Vue); 38 | install.installed = true; 39 | } 40 | 41 | const Vcomp = { 42 | ...components, 43 | install 44 | }; 45 | 46 | export default Vcomp; 47 | -------------------------------------------------------------------------------- /src/components/loading/index.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 33 | -------------------------------------------------------------------------------- /src/components/nodata/index.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 16 | 17 | 31 | -------------------------------------------------------------------------------- /src/components/nouser/index.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 51 | 52 | 82 | -------------------------------------------------------------------------------- /src/components/particles/index.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 30 | 31 | 41 | -------------------------------------------------------------------------------- /src/components/topnav/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 53 | 54 | 89 | -------------------------------------------------------------------------------- /src/lang/en.js: -------------------------------------------------------------------------------- 1 | export default { 2 | app: { 3 | appIntroduce: 4 | "A Github visualization large data platform based on Vue is presented. With it, you can get a more intuitive view of some of your data in Github", 5 | inputPlaceholder: "Enter your GitHub account, and then click Generate.", 6 | namelg: "Please enter your account number and click Generate again!", 7 | account: "Account", 8 | notFound: " not found!", 9 | clickP: 10 | " Clicking on the [Generate]button will be considered as your agreement.", 11 | clickB: "GitDataV Terms of Service", 12 | subscribe: "generate", 13 | pmodal: { 14 | title: "GitDataV Terms of Service", 15 | thanksP: 16 | "Thank you for using GitDataV! We're glad you're here. Before visiting or using GitDataV, please read the Terms of Service Agreement carefully:", 17 | aPone: "A、GitDataV passes", 18 | aPtwo: "GitHub official API provides interface platform", 19 | bP: 20 | "B. This website only queries your publicly related data through the official interface through the user account, combs and displays these data on the website. The website itself does not store any of your relevant data.", 21 | cPone: 22 | "C. Due to the dependence on the official interface provided by github, the number of queries is limited. Do not attack maliciously or press queries. If there is any problem with the website, please contact the developer in time:", 23 | cPtwo: "contact", 24 | dP: 25 | "Contact D, this website is non-profit nature, do not use for commercial purposes, the source code has been open source.", 26 | ePone: "E. Compliance with other provisions", 27 | ePtwo: "GitHub Terms of Service", 28 | closebtn: "Got it" 29 | } 30 | }, 31 | data: { 32 | index: "Warm Tip: please pay attention to my GitHub update.", 33 | myevent: { 34 | pubRepos: "Public Repositories", 35 | followers: "Followers", 36 | following: "Following", 37 | accountData: "Repositories Data", 38 | noRepoSize: "Repositories", 39 | myevent: "Details of recent operations", 40 | noMyevent: "Recent operation", 41 | table: { 42 | time: "Operation time", 43 | type: "Type", 44 | repos: "Operation repositories", 45 | remarks: "Remarks" 46 | } 47 | }, 48 | dheader: "GitDataV Data Platform", 49 | dleft: { 50 | accountStars: "Repositories Stars", 51 | accountLeng: "Repositories Language classification", 52 | noStarData: "One Stars", 53 | nolanguageData: "A language" 54 | }, 55 | dright: { 56 | index: { 57 | followers: "New followers", 58 | noFollowers: "noFollowers", 59 | following: "New following", 60 | noFollowing: "noFollowing", 61 | messege: "New Messege" 62 | }, 63 | message: { 64 | pOne: "Give you one.", 65 | pTwo: "operation" 66 | } 67 | } 68 | }, 69 | loading: "Crazy computing data+-*%....", 70 | nodata: { 71 | pOne: "You do not have", 72 | pTwo: "data" 73 | } 74 | }; 75 | -------------------------------------------------------------------------------- /src/lang/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import VueI18n from "vue-i18n"; 3 | import Cookies from "js-cookie"; 4 | import enLocale from "./en"; 5 | import zhLocale from "./zh"; 6 | 7 | Vue.use(VueI18n); 8 | 9 | const messages = { 10 | en: { 11 | ...enLocale 12 | }, 13 | zh: { 14 | ...zhLocale 15 | } 16 | }; 17 | export function getLanguage() { 18 | const chooseLanguage = Cookies.get("language"); 19 | if (chooseLanguage) return chooseLanguage; 20 | 21 | const language = ( 22 | navigator.language || navigator.browserLanguage 23 | ).toLowerCase(); 24 | const locales = Object.keys(messages); 25 | for (const locale of locales) { 26 | if (language.indexOf(locale) > -1) { 27 | return locale; 28 | } 29 | } 30 | return "en"; 31 | } 32 | const i18n = new VueI18n({ 33 | locale: getLanguage(), 34 | messages 35 | }); 36 | 37 | export default i18n; 38 | -------------------------------------------------------------------------------- /src/lang/zh.js: -------------------------------------------------------------------------------- 1 | export default { 2 | app: { 3 | appIntroduce: 4 | "一个用Vue构建的Github可视化大数据平台。通过它,您可以更加直观看到您在Github里的一些数据情况", 5 | inputPlaceholder: "输入您的github账号,然后点击生成...", 6 | namelg: "请输入您的账号,再点生成!", 7 | account: "账号", 8 | notFound: " 未找到!", 9 | clickP: " 点击「生成」按钮将视为您同意", 10 | clickB: "GitDataV服务条款", 11 | subscribe: "生成", 12 | pmodal: { 13 | title: "GitDataV服务条款", 14 | thanksP: 15 | "感谢您使用GitDataV!我们很高兴你在这里。在访问或使用GitDataV之前,请仔细阅读本服务条款协议:", 16 | aPone: "A、GitDataV通过", 17 | aPtwo: "github官方api提供接口平台", 18 | bP: 19 | "B、本网站只通过用户账号通过官方接口进行查询您的公开相关数据,并对这些数据进行梳理和在网页上展示,网站本身并不存储您任何相关数据", 20 | cPone: 21 | "C、本网站由于依赖github官方提供接口,对查询的次数有限制,请勿恶意攻击和压力查询,如果网站有问题请及时与开发者:", 22 | cPtwo: "联系", 23 | dP: "D、本网站属于非盈利性质,请勿进行商业用途,源码已开源", 24 | ePone: "E、其他条款遵循", 25 | ePtwo: "GitHub服务条款", 26 | closebtn: "知道了" 27 | } 28 | }, 29 | data: { 30 | index: "温馨提示: 后续还会继续加功能,请关注我github更新...", 31 | myevent: { 32 | pubRepos: "公开仓库数", 33 | followers: "粉丝", 34 | following: "跟随", 35 | accountData: "仓库数据", 36 | noRepoSize: "仓库", 37 | myevent: "最近操作详情", 38 | noMyevent: "最近操作", 39 | table: { 40 | time: "操作时间", 41 | type: "类型", 42 | repos: "操作仓库", 43 | remarks: "备注" 44 | } 45 | }, 46 | dheader: "GitDataV数据平台", 47 | dleft: { 48 | accountStars: "仓库Stars详情", 49 | accountLeng: "仓库语言分类", 50 | noStarData: "一个Stars", 51 | nolanguageData: "一种语言" 52 | }, 53 | dright: { 54 | index: { 55 | followers: "新增粉丝", 56 | noFollowers: "一个粉丝", 57 | following: "最近跟随", 58 | noFollowing: "一个跟随", 59 | messege: "最新消息" 60 | }, 61 | message: { 62 | pOne: "给了你一个", 63 | pTwo: "操作" 64 | } 65 | } 66 | }, 67 | loading: "正在疯狂的计算数据中+-*%....", 68 | nodata: { 69 | pOne: "您没有", 70 | pTwo: "数据" 71 | } 72 | }; 73 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import App from "./App.vue"; 3 | import router from "./router"; 4 | import store from "./store"; 5 | import VueParticles from "vue-particles"; 6 | import VCharts from "v-charts"; 7 | import Vcomp from "./components/index"; 8 | import Axios from "axios"; 9 | import "bootstrap/dist/css/bootstrap.min.css"; 10 | import "./assets/iconfont/iconfont.css"; 11 | import "./assets/css/global.scss"; 12 | import i18n from "./lang"; 13 | import VueI18n from "vue-i18n"; 14 | 15 | Vue.use(VueParticles); 16 | Vue.use(VCharts); 17 | Vue.use(Vcomp); 18 | Vue.use(VueI18n, { 19 | i18n: (key, value) => i18n.t(key, value) 20 | }); 21 | 22 | Vue.prototype.$axios = Axios; 23 | Vue.config.productionTip = "/api"; 24 | Vue.config.productionTip = false; 25 | 26 | new Vue({ 27 | router, 28 | store, 29 | i18n, 30 | render: h => h(App) 31 | }).$mount("#app"); 32 | -------------------------------------------------------------------------------- /src/router.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Router from "vue-router"; 3 | import index from "@/views/app"; 4 | import data from "@/views/data"; 5 | 6 | Vue.use(Router); 7 | 8 | export default new Router({ 9 | base: process.env.BASE_URL, 10 | routes: [ 11 | { 12 | path: "/", 13 | name: "index", 14 | component: index 15 | }, 16 | { 17 | path: "/data", 18 | name: "data/", 19 | component: index 20 | }, 21 | { 22 | path: "/data/:user", 23 | name: "data", 24 | component: data 25 | } 26 | ] 27 | }); 28 | -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuex from "vuex"; 3 | import Cookies from "js-cookie"; 4 | import { getLanguage } from "@/lang/index"; 5 | 6 | Vue.use(Vuex); 7 | 8 | export default new Vuex.Store({ 9 | state: { 10 | language: getLanguage() 11 | }, 12 | mutations: { 13 | SET_LANGUAGE: (state, language) => { 14 | state.language = language; 15 | Cookies.set("language", language); 16 | } 17 | }, 18 | actions: { 19 | setLanguage({ commit }, language) { 20 | commit("SET_LANGUAGE", language); 21 | } 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /src/views/app/index.vue: -------------------------------------------------------------------------------- 1 | 61 | 62 | 157 | 158 | 302 | -------------------------------------------------------------------------------- /src/views/app/pmodal.vue: -------------------------------------------------------------------------------- 1 | /* * @Introduce: GitDataV服务条款弹框 * @Author: HongqingCao * @Date: 2019-05-10 2 | * @Last Modified by: HongqingCao * @Last Modified time: 2019-05-10 */ 3 | 47 | 48 | 63 | 64 | 122 | -------------------------------------------------------------------------------- /src/views/data/dcontent/dnumber/index.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 84 | 85 | 125 | -------------------------------------------------------------------------------- /src/views/data/dcontent/index.vue: -------------------------------------------------------------------------------- 1 | 68 | 69 | 179 | 180 | 213 | -------------------------------------------------------------------------------- /src/views/data/dcontent/myevent/index.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 45 | 46 | 82 | -------------------------------------------------------------------------------- /src/views/data/dheader/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 38 | -------------------------------------------------------------------------------- /src/views/data/dleft/index.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 140 | 141 | 157 | -------------------------------------------------------------------------------- /src/views/data/dleft/personal/index.scss: -------------------------------------------------------------------------------- 1 | .personal-box{ 2 | width: 100%; 3 | height: 140px; 4 | padding: 15px 15px 5px 15px; 5 | overflow: hidden; 6 | 7 | .personal-body{ 8 | height: 100%; 9 | width: 100%; 10 | .left{ 11 | float: left; 12 | width: 120px; 13 | height: 100%; 14 | padding: 15px; 15 | .img{ 16 | display: block; 17 | width: 100%; 18 | height: 100%; 19 | border-radius: 50%; 20 | padding: 10px; 21 | border: 1px solid #4788fb; 22 | float: left; 23 | 24 | img{ 25 | display: block; 26 | width: 100%; 27 | height: 100%; 28 | background-size:100% 100%!important; 29 | border-radius: 50%; 30 | } 31 | } 32 | } 33 | .right{ 34 | float: left; 35 | width: calc(100% - 120px); 36 | .name{ 37 | margin-top: 10px; 38 | font-size:2.5rem; 39 | line-height: 4rem; 40 | font-weight:bold; 41 | color: #25f3e6; 42 | overflow: hidden; 43 | text-overflow: ellipsis; 44 | white-space: nowrap; 45 | } 46 | .p-name{ 47 | padding: 5px 8px; 48 | display: inline-block; 49 | background-color: #71d398; 50 | font-weight: bold; 51 | line-height: 1; 52 | color: #ffffff; 53 | text-align: center; 54 | white-space: nowrap; 55 | font-size:1rem; 56 | vertical-align: baseline; 57 | border-radius: .25em; 58 | } 59 | .year{ 60 | 61 | .time{ 62 | display: block; 63 | font-size:1rem; 64 | color: #fff; 65 | text-decoration: none; 66 | cursor: none; 67 | } 68 | .date{ 69 | display: block; 70 | color: #f6a645; 71 | font-size: 2rem; 72 | text-decoration: none; 73 | cursor: none; 74 | } 75 | } 76 | } 77 | } 78 | .personal-foot{ 79 | height: 50%; 80 | width: 100%; 81 | padding: 10px; 82 | ul{ 83 | width: 100%; 84 | overflow: hidden; 85 | li{ 86 | padding: 0 10px 0 10px; 87 | font-size: 2rem; 88 | color: #ffffff; 89 | overflow: hidden; 90 | text-overflow: ellipsis; 91 | white-space: normal; 92 | i { 93 | color: #61d2f7; 94 | font-size: 2rem; 95 | margin-right: 15px; 96 | } 97 | } 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/views/data/dleft/personal/index.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 29 | 30 | 33 | -------------------------------------------------------------------------------- /src/views/data/dright/follower.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 36 | 37 | 84 | -------------------------------------------------------------------------------- /src/views/data/dright/index.vue: -------------------------------------------------------------------------------- 1 | 44 | 45 | 123 | 124 | 136 | -------------------------------------------------------------------------------- /src/views/data/dright/message.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 58 | 59 | 115 | -------------------------------------------------------------------------------- /src/views/data/index.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 93 | 94 | 140 | -------------------------------------------------------------------------------- /src/views/data/test/data.js: -------------------------------------------------------------------------------- 1 | export const LINE_DATA = { 2 | columns: ["季度", "提交次数"], 3 | rows: [ 4 | { 季度: "1/1", 提交次数: 0 }, 5 | { 季度: "1/2", 提交次数: 1 }, 6 | { 季度: "1/3", 提交次数: 0 }, 7 | { 季度: "1/4", 提交次数: 0 }, 8 | { 季度: "1/5", 提交次数: 50 }, 9 | { 季度: "1/6", 提交次数: 20 } 10 | ] 11 | }; 12 | 13 | export const LINE_DATA1 = { 14 | columns: ["日期", "访问用户"], 15 | rows: [{ 日期: "1/1", 访问用户: 193 }, { 日期: "1/2", 访问用户: 393 }] 16 | }; 17 | 18 | export const SIMPLE_LINE_DATA = { 19 | columns: ["日期", "访问用户", "下单用户"], 20 | rows: [ 21 | ["1/1", 1393, 1093], 22 | ["1/2", 3530, 3230], 23 | ["1/3", 2923, 2623], 24 | ["1/4", 1723, 1423], 25 | ["1/5", 3792, 3492], 26 | ["1/6", 4593, 4293] 27 | ] 28 | }; 29 | -------------------------------------------------------------------------------- /tests/unit/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | mocha: true 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /tests/unit/example.spec.js: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | import { shallowMount } from "@vue/test-utils"; 3 | import HelloWorld from "@/components/HelloWorld.vue"; 4 | 5 | describe("HelloWorld.vue", () => { 6 | it("renders props.msg when passed", () => { 7 | const msg = "new message"; 8 | const wrapper = shallowMount(HelloWorld, { 9 | propsData: { msg } 10 | }); 11 | expect(wrapper.text()).to.include(msg); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | publicPath: process.env.NODE_ENV === "production" ? "/GitDataV/" : "/", 3 | devServer: { 4 | port: 8080, 5 | proxy: { 6 | "/api": { 7 | target: "https://api.github.com", 8 | changeOrigin: true, 9 | ws: true, 10 | pathRewrite: { 11 | "^/api": "" 12 | } 13 | } 14 | } 15 | } 16 | }; 17 | --------------------------------------------------------------------------------