├── README.md ├── public ├── css │ ├── 685fd913f1e14aebad0cc9d3713ee469.css │ ├── bootstrap.min.css │ ├── bootstrap.min.tmp.css │ ├── daterangepicker-bs3.css │ ├── demo.css │ ├── font-awesome.min.css │ ├── light-bootstrap-dashboard.css │ └── pe-icon-7-stroke.css ├── fonts │ ├── d-6iyplofoccackzxwxsokcwcynf_cdxxwclxiixg1c.ttf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── hgo13k-tfspn0qi1sfdufacwcynf_cdxxwclxiixg1c.ttf │ ├── pe-icon-7-stroke.eot │ ├── pe-icon-7-stroke.svg │ ├── pe-icon-7-stroke.ttf │ ├── pe-icon-7-stroke.woff │ └── zn7gbfwfmp4ua6ar0hcolq.ttf ├── images │ └── c1e8fd0435074aa99ec3d47af9c9652d.jpg ├── js │ ├── Chart.js │ ├── aa743e8f448a4792bad10d201a7080f6.js │ ├── bootstrap-checkbox-radio-switch-tags.js │ ├── bootstrap-datetimepicker.js │ ├── bootstrap-notify.js │ ├── bootstrap-selectpicker.js │ ├── bootstrap-table.js │ ├── bootstrap.min.js │ ├── chartist.min.js │ ├── daterangepicker.js │ ├── demo.js │ ├── fullcalendar.min.js │ ├── jquery-jvectormap.js │ ├── jquery-ui.min.js │ ├── jquery.bootstrap.wizard.min.js │ ├── jquery.datatables.js │ ├── jquery.min.js │ ├── jquery.sharrre.js │ ├── jquery.validate.min.js │ ├── light-bootstrap-dashboard.js │ ├── moment.js │ ├── moment.min.js │ └── sweetalert2.js └── picture │ ├── au.png │ ├── blog-1.jpg │ ├── blog-2.jpg │ ├── blog-3.jpg │ ├── blog-4.jpg │ ├── br.png │ ├── de.png │ ├── default-avatar.png │ ├── full-screen-image-1.jpg │ ├── full-screen-image-2.jpg │ ├── full-screen-image-3.jpg │ ├── full-screen-image-4.jpg │ ├── gb.png │ ├── ro.png │ └── us.png └── views ├── apiReportList.html ├── appSupportList.html ├── capacha.html ├── error.html ├── login.html ├── taskList.html ├── ucloud.html ├── user.html ├── workerList.html └── workerRunningList.html /README.md: -------------------------------------------------------------------------------- 1 | # spider-monitor-view 2 | the website about spider monitor based on the bootstrap 3 | # 使用描述 4 | 此网站模板是很早之前写的,最早之前的版本已经找不到了...,目前这个版本是抽时间匆忙修改的,整个系统目前可以单独html页面查看,真正要使用起来需要对bootstrap有一定 5 | 了解,另外此html中已经有大量写好的js方法可以供大家参考使用,可能有地方没有删减完整,只希望大家做个参考! 6 | -------------------------------------------------------------------------------- /public/css/685fd913f1e14aebad0cc9d3713ee469.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto'; 3 | font-style: normal; 4 | font-weight: 300; 5 | src: local('Roboto Light'), local('Roboto-Light'), url(../fonts/hgo13k-tfspn0qi1sfdufacwcynf_cdxxwclxiixg1c.ttf) format('truetype'); 6 | } 7 | @font-face { 8 | font-family: 'Roboto'; 9 | font-style: normal; 10 | font-weight: 400; 11 | src: local('Roboto'), local('Roboto-Regular'), url(../fonts/zn7gbfwfmp4ua6ar0hcolq.ttf) format('truetype'); 12 | } 13 | @font-face { 14 | font-family: 'Roboto'; 15 | font-style: normal; 16 | font-weight: 700; 17 | src: local('Roboto Bold'), local('Roboto-Bold'), url(../fonts/d-6iyplofoccackzxwxsokcwcynf_cdxxwclxiixg1c.ttf) format('truetype'); 18 | } 19 | -------------------------------------------------------------------------------- /public/css/daterangepicker-bs3.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x 3 | * 4 | * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Built for http://www.improvely.com 9 | */ 10 | .clear{ clear:both;} 11 | .daterangepicker.dropdown-menu { 12 | max-width: none; 13 | z-index: 3000; 14 | } 15 | 16 | .daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { 17 | float: left; 18 | margin: 4px; 19 | } 20 | 21 | /*.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar {*/ 22 | .daterangepicker.opensright .calendar { 23 | float: right; 24 | margin: 4px; 25 | } 26 | 27 | .daterangepicker .ranges { 28 | margin:4px; 29 | text-align: left; 30 | padding:0px 20px; 31 | } 32 | 33 | .daterangepicker .ranges .range_inputs>div { 34 | float: left; 35 | } 36 | 37 | .daterangepicker .ranges .range_inputs>div:nth-child(2) { 38 | padding-left: 11px; 39 | } 40 | 41 | .daterangepicker .ranges .range_inputs .applyBtn{ 42 | float:right; 43 | } 44 | .daterangepicker .ranges .range_inputs .cancelBtn{ 45 | float:right;margin-right:10px; 46 | } 47 | 48 | 49 | .daterangepicker .calendar { 50 | display: none; 51 | max-width: 290px; 52 | } 53 | 54 | .daterangepicker.show-calendar .calendar { 55 | display: block; 56 | } 57 | 58 | .daterangepicker .calendar.single .calendar-date { 59 | border: none; 60 | } 61 | 62 | .daterangepicker .calendar th, .daterangepicker .calendar td { 63 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 64 | white-space: nowrap; 65 | text-align: center; 66 | min-width: 32px; 67 | } 68 | 69 | .daterangepicker .daterangepicker_start_input label, 70 | .daterangepicker .daterangepicker_end_input label { 71 | color: #333; 72 | display: block; 73 | font-size: 11px; 74 | font-weight: normal; 75 | height: 20px; 76 | line-height: 20px; 77 | margin-bottom: 2px; 78 | text-shadow: #fff 1px 1px 0px; 79 | text-transform: uppercase; 80 | padding-right:10px; 81 | float:left; 82 | height:34px; 83 | line-height:34px; 84 | } 85 | 86 | .daterangepicker .ranges input { 87 | font-size: 11px; 88 | } 89 | 90 | .daterangepicker .ranges .input-mini { 91 | background-color: #eee; 92 | border: 1px solid #ccc; 93 | border-radius: 4px; 94 | color: #555; 95 | display: block; 96 | font-size: 11px; 97 | height: 34px; 98 | line-height: 34px; 99 | vertical-align: middle; 100 | margin: 0 0 10px 0; 101 | padding: 0 6px; 102 | width: 84px; 103 | float:left; 104 | } 105 | 106 | .daterangepicker .ranges ul { 107 | list-style: none; 108 | margin: 0; 109 | padding: 0; 110 | } 111 | 112 | .daterangepicker .ranges li { 113 | font-size: 13px; 114 | background: #f5f5f5; 115 | border: 1px solid #f5f5f5; 116 | color: #08c; 117 | padding: 3px 12px; 118 | margin-bottom: 8px; 119 | -webkit-border-radius: 5px; 120 | -moz-border-radius: 5px; 121 | border-radius: 5px; 122 | cursor: pointer; 123 | } 124 | 125 | .daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { 126 | background: #08c; 127 | border: 1px solid #08c; 128 | color: #fff; 129 | } 130 | 131 | .daterangepicker .calendar-date { 132 | border: 1px solid #ddd; 133 | padding: 4px; 134 | border-radius: 4px; 135 | background: #fff; 136 | } 137 | 138 | .daterangepicker .calendar-time { 139 | text-align: center; 140 | margin: 8px auto 0 auto; 141 | line-height: 30px; 142 | } 143 | 144 | .daterangepicker { 145 | position: absolute; 146 | background: #fff; 147 | top: 100px; 148 | left: 20px; 149 | padding: 4px; 150 | margin-top: 1px; 151 | -webkit-border-radius: 4px; 152 | -moz-border-radius: 4px; 153 | border-radius: 4px; 154 | } 155 | 156 | .daterangepicker.opensleft:before { 157 | position: absolute; 158 | top: -7px; 159 | right: 9px; 160 | display: inline-block; 161 | border-right: 7px solid transparent; 162 | border-bottom: 7px solid #ccc; 163 | border-left: 7px solid transparent; 164 | border-bottom-color: rgba(0, 0, 0, 0.2); 165 | content: ''; 166 | } 167 | 168 | .daterangepicker.opensleft:after { 169 | position: absolute; 170 | top: -6px; 171 | right: 10px; 172 | display: inline-block; 173 | border-right: 6px solid transparent; 174 | border-bottom: 6px solid #fff; 175 | border-left: 6px solid transparent; 176 | content: ''; 177 | } 178 | 179 | .daterangepicker.opensright:before { 180 | position: absolute; 181 | top: -7px; 182 | left: 9px; 183 | display: inline-block; 184 | border-right: 7px solid transparent; 185 | border-bottom: 7px solid #ccc; 186 | border-left: 7px solid transparent; 187 | border-bottom-color: rgba(0, 0, 0, 0.2); 188 | content: ''; 189 | } 190 | 191 | .daterangepicker.opensright:after { 192 | position: absolute; 193 | top: -6px; 194 | left: 10px; 195 | display: inline-block; 196 | border-right: 6px solid transparent; 197 | border-bottom: 6px solid #fff; 198 | border-left: 6px solid transparent; 199 | content: ''; 200 | } 201 | 202 | .daterangepicker table { 203 | width: 100%; 204 | margin: 0; 205 | } 206 | 207 | .daterangepicker td, .daterangepicker th { 208 | text-align: center; 209 | width: 20px; 210 | height: 20px; 211 | -webkit-border-radius: 4px; 212 | -moz-border-radius: 4px; 213 | border-radius: 4px; 214 | cursor: pointer; 215 | white-space: nowrap; 216 | } 217 | 218 | .daterangepicker td.off { 219 | color: #999; 220 | } 221 | 222 | .daterangepicker td.disabled { 223 | color: #999; 224 | } 225 | 226 | .daterangepicker td.available:hover, .daterangepicker th.available:hover { 227 | background: #eee; 228 | } 229 | 230 | .daterangepicker td.in-range { 231 | background: #ebf4f8; 232 | -webkit-border-radius: 0; 233 | -moz-border-radius: 0; 234 | border-radius: 0; 235 | } 236 | 237 | .daterangepicker td.active, .daterangepicker td.active:hover { 238 | background-color: #357ebd; 239 | border-color: #3071a9; 240 | color: #fff; 241 | } 242 | 243 | .daterangepicker td.week, .daterangepicker th.week { 244 | font-size: 80%; 245 | color: #ccc; 246 | } 247 | 248 | .daterangepicker select.monthselect, .daterangepicker select.yearselect { 249 | font-size: 12px; 250 | padding: 1px; 251 | height: auto; 252 | margin: 0; 253 | cursor: default; 254 | } 255 | 256 | .daterangepicker select.monthselect { 257 | margin-right: 2%; 258 | width: 56%; 259 | } 260 | 261 | .daterangepicker select.yearselect { 262 | width: 40%; 263 | } 264 | 265 | .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.ampmselect { 266 | width: 50px; 267 | margin-bottom: 0; 268 | } 269 | 270 | .daterangepicker_start_input { 271 | float: left; 272 | } 273 | 274 | .daterangepicker_end_input { 275 | float: left; 276 | padding-left: 11px 277 | } 278 | 279 | .daterangepicker th.month { 280 | width: auto; 281 | } 282 | -------------------------------------------------------------------------------- /public/css/demo.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 992px){ 2 | .typo-line{ 3 | padding-left: 140px; 4 | margin-bottom: 40px; 5 | position: relative; 6 | } 7 | 8 | .typo-line .category{ 9 | transform: translateY(-50%); 10 | top: 50%; 11 | left: 0px; 12 | position: absolute; 13 | } 14 | } 15 | 16 | .all-icons [class^="pe-"]{ 17 | font-size: 40px; 18 | } 19 | .all-icons input{ 20 | border: 0; 21 | } 22 | .all-icons .font-icon-detail{ 23 | text-align: center; 24 | padding: 45px 0px 30px; 25 | border: 1px solid #e5e5e5; 26 | border-radius: 6px; 27 | margin: 15px 0; 28 | } 29 | .all-icons .font-icon-container a{ 30 | padding: 5px 0; 31 | display: block; 32 | color: #666666; 33 | } 34 | .all-icons .font-icon-detail input{ 35 | margin: 25px auto 0; 36 | width: 100%; 37 | text-align: center; 38 | display: block; 39 | color: #aaa; 40 | font-size: 13px; 41 | } 42 | .all-icons h5{ 43 | margin-top: 60px; 44 | } 45 | .all-icons > div > .row:first-child h5{ 46 | margin-top: 15px; 47 | } 48 | 49 | .places-buttons .btn{ 50 | margin-bottom: 30px 51 | } 52 | 53 | .buttons-with-margin .btn{ 54 | margin-bottom: 5px; 55 | } 56 | 57 | .animated .img-rounded{ 58 | width: 150px; 59 | height: 150px; 60 | overflow: hidden; 61 | margin: 0 auto; 62 | display: block; 63 | } 64 | .animated .img-rounded img{ 65 | width: 100%; 66 | } 67 | 68 | .fixed-plugin li > a, 69 | .fixed-plugin .badge{ 70 | transition: all .34s; 71 | -webkit-transition: all .34s; 72 | -moz-transition: all .34s; 73 | } 74 | 75 | .fixed-plugin{ 76 | position: fixed; 77 | top: 180px; 78 | right: 0; 79 | width: 64px; 80 | background: rgba(0,0,0,.3); 81 | z-index: 1031; 82 | border-radius: 8px 0 0 8px; 83 | text-align: center; 84 | } 85 | .fixed-plugin .fa-cog{ 86 | color: #FFFFFF; 87 | padding: 10px; 88 | border-radius: 0 0 6px 6px; 89 | width: auto; 90 | } 91 | .fixed-plugin .dropdown-menu{ 92 | right: 80px; 93 | left: auto; 94 | width: 290px; 95 | border-radius: 10px; 96 | padding: 0 10px; 97 | } 98 | .fixed-plugin .dropdown-menu:after, .fixed-plugin .dropdown-menu:before{ 99 | right: 10px; 100 | margin-left: auto; 101 | left: auto; 102 | } 103 | .fixed-plugin .fa-circle-thin{ 104 | color: #FFFFFF; 105 | } 106 | .fixed-plugin .active .fa-circle-thin{ 107 | color: #00bbff; 108 | } 109 | 110 | .fixed-plugin .dropdown-menu > .active > a, 111 | .fixed-plugin .dropdown-menu > .active > a:hover, 112 | .fixed-plugin .dropdown-menu > .active > a:focus{ 113 | color: #777777; 114 | text-align: center; 115 | } 116 | 117 | .fixed-plugin img{ 118 | border-radius: 0; 119 | width: auto; 120 | height: 100px; 121 | transform: translateX(-30%); 122 | -webkit-transform: translateX(-30%); 123 | margin: 0 auto; 124 | } 125 | 126 | .fixed-plugin .badge{ 127 | border: 3px solid #FFFFFF; 128 | border-radius: 50%; 129 | cursor: pointer; 130 | display: inline-block; 131 | height: 23px; 132 | margin-right: 5px; 133 | position: relative; 134 | width: 23px; 135 | } 136 | .fixed-plugin .badge.active, 137 | .fixed-plugin .badge:hover{ 138 | border-color: #00bbff; 139 | } 140 | 141 | .fixed-plugin .badge-white{ 142 | background-color: #FFFFFF; 143 | } 144 | .fixed-plugin .badge-black{ 145 | background-color: #1DC7EA; 146 | } 147 | .fixed-plugin .badge-azure{ 148 | background-color: #1DC7EA; 149 | } 150 | .fixed-plugin .badge-green{ 151 | background-color: #87CB16; 152 | } 153 | .fixed-plugin .badge-orange{ 154 | background-color: #FFA534; 155 | } 156 | .fixed-plugin .badge-purple{ 157 | background-color: #9368E9; 158 | } 159 | .fixed-plugin .badge-red{ 160 | background-color: #FB404B; 161 | } 162 | .fixed-plugin h5{ 163 | font-size: 14px; 164 | margin: 10px; 165 | } 166 | .fixed-plugin .dropdown-menu li{ 167 | display: block; 168 | padding: 5px 2px; 169 | width: 25%; 170 | float: left; 171 | } 172 | 173 | .fixed-plugin li.adjustments-line, 174 | .fixed-plugin li.header-title, 175 | .fixed-plugin li.button-container{ 176 | width: 100%; 177 | height: 50px; 178 | min-height: inherit; 179 | } 180 | 181 | .fixed-plugin li.button-container{ 182 | height: auto; 183 | } 184 | .fixed-plugin li.button-container div{ 185 | margin-bottom: 5px; 186 | } 187 | 188 | .fixed-plugin #sharrreTitle{ 189 | text-align: center; 190 | padding: 10px 0; 191 | height: 50px; 192 | } 193 | 194 | .fixed-plugin li.header-title{ 195 | height: 30px; 196 | line-height: 40px; 197 | font-size: 12px; 198 | font-weight: 600; 199 | text-align: center; 200 | text-transform: uppercase; 201 | } 202 | /* 203 | .fixed-plugin li.header-product-name{ 204 | height: 60px; 205 | line-height: 60px; 206 | font-size: 16px; 207 | text-transform: none; 208 | text-align: center; 209 | font-weight: 300; 210 | } 211 | */ 212 | 213 | .fixed-plugin .adjustments-line p{ 214 | float: left; 215 | display: inline-block; 216 | margin-bottom: 0; 217 | font-size: 1em; 218 | } 219 | .fixed-plugin .adjustments-line .switch{ 220 | float: right; 221 | } 222 | .fixed-plugin .dropdown-menu > li.adjustments-line > a{ 223 | padding-right: 0; 224 | padding-left: 0; 225 | border-bottom: 1px solid #ddd; 226 | margin: 0; 227 | } 228 | .fixed-plugin .dropdown-menu > li > a.img-holder{ 229 | font-size: 16px; 230 | text-align: center; 231 | border-radius: 10px; 232 | background-color: #FFF; 233 | border: 3px solid #FFF; 234 | padding-left: 0; 235 | padding-right: 0; 236 | opacity: 1; 237 | cursor: pointer; 238 | max-height: 86px; 239 | overflow: hidden; 240 | padding: 0; 241 | } 242 | 243 | .fixed-plugin .dropdown-menu > li > a.switch-trigger:hover, 244 | .fixed-plugin .dropdown-menu > li > a.switch-trigger:focus{ 245 | background-color: transparent; 246 | } 247 | .fixed-plugin .dropdown-menu > li:hover > a.img-holder, 248 | .fixed-plugin .dropdown-menu > li:focus > a.img-holder{ 249 | border-color: rgba(0, 187, 255, 0.53);; 250 | } 251 | .fixed-plugin .dropdown-menu > .active > a.img-holder, 252 | .fixed-plugin .dropdown-menu > .active > a.img-holder{ 253 | border-color: #00bbff; 254 | background-color: #FFFFFF; 255 | } 256 | 257 | .fixed-plugin .dropdown-menu > li > a img{ 258 | margin-top: auto; 259 | } 260 | 261 | .fixed-plugin .btn-social{ 262 | width: 50%; 263 | display: block; 264 | width: 48%; 265 | float: left; 266 | font-weight: 600; 267 | } 268 | .fixed-plugin .btn-social i{ 269 | margin-right: 5px; 270 | } 271 | .fixed-plugin .btn-social:first-child{ 272 | margin-right: 2%; 273 | } 274 | 275 | @media (min-width: 992px){ 276 | .fixed-plugin .dropdown .dropdown-menu{ 277 | -webkit-transform: translateY(-15%); 278 | -moz-transform: translateY(-15%); 279 | -o-transform: translateY(-15%); 280 | -ms-transform: translateY(-15%); 281 | transform: translateY(-15%); 282 | top: 27px; 283 | opacity: 0; 284 | 285 | transform-origin: 0 0; 286 | } 287 | .fixed-plugin .dropdown.open .dropdown-menu{ 288 | opacity: 1; 289 | 290 | -webkit-transform: translateY(-15%); 291 | -moz-transform: translateY(-15%); 292 | -o-transform: translateY(-15%); 293 | -ms-transform: translateY(-15%); 294 | transform: translateY(-15%); 295 | 296 | transform-origin: 0 0; 297 | } 298 | 299 | .fixed-plugin .dropdown-menu:before, 300 | .fixed-plugin .dropdown-menu:after{ 301 | content: ""; 302 | display: inline-block; 303 | position: absolute; 304 | top: 60px; 305 | width: 16px; 306 | transform: translateY(-50%); 307 | -webkit-transform: translateY(-50%); 308 | -moz-transform: translateY(-50%); 309 | 310 | } 311 | .fixed-plugin .dropdown-menu:before{ 312 | border-bottom: 16px solid rgba(0, 0, 0, 0); 313 | border-left: 16px solid rgba(0,0,0,0.2); 314 | border-top: 16px solid rgba(0,0,0,0); 315 | right: -27px; 316 | } 317 | 318 | .fixed-plugin .dropdown-menu:after{ 319 | border-bottom: 16px solid rgba(0, 0, 0, 0); 320 | border-left: 16px solid #FFFFFF; 321 | border-top: 16px solid rgba(0,0,0,0); 322 | right: -26px; 323 | } 324 | 325 | .typo-line{ 326 | padding-left: 140px; 327 | margin-bottom: 40px; 328 | position: relative; 329 | } 330 | 331 | .typo-line .category{ 332 | transform: translateY(-50%); 333 | top: 50%; 334 | left: 0px; 335 | position: absolute; 336 | } 337 | 338 | .fixed-plugin{ 339 | top: 120px; 340 | } 341 | 342 | } 343 | 344 | @media (max-width: 991px){ 345 | .fixed-plugin .dropdown-menu{ 346 | right: 60px; 347 | width: 220px; 348 | } 349 | .fixed-plugin .dropdown-menu li{ 350 | width: 50%; 351 | } 352 | 353 | .fixed-plugin li.adjustments-line, 354 | .fixed-plugin li.header-title, 355 | .fixed-plugin li.button-container{ 356 | width: 100%; 357 | height: 55px; 358 | min-height: inherit; 359 | } 360 | 361 | .fixed-plugin li.button-container{ 362 | height: auto; 363 | } 364 | 365 | .fixed-plugin .adjustments-line .switch{ 366 | float: right; 367 | margin: 0 0px; 368 | } 369 | 370 | .fixed-plugin li.header-title{ 371 | height: 40px; 372 | } 373 | .fixed-plugin .dropdown .dropdown-menu{ 374 | top: -170px; 375 | } 376 | 377 | .fixed-plugin .dropdown-menu:before, 378 | .fixed-plugin .dropdown-menu:after{ 379 | display: none; 380 | } 381 | } 382 | 383 | .btn-social { 384 | opacity: 0.85; 385 | padding: 8px 9px; 386 | } 387 | .btn-social .fa { 388 | font-size: 18px; 389 | vertical-align: middle; 390 | display: inline-block; 391 | } 392 | .btn-social.btn-round { 393 | padding: 9px 10px; 394 | } 395 | .btn-social.btn-simple { 396 | padding: 9px 5px; 397 | font-size: 16px; 398 | } 399 | .btn-social.btn-simple .fa { 400 | font-size: 20px; 401 | position: relative; 402 | top: -2px; 403 | width: 24px; 404 | } 405 | 406 | .btn-facebook { 407 | border-color: #3b5998; 408 | color: #3b5998; 409 | } 410 | .btn-facebook:hover, 411 | .btn-facebook:focus, 412 | .btn-facebook:active, 413 | .btn-facebook.active, 414 | .open > .btn-facebook.dropdown-toggle { 415 | background-color: transparent; 416 | color: #3b5998; 417 | border-color: #3b5998; 418 | opacity: 1; 419 | } 420 | .btn-facebook:disabled, 421 | .btn-facebook[disabled], 422 | .btn-facebook.disabled { 423 | background-color: transparent; 424 | border-color: #3b5998; 425 | } 426 | .btn-facebook.btn-fill { 427 | color: #ffffff; 428 | background-color: #3b5998; 429 | opacity: 0.9; 430 | } 431 | .btn-facebook.btn-fill:hover, 432 | .btn-facebook.btn-fill:focus, 433 | .btn-facebook.btn-fill:active, 434 | .btn-facebook.btn-fill.active, 435 | .open > .btn-facebook.btn-fill.dropdown-toggle { 436 | background-color: #3b5998; 437 | color: #ffffff; 438 | opacity: 1; 439 | } 440 | .btn-twitter { 441 | border-color: #55acee; 442 | color: #55acee; 443 | } 444 | .btn-twitter:hover, 445 | .btn-twitter:focus, 446 | .btn-twitter:active, 447 | .btn-twitter.active, 448 | .open > .btn-twitter.dropdown-toggle { 449 | background-color: transparent; 450 | color: #55acee; 451 | border-color: #55acee; 452 | opacity: 1; 453 | } 454 | .btn-twitter:disabled, 455 | .btn-twitter[disabled], 456 | .btn-twitter.disabled { 457 | background-color: transparent; 458 | border-color: #55acee; 459 | } 460 | .btn-twitter.btn-fill { 461 | color: #ffffff; 462 | background-color: #55acee; 463 | opacity: 0.9; 464 | } 465 | .btn-twitter.btn-fill:hover, 466 | .btn-twitter.btn-fill:focus, 467 | .btn-twitter.btn-fill:active, 468 | .btn-twitter.btn-fill.active, 469 | .open > .btn-twitter.btn-fill.dropdown-toggle { 470 | background-color: #55acee; 471 | color: #ffffff; 472 | opacity: 1; 473 | } 474 | -------------------------------------------------------------------------------- /public/css/pe-icon-7-stroke.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Pe-icon-7-stroke'; 3 | src:url('../fonts/pe-icon-7-stroke.eot'); 4 | src:url('../fonts/pe-icon-7-stroke.eot') format('embedded-opentype'), 5 | url('../fonts/pe-icon-7-stroke.woff') format('woff'), 6 | url('../fonts/pe-icon-7-stroke.ttf') format('truetype'), 7 | url('../fonts/pe-icon-7-stroke.svg') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | [class^="pe-7s-"], [class*=" pe-7s-"] { 13 | display: inline-block; 14 | font-family: 'Pe-icon-7-stroke'; 15 | speak: none; 16 | font-style: normal; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | 22 | /* Better Font Rendering =========== */ 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | .pe-7s-album:before { 28 | content: "\e6aa"; 29 | } 30 | .pe-7s-arc:before { 31 | content: "\e6ab"; 32 | } 33 | .pe-7s-back-2:before { 34 | content: "\e6ac"; 35 | } 36 | .pe-7s-bandaid:before { 37 | content: "\e6ad"; 38 | } 39 | .pe-7s-car:before { 40 | content: "\e6ae"; 41 | } 42 | .pe-7s-diamond:before { 43 | content: "\e6af"; 44 | } 45 | .pe-7s-door-lock:before { 46 | content: "\e6b0"; 47 | } 48 | .pe-7s-eyedropper:before { 49 | content: "\e6b1"; 50 | } 51 | .pe-7s-female:before { 52 | content: "\e6b2"; 53 | } 54 | .pe-7s-gym:before { 55 | content: "\e6b3"; 56 | } 57 | .pe-7s-hammer:before { 58 | content: "\e6b4"; 59 | } 60 | .pe-7s-headphones:before { 61 | content: "\e6b5"; 62 | } 63 | .pe-7s-helm:before { 64 | content: "\e6b6"; 65 | } 66 | .pe-7s-hourglass:before { 67 | content: "\e6b7"; 68 | } 69 | .pe-7s-leaf:before { 70 | content: "\e6b8"; 71 | } 72 | .pe-7s-magic-wand:before { 73 | content: "\e6b9"; 74 | } 75 | .pe-7s-male:before { 76 | content: "\e6ba"; 77 | } 78 | .pe-7s-map-2:before { 79 | content: "\e6bb"; 80 | } 81 | .pe-7s-next-2:before { 82 | content: "\e6bc"; 83 | } 84 | .pe-7s-paint-bucket:before { 85 | content: "\e6bd"; 86 | } 87 | .pe-7s-pendrive:before { 88 | content: "\e6be"; 89 | } 90 | .pe-7s-photo:before { 91 | content: "\e6bf"; 92 | } 93 | .pe-7s-piggy:before { 94 | content: "\e6c0"; 95 | } 96 | .pe-7s-plugin:before { 97 | content: "\e6c1"; 98 | } 99 | .pe-7s-refresh-2:before { 100 | content: "\e6c2"; 101 | } 102 | .pe-7s-rocket:before { 103 | content: "\e6c3"; 104 | } 105 | .pe-7s-settings:before { 106 | content: "\e6c4"; 107 | } 108 | .pe-7s-shield:before { 109 | content: "\e6c5"; 110 | } 111 | .pe-7s-smile:before { 112 | content: "\e6c6"; 113 | } 114 | .pe-7s-usb:before { 115 | content: "\e6c7"; 116 | } 117 | .pe-7s-vector:before { 118 | content: "\e6c8"; 119 | } 120 | .pe-7s-wine:before { 121 | content: "\e6c9"; 122 | } 123 | .pe-7s-cloud-upload:before { 124 | content: "\e68a"; 125 | } 126 | .pe-7s-cash:before { 127 | content: "\e68c"; 128 | } 129 | .pe-7s-close:before { 130 | content: "\e680"; 131 | } 132 | .pe-7s-bluetooth:before { 133 | content: "\e68d"; 134 | } 135 | .pe-7s-cloud-download:before { 136 | content: "\e68b"; 137 | } 138 | .pe-7s-way:before { 139 | content: "\e68e"; 140 | } 141 | .pe-7s-close-circle:before { 142 | content: "\e681"; 143 | } 144 | .pe-7s-id:before { 145 | content: "\e68f"; 146 | } 147 | .pe-7s-angle-up:before { 148 | content: "\e682"; 149 | } 150 | .pe-7s-wristwatch:before { 151 | content: "\e690"; 152 | } 153 | .pe-7s-angle-up-circle:before { 154 | content: "\e683"; 155 | } 156 | .pe-7s-world:before { 157 | content: "\e691"; 158 | } 159 | .pe-7s-angle-right:before { 160 | content: "\e684"; 161 | } 162 | .pe-7s-volume:before { 163 | content: "\e692"; 164 | } 165 | .pe-7s-angle-right-circle:before { 166 | content: "\e685"; 167 | } 168 | .pe-7s-users:before { 169 | content: "\e693"; 170 | } 171 | .pe-7s-angle-left:before { 172 | content: "\e686"; 173 | } 174 | .pe-7s-user-female:before { 175 | content: "\e694"; 176 | } 177 | .pe-7s-angle-left-circle:before { 178 | content: "\e687"; 179 | } 180 | .pe-7s-up-arrow:before { 181 | content: "\e695"; 182 | } 183 | .pe-7s-angle-down:before { 184 | content: "\e688"; 185 | } 186 | .pe-7s-switch:before { 187 | content: "\e696"; 188 | } 189 | .pe-7s-angle-down-circle:before { 190 | content: "\e689"; 191 | } 192 | .pe-7s-scissors:before { 193 | content: "\e697"; 194 | } 195 | .pe-7s-wallet:before { 196 | content: "\e600"; 197 | } 198 | .pe-7s-safe:before { 199 | content: "\e698"; 200 | } 201 | .pe-7s-volume2:before { 202 | content: "\e601"; 203 | } 204 | .pe-7s-volume1:before { 205 | content: "\e602"; 206 | } 207 | .pe-7s-voicemail:before { 208 | content: "\e603"; 209 | } 210 | .pe-7s-video:before { 211 | content: "\e604"; 212 | } 213 | .pe-7s-user:before { 214 | content: "\e605"; 215 | } 216 | .pe-7s-upload:before { 217 | content: "\e606"; 218 | } 219 | .pe-7s-unlock:before { 220 | content: "\e607"; 221 | } 222 | .pe-7s-umbrella:before { 223 | content: "\e608"; 224 | } 225 | .pe-7s-trash:before { 226 | content: "\e609"; 227 | } 228 | .pe-7s-tools:before { 229 | content: "\e60a"; 230 | } 231 | .pe-7s-timer:before { 232 | content: "\e60b"; 233 | } 234 | .pe-7s-ticket:before { 235 | content: "\e60c"; 236 | } 237 | .pe-7s-target:before { 238 | content: "\e60d"; 239 | } 240 | .pe-7s-sun:before { 241 | content: "\e60e"; 242 | } 243 | .pe-7s-study:before { 244 | content: "\e60f"; 245 | } 246 | .pe-7s-stopwatch:before { 247 | content: "\e610"; 248 | } 249 | .pe-7s-star:before { 250 | content: "\e611"; 251 | } 252 | .pe-7s-speaker:before { 253 | content: "\e612"; 254 | } 255 | .pe-7s-signal:before { 256 | content: "\e613"; 257 | } 258 | .pe-7s-shuffle:before { 259 | content: "\e614"; 260 | } 261 | .pe-7s-shopbag:before { 262 | content: "\e615"; 263 | } 264 | .pe-7s-share:before { 265 | content: "\e616"; 266 | } 267 | .pe-7s-server:before { 268 | content: "\e617"; 269 | } 270 | .pe-7s-search:before { 271 | content: "\e618"; 272 | } 273 | .pe-7s-film:before { 274 | content: "\e6a5"; 275 | } 276 | .pe-7s-science:before { 277 | content: "\e619"; 278 | } 279 | .pe-7s-disk:before { 280 | content: "\e6a6"; 281 | } 282 | .pe-7s-ribbon:before { 283 | content: "\e61a"; 284 | } 285 | .pe-7s-repeat:before { 286 | content: "\e61b"; 287 | } 288 | .pe-7s-refresh:before { 289 | content: "\e61c"; 290 | } 291 | .pe-7s-add-user:before { 292 | content: "\e6a9"; 293 | } 294 | .pe-7s-refresh-cloud:before { 295 | content: "\e61d"; 296 | } 297 | .pe-7s-paperclip:before { 298 | content: "\e69c"; 299 | } 300 | .pe-7s-radio:before { 301 | content: "\e61e"; 302 | } 303 | .pe-7s-note2:before { 304 | content: "\e69d"; 305 | } 306 | .pe-7s-print:before { 307 | content: "\e61f"; 308 | } 309 | .pe-7s-network:before { 310 | content: "\e69e"; 311 | } 312 | .pe-7s-prev:before { 313 | content: "\e620"; 314 | } 315 | .pe-7s-mute:before { 316 | content: "\e69f"; 317 | } 318 | .pe-7s-power:before { 319 | content: "\e621"; 320 | } 321 | .pe-7s-medal:before { 322 | content: "\e6a0"; 323 | } 324 | .pe-7s-portfolio:before { 325 | content: "\e622"; 326 | } 327 | .pe-7s-like2:before { 328 | content: "\e6a1"; 329 | } 330 | .pe-7s-plus:before { 331 | content: "\e623"; 332 | } 333 | .pe-7s-left-arrow:before { 334 | content: "\e6a2"; 335 | } 336 | .pe-7s-play:before { 337 | content: "\e624"; 338 | } 339 | .pe-7s-key:before { 340 | content: "\e6a3"; 341 | } 342 | .pe-7s-plane:before { 343 | content: "\e625"; 344 | } 345 | .pe-7s-joy:before { 346 | content: "\e6a4"; 347 | } 348 | .pe-7s-photo-gallery:before { 349 | content: "\e626"; 350 | } 351 | .pe-7s-pin:before { 352 | content: "\e69b"; 353 | } 354 | .pe-7s-phone:before { 355 | content: "\e627"; 356 | } 357 | .pe-7s-plug:before { 358 | content: "\e69a"; 359 | } 360 | .pe-7s-pen:before { 361 | content: "\e628"; 362 | } 363 | .pe-7s-right-arrow:before { 364 | content: "\e699"; 365 | } 366 | .pe-7s-paper-plane:before { 367 | content: "\e629"; 368 | } 369 | .pe-7s-delete-user:before { 370 | content: "\e6a7"; 371 | } 372 | .pe-7s-paint:before { 373 | content: "\e62a"; 374 | } 375 | .pe-7s-bottom-arrow:before { 376 | content: "\e6a8"; 377 | } 378 | .pe-7s-notebook:before { 379 | content: "\e62b"; 380 | } 381 | .pe-7s-note:before { 382 | content: "\e62c"; 383 | } 384 | .pe-7s-next:before { 385 | content: "\e62d"; 386 | } 387 | .pe-7s-news-paper:before { 388 | content: "\e62e"; 389 | } 390 | .pe-7s-musiclist:before { 391 | content: "\e62f"; 392 | } 393 | .pe-7s-music:before { 394 | content: "\e630"; 395 | } 396 | .pe-7s-mouse:before { 397 | content: "\e631"; 398 | } 399 | .pe-7s-more:before { 400 | content: "\e632"; 401 | } 402 | .pe-7s-moon:before { 403 | content: "\e633"; 404 | } 405 | .pe-7s-monitor:before { 406 | content: "\e634"; 407 | } 408 | .pe-7s-micro:before { 409 | content: "\e635"; 410 | } 411 | .pe-7s-menu:before { 412 | content: "\e636"; 413 | } 414 | .pe-7s-map:before { 415 | content: "\e637"; 416 | } 417 | .pe-7s-map-marker:before { 418 | content: "\e638"; 419 | } 420 | .pe-7s-mail:before { 421 | content: "\e639"; 422 | } 423 | .pe-7s-mail-open:before { 424 | content: "\e63a"; 425 | } 426 | .pe-7s-mail-open-file:before { 427 | content: "\e63b"; 428 | } 429 | .pe-7s-magnet:before { 430 | content: "\e63c"; 431 | } 432 | .pe-7s-loop:before { 433 | content: "\e63d"; 434 | } 435 | .pe-7s-look:before { 436 | content: "\e63e"; 437 | } 438 | .pe-7s-lock:before { 439 | content: "\e63f"; 440 | } 441 | .pe-7s-lintern:before { 442 | content: "\e640"; 443 | } 444 | .pe-7s-link:before { 445 | content: "\e641"; 446 | } 447 | .pe-7s-like:before { 448 | content: "\e642"; 449 | } 450 | .pe-7s-light:before { 451 | content: "\e643"; 452 | } 453 | .pe-7s-less:before { 454 | content: "\e644"; 455 | } 456 | .pe-7s-keypad:before { 457 | content: "\e645"; 458 | } 459 | .pe-7s-junk:before { 460 | content: "\e646"; 461 | } 462 | .pe-7s-info:before { 463 | content: "\e647"; 464 | } 465 | .pe-7s-home:before { 466 | content: "\e648"; 467 | } 468 | .pe-7s-help2:before { 469 | content: "\e649"; 470 | } 471 | .pe-7s-help1:before { 472 | content: "\e64a"; 473 | } 474 | .pe-7s-graph3:before { 475 | content: "\e64b"; 476 | } 477 | .pe-7s-graph2:before { 478 | content: "\e64c"; 479 | } 480 | .pe-7s-graph1:before { 481 | content: "\e64d"; 482 | } 483 | .pe-7s-graph:before { 484 | content: "\e64e"; 485 | } 486 | .pe-7s-global:before { 487 | content: "\e64f"; 488 | } 489 | .pe-7s-gleam:before { 490 | content: "\e650"; 491 | } 492 | .pe-7s-glasses:before { 493 | content: "\e651"; 494 | } 495 | .pe-7s-gift:before { 496 | content: "\e652"; 497 | } 498 | .pe-7s-folder:before { 499 | content: "\e653"; 500 | } 501 | .pe-7s-flag:before { 502 | content: "\e654"; 503 | } 504 | .pe-7s-filter:before { 505 | content: "\e655"; 506 | } 507 | .pe-7s-file:before { 508 | content: "\e656"; 509 | } 510 | .pe-7s-expand1:before { 511 | content: "\e657"; 512 | } 513 | .pe-7s-exapnd2:before { 514 | content: "\e658"; 515 | } 516 | .pe-7s-edit:before { 517 | content: "\e659"; 518 | } 519 | .pe-7s-drop:before { 520 | content: "\e65a"; 521 | } 522 | .pe-7s-drawer:before { 523 | content: "\e65b"; 524 | } 525 | .pe-7s-download:before { 526 | content: "\e65c"; 527 | } 528 | .pe-7s-display2:before { 529 | content: "\e65d"; 530 | } 531 | .pe-7s-display1:before { 532 | content: "\e65e"; 533 | } 534 | .pe-7s-diskette:before { 535 | content: "\e65f"; 536 | } 537 | .pe-7s-date:before { 538 | content: "\e660"; 539 | } 540 | .pe-7s-cup:before { 541 | content: "\e661"; 542 | } 543 | .pe-7s-culture:before { 544 | content: "\e662"; 545 | } 546 | .pe-7s-crop:before { 547 | content: "\e663"; 548 | } 549 | .pe-7s-credit:before { 550 | content: "\e664"; 551 | } 552 | .pe-7s-copy-file:before { 553 | content: "\e665"; 554 | } 555 | .pe-7s-config:before { 556 | content: "\e666"; 557 | } 558 | .pe-7s-compass:before { 559 | content: "\e667"; 560 | } 561 | .pe-7s-comment:before { 562 | content: "\e668"; 563 | } 564 | .pe-7s-coffee:before { 565 | content: "\e669"; 566 | } 567 | .pe-7s-cloud:before { 568 | content: "\e66a"; 569 | } 570 | .pe-7s-clock:before { 571 | content: "\e66b"; 572 | } 573 | .pe-7s-check:before { 574 | content: "\e66c"; 575 | } 576 | .pe-7s-chat:before { 577 | content: "\e66d"; 578 | } 579 | .pe-7s-cart:before { 580 | content: "\e66e"; 581 | } 582 | .pe-7s-camera:before { 583 | content: "\e66f"; 584 | } 585 | .pe-7s-call:before { 586 | content: "\e670"; 587 | } 588 | .pe-7s-calculator:before { 589 | content: "\e671"; 590 | } 591 | .pe-7s-browser:before { 592 | content: "\e672"; 593 | } 594 | .pe-7s-box2:before { 595 | content: "\e673"; 596 | } 597 | .pe-7s-box1:before { 598 | content: "\e674"; 599 | } 600 | .pe-7s-bookmarks:before { 601 | content: "\e675"; 602 | } 603 | .pe-7s-bicycle:before { 604 | content: "\e676"; 605 | } 606 | .pe-7s-bell:before { 607 | content: "\e677"; 608 | } 609 | .pe-7s-battery:before { 610 | content: "\e678"; 611 | } 612 | .pe-7s-ball:before { 613 | content: "\e679"; 614 | } 615 | .pe-7s-back:before { 616 | content: "\e67a"; 617 | } 618 | .pe-7s-attention:before { 619 | content: "\e67b"; 620 | } 621 | .pe-7s-anchor:before { 622 | content: "\e67c"; 623 | } 624 | .pe-7s-albums:before { 625 | content: "\e67d"; 626 | } 627 | .pe-7s-alarm:before { 628 | content: "\e67e"; 629 | } 630 | .pe-7s-airplay:before { 631 | content: "\e67f"; 632 | } 633 | -------------------------------------------------------------------------------- /public/fonts/d-6iyplofoccackzxwxsokcwcynf_cdxxwclxiixg1c.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/d-6iyplofoccackzxwxsokcwcynf_cdxxwclxiixg1c.ttf -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /public/fonts/hgo13k-tfspn0qi1sfdufacwcynf_cdxxwclxiixg1c.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/hgo13k-tfspn0qi1sfdufacwcynf_cdxxwclxiixg1c.ttf -------------------------------------------------------------------------------- /public/fonts/pe-icon-7-stroke.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/pe-icon-7-stroke.eot -------------------------------------------------------------------------------- /public/fonts/pe-icon-7-stroke.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/pe-icon-7-stroke.ttf -------------------------------------------------------------------------------- /public/fonts/pe-icon-7-stroke.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/pe-icon-7-stroke.woff -------------------------------------------------------------------------------- /public/fonts/zn7gbfwfmp4ua6ar0hcolq.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/fonts/zn7gbfwfmp4ua6ar0hcolq.ttf -------------------------------------------------------------------------------- /public/images/c1e8fd0435074aa99ec3d47af9c9652d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrenlei/spider-monitor-view/f19f73830f2664553f4d422d4ca67d6d2514bc1b/public/images/c1e8fd0435074aa99ec3d47af9c9652d.jpg -------------------------------------------------------------------------------- /public/js/bootstrap-notify.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | 4 | 5 | Creative Tim Modifications 6 | 7 | Lines: 239, 240 was changed from top: 5px to top: 50% and we added margin-top: -13px. In this way the close button will be aligned vertically 8 | Line:242 - modified when the icon is set, we add the class "alert-with-icon", so there will be enough space for the icon. 9 | 10 | 11 | 12 | 13 | */ 14 | 15 | 16 | /* 17 | * Project: Bootstrap Notify = v3.1.5 18 | * Description: Turns standard Bootstrap alerts into "Growl-like" notifications. 19 | * Author: Mouse0270 aka Robert McIntosh 20 | * License: MIT License 21 | * Website: https://github.com/mouse0270/bootstrap-growl 22 | */ 23 | 24 | /* global define:false, require: false, jQuery:false */ 25 | 26 | (function (factory) { 27 | if (typeof define === 'function' && define.amd) { 28 | // AMD. Register as an anonymous module. 29 | define(['jquery'], factory); 30 | } else if (typeof exports === 'object') { 31 | // Node/CommonJS 32 | factory(require('jquery')); 33 | } else { 34 | // Browser globals 35 | factory(jQuery); 36 | } 37 | }(function ($) { 38 | // Create the defaults once 39 | var defaults = { 40 | element: 'body', 41 | position: null, 42 | type: "info", 43 | allow_dismiss: true, 44 | allow_duplicates: true, 45 | newest_on_top: false, 46 | showProgressbar: false, 47 | placement: { 48 | from: "top", 49 | align: "right" 50 | }, 51 | offset: 20, 52 | spacing: 10, 53 | z_index: 1031, 54 | delay: 5000, 55 | timer: 1000, 56 | url_target: '_blank', 57 | mouse_over: null, 58 | animate: { 59 | enter: 'animated fadeInDown', 60 | exit: 'animated fadeOutUp' 61 | }, 62 | onShow: null, 63 | onShown: null, 64 | onClose: null, 65 | onClosed: null, 66 | icon_type: 'class', 67 | template: '' 68 | }; 69 | 70 | String.format = function () { 71 | var str = arguments[0]; 72 | for (var i = 1; i < arguments.length; i++) { 73 | str = str.replace(RegExp("\\{" + (i - 1) + "\\}", "gm"), arguments[i]); 74 | } 75 | return str; 76 | }; 77 | 78 | function isDuplicateNotification(notification) { 79 | var isDupe = false; 80 | 81 | $('[data-notify="container"]').each(function (i, el) { 82 | var $el = $(el); 83 | var title = $el.find('[data-notify="title"]').text().trim(); 84 | var message = $el.find('[data-notify="message"]').html().trim(); 85 | 86 | // The input string might be different than the actual parsed HTML string! 87 | // (
vs
for example) 88 | // So we have to force-parse this as HTML here! 89 | var isSameTitle = title === $("
" + notification.settings.content.title + "
").html().trim(); 90 | var isSameMsg = message === $("
" + notification.settings.content.message + "
").html().trim(); 91 | var isSameType = $el.hasClass('alert-' + notification.settings.type); 92 | 93 | if (isSameTitle && isSameMsg && isSameType) { 94 | //we found the dupe. Set the var and stop checking. 95 | isDupe = true; 96 | } 97 | return !isDupe; 98 | }); 99 | 100 | return isDupe; 101 | } 102 | 103 | function Notify(element, content, options) { 104 | // Setup Content of Notify 105 | var contentObj = { 106 | content: { 107 | message: typeof content === 'object' ? content.message : content, 108 | title: content.title ? content.title : '', 109 | icon: content.icon ? content.icon : '', 110 | url: content.url ? content.url : '#', 111 | target: content.target ? content.target : '-' 112 | } 113 | }; 114 | 115 | options = $.extend(true, {}, contentObj, options); 116 | this.settings = $.extend(true, {}, defaults, options); 117 | this._defaults = defaults; 118 | if (this.settings.content.target === "-") { 119 | this.settings.content.target = this.settings.url_target; 120 | } 121 | this.animations = { 122 | start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart', 123 | end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend' 124 | }; 125 | 126 | if (typeof this.settings.offset === 'number') { 127 | this.settings.offset = { 128 | x: this.settings.offset, 129 | y: this.settings.offset 130 | }; 131 | } 132 | 133 | //if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing 134 | if (this.settings.allow_duplicates || (!this.settings.allow_duplicates && !isDuplicateNotification(this))) { 135 | this.init(); 136 | } 137 | } 138 | 139 | $.extend(Notify.prototype, { 140 | init: function () { 141 | var self = this; 142 | 143 | this.buildNotify(); 144 | if (this.settings.content.icon) { 145 | this.setIcon(); 146 | } 147 | if (this.settings.content.url != "#") { 148 | this.styleURL(); 149 | } 150 | this.styleDismiss(); 151 | this.placement(); 152 | this.bind(); 153 | 154 | this.notify = { 155 | $ele: this.$ele, 156 | update: function (command, update) { 157 | var commands = {}; 158 | if (typeof command === "string") { 159 | commands[command] = update; 160 | } else { 161 | commands = command; 162 | } 163 | for (var cmd in commands) { 164 | switch (cmd) { 165 | case "type": 166 | this.$ele.removeClass('alert-' + self.settings.type); 167 | this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass('progress-bar-' + self.settings.type); 168 | self.settings.type = commands[cmd]; 169 | this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify="progressbar"] > .progress-bar').addClass('progress-bar-' + commands[cmd]); 170 | break; 171 | case "icon": 172 | var $icon = this.$ele.find('[data-notify="icon"]'); 173 | if (self.settings.icon_type.toLowerCase() === 'class') { 174 | $icon.removeClass(self.settings.content.icon).addClass(commands[cmd]); 175 | } else { 176 | if (!$icon.is('img')) { 177 | $icon.find('img'); 178 | } 179 | $icon.attr('src', commands[cmd]); 180 | } 181 | break; 182 | case "progress": 183 | var newDelay = self.settings.delay - (self.settings.delay * (commands[cmd] / 100)); 184 | this.$ele.data('notify-delay', newDelay); 185 | this.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%'); 186 | break; 187 | case "url": 188 | this.$ele.find('[data-notify="url"]').attr('href', commands[cmd]); 189 | break; 190 | case "target": 191 | this.$ele.find('[data-notify="url"]').attr('target', commands[cmd]); 192 | break; 193 | default: 194 | this.$ele.find('[data-notify="' + cmd + '"]').html(commands[cmd]); 195 | } 196 | } 197 | var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y); 198 | self.reposition(posX); 199 | }, 200 | close: function () { 201 | self.close(); 202 | } 203 | }; 204 | 205 | }, 206 | buildNotify: function () { 207 | var content = this.settings.content; 208 | this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target)); 209 | this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align); 210 | if (!this.settings.allow_dismiss) { 211 | this.$ele.find('[data-notify="dismiss"]').css('display', 'none'); 212 | } 213 | if ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) { 214 | this.$ele.find('[data-notify="progressbar"]').remove(); 215 | } 216 | }, 217 | setIcon: function () { 218 | 219 | this.$ele.addClass('alert-with-icon'); 220 | 221 | if (this.settings.icon_type.toLowerCase() === 'class') { 222 | this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon); 223 | } else { 224 | if (this.$ele.find('[data-notify="icon"]').is('img')) { 225 | this.$ele.find('[data-notify="icon"]').attr('src', this.settings.content.icon); 226 | } else { 227 | this.$ele.find('[data-notify="icon"]').append('Notify Icon'); 228 | } 229 | } 230 | }, 231 | styleDismiss: function () { 232 | this.$ele.find('[data-notify="dismiss"]').css({ 233 | position: 'absolute', 234 | right: '10px', 235 | top: '50%', 236 | marginTop: '-13px', 237 | zIndex: this.settings.z_index + 2 238 | }); 239 | }, 240 | styleURL: function () { 241 | this.$ele.find('[data-notify="url"]').css({ 242 | backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)', 243 | height: '100%', 244 | left: 0, 245 | position: 'absolute', 246 | top: 0, 247 | width: '100%', 248 | zIndex: this.settings.z_index + 1 249 | }); 250 | }, 251 | placement: function () { 252 | var self = this, 253 | offsetAmt = this.settings.offset.y, 254 | css = { 255 | display: 'inline-block', 256 | margin: '0px auto', 257 | position: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'), 258 | transition: 'all .5s ease-in-out', 259 | zIndex: this.settings.z_index 260 | }, 261 | hasAnimation = false, 262 | settings = this.settings; 263 | 264 | $('[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])').each(function () { 265 | offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing)); 266 | }); 267 | if (this.settings.newest_on_top === true) { 268 | offsetAmt = this.settings.offset.y; 269 | } 270 | css[this.settings.placement.from] = offsetAmt + 'px'; 271 | 272 | switch (this.settings.placement.align) { 273 | case "left": 274 | case "right": 275 | css[this.settings.placement.align] = this.settings.offset.x + 'px'; 276 | break; 277 | case "center": 278 | css.left = 0; 279 | css.right = 0; 280 | break; 281 | } 282 | this.$ele.css(css).addClass(this.settings.animate.enter); 283 | $.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function (index, prefix) { 284 | self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1; 285 | }); 286 | 287 | $(this.settings.element).append(this.$ele); 288 | 289 | if (this.settings.newest_on_top === true) { 290 | offsetAmt = (parseInt(offsetAmt) + parseInt(this.settings.spacing)) + this.$ele.outerHeight(); 291 | this.reposition(offsetAmt); 292 | } 293 | 294 | if ($.isFunction(self.settings.onShow)) { 295 | self.settings.onShow.call(this.$ele); 296 | } 297 | 298 | this.$ele.one(this.animations.start, function () { 299 | hasAnimation = true; 300 | }).one(this.animations.end, function () { 301 | if ($.isFunction(self.settings.onShown)) { 302 | self.settings.onShown.call(this); 303 | } 304 | }); 305 | 306 | setTimeout(function () { 307 | if (!hasAnimation) { 308 | if ($.isFunction(self.settings.onShown)) { 309 | self.settings.onShown.call(this); 310 | } 311 | } 312 | }, 600); 313 | }, 314 | bind: function () { 315 | var self = this; 316 | 317 | this.$ele.find('[data-notify="dismiss"]').on('click', function () { 318 | self.close(); 319 | }); 320 | 321 | this.$ele.mouseover(function () { 322 | $(this).data('data-hover', "true"); 323 | }).mouseout(function () { 324 | $(this).data('data-hover', "false"); 325 | }); 326 | this.$ele.data('data-hover', "false"); 327 | 328 | if (this.settings.delay > 0) { 329 | self.$ele.data('notify-delay', self.settings.delay); 330 | var timer = setInterval(function () { 331 | var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer; 332 | if ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === "pause") || self.settings.mouse_over != "pause") { 333 | var percent = ((self.settings.delay - delay) / self.settings.delay) * 100; 334 | self.$ele.data('notify-delay', delay); 335 | self.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', percent).css('width', percent + '%'); 336 | } 337 | if (delay <= -(self.settings.timer)) { 338 | clearInterval(timer); 339 | self.close(); 340 | } 341 | }, self.settings.timer); 342 | } 343 | }, 344 | close: function () { 345 | var self = this, 346 | posX = parseInt(this.$ele.css(this.settings.placement.from)), 347 | hasAnimation = false; 348 | 349 | this.$ele.data('closing', 'true').addClass(this.settings.animate.exit); 350 | self.reposition(posX); 351 | 352 | if ($.isFunction(self.settings.onClose)) { 353 | self.settings.onClose.call(this.$ele); 354 | } 355 | 356 | this.$ele.one(this.animations.start, function () { 357 | hasAnimation = true; 358 | }).one(this.animations.end, function () { 359 | $(this).remove(); 360 | if ($.isFunction(self.settings.onClosed)) { 361 | self.settings.onClosed.call(this); 362 | } 363 | }); 364 | 365 | setTimeout(function () { 366 | if (!hasAnimation) { 367 | self.$ele.remove(); 368 | if (self.settings.onClosed) { 369 | self.settings.onClosed(self.$ele); 370 | } 371 | } 372 | }, 600); 373 | }, 374 | reposition: function (posX) { 375 | var self = this, 376 | notifies = '[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])', 377 | $elements = this.$ele.nextAll(notifies); 378 | if (this.settings.newest_on_top === true) { 379 | $elements = this.$ele.prevAll(notifies); 380 | } 381 | $elements.each(function () { 382 | $(this).css(self.settings.placement.from, posX); 383 | posX = (parseInt(posX) + parseInt(self.settings.spacing)) + $(this).outerHeight(); 384 | }); 385 | } 386 | }); 387 | 388 | $.notify = function (content, options) { 389 | var plugin = new Notify(this, content, options); 390 | return plugin.notify; 391 | }; 392 | $.notifyDefaults = function (options) { 393 | defaults = $.extend(true, {}, defaults, options); 394 | return defaults; 395 | }; 396 | $.notifyClose = function (command) { 397 | if (typeof command === "undefined" || command === "all") { 398 | $('[data-notify]').find('[data-notify="dismiss"]').trigger('click'); 399 | } else { 400 | $('[data-notify-position="' + command + '"]').find('[data-notify="dismiss"]').trigger('click'); 401 | } 402 | }; 403 | 404 | })); 405 | -------------------------------------------------------------------------------- /public/js/jquery.bootstrap.wizard.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery twitter bootstrap wizard plugin 3 | * Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard 4 | * version 1.0 5 | * Requires jQuery v1.3.2 or later 6 | * Supports Bootstrap 2.2.x, 2.3.x, 3.0 7 | * Dual licensed under the MIT and GPL licenses: 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * http://www.gnu.org/licenses/gpl.html 10 | * Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com) 11 | */ 12 | (function(e){var n=function(d,k){d=e(d);var a=this,g=[],c=e.extend({},e.fn.bootstrapWizard.defaults,k),f=null,b=null;this.rebindClick=function(h,a){h.unbind("click",a).bind("click",a)};this.fixNavigationButtons=function(){f.length||(b.find("a:first").tab("show"),f=b.find('li:has([data-toggle="tab"]):first'));e(c.previousSelector,d).toggleClass("disabled",a.firstIndex()>=a.currentIndex());e(c.nextSelector,d).toggleClass("disabled",a.currentIndex()>=a.navigationLength());e(c.backSelector,d).toggleClass("disabled", 13 | 0==g.length);a.rebindClick(e(c.nextSelector,d),a.next);a.rebindClick(e(c.previousSelector,d),a.previous);a.rebindClick(e(c.lastSelector,d),a.last);a.rebindClick(e(c.firstSelector,d),a.first);a.rebindClick(e(c.backSelector,d),a.back);if(c.onTabShow&&"function"===typeof c.onTabShow&&!1===c.onTabShow(f,b,a.currentIndex()))return!1};this.next=function(h){if(d.hasClass("last")||c.onNext&&"function"===typeof c.onNext&&!1===c.onNext(f,b,a.nextIndex()))return!1;h=a.currentIndex();$index=a.nextIndex();$index> 14 | a.navigationLength()||(g.push(h),b.find('li:has([data-toggle="tab"]):eq('+$index+") a").tab("show"))};this.previous=function(h){if(d.hasClass("first")||c.onPrevious&&"function"===typeof c.onPrevious&&!1===c.onPrevious(f,b,a.previousIndex()))return!1;h=a.currentIndex();$index=a.previousIndex();0>$index||(g.push(h),b.find('li:has([data-toggle="tab"]):eq('+$index+") a").tab("show"))};this.first=function(h){if(c.onFirst&&"function"===typeof c.onFirst&&!1===c.onFirst(f,b,a.firstIndex())||d.hasClass("disabled"))return!1; 15 | g.push(a.currentIndex());b.find('li:has([data-toggle="tab"]):eq(0) a').tab("show")};this.last=function(h){if(c.onLast&&"function"===typeof c.onLast&&!1===c.onLast(f,b,a.lastIndex())||d.hasClass("disabled"))return!1;g.push(a.currentIndex());b.find('li:has([data-toggle="tab"]):eq('+a.navigationLength()+") a").tab("show")};this.back=function(){if(0==g.length)return null;var a=g.pop();if(c.onBack&&"function"===typeof c.onBack&&!1===c.onBack(f,b,a))return g.push(a),!1;d.find('li:has([data-toggle="tab"]):eq('+ 16 | a+") a").tab("show")};this.currentIndex=function(){return b.find('li:has([data-toggle="tab"])').index(f)};this.firstIndex=function(){return 0};this.lastIndex=function(){return a.navigationLength()};this.getIndex=function(a){return b.find('li:has([data-toggle="tab"])').index(a)};this.nextIndex=function(){return b.find('li:has([data-toggle="tab"])').index(f)+1};this.previousIndex=function(){return b.find('li:has([data-toggle="tab"])').index(f)-1};this.navigationLength=function(){return b.find('li:has([data-toggle="tab"])').length- 17 | 1};this.activeTab=function(){return f};this.nextTab=function(){return b.find('li:has([data-toggle="tab"]):eq('+(a.currentIndex()+1)+")").length?b.find('li:has([data-toggle="tab"]):eq('+(a.currentIndex()+1)+")"):null};this.previousTab=function(){return 0>=a.currentIndex()?null:b.find('li:has([data-toggle="tab"]):eq('+parseInt(a.currentIndex()-1)+")")};this.show=function(b){b=isNaN(b)?d.find('li:has([data-toggle="tab"]) a[href=#'+b+"]"):d.find('li:has([data-toggle="tab"]):eq('+b+") a");0").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,d=d.concat(c.errorList)}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){return!!a.trim(""+a(b).val())},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b===this.lastElement)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr("aria-invalid",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors();var b,c=this.elements().removeData("previousValue").removeAttr("aria-invalid");if(this.settings.unhighlight)for(b=0;c[b];b++)this.settings.unhighlight.call(this,c[b],this.settings.errorClass,"");else c.removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return"radio"===e||"checkbox"===e?this.findByName(b.name).filter(":checked").val():"number"===e&&"undefined"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j instanceof TypeError&&(j.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+"")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr("aria-describedby");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a("<"+this.settings.errorElement+">").attr("id",h+"-error").addClass(this.settings.errorClass).html(c||""),d=g,this.settings.wrapper&&(d=g.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is("label")?g.attr("for",h):0===g.parents("label[for='"+h+"']").length&&(f=g.attr("id").replace(/(:|\.|\[|\]|\$)/g,"\\$1"),i?i.match(new RegExp("\\b"+f+"\\b"))||(i+=" "+f):i=f,a(b).attr("aria-describedby",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a("[name='"+b+"']",this.currentForm).attr("aria-describedby",g.attr("id"))}))),!c&&this.settings.success&&(g.text(""),"string"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+d.replace(/\s+/g,", #")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+b+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.off(".validate-equalTo").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d="string"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||"true"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,"remote"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),"pending")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})}); -------------------------------------------------------------------------------- /public/js/light-bootstrap-dashboard.js: -------------------------------------------------------------------------------- 1 | /*! ========================================================= 2 | * 3 | * Light Bootstrap Dashboard PRO - V1.3.0 4 | * 5 | * ========================================================= 6 | * 7 | * Copyright 2016 Creative Tim 8 | * Available with purchase of license from http://www.creative-tim.com/product/light-bootstrap-dashboard-pro 9 | * 10 | * _oo0oo_ 11 | * o8888888o 12 | * 88" . "88 13 | * (| -_- |) 14 | * 0\ = /0 15 | * ___/`---'\___ 16 | * .' \\| |// '. 17 | * / \\||| : |||// \ 18 | * / _||||| -:- |||||- \ 19 | * | | \\\ - /// | | 20 | * | \_| ''\---/'' |_/ | 21 | * \ .-\__ '-' ___/-. / 22 | * ___'. .' /--.--\ `. .'___ 23 | * ."" '< `.___\_<|>_/___.' >' "". 24 | * | | : `- \`.;`\ _ /`;.`/ - ` : | | 25 | * \ \ `_. \_ __\ /__ _/ .-` / / 26 | * =====`-.____`.___ \_____/___.-`___.-'===== 27 | * `=---=' 28 | * 29 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30 | * 31 | * Buddha Bless: "No Bugs" 32 | * 33 | * ========================================================= */ 34 | 35 | var searchVisible = 0; 36 | var transparent = true; 37 | 38 | var transparentDemo = true; 39 | var fixedTop = false; 40 | 41 | var mobile_menu_visible = 0, 42 | mobile_menu_initialized = false, 43 | toggle_initialized = false, 44 | bootstrap_nav_initialized = false, 45 | $sidebar, 46 | isWindows; 47 | 48 | (function(){ 49 | isWindows = navigator.platform.indexOf('Win') > -1 ? true : false; 50 | 51 | if (isWindows && !$('body').hasClass('sidebar-mini')){ 52 | // if we are on windows OS we activate the perfectScrollbar function 53 | $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar(); 54 | 55 | $('html').addClass('perfect-scrollbar-on'); 56 | } else { 57 | $('html').addClass('perfect-scrollbar-off'); 58 | } 59 | })(); 60 | 61 | $(document).ready(function(){ 62 | 63 | window_width = $(window).width(); 64 | $sidebar = $('.sidebar'); 65 | 66 | // check if there is an image set for the sidebar's background 67 | lbd.checkSidebarImage(); 68 | 69 | if($('body').hasClass('sidebar-mini')){ 70 | lbd.misc.sidebar_mini_active = true; 71 | } 72 | 73 | lbd.initSidebarsCheck(); 74 | 75 | lbd.initMinimizeSidebar(); 76 | 77 | $('.form-control').on("focus", function(){ 78 | $(this).parent('.input-group').addClass("input-group-focus"); 79 | }).on("blur", function(){ 80 | $(this).parent(".input-group").removeClass("input-group-focus"); 81 | }); 82 | 83 | // Init Collapse Areas 84 | lbd.initCollapseArea(); 85 | 86 | // Init Tooltips 87 | $('[rel="tooltip"]').tooltip(); 88 | 89 | // Init Tags Input 90 | if($(".tagsinput").length != 0){ 91 | $(".tagsinput").tagsInput(); 92 | } 93 | 94 | // Init Bootstrap Select Picker 95 | if($(".selectpicker").length != 0){ 96 | $(".selectpicker").selectpicker(); 97 | } 98 | 99 | }); 100 | 101 | // activate mobile menus when the windows is resized 102 | $(window).resize(function(){ 103 | lbd.initSidebarsCheck(); 104 | }); 105 | 106 | 107 | lbd = { 108 | 109 | misc:{ 110 | navbar_menu_visible: 0, 111 | active_collapse: true, 112 | disabled_collapse_init: 0, 113 | 114 | }, 115 | 116 | checkSidebarImage: function(){ 117 | $sidebar = $('.sidebar'); 118 | image_src = $sidebar.data('image'); 119 | 120 | if(image_src !== undefined){ 121 | sidebar_container = '