├── .gitignore ├── README.md ├── babel.config.js ├── jsconfig.json ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html ├── reset.css └── static │ ├── china.json │ ├── css │ ├── materialdesignicons.min.css │ ├── select2-bootstrap.min.css │ ├── select2.min.css │ ├── style.css │ ├── typicons.css │ └── vendor.bundle.base.css │ ├── font │ ├── Roboto-Black.eot │ ├── Roboto-Black.ttf │ ├── Roboto-Black.woff │ ├── Roboto-Black.woff2 │ ├── Roboto-Bold.eot │ ├── Roboto-Bold.ttf │ ├── Roboto-Bold.woff │ ├── Roboto-Bold.woff2 │ ├── Roboto-Light.eot │ ├── Roboto-Light.ttf │ ├── Roboto-Light.woff │ ├── Roboto-Light.woff2 │ ├── Roboto-Medium.eot │ ├── Roboto-Medium.ttf │ ├── Roboto-Medium.woff │ ├── Roboto-Medium.woff2 │ ├── Roboto-Regular.eot │ ├── Roboto-Regular.ttf │ ├── Roboto-Regular.woff │ ├── Roboto-Regular.woff2 │ ├── materialdesignicons-webfont.eot │ ├── materialdesignicons-webfont.ttf │ ├── materialdesignicons-webfont.woff │ ├── materialdesignicons-webfont.woff2 │ ├── typicons.eot │ ├── typicons.ttf │ └── typicons.woff │ ├── image │ ├── lockscreen-bg.jpg │ ├── login-bg.jpg │ └── register-bg.jpg │ ├── js │ ├── Chart.min.js │ ├── chart.js │ ├── dashboard.js │ ├── file-upload.js │ ├── hoverable-collapse.js │ ├── off-canvas.js │ ├── progressbar.min.js │ ├── select2.js │ ├── select2.min.js │ ├── settings.js │ ├── template.js │ ├── todolist.js │ ├── typeahead.bundle.min.js │ ├── typeahead.js │ └── vendor.bundle.base.js │ └── picture │ ├── face1.jpg │ ├── face2.jpg │ ├── face29.jpg │ ├── face291.png │ ├── face3.jpg │ ├── face30.png │ ├── face31.png │ ├── face32.png │ ├── face33.png │ ├── face34.png │ ├── face4.jpg │ ├── face5.jpg │ ├── face6.jpg │ ├── face7.jpg │ ├── logo-mini.svg │ └── logo.svg ├── src ├── App.vue ├── api │ ├── index.js │ └── request.js ├── assets │ ├── b1.jpg │ └── logo.png ├── components │ ├── CategorySelect │ │ └── index.vue │ ├── Charts │ │ ├── index.vue │ │ └── mapChart │ │ │ └── index.vue │ ├── NavBar │ │ └── index.vue │ ├── SideBar │ │ └── index.vue │ └── Theme │ │ └── index.vue ├── main.js ├── pages │ ├── authority │ │ └── index.vue │ ├── first │ │ └── index.vue │ ├── home │ │ └── index.vue │ ├── login │ │ └── index.vue │ ├── modification │ │ └── index.vue │ ├── opinion │ │ └── index.vue │ ├── register │ │ └── index.vue │ ├── topic │ │ └── index.vue │ └── user │ │ └── index.vue ├── store │ └── index.js ├── style │ ├── materialdesignicons.min.css │ ├── select2-bootstrap.min.css │ ├── select2.min.css │ ├── style.css │ ├── typicons.css │ └── vendor.bundle.base.css └── utils │ └── index.js └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # weibo_visualization 2 | 项目简介:一个Web端微博数据可视化平台。对Python爬虫得到的微博热搜以及热门话题评论等数据进行展示:包括指定话题在不同时间下热度的统计图表(显示热度随时间变化的关系),近一小时微博热搜热度变化的动态图表等;同时使用SinglePass算法对同一话题的评论内容进行聚类分析,提取主要的五个簇,并分析文本相似性,对每个簇的摘要进行展示。 3 | 4 | ## 首页 5 | 1、在用户登录操作之后,前端拿到用户token,将token持久化存储在localstorage中。随后登录进入首页。 6 | 7 | 8 | 2、首页主要展示微博热搜排行及动态排序、不同地区的微博话题关键词等。 9 | ![image](https://user-images.githubusercontent.com/88093402/227863730-e7f2e134-8c9c-45dd-8c85-fe940d06f424.png) 10 | ![image](https://user-images.githubusercontent.com/88093402/227864524-55c0f41b-4567-4dcb-8862-d3a09c855a05.png) 11 | 12 | ## 话题分类统计 13 | 1、统计不同分类中不同话题下的微博信息:包括用户名、微博内容、点赞数、评论数、微博链接(可以进行点击跳转)。 14 | 15 | 16 | 2、做不同分类下的统计图表。 17 | ![image](https://user-images.githubusercontent.com/88093402/227864933-05e66a61-7c5a-4602-a78c-31eef5abfc1e.png) 18 | ![image](https://user-images.githubusercontent.com/88093402/227864974-d5f84b0c-9685-4ee6-9a61-4cbd9d0ce092.png) 19 | 20 | 21 | ## 舆情走势分析 22 | 1、分析不同关键词下舆情的变化(热度随时间的变化情况)、展示此话题下影响力最高的5个用户。 23 | 24 | 25 | 2、利用singlepass算法将该话题下的微博内容进行聚类,得到该话题下按照相似信息总数降序top5的微博内容,并对每个聚类簇进行摘要总结。 26 | ![image](https://user-images.githubusercontent.com/88093402/227865920-a42c4663-7e16-4e58-88c9-f8db0c814973.png) 27 | ![image](https://user-images.githubusercontent.com/88093402/227865960-52130195-8653-41f7-a2c1-f34f9c948f67.png) 28 | 29 | 30 | ## 微博用户分析 31 | 1、从年龄、性别、增长率这几个方面分析微博用户数量的走势。 32 | 33 | 34 | 2、展示微博日活跃用户与月活跃用户。 35 | ![image](https://user-images.githubusercontent.com/88093402/227866057-5ca5518e-3bdd-4afa-b884-cf847e94bba4.png) 36 | 37 | 38 | ## 项目初始化 39 | ``` 40 | npm install 41 | ``` 42 | 43 | ### 项目运行 44 | ``` 45 | npm run serve 46 | ``` 47 | 48 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | //给src文件夹起别名 但是node_modules与dist文件夹中不可以用@ 9 | "@/*": [ 10 | "src/*" 11 | ] 12 | }, 13 | "lib": [ 14 | "esnext", 15 | "dom", 16 | "dom.iterable", 17 | "scripthost" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weibo_visualization", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 12 | 13 | 20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /public/reset.css: -------------------------------------------------------------------------------- 1 | /* @import "./iconfont.css"; */ 2 | 3 | /* 清除内外边距 */ 4 | body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, 5 | dl, dt, dd, ul, ol, li, 6 | pre, 7 | fieldset, lengend, button, input, textarea, 8 | th, td { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | 13 | /* 设置默认字体 */ 14 | body, 15 | button, input, select, textarea { /* for ie */ 16 | /*font: 12px/1 Tahoma, Helvetica, Arial, "宋体", sans-serif;*/ 17 | font: 12px/1.3 "Microsoft YaHei",Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif; /* 用 ascii 字符表示,使得在任何编码下都无问题 */ 18 | color: #333; 19 | } 20 | 21 | 22 | h1 { font-size: 18px; /* 18px / 12px = 1.5 */ } 23 | h2 { font-size: 16px; } 24 | h3 { font-size: 14px; } 25 | h4, h5, h6 { font-size: 100%; } 26 | 27 | address, cite, dfn, em, var, i{ font-style: normal; } /* 将斜体扶正 */ 28 | b, strong{ font-weight: normal; } /* 将粗体扶细 */ 29 | code, kbd, pre, samp, tt { font-family: "Courier New", Courier, monospace; } /* 统一等宽字体 */ 30 | small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */ 31 | 32 | /* 重置列表元素 */ 33 | ul, ol { list-style: none; } 34 | 35 | /* 重置文本格式元素 */ 36 | a { text-decoration: none; color: #666;} 37 | 38 | 39 | /* 重置表单元素 */ 40 | legend { color: #000; } /* for ie6 */ 41 | fieldset, img { border: none; } 42 | button, input, select, textarea { 43 | font-size: 100%; /* 使得表单元素在 ie 下能继承字体大小 */ 44 | } 45 | 46 | /* 重置表格元素 */ 47 | table { 48 | border-collapse: collapse; 49 | border-spacing: 0; 50 | } 51 | 52 | /* 重置 hr */ 53 | hr { 54 | border: none; 55 | height: 1px; 56 | } 57 | .clearFix::after{ 58 | content:""; 59 | display: block; 60 | clear:both; 61 | } 62 | /* 让非ie浏览器默认也显示垂直滚动条,防止因滚动条引起的闪烁 */ 63 | html { overflow-y: scroll; } 64 | 65 | a:link:hover{ 66 | color : rgb(79, 76, 212) !important; 67 | text-decoration: underline; 68 | } 69 | 70 | /* 清除浮动 */ 71 | .clearfix::after { 72 | display: block; 73 | height: 0; 74 | content: ""; 75 | clear: both; 76 | visibility: hidden; 77 | } -------------------------------------------------------------------------------- /public/static/css/select2-bootstrap.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Select2 Bootstrap Theme v0.1.0-beta.10 (https://select2.github.io/select2-bootstrap-theme) 3 | * Copyright 2015-2017 Florian Kissling and contributors (https://github.com/select2/select2-bootstrap-theme/graphs/contributors) 4 | * Licensed under MIT (https://github.com/select2/select2-bootstrap-theme/blob/master/LICENSE) 5 | */ 6 | 7 | .select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#555;font-size:14px;outline:0}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#555;font-size:14px}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#999}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#999}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#999;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#999}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#777;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{background-color:#f5f5f5;color:#262626}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{background-color:#337ab7;color:#fff}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{margin-left:-12px;padding-left:24px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-24px;padding-left:36px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-36px;padding-left:48px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-48px;padding-left:60px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-60px;padding-left:72px}.select2-container--bootstrap .select2-results__group{color:#777;display:block;padding:6px 12px;font-size:12px;line-height:1.42857143;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;border-color:#66afe9}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #999;border-width:0 4px 4px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-color:transparent}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-right-radius:0;border-top-left-radius:0;border-top-color:transparent}.select2-container--bootstrap .select2-selection__clear{color:#999;cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--bootstrap .select2-selection__clear:hover{color:#333}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#ccc;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:#eee}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);border-color:#66afe9;overflow-x:hidden;margin-top:-1px}.select2-container--bootstrap .select2-dropdown--above{-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175);margin-top:1px}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:34px;line-height:1.42857143;padding:6px 24px 6px 12px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;bottom:0;right:12px;top:0;width:4px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{border-color:#999 transparent transparent;border-style:solid;border-width:4px 4px 0;height:0;left:0;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{color:#555;padding:0}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--bootstrap .select2-selection--multiple{min-height:34px;padding:0;height:auto}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;line-height:1.42857143;list-style:none;margin:0;overflow:hidden;padding:0;width:100%;text-overflow:ellipsis;white-space:nowrap}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{color:#999;float:left;margin-top:5px}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{color:#555;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:default;float:left;margin:5px 0 0 6px;padding:0 6px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{background:0 0;padding:0 12px;height:32px;line-height:1.42857143;margin-top:0;min-width:5em}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:3px}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 22px 5px 10px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:30px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{font-size:12px;line-height:1.5;margin:4px 0 0 5px;padding:0 5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{padding:0 10px;font-size:12px;height:28px;line-height:1.5}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 31px 10px 16px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{border-width:5px 5px 0;margin-left:-10px;margin-top:-2.5px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{font-size:18px;line-height:1.3333333;border-radius:4px;margin:9px 0 0 8px;padding:0 10px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{padding:0 16px;font-size:18px;height:44px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #999;border-width:0 5px 5px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-left:24px;padding-right:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{left:12px;right:auto}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:0;margin-right:6px}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;border-color:#66512c}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;border-color:#843534}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;border-color:#2b542c}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-bottom-right-radius:0;border-top-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--bootstrap{display:table;table-layout:fixed;position:relative;z-index:2;width:100%;margin-bottom:0}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}} 8 | -------------------------------------------------------------------------------- /public/static/css/select2.min.css: -------------------------------------------------------------------------------- 1 | .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} 2 | -------------------------------------------------------------------------------- /public/static/css/vendor.bundle.base.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Container style 3 | */ 4 | .ps { 5 | overflow: hidden !important; 6 | overflow-anchor: none; 7 | -ms-overflow-style: none; 8 | touch-action: auto; 9 | -ms-touch-action: auto; 10 | } 11 | 12 | /* 13 | * Scrollbar rail styles 14 | */ 15 | .ps__rail-x { 16 | display: none; 17 | opacity: 0; 18 | transition: background-color .2s linear, opacity .2s linear; 19 | -webkit-transition: background-color .2s linear, opacity .2s linear; 20 | height: 15px; 21 | /* there must be 'bottom' or 'top' for ps__rail-x */ 22 | bottom: 0px; 23 | /* please don't change 'position' */ 24 | position: absolute; 25 | } 26 | 27 | .ps__rail-y { 28 | display: none; 29 | opacity: 0; 30 | transition: background-color .2s linear, opacity .2s linear; 31 | -webkit-transition: background-color .2s linear, opacity .2s linear; 32 | width: 15px; 33 | /* there must be 'right' or 'left' for ps__rail-y */ 34 | right: 0; 35 | /* please don't change 'position' */ 36 | position: absolute; 37 | } 38 | 39 | .ps--active-x > .ps__rail-x, 40 | .ps--active-y > .ps__rail-y { 41 | display: block; 42 | background-color: transparent; 43 | } 44 | 45 | .ps:hover > .ps__rail-x, 46 | .ps:hover > .ps__rail-y, 47 | .ps--focus > .ps__rail-x, 48 | .ps--focus > .ps__rail-y, 49 | .ps--scrolling-x > .ps__rail-x, 50 | .ps--scrolling-y > .ps__rail-y { 51 | opacity: 0.6; 52 | } 53 | 54 | .ps .ps__rail-x:hover, 55 | .ps .ps__rail-y:hover, 56 | .ps .ps__rail-x:focus, 57 | .ps .ps__rail-y:focus, 58 | .ps .ps__rail-x.ps--clicking, 59 | .ps .ps__rail-y.ps--clicking { 60 | background-color: #eee; 61 | opacity: 0.9; 62 | } 63 | 64 | /* 65 | * Scrollbar thumb styles 66 | */ 67 | .ps__thumb-x { 68 | background-color: #aaa; 69 | border-radius: 6px; 70 | transition: background-color .2s linear, height .2s ease-in-out; 71 | -webkit-transition: background-color .2s linear, height .2s ease-in-out; 72 | height: 6px; 73 | /* there must be 'bottom' for ps__thumb-x */ 74 | bottom: 2px; 75 | /* please don't change 'position' */ 76 | position: absolute; 77 | } 78 | 79 | .ps__thumb-y { 80 | background-color: #aaa; 81 | border-radius: 6px; 82 | transition: background-color .2s linear, width .2s ease-in-out; 83 | -webkit-transition: background-color .2s linear, width .2s ease-in-out; 84 | width: 6px; 85 | /* there must be 'right' for ps__thumb-y */ 86 | right: 2px; 87 | /* please don't change 'position' */ 88 | position: absolute; 89 | } 90 | 91 | .ps__rail-x:hover > .ps__thumb-x, 92 | .ps__rail-x:focus > .ps__thumb-x, 93 | .ps__rail-x.ps--clicking .ps__thumb-x { 94 | background-color: #999; 95 | height: 11px; 96 | } 97 | 98 | .ps__rail-y:hover > .ps__thumb-y, 99 | .ps__rail-y:focus > .ps__thumb-y, 100 | .ps__rail-y.ps--clicking .ps__thumb-y { 101 | background-color: #999; 102 | width: 11px; 103 | } 104 | 105 | /* MS supports */ 106 | @supports (-ms-overflow-style: none) { 107 | .ps { 108 | overflow: auto !important; 109 | } 110 | } 111 | 112 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 113 | .ps { 114 | overflow: auto !important; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /public/static/font/Roboto-Black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Black.eot -------------------------------------------------------------------------------- /public/static/font/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Black.ttf -------------------------------------------------------------------------------- /public/static/font/Roboto-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Black.woff -------------------------------------------------------------------------------- /public/static/font/Roboto-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Black.woff2 -------------------------------------------------------------------------------- /public/static/font/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Bold.eot -------------------------------------------------------------------------------- /public/static/font/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Bold.ttf -------------------------------------------------------------------------------- /public/static/font/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Bold.woff -------------------------------------------------------------------------------- /public/static/font/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /public/static/font/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Light.eot -------------------------------------------------------------------------------- /public/static/font/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Light.ttf -------------------------------------------------------------------------------- /public/static/font/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Light.woff -------------------------------------------------------------------------------- /public/static/font/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Light.woff2 -------------------------------------------------------------------------------- /public/static/font/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Medium.eot -------------------------------------------------------------------------------- /public/static/font/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Medium.ttf -------------------------------------------------------------------------------- /public/static/font/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Medium.woff -------------------------------------------------------------------------------- /public/static/font/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /public/static/font/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Regular.eot -------------------------------------------------------------------------------- /public/static/font/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Regular.ttf -------------------------------------------------------------------------------- /public/static/font/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Regular.woff -------------------------------------------------------------------------------- /public/static/font/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /public/static/font/materialdesignicons-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/materialdesignicons-webfont.eot -------------------------------------------------------------------------------- /public/static/font/materialdesignicons-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/materialdesignicons-webfont.ttf -------------------------------------------------------------------------------- /public/static/font/materialdesignicons-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/materialdesignicons-webfont.woff -------------------------------------------------------------------------------- /public/static/font/materialdesignicons-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/materialdesignicons-webfont.woff2 -------------------------------------------------------------------------------- /public/static/font/typicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/typicons.eot -------------------------------------------------------------------------------- /public/static/font/typicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/typicons.ttf -------------------------------------------------------------------------------- /public/static/font/typicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/font/typicons.woff -------------------------------------------------------------------------------- /public/static/image/lockscreen-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/image/lockscreen-bg.jpg -------------------------------------------------------------------------------- /public/static/image/login-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/image/login-bg.jpg -------------------------------------------------------------------------------- /public/static/image/register-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/image/register-bg.jpg -------------------------------------------------------------------------------- /public/static/js/chart.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | /* ChartJS 3 | * ------- 4 | * Data and config for chartjs 5 | */ 6 | 'use strict'; 7 | var data = { 8 | labels: ["2013", "2014", "2014", "2015", "2016", "2017"], 9 | datasets: [{ 10 | label: '# of Votes', 11 | data: [10, 19, 3, 5, 2, 3], 12 | backgroundColor: [ 13 | 'rgba(255, 99, 132, 0.2)', 14 | 'rgba(54, 162, 235, 0.2)', 15 | 'rgba(255, 206, 86, 0.2)', 16 | 'rgba(75, 192, 192, 0.2)', 17 | 'rgba(153, 102, 255, 0.2)', 18 | 'rgba(255, 159, 64, 0.2)' 19 | ], 20 | borderColor: [ 21 | 'rgba(255,99,132,1)', 22 | 'rgba(54, 162, 235, 1)', 23 | 'rgba(255, 206, 86, 1)', 24 | 'rgba(75, 192, 192, 1)', 25 | 'rgba(153, 102, 255, 1)', 26 | 'rgba(255, 159, 64, 1)' 27 | ], 28 | borderWidth: 1, 29 | fill: false 30 | }] 31 | }; 32 | var multiLineData = { 33 | labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], 34 | datasets: [{ 35 | label: 'Dataset 1', 36 | data: [12, 19, 3, 5, 2, 3], 37 | borderColor: [ 38 | '#587ce4' 39 | ], 40 | borderWidth: 2, 41 | fill: false 42 | }, 43 | { 44 | label: 'Dataset 2', 45 | data: [5, 23, 7, 12, 42, 23], 46 | borderColor: [ 47 | '#ede190' 48 | ], 49 | borderWidth: 2, 50 | fill: false 51 | }, 52 | { 53 | label: 'Dataset 3', 54 | data: [15, 10, 21, 32, 12, 33], 55 | borderColor: [ 56 | '#f44252' 57 | ], 58 | borderWidth: 2, 59 | fill: false 60 | } 61 | ] 62 | }; 63 | var options = { 64 | scales: { 65 | yAxes: [{ 66 | ticks: { 67 | beginAtZero: true 68 | } 69 | }] 70 | }, 71 | legend: { 72 | display: false 73 | }, 74 | elements: { 75 | point: { 76 | radius: 0 77 | } 78 | } 79 | 80 | }; 81 | var doughnutPieData = { 82 | datasets: [{ 83 | data: [30, 40, 30], 84 | backgroundColor: [ 85 | 'rgba(255, 99, 132, 0.5)', 86 | 'rgba(54, 162, 235, 0.5)', 87 | 'rgba(255, 206, 86, 0.5)', 88 | 'rgba(75, 192, 192, 0.5)', 89 | 'rgba(153, 102, 255, 0.5)', 90 | 'rgba(255, 159, 64, 0.5)' 91 | ], 92 | borderColor: [ 93 | 'rgba(255,99,132,1)', 94 | 'rgba(54, 162, 235, 1)', 95 | 'rgba(255, 206, 86, 1)', 96 | 'rgba(75, 192, 192, 1)', 97 | 'rgba(153, 102, 255, 1)', 98 | 'rgba(255, 159, 64, 1)' 99 | ], 100 | }], 101 | 102 | // These labels appear in the legend and in the tooltips when hovering different arcs 103 | labels: [ 104 | 'Pink', 105 | 'Blue', 106 | 'Yellow', 107 | ] 108 | }; 109 | var doughnutPieOptions = { 110 | responsive: true, 111 | animation: { 112 | animateScale: true, 113 | animateRotate: true 114 | } 115 | }; 116 | var areaData = { 117 | labels: ["2013", "2014", "2015", "2016", "2017"], 118 | datasets: [{ 119 | label: '# of Votes', 120 | data: [12, 19, 3, 5, 2, 3], 121 | backgroundColor: [ 122 | 'rgba(255, 99, 132, 0.2)', 123 | 'rgba(54, 162, 235, 0.2)', 124 | 'rgba(255, 206, 86, 0.2)', 125 | 'rgba(75, 192, 192, 0.2)', 126 | 'rgba(153, 102, 255, 0.2)', 127 | 'rgba(255, 159, 64, 0.2)' 128 | ], 129 | borderColor: [ 130 | 'rgba(255,99,132,1)', 131 | 'rgba(54, 162, 235, 1)', 132 | 'rgba(255, 206, 86, 1)', 133 | 'rgba(75, 192, 192, 1)', 134 | 'rgba(153, 102, 255, 1)', 135 | 'rgba(255, 159, 64, 1)' 136 | ], 137 | borderWidth: 1, 138 | fill: true, // 3: no fill 139 | }] 140 | }; 141 | 142 | var areaOptions = { 143 | plugins: { 144 | filler: { 145 | propagate: true 146 | } 147 | } 148 | } 149 | 150 | var multiAreaData = { 151 | labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 152 | datasets: [{ 153 | label: 'Facebook', 154 | data: [8, 11, 13, 15, 12, 13, 16, 15, 13, 19, 11, 14], 155 | borderColor: ['rgba(255, 99, 132, 0.5)'], 156 | backgroundColor: ['rgba(255, 99, 132, 0.5)'], 157 | borderWidth: 1, 158 | fill: true 159 | }, 160 | { 161 | label: 'Twitter', 162 | data: [7, 17, 12, 16, 14, 18, 16, 12, 15, 11, 13, 9], 163 | borderColor: ['rgba(54, 162, 235, 0.5)'], 164 | backgroundColor: ['rgba(54, 162, 235, 0.5)'], 165 | borderWidth: 1, 166 | fill: true 167 | }, 168 | { 169 | label: 'Linkedin', 170 | data: [6, 14, 16, 20, 12, 18, 15, 12, 17, 19, 15, 11], 171 | borderColor: ['rgba(255, 206, 86, 0.5)'], 172 | backgroundColor: ['rgba(255, 206, 86, 0.5)'], 173 | borderWidth: 1, 174 | fill: true 175 | } 176 | ] 177 | }; 178 | 179 | var multiAreaOptions = { 180 | plugins: { 181 | filler: { 182 | propagate: true 183 | } 184 | }, 185 | elements: { 186 | point: { 187 | radius: 0 188 | } 189 | }, 190 | scales: { 191 | xAxes: [{ 192 | gridLines: { 193 | display: false 194 | } 195 | }], 196 | yAxes: [{ 197 | gridLines: { 198 | display: false 199 | } 200 | }] 201 | } 202 | } 203 | 204 | var scatterChartData = { 205 | datasets: [{ 206 | label: 'First Dataset', 207 | data: [{ 208 | x: -10, 209 | y: 0 210 | }, 211 | { 212 | x: 0, 213 | y: 3 214 | }, 215 | { 216 | x: -25, 217 | y: 5 218 | }, 219 | { 220 | x: 40, 221 | y: 5 222 | } 223 | ], 224 | backgroundColor: [ 225 | 'rgba(255, 99, 132, 0.2)' 226 | ], 227 | borderColor: [ 228 | 'rgba(255,99,132,1)' 229 | ], 230 | borderWidth: 1 231 | }, 232 | { 233 | label: 'Second Dataset', 234 | data: [{ 235 | x: 10, 236 | y: 5 237 | }, 238 | { 239 | x: 20, 240 | y: -30 241 | }, 242 | { 243 | x: -25, 244 | y: 15 245 | }, 246 | { 247 | x: -10, 248 | y: 5 249 | } 250 | ], 251 | backgroundColor: [ 252 | 'rgba(54, 162, 235, 0.2)', 253 | ], 254 | borderColor: [ 255 | 'rgba(54, 162, 235, 1)', 256 | ], 257 | borderWidth: 1 258 | } 259 | ] 260 | } 261 | 262 | var scatterChartOptions = { 263 | scales: { 264 | xAxes: [{ 265 | type: 'linear', 266 | position: 'bottom' 267 | }] 268 | } 269 | } 270 | // Get context with jQuery - using jQuery's .get() method. 271 | if ($("#barChart").length) { 272 | var barChartCanvas = $("#barChart").get(0).getContext("2d"); 273 | // This will get the first returned node in the jQuery collection. 274 | var barChart = new Chart(barChartCanvas, { 275 | type: 'bar', 276 | data: data, 277 | options: options 278 | }); 279 | } 280 | 281 | if ($("#lineChart").length) { 282 | var lineChartCanvas = $("#lineChart").get(0).getContext("2d"); 283 | var lineChart = new Chart(lineChartCanvas, { 284 | type: 'line', 285 | data: data, 286 | options: options 287 | }); 288 | } 289 | 290 | if ($("#linechart-multi").length) { 291 | var multiLineCanvas = $("#linechart-multi").get(0).getContext("2d"); 292 | var lineChart = new Chart(multiLineCanvas, { 293 | type: 'line', 294 | data: multiLineData, 295 | options: options 296 | }); 297 | } 298 | 299 | if ($("#areachart-multi").length) { 300 | var multiAreaCanvas = $("#areachart-multi").get(0).getContext("2d"); 301 | var multiAreaChart = new Chart(multiAreaCanvas, { 302 | type: 'line', 303 | data: multiAreaData, 304 | options: multiAreaOptions 305 | }); 306 | } 307 | 308 | if ($("#doughnutChart").length) { 309 | var doughnutChartCanvas = $("#doughnutChart").get(0).getContext("2d"); 310 | var doughnutChart = new Chart(doughnutChartCanvas, { 311 | type: 'doughnut', 312 | data: doughnutPieData, 313 | options: doughnutPieOptions 314 | }); 315 | } 316 | 317 | if ($("#pieChart").length) { 318 | var pieChartCanvas = $("#pieChart").get(0).getContext("2d"); 319 | var pieChart = new Chart(pieChartCanvas, { 320 | type: 'pie', 321 | data: doughnutPieData, 322 | options: doughnutPieOptions 323 | }); 324 | } 325 | 326 | if ($("#areaChart").length) { 327 | var areaChartCanvas = $("#areaChart").get(0).getContext("2d"); 328 | var areaChart = new Chart(areaChartCanvas, { 329 | type: 'line', 330 | data: areaData, 331 | options: areaOptions 332 | }); 333 | } 334 | 335 | if ($("#scatterChart").length) { 336 | var scatterChartCanvas = $("#scatterChart").get(0).getContext("2d"); 337 | var scatterChart = new Chart(scatterChartCanvas, { 338 | type: 'scatter', 339 | data: scatterChartData, 340 | options: scatterChartOptions 341 | }); 342 | } 343 | 344 | if ($("#browserTrafficChart").length) { 345 | var doughnutChartCanvas = $("#browserTrafficChart").get(0).getContext("2d"); 346 | var doughnutChart = new Chart(doughnutChartCanvas, { 347 | type: 'doughnut', 348 | data: browserTrafficData, 349 | options: doughnutPieOptions 350 | }); 351 | } 352 | }); -------------------------------------------------------------------------------- /public/static/js/file-upload.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | $('.file-upload-browse').on('click', function() { 5 | var file = $(this).parent().parent().parent().find('.file-upload-default'); 6 | file.trigger('click'); 7 | }); 8 | $('.file-upload-default').on('change', function() { 9 | $(this).parent().find('.form-control').val($(this).val().replace(/C:\\fakepath\\/i, '')); 10 | }); 11 | }); 12 | })(jQuery); -------------------------------------------------------------------------------- /public/static/js/hoverable-collapse.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | //Open submenu on hover in compact sidebar mode and horizontal menu mode 4 | $(document).on('mouseenter mouseleave', '.sidebar .nav-item', function(ev) { 5 | var body = $('body'); 6 | var sidebarIconOnly = body.hasClass("sidebar-icon-only"); 7 | var sidebarFixed = body.hasClass("sidebar-fixed"); 8 | if (!('ontouchstart' in document.documentElement)) { 9 | if (sidebarIconOnly) { 10 | if (sidebarFixed) { 11 | if (ev.type === 'mouseenter') { 12 | body.removeClass('sidebar-icon-only'); 13 | } 14 | } else { 15 | var $menuItem = $(this); 16 | if (ev.type === 'mouseenter') { 17 | $menuItem.addClass('hover-open') 18 | } else { 19 | $menuItem.removeClass('hover-open') 20 | } 21 | } 22 | } 23 | } 24 | }); 25 | })(jQuery); -------------------------------------------------------------------------------- /public/static/js/off-canvas.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | $('[data-toggle="offcanvas"]').on("click", function() { 5 | $('.sidebar-offcanvas').toggleClass('active') 6 | }); 7 | }); 8 | })(jQuery); -------------------------------------------------------------------------------- /public/static/js/progressbar.min.js: -------------------------------------------------------------------------------- 1 | // ProgressBar.js 1.0.1 2 | // https://kimmobrunfeldt.github.io/progressbar.js 3 | // License: MIT 4 | 5 | !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.ProgressBar=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;ga?0:(a-f)/e;for(h in b)b.hasOwnProperty(h)&&(i=g[h],k="function"==typeof i?i:o[i],b[h]=j(c[h],d[h],k,l));return b}function j(a,b,c,d){return a+(b-a)*c(d)}function k(a,b){var c=n.prototype.filter,d=a._filterArgs;f(c,function(e){"undefined"!=typeof c[e][b]&&c[e][b].apply(a,d)})}function l(a,b,c,d,e,f,g,h,j,l,m){v=b+c+d,w=Math.min(m||u(),v),x=w>=v,y=d-(v-w),a.isPlaying()&&(x?(j(g,a._attachment,y),a.stop(!0)):(a._scheduleId=l(a._timeoutHandler,s),k(a,"beforeTween"),b+c>w?i(1,e,f,g,1,1,h):i(w,e,f,g,d,b+c,h),k(a,"afterTween"),j(e,a._attachment,y)))}function m(a,b){var c={},d=typeof b;return"string"===d||"function"===d?f(a,function(a){c[a]=b}):f(a,function(a){c[a]||(c[a]=b[a]||q)}),c}function n(a,b){this._currentState=a||{},this._configured=!1,this._scheduleFunction=p,"undefined"!=typeof b&&this.setConfig(b)}var o,p,q="linear",r=500,s=1e3/60,t=Date.now?Date.now:function(){return+new Date},u="undefined"!=typeof SHIFTY_DEBUG_NOW?SHIFTY_DEBUG_NOW:t;p="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.mozCancelRequestAnimationFrame&&window.mozRequestAnimationFrame||setTimeout:setTimeout;var v,w,x,y;return n.prototype.tween=function(a){return this._isTweening?this:(void 0===a&&this._configured||this.setConfig(a),this._timestamp=u(),this._start(this.get(),this._attachment),this.resume())},n.prototype.setConfig=function(a){a=a||{},this._configured=!0,this._attachment=a.attachment,this._pausedAtTime=null,this._scheduleId=null,this._delay=a.delay||0,this._start=a.start||e,this._step=a.step||e,this._finish=a.finish||e,this._duration=a.duration||r,this._currentState=g({},a.from)||this.get(),this._originalState=this.get(),this._targetState=g({},a.to)||this.get();var b=this;this._timeoutHandler=function(){l(b,b._timestamp,b._delay,b._duration,b._currentState,b._originalState,b._targetState,b._easing,b._step,b._scheduleFunction)};var c=this._currentState,d=this._targetState;return h(d,c),this._easing=m(c,a.easing||q),this._filterArgs=[c,this._originalState,d,this._easing],k(this,"tweenCreated"),this},n.prototype.get=function(){return g({},this._currentState)},n.prototype.set=function(a){this._currentState=a},n.prototype.pause=function(){return this._pausedAtTime=u(),this._isPaused=!0,this},n.prototype.resume=function(){return this._isPaused&&(this._timestamp+=u()-this._pausedAtTime),this._isPaused=!1,this._isTweening=!0,this._timeoutHandler(),this},n.prototype.seek=function(a){a=Math.max(a,0);var b=u();return this._timestamp+a===0?this:(this._timestamp=b-a,this.isPlaying()||(this._isTweening=!0,this._isPaused=!1,l(this,this._timestamp,this._delay,this._duration,this._currentState,this._originalState,this._targetState,this._easing,this._step,this._scheduleFunction,b),this.pause()),this)},n.prototype.stop=function(a){return this._isTweening=!1,this._isPaused=!1,this._timeoutHandler=e,(b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.oCancelAnimationFrame||b.msCancelAnimationFrame||b.mozCancelRequestAnimationFrame||b.clearTimeout)(this._scheduleId),a&&(k(this,"beforeTween"),i(1,this._currentState,this._originalState,this._targetState,1,0,this._easing),k(this,"afterTween"),k(this,"afterTweenEnd"),this._finish.call(this,this._currentState,this._attachment)),this},n.prototype.isPlaying=function(){return this._isTweening&&!this._isPaused},n.prototype.setScheduleFunction=function(a){this._scheduleFunction=a},n.prototype.dispose=function(){var a;for(a in this)this.hasOwnProperty(a)&&delete this[a]},n.prototype.filter={},n.prototype.formula={linear:function(a){return a}},o=n.prototype.formula,g(n,{now:u,each:f,tweenProps:i,tweenProp:j,applyFilter:k,shallowCopy:g,defaults:h,composeEasingObject:m}),"function"==typeof SHIFTY_DEBUG_NOW&&(b.timeoutHandler=l),"object"==typeof d?c.exports=n:"function"==typeof a&&a.amd?a(function(){return n}):"undefined"==typeof b.Tweenable&&(b.Tweenable=n),n}();!function(){e.shallowCopy(e.prototype.formula,{easeInQuad:function(a){return Math.pow(a,2)},easeOutQuad:function(a){return-(Math.pow(a-1,2)-1)},easeInOutQuad:function(a){return(a/=.5)<1?.5*Math.pow(a,2):-.5*((a-=2)*a-2)},easeInCubic:function(a){return Math.pow(a,3)},easeOutCubic:function(a){return Math.pow(a-1,3)+1},easeInOutCubic:function(a){return(a/=.5)<1?.5*Math.pow(a,3):.5*(Math.pow(a-2,3)+2)},easeInQuart:function(a){return Math.pow(a,4)},easeOutQuart:function(a){return-(Math.pow(a-1,4)-1)},easeInOutQuart:function(a){return(a/=.5)<1?.5*Math.pow(a,4):-.5*((a-=2)*Math.pow(a,3)-2)},easeInQuint:function(a){return Math.pow(a,5)},easeOutQuint:function(a){return Math.pow(a-1,5)+1},easeInOutQuint:function(a){return(a/=.5)<1?.5*Math.pow(a,5):.5*(Math.pow(a-2,5)+2)},easeInSine:function(a){return-Math.cos(a*(Math.PI/2))+1},easeOutSine:function(a){return Math.sin(a*(Math.PI/2))},easeInOutSine:function(a){return-.5*(Math.cos(Math.PI*a)-1)},easeInExpo:function(a){return 0===a?0:Math.pow(2,10*(a-1))},easeOutExpo:function(a){return 1===a?1:-Math.pow(2,-10*a)+1},easeInOutExpo:function(a){return 0===a?0:1===a?1:(a/=.5)<1?.5*Math.pow(2,10*(a-1)):.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return-(Math.sqrt(1-a*a)-1)},easeOutCirc:function(a){return Math.sqrt(1-Math.pow(a-1,2))},easeInOutCirc:function(a){return(a/=.5)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeOutBounce:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},easeInBack:function(a){var b=1.70158;return a*a*((b+1)*a-b)},easeOutBack:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},easeInOutBack:function(a){var b=1.70158;return(a/=.5)<1?.5*(a*a*(((b*=1.525)+1)*a-b)):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},elastic:function(a){return-1*Math.pow(4,-8*a)*Math.sin((6*a-1)*(2*Math.PI)/2)+1},swingFromTo:function(a){var b=1.70158;return(a/=.5)<1?.5*(a*a*(((b*=1.525)+1)*a-b)):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},swingFrom:function(a){var b=1.70158;return a*a*((b+1)*a-b)},swingTo:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},bounce:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},bouncePast:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?2-(7.5625*(a-=1.5/2.75)*a+.75):2.5/2.75>a?2-(7.5625*(a-=2.25/2.75)*a+.9375):2-(7.5625*(a-=2.625/2.75)*a+.984375)},easeFromTo:function(a){return(a/=.5)<1?.5*Math.pow(a,4):-.5*((a-=2)*Math.pow(a,3)-2)},easeFrom:function(a){return Math.pow(a,4)},easeTo:function(a){return Math.pow(a,.25)}})}(),function(){function a(a,b,c,d,e,f){function g(a){return((n*a+o)*a+p)*a}function h(a){return((q*a+r)*a+s)*a}function i(a){return(3*n*a+2*o)*a+p}function j(a){return 1/(200*a)}function k(a,b){return h(m(a,b))}function l(a){return a>=0?a:0-a}function m(a,b){var c,d,e,f,h,j;for(e=a,j=0;8>j;j++){if(f=g(e)-a,l(f)e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),l(f-a)f?c=e:d=e,e=.5*(d-c)+c}return e}var n=0,o=0,p=0,q=0,r=0,s=0;return p=3*b,o=3*(d-b)-p,n=1-p-o,s=3*c,r=3*(e-c)-s,q=1-s-r,k(a,j(f))}function b(b,c,d,e){return function(f){return a(f,b,c,d,e,1)}}e.setBezierFunction=function(a,c,d,f,g){var h=b(c,d,f,g);return h.displayName=a,h.x1=c,h.y1=d,h.x2=f,h.y2=g,e.prototype.formula[a]=h},e.unsetBezierFunction=function(a){delete e.prototype.formula[a]}}(),function(){function a(a,b,c,d,f,g){return e.tweenProps(d,b,a,c,1,g,f)}var b=new e;b._filterArgs=[],e.interpolate=function(c,d,f,g,h){var i=e.shallowCopy({},c),j=h||0,k=e.composeEasingObject(c,g||"linear");b.set({});var l=b._filterArgs;l.length=0,l[0]=i,l[1]=c,l[2]=d,l[3]=k,e.applyFilter(b,"tweenCreated"),e.applyFilter(b,"beforeTween");var m=a(c,i,d,f,k,j);return e.applyFilter(b,"afterTween"),m}}(),function(a){function b(a,b){var c,d=[],e=a.length;for(c=0;e>c;c++)d.push("_"+b+"_"+c);return d}function c(a){var b=a.match(v);return b?(1===b.length||a[0].match(u))&&b.unshift(""):b=["",""],b.join(A)}function d(b){a.each(b,function(a){var c=b[a];"string"==typeof c&&c.match(z)&&(b[a]=e(c))})}function e(a){return i(z,a,f)}function f(a){var b=g(a);return"rgb("+b[0]+","+b[1]+","+b[2]+")"}function g(a){return a=a.replace(/#/,""),3===a.length&&(a=a.split(""),a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),B[0]=h(a.substr(0,2)),B[1]=h(a.substr(2,2)),B[2]=h(a.substr(4,2)),B}function h(a){return parseInt(a,16)}function i(a,b,c){var d=b.match(a),e=b.replace(a,A);if(d)for(var f,g=d.length,h=0;g>h;h++)f=d.shift(),e=e.replace(A,c(f));return e}function j(a){return i(x,a,k)}function k(a){for(var b=a.match(w),c=b.length,d=a.match(y)[0],e=0;c>e;e++)d+=parseInt(b[e],10)+",";return d=d.slice(0,-1)+")"}function l(d){var e={};return a.each(d,function(a){var f=d[a];if("string"==typeof f){var g=r(f);e[a]={formatString:c(f),chunkNames:b(g,a)}}}),e}function m(b,c){a.each(c,function(a){for(var d=b[a],e=r(d),f=e.length,g=0;f>g;g++)b[c[a].chunkNames[g]]=+e[g];delete b[a]})}function n(b,c){a.each(c,function(a){var d=b[a],e=o(b,c[a].chunkNames),f=p(e,c[a].chunkNames);d=q(c[a].formatString,f),b[a]=j(d)})}function o(a,b){for(var c,d={},e=b.length,f=0;e>f;f++)c=b[f],d[c]=a[c],delete a[c];return d}function p(a,b){C.length=0;for(var c=b.length,d=0;c>d;d++)C.push(a[b[d]]);return C}function q(a,b){for(var c=a,d=b.length,e=0;d>e;e++)c=c.replace(A,+b[e].toFixed(4));return c}function r(a){return a.match(w)}function s(b,c){a.each(c,function(a){var d,e=c[a],f=e.chunkNames,g=f.length,h=b[a];if("string"==typeof h){var i=h.split(" "),j=i[i.length-1];for(d=0;g>d;d++)b[f[d]]=i[d]||j}else for(d=0;g>d;d++)b[f[d]]=h;delete b[a]})}function t(b,c){a.each(c,function(a){var d=c[a],e=d.chunkNames,f=e.length,g=b[e[0]],h=typeof g;if("string"===h){for(var i="",j=0;f>j;j++)i+=" "+b[e[j]],delete b[e[j]];b[a]=i.substr(1)}else b[a]=g})}var u=/(\d|\-|\.)/,v=/([^\-0-9\.]+)/g,w=/[0-9.\-]+/g,x=new RegExp("rgb\\("+w.source+/,\s*/.source+w.source+/,\s*/.source+w.source+"\\)","g"),y=/^.*\(/,z=/#([0-9]|[a-f]){3,6}/gi,A="VAL",B=[],C=[];a.prototype.filter.token={tweenCreated:function(a,b,c,e){d(a),d(b),d(c),this._tokenData=l(a)},beforeTween:function(a,b,c,d){s(d,this._tokenData),m(a,this._tokenData),m(b,this._tokenData),m(c,this._tokenData)},afterTween:function(a,b,c,d){n(a,this._tokenData),n(b,this._tokenData),n(c,this._tokenData),t(d,this._tokenData)}}}(e)}).call(null)},{}],2:[function(a,b,c){var d=a("./shape"),e=a("./utils"),f=function(a,b){this._pathTemplate="M 50,50 m 0,-{radius} a {radius},{radius} 0 1 1 0,{2radius} a {radius},{radius} 0 1 1 0,-{2radius}",this.containerAspectRatio=1,d.apply(this,arguments)};f.prototype=new d,f.prototype.constructor=f,f.prototype._pathString=function(a){var b=a.strokeWidth;a.trailWidth&&a.trailWidth>a.strokeWidth&&(b=a.trailWidth);var c=50-b/2;return e.render(this._pathTemplate,{radius:c,"2radius":2*c})},f.prototype._trailString=function(a){return this._pathString(a)},b.exports=f},{"./shape":7,"./utils":8}],3:[function(a,b,c){var d=a("./shape"),e=a("./utils"),f=function(a,b){this._pathTemplate="M 0,{center} L 100,{center}",d.apply(this,arguments)};f.prototype=new d,f.prototype.constructor=f,f.prototype._initializeSvg=function(a,b){a.setAttribute("viewBox","0 0 100 "+b.strokeWidth),a.setAttribute("preserveAspectRatio","none")},f.prototype._pathString=function(a){return e.render(this._pathTemplate,{center:a.strokeWidth/2})},f.prototype._trailString=function(a){return this._pathString(a)},b.exports=f},{"./shape":7,"./utils":8}],4:[function(a,b,c){b.exports={Line:a("./line"),Circle:a("./circle"),SemiCircle:a("./semicircle"),Path:a("./path"),Shape:a("./shape"),utils:a("./utils")}},{"./circle":2,"./line":3,"./path":5,"./semicircle":6,"./shape":7,"./utils":8}],5:[function(a,b,c){var d=a("shifty"),e=a("./utils"),f={easeIn:"easeInCubic",easeOut:"easeOutCubic",easeInOut:"easeInOutCubic"},g=function h(a,b){if(!(this instanceof h))throw new Error("Constructor was called without new keyword");b=e.extend({duration:800,easing:"linear",from:{},to:{},step:function(){}},b);var c;c=e.isString(a)?document.querySelector(a):a,this.path=c,this._opts=b,this._tweenable=null;var d=this.path.getTotalLength();this.path.style.strokeDasharray=d+" "+d,this.set(0)};g.prototype.value=function(){var a=this._getComputedDashOffset(),b=this.path.getTotalLength(),c=1-a/b;return parseFloat(c.toFixed(6),10)},g.prototype.set=function(a){this.stop(),this.path.style.strokeDashoffset=this._progressToOffset(a);var b=this._opts.step;if(e.isFunction(b)){var c=this._easing(this._opts.easing),d=this._calculateTo(a,c),f=this._opts.shape||this;b(d,f,this._opts.attachment)}},g.prototype.stop=function(){this._stopTween(),this.path.style.strokeDashoffset=this._getComputedDashOffset()},g.prototype.animate=function(a,b,c){b=b||{},e.isFunction(b)&&(c=b,b={});var f=e.extend({},b),g=e.extend({},this._opts);b=e.extend(g,b);var h=this._easing(b.easing),i=this._resolveFromAndTo(a,h,f);this.stop(),this.path.getBoundingClientRect();var j=this._getComputedDashOffset(),k=this._progressToOffset(a),l=this;this._tweenable=new d,this._tweenable.tween({from:e.extend({offset:j},i.from),to:e.extend({offset:k},i.to),duration:b.duration,easing:h,step:function(a){l.path.style.strokeDashoffset=a.offset;var c=b.shape||l;b.step(a,c,b.attachment)},finish:function(a){e.isFunction(c)&&c()}})},g.prototype._getComputedDashOffset=function(){var a=window.getComputedStyle(this.path,null);return parseFloat(a.getPropertyValue("stroke-dashoffset"),10)},g.prototype._progressToOffset=function(a){var b=this.path.getTotalLength();return b-a*b},g.prototype._resolveFromAndTo=function(a,b,c){return c.from&&c.to?{from:c.from,to:c.to}:{from:this._calculateFrom(b),to:this._calculateTo(a,b)}},g.prototype._calculateFrom=function(a){return d.interpolate(this._opts.from,this._opts.to,this.value(),a)},g.prototype._calculateTo=function(a,b){return d.interpolate(this._opts.from,this._opts.to,a,b)},g.prototype._stopTween=function(){null!==this._tweenable&&(this._tweenable.stop(),this._tweenable=null)},g.prototype._easing=function(a){return f.hasOwnProperty(a)?f[a]:a},b.exports=g},{"./utils":8,shifty:1}],6:[function(a,b,c){var d=a("./shape"),e=a("./circle"),f=a("./utils"),g=function(a,b){this._pathTemplate="M 50,50 m -{radius},0 a {radius},{radius} 0 1 1 {2radius},0",this.containerAspectRatio=2,d.apply(this,arguments)};g.prototype=new d,g.prototype.constructor=g,g.prototype._initializeSvg=function(a,b){a.setAttribute("viewBox","0 0 100 50")},g.prototype._initializeTextContainer=function(a,b,c){a.text.style&&(c.style.top="auto",c.style.bottom="0",a.text.alignToBottom?f.setStyle(c,"transform","translate(-50%, 0)"):f.setStyle(c,"transform","translate(-50%, 50%)"))},g.prototype._pathString=e.prototype._pathString,g.prototype._trailString=e.prototype._trailString,b.exports=g},{"./circle":2,"./shape":7,"./utils":8}],7:[function(a,b,c){var d=a("./path"),e=a("./utils"),f="Object is destroyed",g=function h(a,b){if(!(this instanceof h))throw new Error("Constructor was called without new keyword");if(0!==arguments.length){this._opts=e.extend({color:"#555",strokeWidth:1,trailColor:null,trailWidth:null,fill:null,text:{style:{color:null,position:"absolute",left:"50%",top:"50%",padding:0,margin:0,transform:{prefix:!0,value:"translate(-50%, -50%)"}},autoStyleContainer:!0,alignToBottom:!0,value:null,className:"progressbar-text"},svgStyle:{display:"block",width:"100%"},warnings:!1},b,!0),e.isObject(b)&&void 0!==b.svgStyle&&(this._opts.svgStyle=b.svgStyle),e.isObject(b)&&e.isObject(b.text)&&void 0!==b.text.style&&(this._opts.text.style=b.text.style);var c,f=this._createSvgView(this._opts);if(c=e.isString(a)?document.querySelector(a):a,!c)throw new Error("Container does not exist: "+a);this._container=c,this._container.appendChild(f.svg),this._opts.warnings&&this._warnContainerAspectRatio(this._container),this._opts.svgStyle&&e.setStyles(f.svg,this._opts.svgStyle),this.svg=f.svg,this.path=f.path,this.trail=f.trail,this.text=null;var g=e.extend({attachment:void 0,shape:this},this._opts);this._progressPath=new d(f.path,g),e.isObject(this._opts.text)&&null!==this._opts.text.value&&this.setText(this._opts.text.value)}};g.prototype.animate=function(a,b,c){if(null===this._progressPath)throw new Error(f);this._progressPath.animate(a,b,c)},g.prototype.stop=function(){if(null===this._progressPath)throw new Error(f);void 0!==this._progressPath&&this._progressPath.stop()},g.prototype.destroy=function(){if(null===this._progressPath)throw new Error(f);this.stop(),this.svg.parentNode.removeChild(this.svg),this.svg=null,this.path=null,this.trail=null,this._progressPath=null,null!==this.text&&(this.text.parentNode.removeChild(this.text),this.text=null)},g.prototype.set=function(a){if(null===this._progressPath)throw new Error(f);this._progressPath.set(a)},g.prototype.value=function(){if(null===this._progressPath)throw new Error(f);return void 0===this._progressPath?0:this._progressPath.value()},g.prototype.setText=function(a){if(null===this._progressPath)throw new Error(f);null===this.text&&(this.text=this._createTextContainer(this._opts,this._container),this._container.appendChild(this.text)),e.isObject(a)?(e.removeChildren(this.text),this.text.appendChild(a)):this.text.innerHTML=a},g.prototype._createSvgView=function(a){var b=document.createElementNS("http://www.w3.org/2000/svg","svg");this._initializeSvg(b,a);var c=null;(a.trailColor||a.trailWidth)&&(c=this._createTrail(a),b.appendChild(c));var d=this._createPath(a);return b.appendChild(d),{svg:b,path:d,trail:c}},g.prototype._initializeSvg=function(a,b){a.setAttribute("viewBox","0 0 100 100")},g.prototype._createPath=function(a){var b=this._pathString(a);return this._createPathElement(b,a)},g.prototype._createTrail=function(a){var b=this._trailString(a),c=e.extend({},a);return c.trailColor||(c.trailColor="#eee"),c.trailWidth||(c.trailWidth=c.strokeWidth),c.color=c.trailColor,c.strokeWidth=c.trailWidth,c.fill=null,this._createPathElement(b,c)},g.prototype._createPathElement=function(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttribute("d",a),c.setAttribute("stroke",b.color),c.setAttribute("stroke-width",b.strokeWidth),b.fill?c.setAttribute("fill",b.fill):c.setAttribute("fill-opacity","0"),c},g.prototype._createTextContainer=function(a,b){var c=document.createElement("div");c.className=a.text.className;var d=a.text.style;return d&&(a.text.autoStyleContainer&&(b.style.position="relative"),e.setStyles(c,d),d.color||(c.style.color=a.color)),this._initializeTextContainer(a,b,c),c},g.prototype._initializeTextContainer=function(a,b,c){},g.prototype._pathString=function(a){throw new Error("Override this function for each progress bar")},g.prototype._trailString=function(a){throw new Error("Override this function for each progress bar")},g.prototype._warnContainerAspectRatio=function(a){if(this.containerAspectRatio){var b=window.getComputedStyle(a,null),c=parseFloat(b.getPropertyValue("width"),10),d=parseFloat(b.getPropertyValue("height"),10);e.floatEquals(this.containerAspectRatio,c/d)||(console.warn("Incorrect aspect ratio of container","#"+a.id,"detected:",b.getPropertyValue("width")+"(width)","/",b.getPropertyValue("height")+"(height)","=",c/d),console.warn("Aspect ratio of should be",this.containerAspectRatio))}},b.exports=g},{"./path":5,"./utils":8}],8:[function(a,b,c){function d(a,b,c){a=a||{},b=b||{},c=c||!1;for(var e in b)if(b.hasOwnProperty(e)){var f=a[e],g=b[e];c&&l(f)&&l(g)?a[e]=d(f,g,c):a[e]=g}return a}function e(a,b){var c=a;for(var d in b)if(b.hasOwnProperty(d)){var e=b[d],f="\\{"+d+"\\}",g=new RegExp(f,"g");c=c.replace(g,e)}return c}function f(a,b,c){for(var d=a.style,e=0;e'); 87 | 88 | //Horizontal menu in mobile 89 | $('[data-toggle="horizontal-menu-toggle"]').on("click", function() { 90 | $(".horizontal-menu .bottom-navbar").toggleClass("header-toggled"); 91 | }); 92 | // Horizontal menu navigation in mobile menu on click 93 | var navItemClicked = $('.horizontal-menu .page-navigation >.nav-item'); 94 | navItemClicked.on("click", function(event) { 95 | if(window.matchMedia('(max-width: 991px)').matches) { 96 | if(!($(this).hasClass('show-submenu'))) { 97 | navItemClicked.removeClass('show-submenu'); 98 | } 99 | $(this).toggleClass('show-submenu'); 100 | } 101 | }) 102 | 103 | $(window).scroll(function() { 104 | if(window.matchMedia('(min-width: 992px)').matches) { 105 | var header = $('.horizontal-menu'); 106 | if ($(window).scrollTop() >= 70) { 107 | $(header).addClass('fixed-on-scroll'); 108 | } else { 109 | $(header).removeClass('fixed-on-scroll'); 110 | } 111 | } 112 | }); 113 | }); 114 | })(jQuery); -------------------------------------------------------------------------------- /public/static/js/todolist.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | var todoListItem = $('.todo-list'); 5 | var todoListInput = $('.todo-list-input'); 6 | $('.todo-list-add-btn').on("click", function(event) { 7 | event.preventDefault(); 8 | 9 | var item = $(this).prevAll('.todo-list-input').val(); 10 | 11 | if (item) { 12 | todoListItem.append("
  • "); 13 | todoListInput.val(""); 14 | } 15 | 16 | }); 17 | 18 | todoListItem.on('change', '.checkbox', function() { 19 | if ($(this).attr('checked')) { 20 | $(this).removeAttr('checked'); 21 | } else { 22 | $(this).attr('checked', 'checked'); 23 | } 24 | 25 | $(this).closest("li").toggleClass('completed'); 26 | 27 | }); 28 | 29 | todoListItem.on('click', '.remove', function() { 30 | $(this).parent().remove(); 31 | }); 32 | 33 | }); 34 | })(jQuery); -------------------------------------------------------------------------------- /public/static/js/typeahead.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | var substringMatcher = function(strs) { 4 | return function findMatches(q, cb) { 5 | var matches, substringRegex; 6 | 7 | // an array that will be populated with substring matches 8 | matches = []; 9 | 10 | // regex used to determine if a string contains the substring `q` 11 | var substrRegex = new RegExp(q, 'i'); 12 | 13 | // iterate through the pool of strings and for any string that 14 | // contains the substring `q`, add it to the `matches` array 15 | for (var i = 0; i < strs.length; i++) { 16 | if (substrRegex.test(strs[i])) { 17 | matches.push(strs[i]); 18 | } 19 | } 20 | 21 | cb(matches); 22 | }; 23 | }; 24 | 25 | var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 26 | 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 27 | 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 28 | 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 29 | 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 30 | 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 31 | 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 32 | 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 33 | 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming' 34 | ]; 35 | 36 | $('#the-basics .typeahead').typeahead({ 37 | hint: true, 38 | highlight: true, 39 | minLength: 1 40 | }, { 41 | name: 'states', 42 | source: substringMatcher(states) 43 | }); 44 | // constructs the suggestion engine 45 | var states = new Bloodhound({ 46 | datumTokenizer: Bloodhound.tokenizers.whitespace, 47 | queryTokenizer: Bloodhound.tokenizers.whitespace, 48 | // `states` is an array of state names defined in "The Basics" 49 | local: states 50 | }); 51 | 52 | $('#bloodhound .typeahead').typeahead({ 53 | hint: true, 54 | highlight: true, 55 | minLength: 1 56 | }, { 57 | name: 'states', 58 | source: states 59 | }); 60 | })(jQuery); -------------------------------------------------------------------------------- /public/static/picture/face1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face1.jpg -------------------------------------------------------------------------------- /public/static/picture/face2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face2.jpg -------------------------------------------------------------------------------- /public/static/picture/face29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face29.jpg -------------------------------------------------------------------------------- /public/static/picture/face291.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face291.png -------------------------------------------------------------------------------- /public/static/picture/face3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face3.jpg -------------------------------------------------------------------------------- /public/static/picture/face30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face30.png -------------------------------------------------------------------------------- /public/static/picture/face31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face31.png -------------------------------------------------------------------------------- /public/static/picture/face32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face32.png -------------------------------------------------------------------------------- /public/static/picture/face33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face33.png -------------------------------------------------------------------------------- /public/static/picture/face34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face34.png -------------------------------------------------------------------------------- /public/static/picture/face4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face4.jpg -------------------------------------------------------------------------------- /public/static/picture/face5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face5.jpg -------------------------------------------------------------------------------- /public/static/picture/face6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face6.jpg -------------------------------------------------------------------------------- /public/static/picture/face7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/static/picture/face7.jpg -------------------------------------------------------------------------------- /public/static/picture/logo-mini.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/static/picture/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 21 | 22 | -------------------------------------------------------------------------------- /src/api/index.js: -------------------------------------------------------------------------------- 1 | //这个模块用于将所有API接口进行统一管理 2 | import requests from "./request"; 3 | const reqUserLogin = (data) =>{ 4 | return requests({ 5 | url:'/api/users/login', 6 | method:'post', 7 | data, 8 | }) 9 | }; 10 | const reqUserRegister = (data) =>{ 11 | return requests({ 12 | url:'/api/users/register', 13 | method:'post', 14 | data, 15 | }) 16 | }; 17 | const reqHotList = (pageNum,pageSize)=>{ 18 | return requests({ 19 | // 注意获取列表数据的模板字符串形式 20 | url:`/api/hot/list?pageNum=${pageNum}&pageSize=${pageSize}`, 21 | method:'get', 22 | }) 23 | }; 24 | const reqTimeHotList = () =>{ 25 | return requests({ 26 | url:'/api/hotlist/all', 27 | method:'get', 28 | }) 29 | }; 30 | //获取话题一级分类属性值 31 | const reqCategory1List = ()=>{ 32 | return requests({ 33 | url:'/api/getCategory/list1', 34 | method:'get', 35 | }) 36 | }; 37 | //获取话题二级分类属性值 38 | const reqCategory2List = (father_id) =>{ 39 | return requests({ 40 | url:`/api/getCategory/list2?father_id=${father_id}`, 41 | method:'get', 42 | }) 43 | }; 44 | //获取某个话题的列表 45 | const reqTopicOneList = (topic_id,pageNum,pageSize) =>{ 46 | return requests({ 47 | url:`/api/topic/one?topic_id=${topic_id}&pageNum=${pageNum}&pageSize=${pageSize}`, 48 | method:'get', 49 | }) 50 | }; 51 | //获取话题热度前十 52 | const reqHotTopic = () =>{ 53 | return requests({ 54 | url:'/api/topic/hotlist', 55 | method:'get' 56 | }) 57 | }; 58 | //获取指定关键词的singlepass聚类结果 59 | const reqSinglePassRes = (label) =>{ 60 | return requests({ 61 | url:`/api/singlepass/one?label=${label}`, 62 | method:'get' 63 | }) 64 | }; 65 | //获取指定关键词按时间统计的结果 66 | const reqTimeCountData = (label) =>{ 67 | return requests({ 68 | url:`/api/singlepass/time?label=${label}`, 69 | method:'get' 70 | }) 71 | }; 72 | //获取指定关键词 top5用户信息 73 | const reqTopUsersData = (label) =>{ 74 | return requests({ 75 | url:`/api/singlepass/topusers?label=${label}`, 76 | method:'get' 77 | }) 78 | }; 79 | //获取分季度活跃用户数据 80 | const reqActiveUsers = () =>{ 81 | return requests({ 82 | url:'/api/activeuser/list', 83 | method:'get' 84 | }) 85 | }; 86 | //请求修改密码 87 | const reqModifyPassword = (data)=>{ 88 | return requests({ 89 | url:'/api/users/', 90 | method:'patch', 91 | data, 92 | }) 93 | }; 94 | //获取用户列表 95 | const reqUserList = () =>{ 96 | return requests({ 97 | url:'/api/users/authority', 98 | method:'get' 99 | }) 100 | }; 101 | //删除指定用户 102 | const reqDeleteUser = (data) =>{ 103 | return requests({ 104 | url:"/api/users/deleteUser", 105 | method:"delete", 106 | data 107 | }) 108 | }; 109 | //修改用户权限 110 | const reqUpdateUser = (data) =>{ 111 | return requests({ 112 | url:"/api/users/updateUser", 113 | method:'put', 114 | data, 115 | }) 116 | } 117 | export default{ 118 | reqUserLogin, 119 | reqUserRegister, 120 | reqHotList, 121 | reqTimeHotList, 122 | reqCategory1List, 123 | reqCategory2List, 124 | reqTopicOneList, 125 | reqHotTopic, 126 | reqSinglePassRes, 127 | reqTimeCountData, 128 | reqTopUsersData, 129 | reqActiveUsers, 130 | reqModifyPassword, 131 | reqUserList, 132 | reqDeleteUser, 133 | reqUpdateUser 134 | } 135 | -------------------------------------------------------------------------------- /src/api/request.js: -------------------------------------------------------------------------------- 1 | //对axois的二次封装 2 | import axios from 'axios'; 3 | 4 | //利用axios对象的create方法下创建一个axios实例 5 | const requests = axios.create({ 6 | //配置对象 7 | //基础路径:在请求路径上自动带上/api 8 | // baseURL:"/api", 9 | //代表请求超时时间5s 10 | timeout:5000, 11 | }); 12 | 13 | //请求拦截器 14 | //在发请求之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情 interceptors就是拦截器 15 | requests.interceptors.request.use((config)=>{ 16 | // 携带token给服务器 17 | return config; 18 | }); 19 | //响应拦截器 20 | requests.interceptors.response.use((res)=>{ 21 | return res.data; 22 | },(error)=>{ 23 | //响应失败的回调函数 24 | return Promise.reject(new Error('faile')); 25 | }) 26 | 27 | //对外暴露 28 | //这里对外暴露的不是axios 而是二次封装之后的requests 29 | export default requests; -------------------------------------------------------------------------------- /src/assets/b1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/src/assets/b1.jpg -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/CategorySelect/index.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 66 | 67 | -------------------------------------------------------------------------------- /src/components/Charts/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /src/components/Charts/mapChart/index.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 172 | 173 | -------------------------------------------------------------------------------- /src/components/NavBar/index.vue: -------------------------------------------------------------------------------- 1 | // 顶部栏 2 | 154 | 155 | 179 | 180 | -------------------------------------------------------------------------------- /src/components/SideBar/index.vue: -------------------------------------------------------------------------------- 1 | // 这里是侧边栏组件 2 | 120 | 121 | 152 | 153 | -------------------------------------------------------------------------------- /src/components/Theme/index.vue: -------------------------------------------------------------------------------- 1 | // 主题选项 2 | 29 | 30 | 35 | 36 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | //引入vuex仓库 4 | import store from '@/store/index.js'; 5 | //引入路由 6 | import router from '@/router'; 7 | //引入elementUI 8 | import ElementUI from 'element-ui'; 9 | import 'element-ui/lib/theme-chalk/index.css'; 10 | //引入echarts 11 | import * as echarts from 'echarts'; 12 | //引入侧边栏 顶部栏 13 | import SideBar from '@/components/SideBar'; 14 | import NavBar from '@/components/NavBar'; 15 | import ThemeSetting from '@/components/Theme'; 16 | import CategorySelect from '@/components/CategorySelect'; 17 | //注册侧边栏为全局组件 18 | Vue.component(SideBar.name,SideBar); 19 | Vue.component(NavBar.name,NavBar) 20 | Vue.component(ThemeSetting.name,ThemeSetting); 21 | Vue.component(CategorySelect.name,CategorySelect); 22 | //引入api 挂载在vue原型对象上 组件实例的原型指向vue.prototypr 23 | import API from '@/api'; 24 | Vue.prototype.$API = API; 25 | Vue.prototype.$echarts = echarts; 26 | Vue.use(ElementUI); //使用elementUI 27 | Vue.config.productionTip = false 28 | // 允许vue调试 29 | Vue.config.devtools = true 30 | 31 | new Vue({ 32 | render: h => h(App), 33 | //注册仓库 34 | store, 35 | //注册路由 36 | router, 37 | }).$mount('#app') 38 | -------------------------------------------------------------------------------- /src/pages/authority/index.vue: -------------------------------------------------------------------------------- 1 | 68 | 69 | 171 | 172 | -------------------------------------------------------------------------------- /src/pages/home/index.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 37 | 38 | 43 | -------------------------------------------------------------------------------- /src/pages/login/index.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 116 | 117 | -------------------------------------------------------------------------------- /src/pages/modification/index.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 126 | 127 | -------------------------------------------------------------------------------- /src/pages/opinion/index.vue: -------------------------------------------------------------------------------- 1 | 68 | 69 | 342 | 343 | -------------------------------------------------------------------------------- /src/pages/register/index.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 101 | 102 | -------------------------------------------------------------------------------- /src/pages/topic/index.vue: -------------------------------------------------------------------------------- 1 | 65 | 66 | 235 | 236 | -------------------------------------------------------------------------------- /src/pages/user/index.vue: -------------------------------------------------------------------------------- 1 | 66 | 67 | 315 | 316 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | // vuex管理部分 2 | //首先写vuex的配置 3 | import Vue from 'vue'; 4 | import Vuex from 'vuex'; 5 | import {getToken,getUserName} from '@/utils'; 6 | //需要使用插件一次 7 | Vue.use(Vuex); 8 | const state = { 9 | token:getToken(), 10 | user_name:getUserName(), 11 | }; 12 | const mutations = {}; 13 | const actions = {}; 14 | const getters = {}; 15 | 16 | //然后对外暴露 里面写的是一个配置对象 17 | export default new Vuex.Store({ 18 | state, 19 | mutations, 20 | actions, 21 | getters, 22 | }); 23 | 24 | -------------------------------------------------------------------------------- /src/style/select2-bootstrap.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Select2 Bootstrap Theme v0.1.0-beta.10 (https://select2.github.io/select2-bootstrap-theme) 3 | * Copyright 2015-2017 Florian Kissling and contributors (https://github.com/select2/select2-bootstrap-theme/graphs/contributors) 4 | * Licensed under MIT (https://github.com/select2/select2-bootstrap-theme/blob/master/LICENSE) 5 | */ 6 | 7 | .select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#555;font-size:14px;outline:0}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#555;font-size:14px}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#999}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#999}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#999;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#999}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#777;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{background-color:#f5f5f5;color:#262626}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{background-color:#337ab7;color:#fff}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{margin-left:-12px;padding-left:24px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-24px;padding-left:36px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-36px;padding-left:48px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-48px;padding-left:60px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-60px;padding-left:72px}.select2-container--bootstrap .select2-results__group{color:#777;display:block;padding:6px 12px;font-size:12px;line-height:1.42857143;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;border-color:#66afe9}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #999;border-width:0 4px 4px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-color:transparent}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-right-radius:0;border-top-left-radius:0;border-top-color:transparent}.select2-container--bootstrap .select2-selection__clear{color:#999;cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--bootstrap .select2-selection__clear:hover{color:#333}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#ccc;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:#eee}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);border-color:#66afe9;overflow-x:hidden;margin-top:-1px}.select2-container--bootstrap .select2-dropdown--above{-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175);margin-top:1px}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:34px;line-height:1.42857143;padding:6px 24px 6px 12px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;bottom:0;right:12px;top:0;width:4px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{border-color:#999 transparent transparent;border-style:solid;border-width:4px 4px 0;height:0;left:0;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{color:#555;padding:0}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--bootstrap .select2-selection--multiple{min-height:34px;padding:0;height:auto}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;line-height:1.42857143;list-style:none;margin:0;overflow:hidden;padding:0;width:100%;text-overflow:ellipsis;white-space:nowrap}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{color:#999;float:left;margin-top:5px}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{color:#555;background:#fff;border:1px solid #ccc;border-radius:4px;cursor:default;float:left;margin:5px 0 0 6px;padding:0 6px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{background:0 0;padding:0 12px;height:32px;line-height:1.42857143;margin-top:0;min-width:5em}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:3px}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 22px 5px 10px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:30px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{font-size:12px;line-height:1.5;margin:4px 0 0 5px;padding:0 5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{padding:0 10px;font-size:12px;height:28px;line-height:1.5}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 31px 10px 16px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{border-width:5px 5px 0;margin-left:-10px;margin-top:-2.5px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{font-size:18px;line-height:1.3333333;border-radius:4px;margin:9px 0 0 8px;padding:0 10px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{padding:0 16px;font-size:18px;height:44px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #999;border-width:0 5px 5px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-left:24px;padding-right:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{left:12px;right:auto}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:0;margin-right:6px}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;border-color:#66512c}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;border-color:#843534}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;border-color:#2b542c}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-bottom-right-radius:0;border-top-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--bootstrap{display:table;table-layout:fixed;position:relative;z-index:2;width:100%;margin-bottom:0}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}} 8 | -------------------------------------------------------------------------------- /src/style/select2.min.css: -------------------------------------------------------------------------------- 1 | .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} 2 | -------------------------------------------------------------------------------- /src/style/vendor.bundle.base.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Container style 3 | */ 4 | .ps { 5 | overflow: hidden !important; 6 | overflow-anchor: none; 7 | -ms-overflow-style: none; 8 | touch-action: auto; 9 | -ms-touch-action: auto; 10 | } 11 | 12 | /* 13 | * Scrollbar rail styles 14 | */ 15 | .ps__rail-x { 16 | display: none; 17 | opacity: 0; 18 | transition: background-color .2s linear, opacity .2s linear; 19 | -webkit-transition: background-color .2s linear, opacity .2s linear; 20 | height: 15px; 21 | /* there must be 'bottom' or 'top' for ps__rail-x */ 22 | bottom: 0px; 23 | /* please don't change 'position' */ 24 | position: absolute; 25 | } 26 | 27 | .ps__rail-y { 28 | display: none; 29 | opacity: 0; 30 | transition: background-color .2s linear, opacity .2s linear; 31 | -webkit-transition: background-color .2s linear, opacity .2s linear; 32 | width: 15px; 33 | /* there must be 'right' or 'left' for ps__rail-y */ 34 | right: 0; 35 | /* please don't change 'position' */ 36 | position: absolute; 37 | } 38 | 39 | .ps--active-x > .ps__rail-x, 40 | .ps--active-y > .ps__rail-y { 41 | display: block; 42 | background-color: transparent; 43 | } 44 | 45 | .ps:hover > .ps__rail-x, 46 | .ps:hover > .ps__rail-y, 47 | .ps--focus > .ps__rail-x, 48 | .ps--focus > .ps__rail-y, 49 | .ps--scrolling-x > .ps__rail-x, 50 | .ps--scrolling-y > .ps__rail-y { 51 | opacity: 0.6; 52 | } 53 | 54 | .ps .ps__rail-x:hover, 55 | .ps .ps__rail-y:hover, 56 | .ps .ps__rail-x:focus, 57 | .ps .ps__rail-y:focus, 58 | .ps .ps__rail-x.ps--clicking, 59 | .ps .ps__rail-y.ps--clicking { 60 | background-color: #eee; 61 | opacity: 0.9; 62 | } 63 | 64 | /* 65 | * Scrollbar thumb styles 66 | */ 67 | .ps__thumb-x { 68 | background-color: #aaa; 69 | border-radius: 6px; 70 | transition: background-color .2s linear, height .2s ease-in-out; 71 | -webkit-transition: background-color .2s linear, height .2s ease-in-out; 72 | height: 6px; 73 | /* there must be 'bottom' for ps__thumb-x */ 74 | bottom: 2px; 75 | /* please don't change 'position' */ 76 | position: absolute; 77 | } 78 | 79 | .ps__thumb-y { 80 | background-color: #aaa; 81 | border-radius: 6px; 82 | transition: background-color .2s linear, width .2s ease-in-out; 83 | -webkit-transition: background-color .2s linear, width .2s ease-in-out; 84 | width: 6px; 85 | /* there must be 'right' for ps__thumb-y */ 86 | right: 2px; 87 | /* please don't change 'position' */ 88 | position: absolute; 89 | } 90 | 91 | .ps__rail-x:hover > .ps__thumb-x, 92 | .ps__rail-x:focus > .ps__thumb-x, 93 | .ps__rail-x.ps--clicking .ps__thumb-x { 94 | background-color: #999; 95 | height: 11px; 96 | } 97 | 98 | .ps__rail-y:hover > .ps__thumb-y, 99 | .ps__rail-y:focus > .ps__thumb-y, 100 | .ps__rail-y.ps--clicking .ps__thumb-y { 101 | background-color: #999; 102 | width: 11px; 103 | } 104 | 105 | /* MS supports */ 106 | @supports (-ms-overflow-style: none) { 107 | .ps { 108 | overflow: auto !important; 109 | } 110 | } 111 | 112 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 113 | .ps { 114 | overflow: auto !important; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/utils/index.js: -------------------------------------------------------------------------------- 1 | // 处理store中的数据 2 | 3 | //持久化存储token 4 | export const setToken = (token) =>{ 5 | localStorage.setItem('TOKEN',token); 6 | }; 7 | 8 | 9 | //获取token 10 | export const getToken = () =>{ 11 | return localStorage.getItem('TOKEN'); 12 | }; 13 | //获取user_name 14 | export const getUserName = () =>{ 15 | return localStorage.getItem('USER_NAME'); 16 | }; 17 | //退出登录 清除本地存储的token 18 | export const removeToken = () =>{ 19 | localStorage.removeItem('TOKEN'); 20 | }; -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | const webpack = require("webpack"); 2 | 3 | module.exports = { 4 | lintOnSave:false, 5 | configureWebpack: { 6 | plugins: [ 7 | new webpack.ProvidePlugin({ 8 | $: "jquery", 9 | jQuery: "jquery", 10 | "window.jQuery": "jquery", 11 | "window.$": "jquery", 12 | Popper: ["popper.js", "default"] 13 | }) 14 | ] 15 | }, 16 | //代理服务器解决跨域问题 17 | devServer: { 18 | proxy: { 19 | //当前端请求路径中出现/api时 代理服务器开始工作 找http://gmall-h5-api.atguigu.cn服务器要数据 20 | //服务器与服务器之间没有跨域问题 21 | '/api': { 22 | target: 'http://localhost:8000', 23 | // pathRewrite: { '^/api': '' }, 24 | 25 | }, 26 | }, 27 | }, 28 | }; 29 | --------------------------------------------------------------------------------