telephone-clients 3.0.103-8 → 3.0.103-81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1043) hide show
  1. package/.babelignore +1 -1
  2. package/.babelrc +6 -6
  3. package/.eslintrc.js +16 -16
  4. package/CHANGELOG.md +37 -37
  5. package/README.md +38 -38
  6. package/TelephoneClient.iml +12 -12
  7. package/adapter.min.js +2049 -2049
  8. package/android.html +18 -18
  9. package/build.gradle +15 -15
  10. package/index.html +29 -29
  11. package/package.json +3 -3
  12. package/release.bat +5 -5
  13. package/src/AndroidApp.vue +33 -33
  14. package/src/App.vue +54 -52
  15. package/src/android-bootstrap/less/navs.less +333 -333
  16. package/src/android.js +17 -17
  17. package/src/androidBase.js +111 -111
  18. package/src/androidTest.js +18 -18
  19. package/src/assets//345/210/240/351/231/244.png +0 -0
  20. package/src/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  21. package/src/bootstrap/less/.csscomb.json +304 -304
  22. package/src/bootstrap/less/.csslintrc +19 -19
  23. package/src/bootstrap/less/alerts.less +73 -73
  24. package/src/bootstrap/less/aofeng/animate.min.css +10 -10
  25. package/src/bootstrap/less/aofeng/standard.less +585 -585
  26. package/src/bootstrap/less/aofeng/themeOne/BinaryTemplate.less +478 -478
  27. package/src/bootstrap/less/aofeng/themeOne/loginStyle.less +1586 -1586
  28. package/src/bootstrap/less/aofeng/themeOne/systemStyle.less +1905 -1905
  29. package/src/bootstrap/less/aofeng/themeTwo/newStyle1.less +415 -415
  30. package/src/bootstrap/less/badges.less +66 -66
  31. package/src/bootstrap/less/bootstrap.less +65 -65
  32. package/src/bootstrap/less/breadcrumbs.less +26 -26
  33. package/src/bootstrap/less/button-groups.less +247 -247
  34. package/src/bootstrap/less/buttons.less +172 -172
  35. package/src/bootstrap/less/carousel.less +269 -269
  36. package/src/bootstrap/less/close.less +34 -34
  37. package/src/bootstrap/less/code.less +69 -69
  38. package/src/bootstrap/less/component-animations.less +33 -33
  39. package/src/bootstrap/less/dropdowns.less +216 -216
  40. package/src/bootstrap/less/forms.less +626 -626
  41. package/src/bootstrap/less/glyphicons.less +305 -305
  42. package/src/bootstrap/less/grid.less +84 -84
  43. package/src/bootstrap/less/input-groups.less +167 -167
  44. package/src/bootstrap/less/jumbotron.less +52 -52
  45. package/src/bootstrap/less/labels.less +64 -64
  46. package/src/bootstrap/less/list-group.less +141 -141
  47. package/src/bootstrap/less/manageStyle/manageChile.less +180 -180
  48. package/src/bootstrap/less/manageStyle/manageStyle.less +1102 -1102
  49. package/src/bootstrap/less/manageStyle/safeStyle.less +498 -498
  50. package/src/bootstrap/less/media.less +66 -66
  51. package/src/bootstrap/less/mixins/alerts.less +14 -14
  52. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  53. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  54. package/src/bootstrap/less/mixins/buttons.less +69 -69
  55. package/src/bootstrap/less/mixins/center-block.less +7 -7
  56. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  57. package/src/bootstrap/less/mixins/forms.less +90 -90
  58. package/src/bootstrap/less/mixins/gradients.less +59 -59
  59. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  60. package/src/bootstrap/less/mixins/grid.less +122 -122
  61. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  62. package/src/bootstrap/less/mixins/image.less +33 -33
  63. package/src/bootstrap/less/mixins/labels.less +12 -12
  64. package/src/bootstrap/less/mixins/list-group.less +30 -30
  65. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  66. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  67. package/src/bootstrap/less/mixins/opacity.less +8 -8
  68. package/src/bootstrap/less/mixins/pagination.less +24 -24
  69. package/src/bootstrap/less/mixins/panels.less +24 -24
  70. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  71. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  72. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  73. package/src/bootstrap/less/mixins/resize.less +6 -6
  74. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  75. package/src/bootstrap/less/mixins/size.less +10 -10
  76. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  77. package/src/bootstrap/less/mixins/table-row.less +44 -44
  78. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  79. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  80. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  81. package/src/bootstrap/less/mixins.less +40 -40
  82. package/src/bootstrap/less/modals.less +151 -151
  83. package/src/bootstrap/less/navbar.less +660 -660
  84. package/src/bootstrap/less/navs.less +285 -285
  85. package/src/bootstrap/less/normalize.less +424 -424
  86. package/src/bootstrap/less/pager.less +76 -76
  87. package/src/bootstrap/less/pagination.less +89 -89
  88. package/src/bootstrap/less/panels.less +275 -275
  89. package/src/bootstrap/less/popovers.less +131 -131
  90. package/src/bootstrap/less/print.less +101 -101
  91. package/src/bootstrap/less/progress-bars.less +87 -87
  92. package/src/bootstrap/less/responsive-embed.less +35 -35
  93. package/src/bootstrap/less/responsive-utilities.less +194 -194
  94. package/src/bootstrap/less/scaffolding.less +161 -161
  95. package/src/bootstrap/less/stand.less +211 -211
  96. package/src/bootstrap/less/standard.less +503 -503
  97. package/src/bootstrap/less/systemStyle.less +860 -860
  98. package/src/bootstrap/less/tables.less +312 -312
  99. package/src/bootstrap/less/theme.less +291 -291
  100. package/src/bootstrap/less/themeOne.less +34 -34
  101. package/src/bootstrap/less/themeTwo.less +27 -27
  102. package/src/bootstrap/less/thumbnails.less +36 -36
  103. package/src/bootstrap/less/tooltip.less +102 -102
  104. package/src/bootstrap/less/type.less +303 -303
  105. package/src/bootstrap/less/utilities.less +55 -55
  106. package/src/bootstrap/less/variables.less +896 -896
  107. package/src/bootstrap/less/wells.less +29 -29
  108. package/src/bus.js +2 -2
  109. package/src/components/CaseContainer.vue +86 -86
  110. package/src/components/ExportExcel.vue +342 -342
  111. package/src/components/ImgSelfTel.vue +126 -126
  112. package/src/components/MaterialsManage/MaterialsBase.vue +177 -177
  113. package/src/components/MaterialsManage/MaterialsList.vue +244 -244
  114. package/src/components/MaterialsManage/MaterialsManage.vue +60 -60
  115. package/src/components/PartialView.vue +44 -44
  116. package/src/components/Test.vue +26 -26
  117. package/src/components/TimelineItem.vue +119 -119
  118. package/src/components/Util/FileUpload.vue +139 -139
  119. package/src/components/Util/ImgSelfSafePlus.vue +156 -156
  120. package/src/components/Util/RightTreeSafe.vue +346 -346
  121. package/src/components/Util/RightTreeSafeDep.vue +350 -0
  122. package/src/components/Util/TelePhoneUpload.vue +279 -279
  123. package/src/components/Util.js +600 -600
  124. package/src/components/android/AddMyTask.vue +353 -346
  125. package/src/components/android/AppHeader.vue +69 -69
  126. package/src/components/android/CameraImg.vue +111 -111
  127. package/src/components/android/CompletedRepair.vue +264 -264
  128. package/src/components/android/EmployeeInfo.vue +59 -59
  129. package/src/components/android/EmployeePage.vue +71 -71
  130. package/src/components/android/Lbt.vue +103 -103
  131. package/src/components/android/LoginApp.vue +374 -374
  132. package/src/components/android/NavBottom.vue +104 -104
  133. package/src/components/changemeter/ChangeMeterAll.vue +189 -189
  134. package/src/components/changemeter/ChangeMeterDetail.vue +300 -300
  135. package/src/components/changemeter/ChangeMeterMain.vue +37 -37
  136. package/src/components/eachart/BarBrokenline.vue +206 -206
  137. package/src/components/eachart/BarChart.vue +165 -165
  138. package/src/components/eachart/PieChart.vue +182 -182
  139. package/src/components/eachart/datesumchart.vue +165 -165
  140. package/src/components/eachart/statework.vue +226 -226
  141. package/src/components/eachart/workorderchart.vue +183 -183
  142. package/src/components/guoxin/Console.vue +356 -356
  143. package/src/components/guoxin/RecordInfoRight.vue +75 -75
  144. package/src/components/guoxin/VisitInfo.vue +281 -281
  145. package/src/components/guoxin/call.state.api.js +215 -215
  146. package/src/components/guoxin/reconnecting-websocket.min.js +1 -1
  147. package/src/components/guoxin/telephone.js +15 -15
  148. package/src/components/map/AMapTrailShowWx.vue +178 -178
  149. package/src/components/map/CallMap.vue +403 -403
  150. package/src/components/map/CriteriaData.vue +81 -81
  151. package/src/components/map/OlMap.vue +831 -831
  152. package/src/components/map/OrderService.vue +249 -249
  153. package/src/components/map/PipeMap.vue +154 -154
  154. package/src/components/map/dragbox.js +234 -234
  155. package/src/components/pay/createQRcode.vue +192 -192
  156. package/src/components/pay/telReadCard.vue +59 -59
  157. package/src/components/pc/AllUser.vue +615 -615
  158. package/src/components/pc/AllUserNew.vue +638 -638
  159. package/src/components/pc/ArrearsList.vue +397 -397
  160. package/src/components/pc/AttendantCallStat.vue +213 -213
  161. package/src/components/pc/AttendantWorkHistory.vue +98 -98
  162. package/src/components/pc/Auxfunc.vue +76 -76
  163. package/src/components/pc/BottleGas/BottleGasManage.vue +304 -304
  164. package/src/components/pc/BottleGasWork.vue +214 -214
  165. package/src/components/pc/BuildReport.vue +60 -60
  166. package/src/components/pc/CallerInfoList.vue +98 -98
  167. package/src/components/pc/ChatMsg.vue +338 -338
  168. package/src/components/pc/ComplainWork.vue +326 -326
  169. package/src/components/pc/Console.vue +617 -617
  170. package/src/components/pc/DelayReply.vue +60 -60
  171. package/src/components/pc/DistributeWork.vue +177 -177
  172. package/src/components/pc/ElseWork.vue +44 -44
  173. package/src/components/pc/ElseWorkList.vue +267 -267
  174. package/src/components/pc/Emoji.vue +64 -64
  175. package/src/components/pc/Evaluate.vue +145 -145
  176. package/src/components/pc/EvaluateList.vue +195 -195
  177. package/src/components/pc/EvaluateModel.vue +53 -53
  178. package/src/components/pc/FailureEdit.vue +192 -192
  179. package/src/components/pc/FailureShow.vue +61 -61
  180. package/src/components/pc/FireQuery.vue +165 -165
  181. package/src/components/pc/FootPrintList.vue +40 -40
  182. package/src/components/pc/GasWork.vue +764 -764
  183. package/src/components/pc/GroupResend.vue +111 -111
  184. package/src/components/pc/InstallWork.vue +734 -734
  185. package/src/components/pc/ManageMaterial.vue +282 -282
  186. package/src/components/pc/MessageList.vue +635 -635
  187. package/src/components/pc/MessageManage.vue +136 -136
  188. package/src/components/pc/MessageManageList.vue +127 -127
  189. package/src/components/pc/MessageManageNew.vue +121 -121
  190. package/src/components/pc/MonitorGroup.vue +82 -82
  191. package/src/components/pc/NewRepairPaper.vue +370 -370
  192. package/src/components/pc/OrderService.vue +182 -182
  193. package/src/components/pc/ProgressBar.vue +50 -50
  194. package/src/components/pc/QueryJoinlv.vue +136 -136
  195. package/src/components/pc/QueryTeleHistory.vue +95 -95
  196. package/src/components/pc/QueryTextHistory.vue +98 -98
  197. package/src/components/pc/QueryVisitHistory.vue +217 -217
  198. package/src/components/pc/ReVisitList.vue +208 -208
  199. package/src/components/pc/RecordInfoRight.vue +84 -84
  200. package/src/components/pc/RecordList.vue +53 -53
  201. package/src/components/pc/RecordList2.vue +155 -155
  202. package/src/components/pc/RecordListLeft.vue +188 -188
  203. package/src/components/pc/RecordReport.vue +181 -181
  204. package/src/components/pc/ReminderOrder.vue +52 -52
  205. package/src/components/pc/RepairHistoryList.vue +152 -152
  206. package/src/components/pc/RepairsWork.vue +839 -820
  207. package/src/components/pc/ReturnRecord.vue +126 -126
  208. package/src/components/pc/RoleSelector.vue +139 -139
  209. package/src/components/pc/RoleSelectorDep.vue +158 -0
  210. package/src/components/pc/SeatInfo.vue +207 -207
  211. package/src/components/pc/Seekwork.vue +310 -310
  212. package/src/components/pc/ServerAppendixInfo.vue +52 -52
  213. package/src/components/pc/ServiceBack.vue +49 -49
  214. package/src/components/pc/ServiceDetails.vue +53 -53
  215. package/src/components/pc/ServiceDetailsNew.vue +53 -53
  216. package/src/components/pc/SiteBack.vue +84 -84
  217. package/src/components/pc/SiteCase.vue +87 -87
  218. package/src/components/pc/SiteSend.vue +281 -281
  219. package/src/components/pc/StandSend.vue +600 -600
  220. package/src/components/pc/StandServer.vue +25 -25
  221. package/src/components/pc/StandWork.vue +91 -91
  222. package/src/components/pc/StandWorkNew.vue +91 -91
  223. package/src/components/pc/TelFindUser.vue +304 -304
  224. package/src/components/pc/TelListener.vue +174 -143
  225. package/src/components/pc/TelLossList.vue +247 -247
  226. package/src/components/pc/TelMaterSelect.vue +225 -225
  227. package/src/components/pc/TelUserMaterSend.vue +171 -171
  228. package/src/components/pc/TeleInfo.vue +140 -140
  229. package/src/components/pc/TeleList.vue +99 -99
  230. package/src/components/pc/TeleOperKl.vue +91 -91
  231. package/src/components/pc/TemplateMessage.vue +92 -92
  232. package/src/components/pc/TextControl.vue +113 -113
  233. package/src/components/pc/TextInfoRight.vue +84 -84
  234. package/src/components/pc/TextList.vue +45 -45
  235. package/src/components/pc/TextListLeft.vue +156 -156
  236. package/src/components/pc/TextServer.vue +154 -154
  237. package/src/components/pc/TextService.vue +849 -849
  238. package/src/components/pc/UserDefinedMessage.vue +90 -90
  239. package/src/components/pc/UserDefinedMessageNew.vue +121 -121
  240. package/src/components/pc/UserOperate.vue +48 -48
  241. package/src/components/pc/VideoPlayer.vue +73 -73
  242. package/src/components/pc/VisitInfo.vue +284 -284
  243. package/src/components/pc/VoiceServer.vue +208 -208
  244. package/src/components/pc/WorkCenter.vue +105 -105
  245. package/src/components/pc/WorkCenterContent.vue +100 -100
  246. package/src/components/pc/WorkCenterList.vue +292 -292
  247. package/src/components/pc/WorkFind.vue +128 -128
  248. package/src/components/pc/WorkHistory.vue +560 -548
  249. package/src/components/pc/WorkList.vue +743 -743
  250. package/src/components/pc/WorkListAll.vue +630 -630
  251. package/src/components/pc/WorkListAllNew.vue +700 -700
  252. package/src/components/pc/WorkListNew.vue +712 -706
  253. package/src/components/pc/WorkMsg.vue +105 -105
  254. package/src/components/pc/analysis/AnalysisMain.vue +423 -423
  255. package/src/components/pc/analysis/StateStatistics.vue +292 -292
  256. package/src/components/pc/analysis/TelephoneAnaly.vue +104 -104
  257. package/src/components/pc/analysis/TelephoneType.vue +270 -270
  258. package/src/components/pc/config/DefaultPrint.js +7 -7
  259. package/src/components/pc/dataManager/KlCatalog.vue +293 -293
  260. package/src/components/pc/dataManager/KlContent.vue +193 -193
  261. package/src/components/pc/dataManager/Knowledge.vue +21 -21
  262. package/src/components/pc/dataManager/Materials.vue +553 -553
  263. package/src/components/pc/dataManager/OutletsList.vue +85 -85
  264. package/src/components/pc/dataManager/SafeEditor.vue +91 -91
  265. package/src/components/pc/dataManager/SafeList.vue +77 -77
  266. package/src/components/pc/dataManager/ShowMaterials.vue +159 -159
  267. package/src/components/pc/dataManager/StopGasManager.vue +320 -320
  268. package/src/components/pc/imgmove.vue +192 -192
  269. package/src/components/pc/olddata/OldWorkList.vue +193 -0
  270. package/src/components/pc/serviceDeleteOrder.vue +53 -53
  271. package/src/components/pc/wx/BookingService.vue +407 -407
  272. package/src/components/pc/wx/CustomMenu.vue +154 -154
  273. package/src/components/pc/wx/MenuView.vue +249 -249
  274. package/src/components/pc/wx/MobileView.vue +273 -273
  275. package/src/components/pc/wx/NewsMaterial.vue +144 -144
  276. package/src/components/pc/wx/SelectMaterial.vue +100 -100
  277. package/src/components/pc/wx/TelOutletsManager.vue +186 -186
  278. package/src/components/pos/Init.vue +213 -213
  279. package/src/components/pos/Main.vue +123 -123
  280. package/src/components/pos/Plugin/AndroidPlugin.js +148 -148
  281. package/src/components/pos/Plugin/PosUtil.js +315 -315
  282. package/src/components/pos/aotePos.js +55 -55
  283. package/src/components/pos/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  284. package/src/components/pos/bootstrap/less/.csscomb.json +304 -304
  285. package/src/components/pos/bootstrap/less/.csslintrc +19 -19
  286. package/src/components/pos/bootstrap/less/alerts.less +73 -73
  287. package/src/components/pos/bootstrap/less/badges.less +66 -66
  288. package/src/components/pos/bootstrap/less/bootstrap.less +56 -56
  289. package/src/components/pos/bootstrap/less/breadcrumbs.less +26 -26
  290. package/src/components/pos/bootstrap/less/button-groups.less +247 -247
  291. package/src/components/pos/bootstrap/less/buttons.less +172 -172
  292. package/src/components/pos/bootstrap/less/carousel.less +269 -269
  293. package/src/components/pos/bootstrap/less/close.less +34 -34
  294. package/src/components/pos/bootstrap/less/code.less +69 -69
  295. package/src/components/pos/bootstrap/less/component-animations.less +33 -33
  296. package/src/components/pos/bootstrap/less/dropdowns.less +216 -216
  297. package/src/components/pos/bootstrap/less/forms.less +626 -626
  298. package/src/components/pos/bootstrap/less/glyphicons.less +305 -305
  299. package/src/components/pos/bootstrap/less/grid.less +84 -84
  300. package/src/components/pos/bootstrap/less/input-groups.less +167 -167
  301. package/src/components/pos/bootstrap/less/jumbotron.less +52 -52
  302. package/src/components/pos/bootstrap/less/labels.less +64 -64
  303. package/src/components/pos/bootstrap/less/list-group.less +141 -141
  304. package/src/components/pos/bootstrap/less/media.less +66 -66
  305. package/src/components/pos/bootstrap/less/mixins/alerts.less +14 -14
  306. package/src/components/pos/bootstrap/less/mixins/background-variant.less +9 -9
  307. package/src/components/pos/bootstrap/less/mixins/border-radius.less +18 -18
  308. package/src/components/pos/bootstrap/less/mixins/buttons.less +69 -69
  309. package/src/components/pos/bootstrap/less/mixins/center-block.less +7 -7
  310. package/src/components/pos/bootstrap/less/mixins/clearfix.less +22 -22
  311. package/src/components/pos/bootstrap/less/mixins/forms.less +90 -90
  312. package/src/components/pos/bootstrap/less/mixins/gradients.less +59 -59
  313. package/src/components/pos/bootstrap/less/mixins/grid-framework.less +92 -92
  314. package/src/components/pos/bootstrap/less/mixins/grid.less +122 -122
  315. package/src/components/pos/bootstrap/less/mixins/hide-text.less +21 -21
  316. package/src/components/pos/bootstrap/less/mixins/image.less +33 -33
  317. package/src/components/pos/bootstrap/less/mixins/labels.less +12 -12
  318. package/src/components/pos/bootstrap/less/mixins/list-group.less +30 -30
  319. package/src/components/pos/bootstrap/less/mixins/nav-divider.less +10 -10
  320. package/src/components/pos/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  321. package/src/components/pos/bootstrap/less/mixins/opacity.less +8 -8
  322. package/src/components/pos/bootstrap/less/mixins/pagination.less +24 -24
  323. package/src/components/pos/bootstrap/less/mixins/panels.less +24 -24
  324. package/src/components/pos/bootstrap/less/mixins/progress-bar.less +10 -10
  325. package/src/components/pos/bootstrap/less/mixins/reset-filter.less +8 -8
  326. package/src/components/pos/bootstrap/less/mixins/reset-text.less +18 -18
  327. package/src/components/pos/bootstrap/less/mixins/resize.less +6 -6
  328. package/src/components/pos/bootstrap/less/mixins/responsive-visibility.less +15 -15
  329. package/src/components/pos/bootstrap/less/mixins/size.less +10 -10
  330. package/src/components/pos/bootstrap/less/mixins/tab-focus.less +9 -9
  331. package/src/components/pos/bootstrap/less/mixins/table-row.less +44 -44
  332. package/src/components/pos/bootstrap/less/mixins/text-emphasis.less +9 -9
  333. package/src/components/pos/bootstrap/less/mixins/text-overflow.less +8 -8
  334. package/src/components/pos/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  335. package/src/components/pos/bootstrap/less/mixins.less +40 -40
  336. package/src/components/pos/bootstrap/less/modals.less +151 -151
  337. package/src/components/pos/bootstrap/less/navbar.less +660 -660
  338. package/src/components/pos/bootstrap/less/navs.less +286 -286
  339. package/src/components/pos/bootstrap/less/normalize.less +424 -424
  340. package/src/components/pos/bootstrap/less/pager.less +76 -76
  341. package/src/components/pos/bootstrap/less/pagination.less +89 -89
  342. package/src/components/pos/bootstrap/less/panels.less +274 -274
  343. package/src/components/pos/bootstrap/less/popovers.less +131 -131
  344. package/src/components/pos/bootstrap/less/print.less +101 -101
  345. package/src/components/pos/bootstrap/less/progress-bars.less +87 -87
  346. package/src/components/pos/bootstrap/less/responsive-embed.less +35 -35
  347. package/src/components/pos/bootstrap/less/responsive-utilities.less +194 -194
  348. package/src/components/pos/bootstrap/less/scaffolding.less +161 -161
  349. package/src/components/pos/bootstrap/less/tables.less +262 -262
  350. package/src/components/pos/bootstrap/less/theme.less +291 -291
  351. package/src/components/pos/bootstrap/less/thumbnails.less +36 -36
  352. package/src/components/pos/bootstrap/less/tooltip.less +102 -102
  353. package/src/components/pos/bootstrap/less/type.less +303 -303
  354. package/src/components/pos/bootstrap/less/utilities.less +55 -55
  355. package/src/components/pos/bootstrap/less/variables.less +895 -895
  356. package/src/components/pos/bootstrap/less/wells.less +29 -29
  357. package/src/components/pos/charge/card/CardInfo.vue +43 -43
  358. package/src/components/pos/charge/card/CheckUser.Vue +116 -116
  359. package/src/components/pos/charge/card/ReadCardInter.vue +177 -177
  360. package/src/components/pos/charge/card/ReadCardToBuy.vue +174 -174
  361. package/src/components/pos/charge/card/SelectUser.Vue +104 -104
  362. package/src/components/pos/charge/machine/MachineSearch.Vue +124 -124
  363. package/src/components/pos/charge/sellgas/AdvertPop.vue +70 -70
  364. package/src/components/pos/charge/sellgas/CardSellGas.vue +361 -361
  365. package/src/components/pos/charge/sellgas/ChoosePayWay.vue +275 -275
  366. package/src/components/pos/charge/sellgas/GudingPrice.vue +38 -38
  367. package/src/components/pos/charge/sellgas/JietiPrice.vue +54 -54
  368. package/src/components/pos/charge/sellgas/ScanQrcode.vue +171 -171
  369. package/src/components/pos/charge/sellgas/WriteCard.vue +366 -366
  370. package/src/components/pos/charge/userinfo/ChangeMeterList.vue +43 -43
  371. package/src/components/pos/charge/userinfo/FillGasList.vue +43 -43
  372. package/src/components/pos/charge/userinfo/HistorySellList.vue +90 -90
  373. package/src/components/pos/charge/userinfo/OtherList.vue +43 -43
  374. package/src/components/pos/charge/userinfo/SellList.vue +43 -43
  375. package/src/components/pos/charge/userinfo/TransList.vue +43 -43
  376. package/src/components/pos/charge/userinfo/UserInfo.vue +176 -176
  377. package/src/components/pos/charge/userinfo/WritecardInfo.vue +44 -44
  378. package/src/components/pos/css/bootstrap.less +6757 -6757
  379. package/src/components/pos/css/style.less +158 -158
  380. package/src/components/pos/css/style.less.bak +84 -84
  381. package/src/components/pos/fonts/fontawesome-webfont.svg +2671 -2671
  382. package/src/components/pos/fonts/glyphicons-halflings-regular.svg +287 -287
  383. package/src/components/pos/js/bootstrap.js +2377 -2377
  384. package/src/components/pos/js/bootstrap.min.js +6 -6
  385. package/src/components/pos/js/jquery.chromatable.js +150 -150
  386. package/src/components/pos/js/jquery.min.js +5 -5
  387. package/src/components/pos/js/npm.js +12 -12
  388. package/src/components/pos/ztprint.js +26 -26
  389. package/src/components/qinhua/qhonlineChangeMeter.vue +440 -440
  390. package/src/components/qinhua/qhonlineoperation.vue +227 -227
  391. package/src/components/reli/ChoosePayWay.vue +179 -179
  392. package/src/components/reli/HistorySellLists.vue +128 -128
  393. package/src/components/reli/MachineMain.vue +470 -470
  394. package/src/components/reli/UserInfo.vue +211 -211
  395. package/src/components/reli/searchSells.vue +446 -446
  396. package/src/components/repaircount/RepairDetail.vue +74 -74
  397. package/src/components/repaircount/RepairPlan.vue +58 -58
  398. package/src/components/repaircount/SelectRepairPlan.vue +189 -189
  399. package/src/components/sale/CardMeterCenter.vue +625 -625
  400. package/src/components/sale/IOTMeterCenter.vue +443 -443
  401. package/src/components/sale/MachineMeterCenter.vue +591 -591
  402. package/src/components/sendsingle/CardChangeFill.vue +338 -338
  403. package/src/components/sendsingle/ChangeSendCard.vue +19 -19
  404. package/src/components/sendsingle/IotChangeFill.vue +471 -471
  405. package/src/components/sendsingle/MachineChangeFill.vue +143 -143
  406. package/src/components/sendsingle/PosMakeGas.vue +342 -342
  407. package/src/components/sendsingle/QueryTemporaryRepair.vue +226 -226
  408. package/src/components/sendsingle/TelLotChangeFill.vue +626 -626
  409. package/src/components/sendsingle/TemporarySingle.vue +480 -480
  410. package/src/components/sendsingle/ceshi.vue +51 -51
  411. package/src/components/sendsingle/onlineBuyGas.vue +632 -632
  412. package/src/components/sendsingle/onlineBuyGasOld.vue +19 -19
  413. package/src/components/sendsingle/onlineChangeMeter.vue +419 -419
  414. package/src/components/sendsingle/onlinemakecard.vue +413 -413
  415. package/src/components/sendsingle/onlineoperation.vue +401 -401
  416. package/src/components/sendsingle/onlinequeryuser.vue +468 -468
  417. package/src/components/sendsingle/posMaintainer.vue +277 -277
  418. package/src/components/shaoguan/DelayReply.vue +60 -60
  419. package/src/components/shaoguan/FailureEdit.vue +172 -172
  420. package/src/components/shaoguan/RepairDetailsChange.vue +399 -399
  421. package/src/components/shaoguan/RepairOrderChange.vue +673 -673
  422. package/src/components/shaoguan/RepairUserInfoChange.vue +532 -532
  423. package/src/components/shaoguan/WorkHistory.vue +346 -346
  424. package/src/components/shaoguan/WorkListAll.vue +521 -521
  425. package/src/components/shaoguan/config/DefaultPrint.js +7 -7
  426. package/src/components/telcount/TelByAttendant.vue +118 -118
  427. package/src/components/telcount/TelByLouQi.vue +113 -113
  428. package/src/components/telcount/TelByLouQiMingxi.vue +117 -117
  429. package/src/components/telcount/TelByOrderMan.vue +105 -105
  430. package/src/components/telcount/TelByWeiXiu.vue +199 -199
  431. package/src/components/telcount/TelByZhiHuan.vue +109 -109
  432. package/src/components/telreport/HotlineMonthly.vue +121 -121
  433. package/src/components/telreport/RepairsDetailsReport.vue +98 -0
  434. package/src/components/telreport/TableFaultReport.vue +96 -0
  435. package/src/components/telreport/TelAgentVoiceReport.vue +275 -275
  436. package/src/components/telreport/TelMan.vue +127 -127
  437. package/src/components/telreport/TelReport.vue +122 -122
  438. package/src/components/telreport/TelephoneManReport.vue +121 -121
  439. package/src/components/telreport/Traffic.vue +94 -94
  440. package/src/components/telreport/Trafficassess.vue +121 -121
  441. package/src/components/temp/BusinessMessage.vue +60 -60
  442. package/src/components/temp/BusinesscheckInfo.vue +82 -82
  443. package/src/components/temp/CallRecords.vue +86 -86
  444. package/src/components/temp/ChangemeterInfo.vue +87 -87
  445. package/src/components/temp/DeviceInfo.vue +82 -82
  446. package/src/components/temp/DisableInforMation.vue +82 -82
  447. package/src/components/temp/HandplanInfo.vue +78 -78
  448. package/src/components/temp/InfoTable.vue +134 -131
  449. package/src/components/temp/InstructInfo.vue +86 -86
  450. package/src/components/temp/Main.vue +375 -375
  451. package/src/components/temp/MetereadInfo.vue +83 -83
  452. package/src/components/temp/MetterInfo.vue +92 -92
  453. package/src/components/temp/OldRepairList.vue +100 -0
  454. package/src/components/temp/ParamManager/ParamPage.vue +285 -285
  455. package/src/components/temp/ParamManager/SinglePage.vue +161 -161
  456. package/src/components/temp/RepairList.vue +125 -125
  457. package/src/components/temp/SecurityMessage.vue +64 -64
  458. package/src/components/temp/SecuritycheckInfo.vue +73 -73
  459. package/src/components/temp/SellInfo.vue +153 -153
  460. package/src/components/temp/TelList.vue +99 -99
  461. package/src/components/temp/rightview/CardList.vue +287 -287
  462. package/src/components/temp/rightview/RecordCancel.vue +103 -103
  463. package/src/components/temp/rightview/carddetail/AddUserDetail.vue +65 -65
  464. package/src/components/temp/rightview/carddetail/BankDKDetail.vue +75 -75
  465. package/src/components/temp/rightview/carddetail/BankPay.vue +75 -75
  466. package/src/components/temp/rightview/carddetail/CancellationDetail.vue +58 -58
  467. package/src/components/temp/rightview/carddetail/CardMeterCenterDetail.vue +58 -58
  468. package/src/components/temp/rightview/carddetail/CardOverUserDetail.vue +62 -62
  469. package/src/components/temp/rightview/carddetail/ChangeMeterDetail.vue +70 -70
  470. package/src/components/temp/rightview/carddetail/OtherChargeDetail.vue +56 -56
  471. package/src/components/temp/rightview/carddetail/RefundDetail.vue +63 -63
  472. package/src/components/temp/rightview/carddetail/ReissueBill.vue +165 -165
  473. package/src/components/temp/rightview/carddetail/SortingQuery.vue +295 -295
  474. package/src/components/temp/rightview/carddetail/UserChangeDetail.vue +77 -77
  475. package/src/components/temp/rightview/carddetail/WeChatPay.vue +75 -75
  476. package/src/components/temp/server/ChangeDeclare.vue +45 -45
  477. package/src/components/temp/server/LoadData.vue +60 -60
  478. package/src/components/temp/server/Login.vue +401 -401
  479. package/src/components/temp/server/ModifyPw.vue +143 -143
  480. package/src/components/tongcheng/DistributeWork.vue +129 -129
  481. package/src/components/tongcheng/InfoTable.vue +55 -55
  482. package/src/components/tongcheng/MetterInfo.vue +90 -90
  483. package/src/components/tongcheng/RepairsWork.vue +788 -788
  484. package/src/components/tongcheng/SellInfo.vue +152 -152
  485. package/src/components/tongcheng/StandServer.vue +24 -24
  486. package/src/components/tongcheng/UserOperate.vue +43 -43
  487. package/src/components/tongcheng/VoiceServer.vue +136 -136
  488. package/src/components/tongcheng/WorkListAll.vue +535 -535
  489. package/src/components/weinan/ComplainMsg.vue +141 -141
  490. package/src/components/weinan/ComplainWork.vue +205 -205
  491. package/src/components/weinan/Console.vue +418 -418
  492. package/src/components/weinan/DistributeWork.vue +138 -138
  493. package/src/components/weinan/ExportExcel.vue +204 -204
  494. package/src/components/weinan/FailureEdit.vue +182 -182
  495. package/src/components/weinan/InfoTable.vue +67 -67
  496. package/src/components/weinan/RecordList.vue +299 -299
  497. package/src/components/weinan/RepairFirstV.vue +547 -547
  498. package/src/components/weinan/RepairInfo.vue +163 -163
  499. package/src/components/weinan/RepairListTel.vue +96 -96
  500. package/src/components/weinan/RepairOrderV.vue +1447 -1447
  501. package/src/components/weinan/RepairUserInfo.vue +533 -533
  502. package/src/components/weinan/RepairsWork.vue +806 -806
  503. package/src/components/weinan/Seekwork.vue +178 -178
  504. package/src/components/weinan/SiteChange.vue +228 -228
  505. package/src/components/weinan/SiteSend.vue +228 -228
  506. package/src/components/weinan/SiteSendWeixiu.vue +268 -277
  507. package/src/components/weinan/StandWorkWeixiu.vue +91 -91
  508. package/src/components/weinan/TelByAttendant.vue +110 -110
  509. package/src/components/weinan/TelFindUser.vue +241 -241
  510. package/src/components/weinan/WorkList.vue +726 -653
  511. package/src/components/weinan/WorkListAll.vue +974 -898
  512. package/src/components/weinan/WorkListWeixiu.vue +608 -608
  513. package/src/components/workOrderApplication/OrderWorkDetail.vue +796 -796
  514. package/src/components/workOrderApplication/orderApplicationManage.vue +98 -98
  515. package/src/components/workOrderApplication/orderApply.vue +57 -57
  516. package/src/components/workOrderApplication/orderTable.vue +214 -214
  517. package/src/components/workOrderApplication/orderWork.vue +114 -114
  518. package/src/components/workorder/AfTabset.vue +125 -125
  519. package/src/components/workorder/AndroidStopGasManager.vue +270 -270
  520. package/src/components/workorder/AppInstallationMaterial.vue +613 -613
  521. package/src/components/workorder/ChangeMeter.vue +546 -546
  522. package/src/components/workorder/ChangeMeterList.vue +236 -236
  523. package/src/components/workorder/ChangeMeterPage.vue +506 -506
  524. package/src/components/workorder/CompletedInstall.vue +214 -214
  525. package/src/components/workorder/CompletedRepair.vue +321 -235
  526. package/src/components/workorder/CookingUtensils.vue +134 -134
  527. package/src/components/workorder/DelayApply.vue +105 -105
  528. package/src/components/workorder/DeviceService.vue +133 -133
  529. package/src/components/workorder/DoorService.vue +355 -355
  530. package/src/components/workorder/FaultAll.vue +826 -826
  531. package/src/components/workorder/FirstGasCheck.vue +310 -310
  532. package/src/components/workorder/InputSelect.vue +110 -110
  533. package/src/components/workorder/InstallFirst.vue +517 -517
  534. package/src/components/workorder/InstallUpLoad.vue +111 -111
  535. package/src/components/workorder/MaterialSum.vue +238 -238
  536. package/src/components/workorder/MonitorMSend.vue +202 -202
  537. package/src/components/workorder/Othercharge.vue +477 -477
  538. package/src/components/workorder/Outlay.vue +236 -236
  539. package/src/components/workorder/PhoneGroupResend.vue +88 -88
  540. package/src/components/workorder/PhoneStandWork.vue +354 -354
  541. package/src/components/workorder/PhoneUpDetail.vue +1041 -1038
  542. package/src/components/workorder/PhoneUpUserinfo.vue +1041 -1041
  543. package/src/components/workorder/PhotoWrite.vue +116 -116
  544. package/src/components/workorder/Pipeline.vue +497 -497
  545. package/src/components/workorder/QueryTemporaryRepair.vue +220 -220
  546. package/src/components/workorder/ReadCardPage.vue +217 -217
  547. package/src/components/workorder/RepairDetails.vue +603 -603
  548. package/src/components/workorder/RepairDetails22.vue +128 -128
  549. package/src/components/workorder/RepairFirst.vue +170 -170
  550. package/src/components/workorder/RepairFirstOld.vue +410 -410
  551. package/src/components/workorder/RepairFirstV.vue +673 -673
  552. package/src/components/workorder/RepairFirstVnew.vue +542 -542
  553. package/src/components/workorder/RepairInfo.vue +166 -166
  554. package/src/components/workorder/RepairMatterInfo.vue +186 -186
  555. package/src/components/workorder/RepairOrder.vue +688 -688
  556. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  557. package/src/components/workorder/RepairOrderVnew.vue +868 -868
  558. package/src/components/workorder/RepairSend.vue +264 -264
  559. package/src/components/workorder/RepairUserInfo.vue +532 -532
  560. package/src/components/workorder/Repairpage.vue +100 -100
  561. package/src/components/workorder/RepairsVisit.vue +319 -319
  562. package/src/components/workorder/SafeCheckService.vue +355 -355
  563. package/src/components/workorder/SubstitFirstV.vue +143 -143
  564. package/src/components/workorder/SubstitutionPage.vue +100 -100
  565. package/src/components/workorder/TelChangeMatter.vue +231 -231
  566. package/src/components/workorder/TemporarySingle.vue +480 -480
  567. package/src/components/workorder/TroubleRemoval.vue +419 -419
  568. package/src/components/workorder/UpLoad.vue +111 -111
  569. package/src/components/workorder/ZHihuanFirst.vue +546 -546
  570. package/src/components/workorder/ZhiCompletedRepair.vue +217 -217
  571. package/src/components/workorder/ZhiUpLoad.vue +136 -136
  572. package/src/expandcss.less +620 -620
  573. package/src/filiale/fugu/pc/ComplainWork.vue +206 -206
  574. package/src/filiale/fugu/pc/FailureEdit.vue +183 -183
  575. package/src/filiale/fugu/pc/RepairsWork.vue +793 -793
  576. package/src/filiale/fugu/pc/Seekwork.vue +182 -182
  577. package/src/filiale/fugu/telephone.js +16 -16
  578. package/src/filiale/furuike/android/CompletedRepair.vue +210 -210
  579. package/src/filiale/furuike/android/FaultAll.vue +861 -861
  580. package/src/filiale/furuike/android/Materials.vue +410 -410
  581. package/src/filiale/furuike/android/RepairFirstVnew.vue +580 -580
  582. package/src/filiale/furuike/android/RepairOrderVnew.vue +890 -890
  583. package/src/filiale/furuike/pc/Auxfunc.vue +109 -109
  584. package/src/filiale/furuike/pc/CallRcords.vue +109 -109
  585. package/src/filiale/furuike/pc/ChangemeterInfo.vue +87 -87
  586. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  587. package/src/filiale/furuike/pc/DeviceInfo.vue +82 -82
  588. package/src/filiale/furuike/pc/DisableInforMation.vue +82 -82
  589. package/src/filiale/furuike/pc/FailureEdit.vue +198 -198
  590. package/src/filiale/furuike/pc/HandplanInfo.vue +78 -78
  591. package/src/filiale/furuike/pc/InfoTable.vue +134 -134
  592. package/src/filiale/furuike/pc/InstructInfo.vue +86 -86
  593. package/src/filiale/furuike/pc/LineReport.vue +215 -215
  594. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWork.vue +400 -400
  595. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWorkOrderManage.vue +63 -63
  596. package/src/filiale/furuike/pc/MaterialWorkOrder/WorkOrderMaterial.vue +381 -381
  597. package/src/filiale/furuike/pc/MetereadInfo.vue +82 -82
  598. package/src/filiale/furuike/pc/MetterInfo.vue +92 -92
  599. package/src/filiale/furuike/pc/NewRepairPaper.vue +415 -415
  600. package/src/filiale/furuike/pc/ProblemList.vue +170 -170
  601. package/src/filiale/furuike/pc/QueryVisitHistory.vue +183 -183
  602. package/src/filiale/furuike/pc/RecordListLeft.vue +259 -259
  603. package/src/filiale/furuike/pc/ReminderOrder.vue +50 -50
  604. package/src/filiale/furuike/pc/RepairList.vue +102 -102
  605. package/src/filiale/furuike/pc/RepairsWork.vue +918 -918
  606. package/src/filiale/furuike/pc/SecuritycheckInfo.vue +128 -128
  607. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  608. package/src/filiale/furuike/pc/SellInfo.vue +158 -158
  609. package/src/filiale/furuike/pc/TableReport.vue +160 -160
  610. package/src/filiale/furuike/pc/TelFindUser.vue +229 -229
  611. package/src/filiale/furuike/pc/TelLossList.vue +145 -145
  612. package/src/filiale/furuike/pc/TelePhoneUpload.vue +279 -279
  613. package/src/filiale/furuike/pc/TextServer.vue +168 -168
  614. package/src/filiale/furuike/pc/VoiceServer.vue +216 -216
  615. package/src/filiale/furuike/pc/WorkCenter.vue +104 -104
  616. package/src/filiale/furuike/pc/WorkHistory.vue +576 -576
  617. package/src/filiale/furuike/pc/WorkListAllNew.vue +855 -855
  618. package/src/filiale/furuike/telephone.js +115 -115
  619. package/src/filiale/furuike/telephoneAndroid.js +23 -23
  620. package/src/filiale/gehua/pc/Console.vue +676 -676
  621. package/src/filiale/gehua/pc/TelAgentVoiceReport.vue +285 -285
  622. package/src/filiale/gehua/pc/TelFindUser.vue +214 -214
  623. package/src/filiale/gehua/telephone.js +16 -16
  624. package/src/filiale/gehua/telephoneAndroid.js +9 -9
  625. package/src/filiale/gongyi/android/RepairDetails.vue +542 -542
  626. package/src/filiale/gongyi/android/RepairFirstV.vue +537 -537
  627. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  628. package/src/filiale/gongyi/pc/WorkListAll.vue +632 -632
  629. package/src/filiale/gongyi/telephone.js +13 -13
  630. package/src/filiale/gongyi/telephoneAndroid.js +15 -15
  631. package/src/filiale/guangxi/android/FaultAll.vue +896 -896
  632. package/src/filiale/guangxi/telephoneAndroid.js +13 -13
  633. package/src/filiale/hanzhong/PagedList.js +248 -248
  634. package/src/filiale/hanzhong/android/Outlay.vue +265 -265
  635. package/src/filiale/hanzhong/android/RepairInfo.vue +167 -167
  636. package/src/filiale/hanzhong/hzSelectUtil.js +84 -84
  637. package/src/filiale/hanzhong/md5.js +266 -266
  638. package/src/filiale/hanzhong/pc/AnalysisMain.vue +477 -477
  639. package/src/filiale/hanzhong/pc/Console.vue +884 -884
  640. package/src/filiale/hanzhong/pc/DistributeWork.vue +420 -420
  641. package/src/filiale/hanzhong/pc/FailureEdit.vue +195 -195
  642. package/src/filiale/hanzhong/pc/RecordInfoRight.vue +84 -84
  643. package/src/filiale/hanzhong/pc/RecordList.vue +53 -53
  644. package/src/filiale/hanzhong/pc/RecordListLeft.vue +196 -196
  645. package/src/filiale/hanzhong/pc/Seekwork.vue +318 -318
  646. package/src/filiale/hanzhong/pc/StateStatistics.vue +292 -292
  647. package/src/filiale/hanzhong/pc/TelFindUser.vue +224 -224
  648. package/src/filiale/hanzhong/pc/TelLossList.vue +137 -137
  649. package/src/filiale/hanzhong/pc/TelephoneAnaly.vue +104 -104
  650. package/src/filiale/hanzhong/pc/TelephoneType.vue +269 -269
  651. package/src/filiale/hanzhong/pc/TextServer.vue +157 -157
  652. package/src/filiale/hanzhong/pc/VoiceServer.vue +208 -208
  653. package/src/filiale/hanzhong/pc/message/AllUser.vue +615 -615
  654. package/src/filiale/hanzhong/pc/message/AllUserNew.vue +638 -638
  655. package/src/filiale/hanzhong/pc/message/ArrearsList.vue +397 -397
  656. package/src/filiale/hanzhong/pc/message/MessageList.vue +635 -635
  657. package/src/filiale/hanzhong/pc/message/MessageManage.vue +136 -136
  658. package/src/filiale/hanzhong/pc/message/MessageManageList.vue +127 -127
  659. package/src/filiale/hanzhong/pc/message/MessageManageNew.vue +121 -121
  660. package/src/filiale/hanzhong/pc/message/TemplateMessage.vue +92 -92
  661. package/src/filiale/hanzhong/pc/message/UserDefinedMessage.vue +90 -90
  662. package/src/filiale/hanzhong/pc/message/UserDefinedMessageNew.vue +121 -121
  663. package/src/filiale/hanzhong/telephone.js +48 -48
  664. package/src/filiale/hanzhong/telephoneAndroid.js +15 -15
  665. package/src/filiale/kelai/android/AppTakePic.vue +143 -0
  666. package/src/filiale/kelai/android/Outlay.vue +274 -274
  667. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -0
  668. package/src/filiale/kelai/android/RepairFirstV.vue +552 -552
  669. package/src/filiale/kelai/android/RepairOrderV.vue +1446 -1446
  670. package/src/filiale/kelai/android/RepairTypeList.vue +170 -170
  671. package/src/filiale/kelai/android/RepairUserInfo.vue +537 -537
  672. package/src/filiale/kelai/pc/CallReport/CallReportMainPage-Kelai.vue +612 -612
  673. package/src/filiale/kelai/pc/CallReport/CumulativeCalls.vue +128 -128
  674. package/src/filiale/kelai/pc/CallReport/IncomingTimedata.vue +69 -69
  675. package/src/filiale/kelai/pc/CallReport/Incomingcallvolume.vue +82 -82
  676. package/src/filiale/kelai/pc/CallReport/SeatStatus.vue +60 -60
  677. package/src/filiale/kelai/pc/CallReport/Time.vue +107 -107
  678. package/src/filiale/kelai/pc/CallReport/WorkorderTypesum.vue +76 -76
  679. package/src/filiale/kelai/pc/CallReport/timeRunning.vue +66 -66
  680. package/src/filiale/kelai/pc/KeLaiMaintenanceReport.vue +297 -297
  681. package/src/filiale/kelai/pc/RecordListLeft.vue +188 -188
  682. package/src/filiale/kelai/pc/Seekwork.vue +308 -308
  683. package/src/filiale/kelai/pc/TelAgentVoiceReport.vue +276 -276
  684. package/src/filiale/kelai/pc/TelFindUser.vue +214 -214
  685. package/src/filiale/kelai/pc/TelLossList.vue +154 -154
  686. package/src/filiale/kelai/pc/TextServer.vue +157 -157
  687. package/src/filiale/kelai/pc/Trafficassess.vue +159 -159
  688. package/src/filiale/kelai/pc/VisitInfo.vue +268 -268
  689. package/src/filiale/kelai/pc/VoiceServer.vue +227 -227
  690. package/src/filiale/kelai/pc/WorkCenterList.vue +315 -298
  691. package/src/filiale/kelai/pc/WorkListAllNew.vue +717 -679
  692. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -0
  693. package/src/filiale/kelai/telephone.js +40 -39
  694. package/src/filiale/kelai/telephoneAndroid.js +19 -17
  695. package/src/filiale/liaoyuan/android/FaultAll.vue +737 -737
  696. package/src/filiale/liaoyuan/android/RepairDetails.vue +493 -493
  697. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  698. package/src/filiale/liaoyuan/telephoneAndroid.js +13 -13
  699. package/src/filiale/meihekou/android/Othercharge.vue +443 -443
  700. package/src/filiale/meihekou/android/createQRcode.vue +192 -192
  701. package/src/filiale/meihekou/android/onlineBuyGas.vue +793 -793
  702. package/src/filiale/meihekou/telephone.js +13 -13
  703. package/src/filiale/meihekou/telephoneAndroid.js +18 -18
  704. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +1032 -1032
  705. package/src/filiale/qianneng/android/Examine.vue +513 -513
  706. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  707. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  708. package/src/filiale/qianneng/android/PhoneStandWork.vue +412 -412
  709. package/src/filiale/qianneng/android/QueryTemporaryRepair.vue +243 -243
  710. package/src/filiale/qianneng/android/RepairDetails.vue +666 -666
  711. package/src/filiale/qianneng/android/RepairFirstV.vue +615 -615
  712. package/src/filiale/qianneng/android/RepairInfo.vue +147 -147
  713. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  714. package/src/filiale/qianneng/android/RepairUserInfo.vue +542 -542
  715. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -512
  716. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  717. package/src/filiale/qianneng/pc/ComplainWork.vue +324 -324
  718. package/src/filiale/qianneng/pc/DistributeWork.vue +182 -182
  719. package/src/filiale/qianneng/pc/FailureEdit.vue +161 -161
  720. package/src/filiale/qianneng/pc/Indoorinstallation.vue +832 -832
  721. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -250
  722. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -0
  723. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  724. package/src/filiale/qianneng/pc/Outdoorinstallation.vue +736 -736
  725. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -982
  726. package/src/filiale/qianneng/pc/Seekwork.vue +308 -308
  727. package/src/filiale/qianneng/pc/WorkHistory.vue +562 -562
  728. package/src/filiale/qianneng/pc/WorkListAllNew.vue +749 -701
  729. package/src/filiale/qianneng/pc/changetable.vue +273 -0
  730. package/src/filiale/qianneng/telephone.js +22 -20
  731. package/src/filiale/qianneng/telephoneAndroid.js +22 -22
  732. package/src/filiale/rizhao/android/FaultAll.vue +893 -893
  733. package/src/filiale/rizhao/android/Othercharge.vue +423 -423
  734. package/src/filiale/rizhao/android/RepairFirstV.vue +525 -525
  735. package/src/filiale/rizhao/android/RepairInfo.vue +172 -172
  736. package/src/filiale/rizhao/android/RepairOrderV.vue +1415 -1415
  737. package/src/filiale/rizhao/pc/AnalysisMain.vue +355 -355
  738. package/src/filiale/rizhao/pc/CallRecords.vue +89 -89
  739. package/src/filiale/rizhao/pc/ChangemeterInfo.vue +87 -87
  740. package/src/filiale/rizhao/pc/ComplainWork.vue +357 -357
  741. package/src/filiale/rizhao/pc/Console.vue +456 -456
  742. package/src/filiale/rizhao/pc/DispatchMan.vue +100 -100
  743. package/src/filiale/rizhao/pc/DispatchWork.vue +100 -100
  744. package/src/filiale/rizhao/pc/DistributeWork.vue +188 -188
  745. package/src/filiale/rizhao/pc/FailureEdit.vue +183 -183
  746. package/src/filiale/rizhao/pc/FailureEditFire.vue +169 -169
  747. package/src/filiale/rizhao/pc/FailureEditRepair.vue +174 -174
  748. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +890 -890
  749. package/src/filiale/rizhao/pc/NewRepairPaper.vue +377 -377
  750. package/src/filiale/rizhao/pc/RecordListLeft.vue +189 -189
  751. package/src/filiale/rizhao/pc/ReminderOrder.vue +51 -51
  752. package/src/filiale/rizhao/pc/RepairsWork.vue +936 -936
  753. package/src/filiale/rizhao/pc/Seekwork.vue +339 -339
  754. package/src/filiale/rizhao/pc/SiteSend.vue +258 -258
  755. package/src/filiale/rizhao/pc/StateStatistics.vue +292 -292
  756. package/src/filiale/rizhao/pc/TelFindUser.vue +243 -243
  757. package/src/filiale/rizhao/pc/TelMan.vue +133 -133
  758. package/src/filiale/rizhao/pc/TeleInfo.vue +142 -142
  759. package/src/filiale/rizhao/pc/TelephoneAnaly.vue +72 -72
  760. package/src/filiale/rizhao/pc/TelephoneType.vue +272 -272
  761. package/src/filiale/rizhao/pc/Traffic.vue +91 -91
  762. package/src/filiale/rizhao/pc/UserOperate.vue +49 -49
  763. package/src/filiale/rizhao/pc/VoiceServer.vue +219 -219
  764. package/src/filiale/rizhao/pc/WorkCenterList.vue +294 -294
  765. package/src/filiale/rizhao/pc/WorkHistory.vue +541 -541
  766. package/src/filiale/rizhao/pc/WorkList.vue +783 -783
  767. package/src/filiale/rizhao/pc/WorkListAllNew.vue +673 -668
  768. package/src/filiale/rizhao/pc/WxBaobiaoService.vue +134 -134
  769. package/src/filiale/rizhao/telephone.js +57 -57
  770. package/src/filiale/rizhao/telephoneAndroid.js +16 -16
  771. package/src/filiale/rongcheng/CliWorkListAll.vue +701 -666
  772. package/src/filiale/rongcheng/FaultAll.vue +713 -713
  773. package/src/filiale/rongcheng/RepairFirstV.vue +418 -418
  774. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -0
  775. package/src/filiale/rongcheng/RepairUserInfo.vue +539 -539
  776. package/src/filiale/rongcheng/ServiceDetails.vue +53 -53
  777. package/src/filiale/rongcheng/WorkListAll.vue +727 -727
  778. package/src/filiale/rongcheng/batchPrintSafeCheckOrder.vue +303 -303
  779. package/src/filiale/rongcheng/checkmsgZG.vue +243 -243
  780. package/src/filiale/rongcheng/onlineBuyGas.vue +799 -799
  781. package/src/filiale/rongcheng/onlineoperation.vue +383 -383
  782. package/src/filiale/rongcheng/onlinequeryuser.vue +460 -460
  783. package/src/filiale/rongcheng/telephone.js +19 -19
  784. package/src/filiale/rongcheng/telephoneAndroid.js +19 -17
  785. package/src/filiale/shanxian/android/RepairFirstV.vue +639 -635
  786. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -0
  787. package/src/filiale/shanxian/pc/WorkList.vue +823 -823
  788. package/src/filiale/shanxian/telephone.js +13 -12
  789. package/src/filiale/shanxian/telephoneAndroid.js +13 -13
  790. package/src/filiale/shaoguan/pc/WorkCenterList.vue +326 -326
  791. package/src/filiale/shaoguan/pc/WorkListAllNew.vue +683 -683
  792. package/src/filiale/shaoguan/telephone.js +14 -14
  793. package/src/filiale/shexian/android/AddMyTask.vue +354 -347
  794. package/src/filiale/shexian/android/CompletedRepair.vue +280 -0
  795. package/src/filiale/shexian/android/FaultAll.vue +847 -831
  796. package/src/filiale/shexian/android/Outlay.vue +266 -249
  797. package/src/filiale/shexian/android/RepairFirstV.vue +775 -761
  798. package/src/filiale/shexian/android/RepairInfo.vue +182 -181
  799. package/src/filiale/shexian/android/RepairOrderV.vue +732 -732
  800. package/src/filiale/shexian/pc/NewRepairPaper.vue +374 -374
  801. package/src/filiale/shexian/pc/TelByOrderMan.vue +109 -109
  802. package/src/filiale/shexian/pc/TelByOrderManCount.vue +124 -116
  803. package/src/filiale/shexian/pc/TelByRepairType.vue +111 -111
  804. package/src/filiale/shexian/pc/WorkList.vue +764 -740
  805. package/src/filiale/shexian/pc/WorkListAllNew.vue +718 -712
  806. package/src/filiale/shexian/telephone.js +18 -18
  807. package/src/filiale/shexian/telephoneAndroid.js +32 -29
  808. package/src/filiale/shimen/pc/ChangemeterInfo.vue +108 -108
  809. package/src/filiale/shimen/pc/ComplainWork.vue +297 -297
  810. package/src/filiale/shimen/pc/DistributeWork.vue +173 -173
  811. package/src/filiale/shimen/pc/InfoTable.vue +122 -122
  812. package/src/filiale/shimen/pc/RepairList.vue +109 -109
  813. package/src/filiale/shimen/pc/RepairsWork.vue +803 -803
  814. package/src/filiale/shimen/pc/Seekwork.vue +307 -307
  815. package/src/filiale/shimen/pc/SellInfo.vue +87 -87
  816. package/src/filiale/shimen/pc/WorkListAllNew.vue +680 -680
  817. package/src/filiale/shimen/telephone.js +23 -23
  818. package/src/filiale/tianke/android/FaultAll.vue +854 -854
  819. package/src/filiale/tianke/android/RepairFirstV.vue +614 -614
  820. package/src/filiale/tianke/android.js +12 -12
  821. package/src/filiale/tianke/pc/DistributeWork.vue +180 -180
  822. package/src/filiale/tianke/pc/IgnitionVentilationWork.vue +801 -801
  823. package/src/filiale/tianke/pc/NewRepairPaper.vue +370 -370
  824. package/src/filiale/tianke/pc/RepairsWork.vue +794 -794
  825. package/src/filiale/tianke/pc/WorkList.vue +769 -769
  826. package/src/filiale/tianke/telephone.js +17 -17
  827. package/src/filiale/tianke/telephoneAndroid.js +13 -13
  828. package/src/filiale/tongchuan/android/AndroidStopGasManager.vue +321 -321
  829. package/src/filiale/tongchuan/android/CompletedRepair.vue +211 -211
  830. package/src/filiale/tongchuan/android/PhoneStandWork.vue +409 -409
  831. package/src/filiale/tongchuan/android/PhoneUpUserinfo.vue +1005 -1005
  832. package/src/filiale/tongchuan/android/RepairFirstV.vue +646 -646
  833. package/src/filiale/tongchuan/android/RepairInfo.vue +172 -172
  834. package/src/filiale/tongchuan/android/RepairOrderV.vue +1446 -1446
  835. package/src/filiale/tongchuan/android/TicketDetails.vue +411 -408
  836. package/src/filiale/tongchuan/pc/AnalysisMain.vue +355 -355
  837. package/src/filiale/tongchuan/pc/CallRecords.vue +96 -96
  838. package/src/filiale/tongchuan/pc/CheckWork.vue +289 -289
  839. package/src/filiale/tongchuan/pc/ComplainWork.vue +324 -324
  840. package/src/filiale/tongchuan/pc/DepRepairManCount.vue +148 -148
  841. package/src/filiale/tongchuan/pc/DistributeWork.vue +179 -179
  842. package/src/filiale/tongchuan/pc/ExportExcel.vue +204 -204
  843. package/src/filiale/tongchuan/pc/HiddenSituationWeixiu.vue +115 -115
  844. package/src/filiale/tongchuan/pc/QueryVisitHistory.vue +236 -236
  845. package/src/filiale/tongchuan/pc/RecordListLeft.vue +216 -216
  846. package/src/filiale/tongchuan/pc/RepairList.vue +102 -102
  847. package/src/filiale/tongchuan/pc/RepairWorkReport.vue +133 -133
  848. package/src/filiale/tongchuan/pc/RepairsWork.vue +836 -836
  849. package/src/filiale/tongchuan/pc/SeatInfo.vue +325 -325
  850. package/src/filiale/tongchuan/pc/Seekwork.vue +307 -307
  851. package/src/filiale/tongchuan/pc/ServiceDetails.vue +112 -112
  852. package/src/filiale/tongchuan/pc/StateStatistics.vue +292 -292
  853. package/src/filiale/tongchuan/pc/TelFindUser.vue +278 -278
  854. package/src/filiale/tongchuan/pc/TelMan.vue +142 -142
  855. package/src/filiale/tongchuan/pc/TelephoneAnaly.vue +102 -102
  856. package/src/filiale/tongchuan/pc/TelephoneType.vue +272 -272
  857. package/src/filiale/tongchuan/pc/Traffic.vue +103 -103
  858. package/src/filiale/tongchuan/pc/UserWork.vue +805 -805
  859. package/src/filiale/tongchuan/pc/VisitInfo.vue +305 -305
  860. package/src/filiale/tongchuan/pc/VisitListWork.vue +251 -251
  861. package/src/filiale/tongchuan/pc/VoiceServer.vue +218 -218
  862. package/src/filiale/tongchuan/pc/WorkCenterList.vue +297 -297
  863. package/src/filiale/tongchuan/pc/WorkHistory.vue +521 -521
  864. package/src/filiale/tongchuan/pc/WorkList.vue +811 -811
  865. package/src/filiale/tongchuan/pc/WorkListAll.vue +731 -731
  866. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +294 -294
  867. package/src/filiale/tongchuan/pc/WorkorderCheckDistributePlan.vue +376 -376
  868. package/src/filiale/tongchuan/pc/visitPlanList.vue +342 -342
  869. package/src/filiale/tongchuan/pc/visitPlanManage.vue +599 -599
  870. package/src/filiale/tongchuan/pc/visitServiceList.vue +285 -285
  871. package/src/filiale/tongchuan/telephone.js +52 -52
  872. package/src/filiale/tongchuan/telephoneAndroid.js +22 -22
  873. package/src/filiale/v3new/android/FaultAll.vue +809 -809
  874. package/src/filiale/v3new/android/RepairFirstV.vue +633 -633
  875. package/src/filiale/v3new/pc/SiteBack.vue +83 -83
  876. package/src/filiale/v3new/pc/WorkCenter.vue +104 -104
  877. package/src/filiale/v3new/pc/WorkCenterList.vue +274 -274
  878. package/src/filiale/v3new/pc/WorkHistory.vue +537 -537
  879. package/src/filiale/v3new/pc/WorkList.vue +766 -766
  880. package/src/filiale/v3new/pc/WorkListNew.vue +706 -706
  881. package/src/filiale/v3new/pc/serviceDeleteOrder.vue +51 -51
  882. package/src/filiale/v3new/telephone.js +19 -19
  883. package/src/filiale/v3new/telephoneAndroid.js +15 -15
  884. package/src/filiale/weinanct/android/AppInstallationMaterial.vue +586 -586
  885. package/src/filiale/weinanct/android/FaultAll.vue +854 -854
  886. package/src/filiale/weinanct/android/RepairDetails.vue +508 -508
  887. package/src/filiale/weinanct/android/RepairFirstV.vue +635 -635
  888. package/src/filiale/weinanct/android/RepairOrderV.vue +1443 -1443
  889. package/src/filiale/weinanct/pc/TelFindUser.vue +213 -213
  890. package/src/filiale/weinanct/pc/VoiceServer.vue +208 -208
  891. package/src/filiale/weinanct/telephone.js +14 -14
  892. package/src/filiale/weinanct/telephoneAndroid.js +20 -20
  893. package/src/filiale/weinanct//350/257/264/346/230/216.txt +1 -1
  894. package/src/filiale/wenxi/android/RepairFirstV.vue +537 -537
  895. package/src/filiale/wenxi/android/RepairInfo.vue +254 -168
  896. package/src/filiale/wenxi/android/RepairOrderV.vue +1419 -1419
  897. package/src/filiale/wenxi/android/ZHihuanFirst.vue +502 -0
  898. package/src/filiale/wenxi/pc/DistributeWork.vue +163 -177
  899. package/src/filiale/wenxi/pc/FailureEdit.vue +206 -206
  900. package/src/filiale/wenxi/pc/GasWork.vue +753 -0
  901. package/src/filiale/wenxi/pc/RepairsWork.vue +774 -759
  902. package/src/filiale/wenxi/pc/TelFindUser.vue +306 -209
  903. package/src/filiale/wenxi/pc/VoiceServer.vue +214 -214
  904. package/src/filiale/wenxi/pc/WorkListAll.vue +650 -647
  905. package/src/filiale/wenxi/telephone.js +16 -18
  906. package/src/filiale/wenxi/telephoneAndroid.js +17 -16
  907. package/src/filiale/wuan/Util.js +461 -461
  908. package/src/filiale/wuan/android/AddMyTask.vue +227 -227
  909. package/src/filiale/wuan/android/RepairInfo.vue +136 -136
  910. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  911. package/src/filiale/wuan/android/RepairUserInfo.vue +581 -581
  912. package/src/filiale/wuan/pc/BatchList.vue +329 -329
  913. package/src/filiale/wuan/pc/BatchListSanhu.vue +329 -329
  914. package/src/filiale/wuan/pc/BatchOrdersSanhu.vue +115 -115
  915. package/src/filiale/wuan/pc/CheckWork.vue +263 -263
  916. package/src/filiale/wuan/pc/DistributeWork.vue +136 -136
  917. package/src/filiale/wuan/pc/FailureEdit.vue +174 -174
  918. package/src/filiale/wuan/pc/GasWorkSanhu.vue +817 -817
  919. package/src/filiale/wuan/pc/RepairsWork.vue +848 -848
  920. package/src/filiale/wuan/pc/Seekwork.vue +311 -311
  921. package/src/filiale/wuan/pc/TelFindUser.vue +229 -229
  922. package/src/filiale/wuan/pc/WorkListAll.vue +642 -642
  923. package/src/filiale/wuan/telephone.js +23 -23
  924. package/src/filiale/wuan/telephoneAndroid.js +17 -17
  925. package/src/filiale/wuhai/pc/CallRcords.vue +109 -109
  926. package/src/filiale/wuhai/pc/ComplainWork.vue +324 -324
  927. package/src/filiale/wuhai/pc/Console.vue +432 -432
  928. package/src/filiale/wuhai/pc/DistributeWork.vue +173 -173
  929. package/src/filiale/wuhai/pc/FailureEdit.vue +190 -190
  930. package/src/filiale/wuhai/pc/InfoTable.vue +135 -135
  931. package/src/filiale/wuhai/pc/NewRepairPaper.vue +380 -380
  932. package/src/filiale/wuhai/pc/RecordListLeft.vue +202 -202
  933. package/src/filiale/wuhai/pc/RepairsWork.vue +811 -811
  934. package/src/filiale/wuhai/pc/SecuritycheckInfo.vue +92 -92
  935. package/src/filiale/wuhai/pc/Seekwork.vue +361 -361
  936. package/src/filiale/wuhai/pc/ServiceRcords.vue +146 -146
  937. package/src/filiale/wuhai/pc/TelFindUser.vue +256 -256
  938. package/src/filiale/wuhai/pc/VoiceServer.vue +211 -211
  939. package/src/filiale/wuhai/pc/WorkCenter.vue +104 -104
  940. package/src/filiale/wuhai/pc/WorkCenterList.vue +337 -337
  941. package/src/filiale/wuhai/pc/WorkListAllNew.vue +715 -715
  942. package/src/filiale/wuhai/pc/serviceDeleteOrder.vue +54 -54
  943. package/src/filiale/wuhai/telephone.js +35 -35
  944. package/src/filiale/xinkang/android/FaultAll.vue +840 -840
  945. package/src/filiale/xinkang/android/RepairFirstV.vue +484 -484
  946. package/src/filiale/xinkang/telephoneAndroid.js +14 -14
  947. package/src/filiale/yuansheng/android/RepairFirstV.vue +636 -636
  948. package/src/filiale/yuansheng/android/RepairInfo.vue +166 -166
  949. package/src/filiale/yuansheng/pc/DistributeWork.vue +177 -177
  950. package/src/filiale/yuansheng/pc/FailureEdit.vue +188 -188
  951. package/src/filiale/yuansheng/pc/HandplanInfo.vue +78 -78
  952. package/src/filiale/yuansheng/pc/MetereadInfo.vue +83 -83
  953. package/src/filiale/yuansheng/pc/ReservationWork.vue +156 -156
  954. package/src/filiale/yuansheng/pc/TelFindUser.vue +237 -237
  955. package/src/filiale/yuansheng/pc/VoiceServer.vue +208 -208
  956. package/src/filiale/yuansheng/telephone.js +20 -20
  957. package/src/filiale/yuansheng/telephoneAndroid.js +16 -16
  958. package/src/filiale/yuncheng/pc/TelFindUser.vue +302 -0
  959. package/src/filiale/yuncheng/telephone.js +12 -0
  960. package/src/filiale/zhongsheng/android/FailureShow.vue +61 -61
  961. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -0
  962. package/src/filiale/zhongsheng/android/RepairFirstV.vue +464 -464
  963. package/src/filiale/zhongsheng/android/RepairInfo.vue +133 -133
  964. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  965. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +559 -532
  966. package/src/filiale/zhongsheng/pc/ComplainWork.vue +299 -299
  967. package/src/filiale/zhongsheng/pc/Console.vue +432 -432
  968. package/src/filiale/zhongsheng/pc/DistributeWork.vue +173 -173
  969. package/src/filiale/zhongsheng/pc/IgnitionVentilationWork.vue +836 -836
  970. package/src/filiale/zhongsheng/pc/InfoTable.vue +124 -124
  971. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  972. package/src/filiale/zhongsheng/pc/Seekwork.vue +283 -283
  973. package/src/filiale/zhongsheng/pc/TelFindUser.vue +216 -216
  974. package/src/filiale/zhongsheng/pc/WorkList.vue +805 -805
  975. package/src/filiale/zhongsheng/pc/WorkListAll.vue +628 -628
  976. package/src/filiale/zhongsheng/telephone.js +23 -23
  977. package/src/filiale/zhongsheng/telephoneAndroid.js +19 -18
  978. package/src/filiale/zhongyi/android/FaultAll.vue +854 -854
  979. package/src/filiale/zhongyi/android/RepairFirstV.vue +614 -614
  980. package/src/filiale/zhongyi/android.js +12 -12
  981. package/src/filiale/zhongyi/pc/DistributeWork.vue +180 -180
  982. package/src/filiale/zhongyi/pc/IgnitionVentilationWork.vue +801 -801
  983. package/src/filiale/zhongyi/pc/NewRepairPaper.vue +370 -370
  984. package/src/filiale/zhongyi/pc/RepairsWork.vue +794 -794
  985. package/src/filiale/zhongyi/pc/WorkList.vue +769 -769
  986. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +672 -672
  987. package/src/filiale/zhongyi/telephone.js +18 -18
  988. package/src/filiale/zhongyi/telephoneAndroid.js +13 -13
  989. package/src/filiale/zhoukou/android/ChargeBill.vue +201 -201
  990. package/src/filiale/zhoukou/android/FaultAll.vue +779 -779
  991. package/src/filiale/zhoukou/android/Othercharge.vue +591 -591
  992. package/src/filiale/zhoukou/android/OtherchargeZhoukou.vue +574 -574
  993. package/src/filiale/zhoukou/android/Outlay.vue +236 -236
  994. package/src/filiale/zhoukou/android/RepairDetails.vue +544 -544
  995. package/src/filiale/zhoukou/android/RepairFirstV.vue +542 -542
  996. package/src/filiale/zhoukou/android/RepairInfo.vue +136 -136
  997. package/src/filiale/zhoukou/android/RepairOrderV.vue +1383 -1383
  998. package/src/filiale/zhoukou/android/RepairUserInfo.vue +532 -532
  999. package/src/filiale/zhoukou/android/ZkBill.vue +191 -191
  1000. package/src/filiale/zhoukou/android/createQRcode.vue +256 -256
  1001. package/src/filiale/zhoukou/android/onlineBuyGas.vue +804 -804
  1002. package/src/filiale/zhoukou/android/onlineoperation.vue +416 -416
  1003. package/src/filiale/zhoukou/android/onlinequeryuser.vue +468 -468
  1004. package/src/filiale/zhoukou/pc/ExportExcel.vue +204 -204
  1005. package/src/filiale/zhoukou/pc/NewRepairPaper.vue +366 -366
  1006. package/src/filiale/zhoukou/pc/SiteSend.vue +265 -265
  1007. package/src/filiale/zhoukou/pc/WorkHistory.vue +514 -514
  1008. package/src/filiale/zhoukou/pc/WorkList.vue +653 -653
  1009. package/src/filiale/zhoukou/pc/WorkListAllNew.vue +675 -675
  1010. package/src/filiale/zhoukou/telephone.js +18 -18
  1011. package/src/filiale/zhoukou/telephoneAndroid.js +33 -33
  1012. package/src/index.js +15 -15
  1013. package/src/main.js +22 -22
  1014. package/src/plugins/DataSql.js +569 -569
  1015. package/src/plugins/EmojiData.js +514 -514
  1016. package/src/plugins/EncryptUtil.js +53 -53
  1017. package/src/plugins/HttpLoad.js +93 -93
  1018. package/src/plugins/LoadData.js +40 -40
  1019. package/src/plugins/LoadParams.js +54 -54
  1020. package/src/plugins/LocalPagedList.js +107 -107
  1021. package/src/plugins/ObjTree.js +532 -532
  1022. package/src/plugins/TelGetSaleParams.js +63 -63
  1023. package/src/qrcode.js +618 -618
  1024. package/src/qrcode.min.js +1 -1
  1025. package/src/stores/exportConfig.js +10 -10
  1026. package/src/stores/wxconfig.js +10 -10
  1027. package/src/telephone-android.js +367 -367
  1028. package/src/telephone-shaoguan.js +256 -256
  1029. package/src/telephone-tongcheng.js +254 -254
  1030. package/src/telephone.js +746 -733
  1031. package/src/telephoneanaly.less +704 -704
  1032. package/src/utils/LdapHelper.js +99 -99
  1033. package/src/weinan-android.js +350 -350
  1034. package/src/weinan.js +537 -531
  1035. package/static/fonts/font.css +6 -6
  1036. package/static/js/adapter.min.js +2049 -2049
  1037. package/static/js/bootstrap.min.js +7 -7
  1038. package/static/js/ctilink.js +1303 -1303
  1039. package/static/js/ctimsg.js +655 -655
  1040. package/static/js/janus.js +4034 -4034
  1041. package/static/js/jquery-2.1.1.min.js +5 -5
  1042. package/yarn-error.log +7872 -7872
  1043. package//345/221/274/345/217/253/345/267/245/345/215/225/351/205/215/347/275/256/350/257/264/346/230/216.md +6 -6
@@ -1,2377 +1,2377 @@
1
- /*!
2
- * Bootstrap v3.3.7 (http://getbootstrap.com)
3
- * Copyright 2011-2016 Twitter, Inc.
4
- * Licensed under the MIT license
5
- */
6
-
7
- if (typeof jQuery === 'undefined') {
8
- throw new Error('Bootstrap\'s JavaScript requires jQuery')
9
- }
10
-
11
- +function ($) {
12
- 'use strict';
13
- var version = $.fn.jquery.split(' ')[0].split('.')
14
- if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
15
- throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
16
- }
17
- }(jQuery);
18
-
19
- /* ========================================================================
20
- * Bootstrap: transition.js v3.3.7
21
- * http://getbootstrap.com/javascript/#transitions
22
- * ========================================================================
23
- * Copyright 2011-2016 Twitter, Inc.
24
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25
- * ======================================================================== */
26
-
27
-
28
- +function ($) {
29
- 'use strict';
30
-
31
- // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
32
- // ============================================================
33
-
34
- function transitionEnd() {
35
- var el = document.createElement('bootstrap')
36
-
37
- var transEndEventNames = {
38
- WebkitTransition : 'webkitTransitionEnd',
39
- MozTransition : 'transitionend',
40
- OTransition : 'oTransitionEnd otransitionend',
41
- transition : 'transitionend'
42
- }
43
-
44
- for (var name in transEndEventNames) {
45
- if (el.style[name] !== undefined) {
46
- return { end: transEndEventNames[name] }
47
- }
48
- }
49
-
50
- return false // explicit for ie8 ( ._.)
51
- }
52
-
53
- // http://blog.alexmaccaw.com/css-transitions
54
- $.fn.emulateTransitionEnd = function (duration) {
55
- var called = false
56
- var $el = this
57
- $(this).one('bsTransitionEnd', function () { called = true })
58
- var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
59
- setTimeout(callback, duration)
60
- return this
61
- }
62
-
63
- $(function () {
64
- $.support.transition = transitionEnd()
65
-
66
- if (!$.support.transition) return
67
-
68
- $.event.special.bsTransitionEnd = {
69
- bindType: $.support.transition.end,
70
- delegateType: $.support.transition.end,
71
- handle: function (e) {
72
- if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
73
- }
74
- }
75
- })
76
-
77
- }(jQuery);
78
-
79
- /* ========================================================================
80
- * Bootstrap: alert.js v3.3.7
81
- * http://getbootstrap.com/javascript/#alerts
82
- * ========================================================================
83
- * Copyright 2011-2016 Twitter, Inc.
84
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
85
- * ======================================================================== */
86
-
87
-
88
- +function ($) {
89
- 'use strict';
90
-
91
- // ALERT CLASS DEFINITION
92
- // ======================
93
-
94
- var dismiss = '[data-dismiss="alert"]'
95
- var Alert = function (el) {
96
- $(el).on('click', dismiss, this.close)
97
- }
98
-
99
- Alert.VERSION = '3.3.7'
100
-
101
- Alert.TRANSITION_DURATION = 150
102
-
103
- Alert.prototype.close = function (e) {
104
- var $this = $(this)
105
- var selector = $this.attr('data-target')
106
-
107
- if (!selector) {
108
- selector = $this.attr('href')
109
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
110
- }
111
-
112
- var $parent = $(selector === '#' ? [] : selector)
113
-
114
- if (e) e.preventDefault()
115
-
116
- if (!$parent.length) {
117
- $parent = $this.closest('.alert')
118
- }
119
-
120
- $parent.trigger(e = $.Event('close.bs.alert'))
121
-
122
- if (e.isDefaultPrevented()) return
123
-
124
- $parent.removeClass('in')
125
-
126
- function removeElement() {
127
- // detach from parent, fire event then clean up data
128
- $parent.detach().trigger('closed.bs.alert').remove()
129
- }
130
-
131
- $.support.transition && $parent.hasClass('fade') ?
132
- $parent
133
- .one('bsTransitionEnd', removeElement)
134
- .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
135
- removeElement()
136
- }
137
-
138
-
139
- // ALERT PLUGIN DEFINITION
140
- // =======================
141
-
142
- function Plugin(option) {
143
- return this.each(function () {
144
- var $this = $(this)
145
- var data = $this.data('bs.alert')
146
-
147
- if (!data) $this.data('bs.alert', (data = new Alert(this)))
148
- if (typeof option == 'string') data[option].call($this)
149
- })
150
- }
151
-
152
- var old = $.fn.alert
153
-
154
- $.fn.alert = Plugin
155
- $.fn.alert.Constructor = Alert
156
-
157
-
158
- // ALERT NO CONFLICT
159
- // =================
160
-
161
- $.fn.alert.noConflict = function () {
162
- $.fn.alert = old
163
- return this
164
- }
165
-
166
-
167
- // ALERT DATA-API
168
- // ==============
169
-
170
- $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
171
-
172
- }(jQuery);
173
-
174
- /* ========================================================================
175
- * Bootstrap: button.js v3.3.7
176
- * http://getbootstrap.com/javascript/#buttons
177
- * ========================================================================
178
- * Copyright 2011-2016 Twitter, Inc.
179
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
180
- * ======================================================================== */
181
-
182
-
183
- +function ($) {
184
- 'use strict';
185
-
186
- // BUTTON PUBLIC CLASS DEFINITION
187
- // ==============================
188
-
189
- var Button = function (element, options) {
190
- this.$element = $(element)
191
- this.options = $.extend({}, Button.DEFAULTS, options)
192
- this.isLoading = false
193
- }
194
-
195
- Button.VERSION = '3.3.7'
196
-
197
- Button.DEFAULTS = {
198
- loadingText: 'loading...'
199
- }
200
-
201
- Button.prototype.setState = function (state) {
202
- var d = 'disabled'
203
- var $el = this.$element
204
- var val = $el.is('input') ? 'val' : 'html'
205
- var data = $el.data()
206
-
207
- state += 'Text'
208
-
209
- if (data.resetText == null) $el.data('resetText', $el[val]())
210
-
211
- // push to event loop to allow forms to submit
212
- setTimeout($.proxy(function () {
213
- $el[val](data[state] == null ? this.options[state] : data[state])
214
-
215
- if (state == 'loadingText') {
216
- this.isLoading = true
217
- $el.addClass(d).attr(d, d).prop(d, true)
218
- } else if (this.isLoading) {
219
- this.isLoading = false
220
- $el.removeClass(d).removeAttr(d).prop(d, false)
221
- }
222
- }, this), 0)
223
- }
224
-
225
- Button.prototype.toggle = function () {
226
- var changed = true
227
- var $parent = this.$element.closest('[data-toggle="buttons"]')
228
-
229
- if ($parent.length) {
230
- var $input = this.$element.find('input')
231
- if ($input.prop('type') == 'radio') {
232
- if ($input.prop('checked')) changed = false
233
- $parent.find('.active').removeClass('active')
234
- this.$element.addClass('active')
235
- } else if ($input.prop('type') == 'checkbox') {
236
- if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
237
- this.$element.toggleClass('active')
238
- }
239
- $input.prop('checked', this.$element.hasClass('active'))
240
- if (changed) $input.trigger('change')
241
- } else {
242
- this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
243
- this.$element.toggleClass('active')
244
- }
245
- }
246
-
247
-
248
- // BUTTON PLUGIN DEFINITION
249
- // ========================
250
-
251
- function Plugin(option) {
252
- return this.each(function () {
253
- var $this = $(this)
254
- var data = $this.data('bs.button')
255
- var options = typeof option == 'object' && option
256
-
257
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
258
-
259
- if (option == 'toggle') data.toggle()
260
- else if (option) data.setState(option)
261
- })
262
- }
263
-
264
- var old = $.fn.button
265
-
266
- $.fn.button = Plugin
267
- $.fn.button.Constructor = Button
268
-
269
-
270
- // BUTTON NO CONFLICT
271
- // ==================
272
-
273
- $.fn.button.noConflict = function () {
274
- $.fn.button = old
275
- return this
276
- }
277
-
278
-
279
- // BUTTON DATA-API
280
- // ===============
281
-
282
- $(document)
283
- .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
284
- var $btn = $(e.target).closest('.btn')
285
- Plugin.call($btn, 'toggle')
286
- if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
287
- // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
288
- e.preventDefault()
289
- // The target component still receive the focus
290
- if ($btn.is('input,button')) $btn.trigger('focus')
291
- else $btn.find('input:visible,button:visible').first().trigger('focus')
292
- }
293
- })
294
- .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
295
- $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
296
- })
297
-
298
- }(jQuery);
299
-
300
- /* ========================================================================
301
- * Bootstrap: carousel.js v3.3.7
302
- * http://getbootstrap.com/javascript/#carousel
303
- * ========================================================================
304
- * Copyright 2011-2016 Twitter, Inc.
305
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
306
- * ======================================================================== */
307
-
308
-
309
- +function ($) {
310
- 'use strict';
311
-
312
- // CAROUSEL CLASS DEFINITION
313
- // =========================
314
-
315
- var Carousel = function (element, options) {
316
- this.$element = $(element)
317
- this.$indicators = this.$element.find('.carousel-indicators')
318
- this.options = options
319
- this.paused = null
320
- this.sliding = null
321
- this.interval = null
322
- this.$active = null
323
- this.$items = null
324
-
325
- this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
326
-
327
- this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
328
- .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
329
- .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
330
- }
331
-
332
- Carousel.VERSION = '3.3.7'
333
-
334
- Carousel.TRANSITION_DURATION = 600
335
-
336
- Carousel.DEFAULTS = {
337
- interval: 5000,
338
- pause: 'hover',
339
- wrap: true,
340
- keyboard: true
341
- }
342
-
343
- Carousel.prototype.keydown = function (e) {
344
- if (/input|textarea/i.test(e.target.tagName)) return
345
- switch (e.which) {
346
- case 37: this.prev(); break
347
- case 39: this.next(); break
348
- default: return
349
- }
350
-
351
- e.preventDefault()
352
- }
353
-
354
- Carousel.prototype.cycle = function (e) {
355
- e || (this.paused = false)
356
-
357
- this.interval && clearInterval(this.interval)
358
-
359
- this.options.interval
360
- && !this.paused
361
- && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
362
-
363
- return this
364
- }
365
-
366
- Carousel.prototype.getItemIndex = function (item) {
367
- this.$items = item.parent().children('.item')
368
- return this.$items.index(item || this.$active)
369
- }
370
-
371
- Carousel.prototype.getItemForDirection = function (direction, active) {
372
- var activeIndex = this.getItemIndex(active)
373
- var willWrap = (direction == 'prev' && activeIndex === 0)
374
- || (direction == 'next' && activeIndex == (this.$items.length - 1))
375
- if (willWrap && !this.options.wrap) return active
376
- var delta = direction == 'prev' ? -1 : 1
377
- var itemIndex = (activeIndex + delta) % this.$items.length
378
- return this.$items.eq(itemIndex)
379
- }
380
-
381
- Carousel.prototype.to = function (pos) {
382
- var that = this
383
- var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
384
-
385
- if (pos > (this.$items.length - 1) || pos < 0) return
386
-
387
- if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
388
- if (activeIndex == pos) return this.pause().cycle()
389
-
390
- return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
391
- }
392
-
393
- Carousel.prototype.pause = function (e) {
394
- e || (this.paused = true)
395
-
396
- if (this.$element.find('.next, .prev').length && $.support.transition) {
397
- this.$element.trigger($.support.transition.end)
398
- this.cycle(true)
399
- }
400
-
401
- this.interval = clearInterval(this.interval)
402
-
403
- return this
404
- }
405
-
406
- Carousel.prototype.next = function () {
407
- if (this.sliding) return
408
- return this.slide('next')
409
- }
410
-
411
- Carousel.prototype.prev = function () {
412
- if (this.sliding) return
413
- return this.slide('prev')
414
- }
415
-
416
- Carousel.prototype.slide = function (type, next) {
417
- var $active = this.$element.find('.item.active')
418
- var $next = next || this.getItemForDirection(type, $active)
419
- var isCycling = this.interval
420
- var direction = type == 'next' ? 'left' : 'right'
421
- var that = this
422
-
423
- if ($next.hasClass('active')) return (this.sliding = false)
424
-
425
- var relatedTarget = $next[0]
426
- var slideEvent = $.Event('slide.bs.carousel', {
427
- relatedTarget: relatedTarget,
428
- direction: direction
429
- })
430
- this.$element.trigger(slideEvent)
431
- if (slideEvent.isDefaultPrevented()) return
432
-
433
- this.sliding = true
434
-
435
- isCycling && this.pause()
436
-
437
- if (this.$indicators.length) {
438
- this.$indicators.find('.active').removeClass('active')
439
- var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
440
- $nextIndicator && $nextIndicator.addClass('active')
441
- }
442
-
443
- var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
444
- if ($.support.transition && this.$element.hasClass('slide')) {
445
- $next.addClass(type)
446
- $next[0].offsetWidth // force reflow
447
- $active.addClass(direction)
448
- $next.addClass(direction)
449
- $active
450
- .one('bsTransitionEnd', function () {
451
- $next.removeClass([type, direction].join(' ')).addClass('active')
452
- $active.removeClass(['active', direction].join(' '))
453
- that.sliding = false
454
- setTimeout(function () {
455
- that.$element.trigger(slidEvent)
456
- }, 0)
457
- })
458
- .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
459
- } else {
460
- $active.removeClass('active')
461
- $next.addClass('active')
462
- this.sliding = false
463
- this.$element.trigger(slidEvent)
464
- }
465
-
466
- isCycling && this.cycle()
467
-
468
- return this
469
- }
470
-
471
-
472
- // CAROUSEL PLUGIN DEFINITION
473
- // ==========================
474
-
475
- function Plugin(option) {
476
- return this.each(function () {
477
- var $this = $(this)
478
- var data = $this.data('bs.carousel')
479
- var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
480
- var action = typeof option == 'string' ? option : options.slide
481
-
482
- if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
483
- if (typeof option == 'number') data.to(option)
484
- else if (action) data[action]()
485
- else if (options.interval) data.pause().cycle()
486
- })
487
- }
488
-
489
- var old = $.fn.carousel
490
-
491
- $.fn.carousel = Plugin
492
- $.fn.carousel.Constructor = Carousel
493
-
494
-
495
- // CAROUSEL NO CONFLICT
496
- // ====================
497
-
498
- $.fn.carousel.noConflict = function () {
499
- $.fn.carousel = old
500
- return this
501
- }
502
-
503
-
504
- // CAROUSEL DATA-API
505
- // =================
506
-
507
- var clickHandler = function (e) {
508
- var href
509
- var $this = $(this)
510
- var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
511
- if (!$target.hasClass('carousel')) return
512
- var options = $.extend({}, $target.data(), $this.data())
513
- var slideIndex = $this.attr('data-slide-to')
514
- if (slideIndex) options.interval = false
515
-
516
- Plugin.call($target, options)
517
-
518
- if (slideIndex) {
519
- $target.data('bs.carousel').to(slideIndex)
520
- }
521
-
522
- e.preventDefault()
523
- }
524
-
525
- $(document)
526
- .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
527
- .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
528
-
529
- $(window).on('load', function () {
530
- $('[data-ride="carousel"]').each(function () {
531
- var $carousel = $(this)
532
- Plugin.call($carousel, $carousel.data())
533
- })
534
- })
535
-
536
- }(jQuery);
537
-
538
- /* ========================================================================
539
- * Bootstrap: collapse.js v3.3.7
540
- * http://getbootstrap.com/javascript/#collapse
541
- * ========================================================================
542
- * Copyright 2011-2016 Twitter, Inc.
543
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
544
- * ======================================================================== */
545
-
546
- /* jshint latedef: false */
547
-
548
- +function ($) {
549
- 'use strict';
550
-
551
- // COLLAPSE PUBLIC CLASS DEFINITION
552
- // ================================
553
-
554
- var Collapse = function (element, options) {
555
- this.$element = $(element)
556
- this.options = $.extend({}, Collapse.DEFAULTS, options)
557
- this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
558
- '[data-toggle="collapse"][data-target="#' + element.id + '"]')
559
- this.transitioning = null
560
-
561
- if (this.options.parent) {
562
- this.$parent = this.getParent()
563
- } else {
564
- this.addAriaAndCollapsedClass(this.$element, this.$trigger)
565
- }
566
-
567
- if (this.options.toggle) this.toggle()
568
- }
569
-
570
- Collapse.VERSION = '3.3.7'
571
-
572
- Collapse.TRANSITION_DURATION = 350
573
-
574
- Collapse.DEFAULTS = {
575
- toggle: true
576
- }
577
-
578
- Collapse.prototype.dimension = function () {
579
- var hasWidth = this.$element.hasClass('width')
580
- return hasWidth ? 'width' : 'height'
581
- }
582
-
583
- Collapse.prototype.show = function () {
584
- if (this.transitioning || this.$element.hasClass('in')) return
585
-
586
- var activesData
587
- var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
588
-
589
- if (actives && actives.length) {
590
- activesData = actives.data('bs.collapse')
591
- if (activesData && activesData.transitioning) return
592
- }
593
-
594
- var startEvent = $.Event('show.bs.collapse')
595
- this.$element.trigger(startEvent)
596
- if (startEvent.isDefaultPrevented()) return
597
-
598
- if (actives && actives.length) {
599
- Plugin.call(actives, 'hide')
600
- activesData || actives.data('bs.collapse', null)
601
- }
602
-
603
- var dimension = this.dimension()
604
-
605
- this.$element
606
- .removeClass('collapse')
607
- .addClass('collapsing')[dimension](0)
608
- .attr('aria-expanded', true)
609
-
610
- this.$trigger
611
- .removeClass('collapsed')
612
- .attr('aria-expanded', true)
613
-
614
- this.transitioning = 1
615
-
616
- var complete = function () {
617
- this.$element
618
- .removeClass('collapsing')
619
- .addClass('collapse in')[dimension]('')
620
- this.transitioning = 0
621
- this.$element
622
- .trigger('shown.bs.collapse')
623
- }
624
-
625
- if (!$.support.transition) return complete.call(this)
626
-
627
- var scrollSize = $.camelCase(['scroll', dimension].join('-'))
628
-
629
- this.$element
630
- .one('bsTransitionEnd', $.proxy(complete, this))
631
- .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
632
- }
633
-
634
- Collapse.prototype.hide = function () {
635
- if (this.transitioning || !this.$element.hasClass('in')) return
636
-
637
- var startEvent = $.Event('hide.bs.collapse')
638
- this.$element.trigger(startEvent)
639
- if (startEvent.isDefaultPrevented()) return
640
-
641
- var dimension = this.dimension()
642
-
643
- this.$element[dimension](this.$element[dimension]())[0].offsetHeight
644
-
645
- this.$element
646
- .addClass('collapsing')
647
- .removeClass('collapse in')
648
- .attr('aria-expanded', false)
649
-
650
- this.$trigger
651
- .addClass('collapsed')
652
- .attr('aria-expanded', false)
653
-
654
- this.transitioning = 1
655
-
656
- var complete = function () {
657
- this.transitioning = 0
658
- this.$element
659
- .removeClass('collapsing')
660
- .addClass('collapse')
661
- .trigger('hidden.bs.collapse')
662
- }
663
-
664
- if (!$.support.transition) return complete.call(this)
665
-
666
- this.$element
667
- [dimension](0)
668
- .one('bsTransitionEnd', $.proxy(complete, this))
669
- .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
670
- }
671
-
672
- Collapse.prototype.toggle = function () {
673
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
674
- }
675
-
676
- Collapse.prototype.getParent = function () {
677
- return $(this.options.parent)
678
- .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
679
- .each($.proxy(function (i, element) {
680
- var $element = $(element)
681
- this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
682
- }, this))
683
- .end()
684
- }
685
-
686
- Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
687
- var isOpen = $element.hasClass('in')
688
-
689
- $element.attr('aria-expanded', isOpen)
690
- $trigger
691
- .toggleClass('collapsed', !isOpen)
692
- .attr('aria-expanded', isOpen)
693
- }
694
-
695
- function getTargetFromTrigger($trigger) {
696
- var href
697
- var target = $trigger.attr('data-target')
698
- || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
699
-
700
- return $(target)
701
- }
702
-
703
-
704
- // COLLAPSE PLUGIN DEFINITION
705
- // ==========================
706
-
707
- function Plugin(option) {
708
- return this.each(function () {
709
- var $this = $(this)
710
- var data = $this.data('bs.collapse')
711
- var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
712
-
713
- if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
714
- if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
715
- if (typeof option == 'string') data[option]()
716
- })
717
- }
718
-
719
- var old = $.fn.collapse
720
-
721
- $.fn.collapse = Plugin
722
- $.fn.collapse.Constructor = Collapse
723
-
724
-
725
- // COLLAPSE NO CONFLICT
726
- // ====================
727
-
728
- $.fn.collapse.noConflict = function () {
729
- $.fn.collapse = old
730
- return this
731
- }
732
-
733
-
734
- // COLLAPSE DATA-API
735
- // =================
736
-
737
- $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
738
- var $this = $(this)
739
-
740
- if (!$this.attr('data-target')) e.preventDefault()
741
-
742
- var $target = getTargetFromTrigger($this)
743
- var data = $target.data('bs.collapse')
744
- var option = data ? 'toggle' : $this.data()
745
-
746
- Plugin.call($target, option)
747
- })
748
-
749
- }(jQuery);
750
-
751
- /* ========================================================================
752
- * Bootstrap: dropdown.js v3.3.7
753
- * http://getbootstrap.com/javascript/#dropdowns
754
- * ========================================================================
755
- * Copyright 2011-2016 Twitter, Inc.
756
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
757
- * ======================================================================== */
758
-
759
-
760
- +function ($) {
761
- 'use strict';
762
-
763
- // DROPDOWN CLASS DEFINITION
764
- // =========================
765
-
766
- var backdrop = '.dropdown-backdrop'
767
- var toggle = '[data-toggle="dropdown"]'
768
- var Dropdown = function (element) {
769
- $(element).on('click.bs.dropdown', this.toggle)
770
- }
771
-
772
- Dropdown.VERSION = '3.3.7'
773
-
774
- function getParent($this) {
775
- var selector = $this.attr('data-target')
776
-
777
- if (!selector) {
778
- selector = $this.attr('href')
779
- selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
780
- }
781
-
782
- var $parent = selector && $(selector)
783
-
784
- return $parent && $parent.length ? $parent : $this.parent()
785
- }
786
-
787
- function clearMenus(e) {
788
- if (e && e.which === 3) return
789
- $(backdrop).remove()
790
- $(toggle).each(function () {
791
- var $this = $(this)
792
- var $parent = getParent($this)
793
- var relatedTarget = { relatedTarget: this }
794
-
795
- if (!$parent.hasClass('open')) return
796
-
797
- if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
798
-
799
- $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
800
-
801
- if (e.isDefaultPrevented()) return
802
-
803
- $this.attr('aria-expanded', 'false')
804
- $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
805
- })
806
- }
807
-
808
- Dropdown.prototype.toggle = function (e) {
809
- var $this = $(this)
810
-
811
- if ($this.is('.disabled, :disabled')) return
812
-
813
- var $parent = getParent($this)
814
- var isActive = $parent.hasClass('open')
815
-
816
- clearMenus()
817
-
818
- if (!isActive) {
819
- if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
820
- // if mobile we use a backdrop because click events don't delegate
821
- $(document.createElement('div'))
822
- .addClass('dropdown-backdrop')
823
- .insertAfter($(this))
824
- .on('click', clearMenus)
825
- }
826
-
827
- var relatedTarget = { relatedTarget: this }
828
- $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
829
-
830
- if (e.isDefaultPrevented()) return
831
-
832
- $this
833
- .trigger('focus')
834
- .attr('aria-expanded', 'true')
835
-
836
- $parent
837
- .toggleClass('open')
838
- .trigger($.Event('shown.bs.dropdown', relatedTarget))
839
- }
840
-
841
- return false
842
- }
843
-
844
- Dropdown.prototype.keydown = function (e) {
845
- if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
846
-
847
- var $this = $(this)
848
-
849
- e.preventDefault()
850
- e.stopPropagation()
851
-
852
- if ($this.is('.disabled, :disabled')) return
853
-
854
- var $parent = getParent($this)
855
- var isActive = $parent.hasClass('open')
856
-
857
- if (!isActive && e.which != 27 || isActive && e.which == 27) {
858
- if (e.which == 27) $parent.find(toggle).trigger('focus')
859
- return $this.trigger('click')
860
- }
861
-
862
- var desc = ' li:not(.disabled):visible a'
863
- var $items = $parent.find('.dropdown-menu' + desc)
864
-
865
- if (!$items.length) return
866
-
867
- var index = $items.index(e.target)
868
-
869
- if (e.which == 38 && index > 0) index-- // up
870
- if (e.which == 40 && index < $items.length - 1) index++ // down
871
- if (!~index) index = 0
872
-
873
- $items.eq(index).trigger('focus')
874
- }
875
-
876
-
877
- // DROPDOWN PLUGIN DEFINITION
878
- // ==========================
879
-
880
- function Plugin(option) {
881
- return this.each(function () {
882
- var $this = $(this)
883
- var data = $this.data('bs.dropdown')
884
-
885
- if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
886
- if (typeof option == 'string') data[option].call($this)
887
- })
888
- }
889
-
890
- var old = $.fn.dropdown
891
-
892
- $.fn.dropdown = Plugin
893
- $.fn.dropdown.Constructor = Dropdown
894
-
895
-
896
- // DROPDOWN NO CONFLICT
897
- // ====================
898
-
899
- $.fn.dropdown.noConflict = function () {
900
- $.fn.dropdown = old
901
- return this
902
- }
903
-
904
-
905
- // APPLY TO STANDARD DROPDOWN ELEMENTS
906
- // ===================================
907
-
908
- $(document)
909
- .on('click.bs.dropdown.data-api', clearMenus)
910
- .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
911
- .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
912
- .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
913
- .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
914
-
915
- }(jQuery);
916
-
917
- /* ========================================================================
918
- * Bootstrap: modal.js v3.3.7
919
- * http://getbootstrap.com/javascript/#modals
920
- * ========================================================================
921
- * Copyright 2011-2016 Twitter, Inc.
922
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
923
- * ======================================================================== */
924
-
925
-
926
- +function ($) {
927
- 'use strict';
928
-
929
- // MODAL CLASS DEFINITION
930
- // ======================
931
-
932
- var Modal = function (element, options) {
933
- this.options = options
934
- this.$body = $(document.body)
935
- this.$element = $(element)
936
- this.$dialog = this.$element.find('.modal-dialog')
937
- this.$backdrop = null
938
- this.isShown = null
939
- this.originalBodyPad = null
940
- this.scrollbarWidth = 0
941
- this.ignoreBackdropClick = false
942
-
943
- if (this.options.remote) {
944
- this.$element
945
- .find('.modal-content')
946
- .load(this.options.remote, $.proxy(function () {
947
- this.$element.trigger('loaded.bs.modal')
948
- }, this))
949
- }
950
- }
951
-
952
- Modal.VERSION = '3.3.7'
953
-
954
- Modal.TRANSITION_DURATION = 300
955
- Modal.BACKDROP_TRANSITION_DURATION = 150
956
-
957
- Modal.DEFAULTS = {
958
- backdrop: true,
959
- keyboard: true,
960
- show: true
961
- }
962
-
963
- Modal.prototype.toggle = function (_relatedTarget) {
964
- return this.isShown ? this.hide() : this.show(_relatedTarget)
965
- }
966
-
967
- Modal.prototype.show = function (_relatedTarget) {
968
- var that = this
969
- var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
970
-
971
- this.$element.trigger(e)
972
-
973
- if (this.isShown || e.isDefaultPrevented()) return
974
-
975
- this.isShown = true
976
-
977
- this.checkScrollbar()
978
- this.setScrollbar()
979
- this.$body.addClass('modal-open')
980
-
981
- this.escape()
982
- this.resize()
983
-
984
- this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
985
-
986
- this.$dialog.on('mousedown.dismiss.bs.modal', function () {
987
- that.$element.one('mouseup.dismiss.bs.modal', function (e) {
988
- if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
989
- })
990
- })
991
-
992
- this.backdrop(function () {
993
- var transition = $.support.transition && that.$element.hasClass('fade')
994
-
995
- if (!that.$element.parent().length) {
996
- that.$element.appendTo(that.$body) // don't move modals dom position
997
- }
998
-
999
- that.$element
1000
- .show()
1001
- .scrollTop(0)
1002
-
1003
- that.adjustDialog()
1004
-
1005
- if (transition) {
1006
- that.$element[0].offsetWidth // force reflow
1007
- }
1008
-
1009
- that.$element.addClass('in')
1010
-
1011
- that.enforceFocus()
1012
-
1013
- var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
1014
-
1015
- transition ?
1016
- that.$dialog // wait for modal to slide in
1017
- .one('bsTransitionEnd', function () {
1018
- that.$element.trigger('focus').trigger(e)
1019
- })
1020
- .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1021
- that.$element.trigger('focus').trigger(e)
1022
- })
1023
- }
1024
-
1025
- Modal.prototype.hide = function (e) {
1026
- if (e) e.preventDefault()
1027
-
1028
- e = $.Event('hide.bs.modal')
1029
-
1030
- this.$element.trigger(e)
1031
-
1032
- if (!this.isShown || e.isDefaultPrevented()) return
1033
-
1034
- this.isShown = false
1035
-
1036
- this.escape()
1037
- this.resize()
1038
-
1039
- $(document).off('focusin.bs.modal')
1040
-
1041
- this.$element
1042
- .removeClass('in')
1043
- .off('click.dismiss.bs.modal')
1044
- .off('mouseup.dismiss.bs.modal')
1045
-
1046
- this.$dialog.off('mousedown.dismiss.bs.modal')
1047
-
1048
- $.support.transition && this.$element.hasClass('fade') ?
1049
- this.$element
1050
- .one('bsTransitionEnd', $.proxy(this.hideModal, this))
1051
- .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1052
- this.hideModal()
1053
- }
1054
-
1055
- Modal.prototype.enforceFocus = function () {
1056
- $(document)
1057
- .off('focusin.bs.modal') // guard against infinite focus loop
1058
- .on('focusin.bs.modal', $.proxy(function (e) {
1059
- if (document !== e.target &&
1060
- this.$element[0] !== e.target &&
1061
- !this.$element.has(e.target).length) {
1062
- this.$element.trigger('focus')
1063
- }
1064
- }, this))
1065
- }
1066
-
1067
- Modal.prototype.escape = function () {
1068
- if (this.isShown && this.options.keyboard) {
1069
- this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
1070
- e.which == 27 && this.hide()
1071
- }, this))
1072
- } else if (!this.isShown) {
1073
- this.$element.off('keydown.dismiss.bs.modal')
1074
- }
1075
- }
1076
-
1077
- Modal.prototype.resize = function () {
1078
- if (this.isShown) {
1079
- $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
1080
- } else {
1081
- $(window).off('resize.bs.modal')
1082
- }
1083
- }
1084
-
1085
- Modal.prototype.hideModal = function () {
1086
- var that = this
1087
- this.$element.hide()
1088
- this.backdrop(function () {
1089
- that.$body.removeClass('modal-open')
1090
- that.resetAdjustments()
1091
- that.resetScrollbar()
1092
- that.$element.trigger('hidden.bs.modal')
1093
- })
1094
- }
1095
-
1096
- Modal.prototype.removeBackdrop = function () {
1097
- this.$backdrop && this.$backdrop.remove()
1098
- this.$backdrop = null
1099
- }
1100
-
1101
- Modal.prototype.backdrop = function (callback) {
1102
- var that = this
1103
- var animate = this.$element.hasClass('fade') ? 'fade' : ''
1104
-
1105
- if (this.isShown && this.options.backdrop) {
1106
- var doAnimate = $.support.transition && animate
1107
-
1108
- this.$backdrop = $(document.createElement('div'))
1109
- .addClass('modal-backdrop ' + animate)
1110
- .appendTo(this.$body)
1111
-
1112
- this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
1113
- if (this.ignoreBackdropClick) {
1114
- this.ignoreBackdropClick = false
1115
- return
1116
- }
1117
- if (e.target !== e.currentTarget) return
1118
- this.options.backdrop == 'static'
1119
- ? this.$element[0].focus()
1120
- : this.hide()
1121
- }, this))
1122
-
1123
- if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
1124
-
1125
- this.$backdrop.addClass('in')
1126
-
1127
- if (!callback) return
1128
-
1129
- doAnimate ?
1130
- this.$backdrop
1131
- .one('bsTransitionEnd', callback)
1132
- .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1133
- callback()
1134
-
1135
- } else if (!this.isShown && this.$backdrop) {
1136
- this.$backdrop.removeClass('in')
1137
-
1138
- var callbackRemove = function () {
1139
- that.removeBackdrop()
1140
- callback && callback()
1141
- }
1142
- $.support.transition && this.$element.hasClass('fade') ?
1143
- this.$backdrop
1144
- .one('bsTransitionEnd', callbackRemove)
1145
- .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1146
- callbackRemove()
1147
-
1148
- } else if (callback) {
1149
- callback()
1150
- }
1151
- }
1152
-
1153
- // these following methods are used to handle overflowing modals
1154
-
1155
- Modal.prototype.handleUpdate = function () {
1156
- this.adjustDialog()
1157
- }
1158
-
1159
- Modal.prototype.adjustDialog = function () {
1160
- var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1161
-
1162
- this.$element.css({
1163
- paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1164
- paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1165
- })
1166
- }
1167
-
1168
- Modal.prototype.resetAdjustments = function () {
1169
- this.$element.css({
1170
- paddingLeft: '',
1171
- paddingRight: ''
1172
- })
1173
- }
1174
-
1175
- Modal.prototype.checkScrollbar = function () {
1176
- var fullWindowWidth = window.innerWidth
1177
- if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
1178
- var documentElementRect = document.documentElement.getBoundingClientRect()
1179
- fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
1180
- }
1181
- this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
1182
- this.scrollbarWidth = this.measureScrollbar()
1183
- }
1184
-
1185
- Modal.prototype.setScrollbar = function () {
1186
- var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1187
- this.originalBodyPad = document.body.style.paddingRight || ''
1188
- if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
1189
- }
1190
-
1191
- Modal.prototype.resetScrollbar = function () {
1192
- this.$body.css('padding-right', this.originalBodyPad)
1193
- }
1194
-
1195
- Modal.prototype.measureScrollbar = function () { // thx walsh
1196
- var scrollDiv = document.createElement('div')
1197
- scrollDiv.className = 'modal-scrollbar-measure'
1198
- this.$body.append(scrollDiv)
1199
- var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
1200
- this.$body[0].removeChild(scrollDiv)
1201
- return scrollbarWidth
1202
- }
1203
-
1204
-
1205
- // MODAL PLUGIN DEFINITION
1206
- // =======================
1207
-
1208
- function Plugin(option, _relatedTarget) {
1209
- return this.each(function () {
1210
- var $this = $(this)
1211
- var data = $this.data('bs.modal')
1212
- var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1213
-
1214
- if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
1215
- if (typeof option == 'string') data[option](_relatedTarget)
1216
- else if (options.show) data.show(_relatedTarget)
1217
- })
1218
- }
1219
-
1220
- var old = $.fn.modal
1221
-
1222
- $.fn.modal = Plugin
1223
- $.fn.modal.Constructor = Modal
1224
-
1225
-
1226
- // MODAL NO CONFLICT
1227
- // =================
1228
-
1229
- $.fn.modal.noConflict = function () {
1230
- $.fn.modal = old
1231
- return this
1232
- }
1233
-
1234
-
1235
- // MODAL DATA-API
1236
- // ==============
1237
-
1238
- $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1239
- var $this = $(this)
1240
- var href = $this.attr('href')
1241
- var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
1242
- var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1243
-
1244
- if ($this.is('a')) e.preventDefault()
1245
-
1246
- $target.one('show.bs.modal', function (showEvent) {
1247
- if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
1248
- $target.one('hidden.bs.modal', function () {
1249
- $this.is(':visible') && $this.trigger('focus')
1250
- })
1251
- })
1252
- Plugin.call($target, option, this)
1253
- })
1254
-
1255
- }(jQuery);
1256
-
1257
- /* ========================================================================
1258
- * Bootstrap: tooltip.js v3.3.7
1259
- * http://getbootstrap.com/javascript/#tooltip
1260
- * Inspired by the original jQuery.tipsy by Jason Frame
1261
- * ========================================================================
1262
- * Copyright 2011-2016 Twitter, Inc.
1263
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1264
- * ======================================================================== */
1265
-
1266
-
1267
- +function ($) {
1268
- 'use strict';
1269
-
1270
- // TOOLTIP PUBLIC CLASS DEFINITION
1271
- // ===============================
1272
-
1273
- var Tooltip = function (element, options) {
1274
- this.type = null
1275
- this.options = null
1276
- this.enabled = null
1277
- this.timeout = null
1278
- this.hoverState = null
1279
- this.$element = null
1280
- this.inState = null
1281
-
1282
- this.init('tooltip', element, options)
1283
- }
1284
-
1285
- Tooltip.VERSION = '3.3.7'
1286
-
1287
- Tooltip.TRANSITION_DURATION = 150
1288
-
1289
- Tooltip.DEFAULTS = {
1290
- animation: true,
1291
- placement: 'top',
1292
- selector: false,
1293
- template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1294
- trigger: 'hover focus',
1295
- title: '',
1296
- delay: 0,
1297
- html: false,
1298
- container: false,
1299
- viewport: {
1300
- selector: 'body',
1301
- padding: 0
1302
- }
1303
- }
1304
-
1305
- Tooltip.prototype.init = function (type, element, options) {
1306
- this.enabled = true
1307
- this.type = type
1308
- this.$element = $(element)
1309
- this.options = this.getOptions(options)
1310
- this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1311
- this.inState = { click: false, hover: false, focus: false }
1312
-
1313
- if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1314
- throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1315
- }
1316
-
1317
- var triggers = this.options.trigger.split(' ')
1318
-
1319
- for (var i = triggers.length; i--;) {
1320
- var trigger = triggers[i]
1321
-
1322
- if (trigger == 'click') {
1323
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1324
- } else if (trigger != 'manual') {
1325
- var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
1326
- var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1327
-
1328
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1329
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1330
- }
1331
- }
1332
-
1333
- this.options.selector ?
1334
- (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1335
- this.fixTitle()
1336
- }
1337
-
1338
- Tooltip.prototype.getDefaults = function () {
1339
- return Tooltip.DEFAULTS
1340
- }
1341
-
1342
- Tooltip.prototype.getOptions = function (options) {
1343
- options = $.extend({}, this.getDefaults(), this.$element.data(), options)
1344
-
1345
- if (options.delay && typeof options.delay == 'number') {
1346
- options.delay = {
1347
- show: options.delay,
1348
- hide: options.delay
1349
- }
1350
- }
1351
-
1352
- return options
1353
- }
1354
-
1355
- Tooltip.prototype.getDelegateOptions = function () {
1356
- var options = {}
1357
- var defaults = this.getDefaults()
1358
-
1359
- this._options && $.each(this._options, function (key, value) {
1360
- if (defaults[key] != value) options[key] = value
1361
- })
1362
-
1363
- return options
1364
- }
1365
-
1366
- Tooltip.prototype.enter = function (obj) {
1367
- var self = obj instanceof this.constructor ?
1368
- obj : $(obj.currentTarget).data('bs.' + this.type)
1369
-
1370
- if (!self) {
1371
- self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1372
- $(obj.currentTarget).data('bs.' + this.type, self)
1373
- }
1374
-
1375
- if (obj instanceof $.Event) {
1376
- self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1377
- }
1378
-
1379
- if (self.tip().hasClass('in') || self.hoverState == 'in') {
1380
- self.hoverState = 'in'
1381
- return
1382
- }
1383
-
1384
- clearTimeout(self.timeout)
1385
-
1386
- self.hoverState = 'in'
1387
-
1388
- if (!self.options.delay || !self.options.delay.show) return self.show()
1389
-
1390
- self.timeout = setTimeout(function () {
1391
- if (self.hoverState == 'in') self.show()
1392
- }, self.options.delay.show)
1393
- }
1394
-
1395
- Tooltip.prototype.isInStateTrue = function () {
1396
- for (var key in this.inState) {
1397
- if (this.inState[key]) return true
1398
- }
1399
-
1400
- return false
1401
- }
1402
-
1403
- Tooltip.prototype.leave = function (obj) {
1404
- var self = obj instanceof this.constructor ?
1405
- obj : $(obj.currentTarget).data('bs.' + this.type)
1406
-
1407
- if (!self) {
1408
- self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1409
- $(obj.currentTarget).data('bs.' + this.type, self)
1410
- }
1411
-
1412
- if (obj instanceof $.Event) {
1413
- self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1414
- }
1415
-
1416
- if (self.isInStateTrue()) return
1417
-
1418
- clearTimeout(self.timeout)
1419
-
1420
- self.hoverState = 'out'
1421
-
1422
- if (!self.options.delay || !self.options.delay.hide) return self.hide()
1423
-
1424
- self.timeout = setTimeout(function () {
1425
- if (self.hoverState == 'out') self.hide()
1426
- }, self.options.delay.hide)
1427
- }
1428
-
1429
- Tooltip.prototype.show = function () {
1430
- var e = $.Event('show.bs.' + this.type)
1431
-
1432
- if (this.hasContent() && this.enabled) {
1433
- this.$element.trigger(e)
1434
-
1435
- var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
1436
- if (e.isDefaultPrevented() || !inDom) return
1437
- var that = this
1438
-
1439
- var $tip = this.tip()
1440
-
1441
- var tipId = this.getUID(this.type)
1442
-
1443
- this.setContent()
1444
- $tip.attr('id', tipId)
1445
- this.$element.attr('aria-describedby', tipId)
1446
-
1447
- if (this.options.animation) $tip.addClass('fade')
1448
-
1449
- var placement = typeof this.options.placement == 'function' ?
1450
- this.options.placement.call(this, $tip[0], this.$element[0]) :
1451
- this.options.placement
1452
-
1453
- var autoToken = /\s?auto?\s?/i
1454
- var autoPlace = autoToken.test(placement)
1455
- if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1456
-
1457
- $tip
1458
- .detach()
1459
- .css({ top: 0, left: 0, display: 'block' })
1460
- .addClass(placement)
1461
- .data('bs.' + this.type, this)
1462
-
1463
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1464
- this.$element.trigger('inserted.bs.' + this.type)
1465
-
1466
- var pos = this.getPosition()
1467
- var actualWidth = $tip[0].offsetWidth
1468
- var actualHeight = $tip[0].offsetHeight
1469
-
1470
- if (autoPlace) {
1471
- var orgPlacement = placement
1472
- var viewportDim = this.getPosition(this.$viewport)
1473
-
1474
- placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
1475
- placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
1476
- placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
1477
- placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
1478
- placement
1479
-
1480
- $tip
1481
- .removeClass(orgPlacement)
1482
- .addClass(placement)
1483
- }
1484
-
1485
- var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1486
-
1487
- this.applyPlacement(calculatedOffset, placement)
1488
-
1489
- var complete = function () {
1490
- var prevHoverState = that.hoverState
1491
- that.$element.trigger('shown.bs.' + that.type)
1492
- that.hoverState = null
1493
-
1494
- if (prevHoverState == 'out') that.leave(that)
1495
- }
1496
-
1497
- $.support.transition && this.$tip.hasClass('fade') ?
1498
- $tip
1499
- .one('bsTransitionEnd', complete)
1500
- .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1501
- complete()
1502
- }
1503
- }
1504
-
1505
- Tooltip.prototype.applyPlacement = function (offset, placement) {
1506
- var $tip = this.tip()
1507
- var width = $tip[0].offsetWidth
1508
- var height = $tip[0].offsetHeight
1509
-
1510
- // manually read margins because getBoundingClientRect includes difference
1511
- var marginTop = parseInt($tip.css('margin-top'), 10)
1512
- var marginLeft = parseInt($tip.css('margin-left'), 10)
1513
-
1514
- // we must check for NaN for ie 8/9
1515
- if (isNaN(marginTop)) marginTop = 0
1516
- if (isNaN(marginLeft)) marginLeft = 0
1517
-
1518
- offset.top += marginTop
1519
- offset.left += marginLeft
1520
-
1521
- // $.fn.offset doesn't round pixel values
1522
- // so we use setOffset directly with our own function B-0
1523
- $.offset.setOffset($tip[0], $.extend({
1524
- using: function (props) {
1525
- $tip.css({
1526
- top: Math.round(props.top),
1527
- left: Math.round(props.left)
1528
- })
1529
- }
1530
- }, offset), 0)
1531
-
1532
- $tip.addClass('in')
1533
-
1534
- // check to see if placing tip in new offset caused the tip to resize itself
1535
- var actualWidth = $tip[0].offsetWidth
1536
- var actualHeight = $tip[0].offsetHeight
1537
-
1538
- if (placement == 'top' && actualHeight != height) {
1539
- offset.top = offset.top + height - actualHeight
1540
- }
1541
-
1542
- var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
1543
-
1544
- if (delta.left) offset.left += delta.left
1545
- else offset.top += delta.top
1546
-
1547
- var isVertical = /top|bottom/.test(placement)
1548
- var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
1549
- var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
1550
-
1551
- $tip.offset(offset)
1552
- this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1553
- }
1554
-
1555
- Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1556
- this.arrow()
1557
- .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1558
- .css(isVertical ? 'top' : 'left', '')
1559
- }
1560
-
1561
- Tooltip.prototype.setContent = function () {
1562
- var $tip = this.tip()
1563
- var title = this.getTitle()
1564
-
1565
- $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1566
- $tip.removeClass('fade in top bottom left right')
1567
- }
1568
-
1569
- Tooltip.prototype.hide = function (callback) {
1570
- var that = this
1571
- var $tip = $(this.$tip)
1572
- var e = $.Event('hide.bs.' + this.type)
1573
-
1574
- function complete() {
1575
- if (that.hoverState != 'in') $tip.detach()
1576
- if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1577
- that.$element
1578
- .removeAttr('aria-describedby')
1579
- .trigger('hidden.bs.' + that.type)
1580
- }
1581
- callback && callback()
1582
- }
1583
-
1584
- this.$element.trigger(e)
1585
-
1586
- if (e.isDefaultPrevented()) return
1587
-
1588
- $tip.removeClass('in')
1589
-
1590
- $.support.transition && $tip.hasClass('fade') ?
1591
- $tip
1592
- .one('bsTransitionEnd', complete)
1593
- .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1594
- complete()
1595
-
1596
- this.hoverState = null
1597
-
1598
- return this
1599
- }
1600
-
1601
- Tooltip.prototype.fixTitle = function () {
1602
- var $e = this.$element
1603
- if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1604
- $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1605
- }
1606
- }
1607
-
1608
- Tooltip.prototype.hasContent = function () {
1609
- return this.getTitle()
1610
- }
1611
-
1612
- Tooltip.prototype.getPosition = function ($element) {
1613
- $element = $element || this.$element
1614
-
1615
- var el = $element[0]
1616
- var isBody = el.tagName == 'BODY'
1617
-
1618
- var elRect = el.getBoundingClientRect()
1619
- if (elRect.width == null) {
1620
- // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1621
- elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1622
- }
1623
- var isSvg = window.SVGElement && el instanceof window.SVGElement
1624
- // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1625
- // See https://github.com/twbs/bootstrap/issues/20280
1626
- var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1627
- var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1628
- var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1629
-
1630
- return $.extend({}, elRect, scroll, outerDims, elOffset)
1631
- }
1632
-
1633
- Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1634
- return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1635
- placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1636
- placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1637
- /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1638
-
1639
- }
1640
-
1641
- Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
1642
- var delta = { top: 0, left: 0 }
1643
- if (!this.$viewport) return delta
1644
-
1645
- var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
1646
- var viewportDimensions = this.getPosition(this.$viewport)
1647
-
1648
- if (/right|left/.test(placement)) {
1649
- var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
1650
- var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
1651
- if (topEdgeOffset < viewportDimensions.top) { // top overflow
1652
- delta.top = viewportDimensions.top - topEdgeOffset
1653
- } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
1654
- delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
1655
- }
1656
- } else {
1657
- var leftEdgeOffset = pos.left - viewportPadding
1658
- var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1659
- if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1660
- delta.left = viewportDimensions.left - leftEdgeOffset
1661
- } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1662
- delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1663
- }
1664
- }
1665
-
1666
- return delta
1667
- }
1668
-
1669
- Tooltip.prototype.getTitle = function () {
1670
- var title
1671
- var $e = this.$element
1672
- var o = this.options
1673
-
1674
- title = $e.attr('data-original-title')
1675
- || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1676
-
1677
- return title
1678
- }
1679
-
1680
- Tooltip.prototype.getUID = function (prefix) {
1681
- do prefix += ~~(Math.random() * 1000000)
1682
- while (document.getElementById(prefix))
1683
- return prefix
1684
- }
1685
-
1686
- Tooltip.prototype.tip = function () {
1687
- if (!this.$tip) {
1688
- this.$tip = $(this.options.template)
1689
- if (this.$tip.length != 1) {
1690
- throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1691
- }
1692
- }
1693
- return this.$tip
1694
- }
1695
-
1696
- Tooltip.prototype.arrow = function () {
1697
- return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
1698
- }
1699
-
1700
- Tooltip.prototype.enable = function () {
1701
- this.enabled = true
1702
- }
1703
-
1704
- Tooltip.prototype.disable = function () {
1705
- this.enabled = false
1706
- }
1707
-
1708
- Tooltip.prototype.toggleEnabled = function () {
1709
- this.enabled = !this.enabled
1710
- }
1711
-
1712
- Tooltip.prototype.toggle = function (e) {
1713
- var self = this
1714
- if (e) {
1715
- self = $(e.currentTarget).data('bs.' + this.type)
1716
- if (!self) {
1717
- self = new this.constructor(e.currentTarget, this.getDelegateOptions())
1718
- $(e.currentTarget).data('bs.' + this.type, self)
1719
- }
1720
- }
1721
-
1722
- if (e) {
1723
- self.inState.click = !self.inState.click
1724
- if (self.isInStateTrue()) self.enter(self)
1725
- else self.leave(self)
1726
- } else {
1727
- self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1728
- }
1729
- }
1730
-
1731
- Tooltip.prototype.destroy = function () {
1732
- var that = this
1733
- clearTimeout(this.timeout)
1734
- this.hide(function () {
1735
- that.$element.off('.' + that.type).removeData('bs.' + that.type)
1736
- if (that.$tip) {
1737
- that.$tip.detach()
1738
- }
1739
- that.$tip = null
1740
- that.$arrow = null
1741
- that.$viewport = null
1742
- that.$element = null
1743
- })
1744
- }
1745
-
1746
-
1747
- // TOOLTIP PLUGIN DEFINITION
1748
- // =========================
1749
-
1750
- function Plugin(option) {
1751
- return this.each(function () {
1752
- var $this = $(this)
1753
- var data = $this.data('bs.tooltip')
1754
- var options = typeof option == 'object' && option
1755
-
1756
- if (!data && /destroy|hide/.test(option)) return
1757
- if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1758
- if (typeof option == 'string') data[option]()
1759
- })
1760
- }
1761
-
1762
- var old = $.fn.tooltip
1763
-
1764
- $.fn.tooltip = Plugin
1765
- $.fn.tooltip.Constructor = Tooltip
1766
-
1767
-
1768
- // TOOLTIP NO CONFLICT
1769
- // ===================
1770
-
1771
- $.fn.tooltip.noConflict = function () {
1772
- $.fn.tooltip = old
1773
- return this
1774
- }
1775
-
1776
- }(jQuery);
1777
-
1778
- /* ========================================================================
1779
- * Bootstrap: popover.js v3.3.7
1780
- * http://getbootstrap.com/javascript/#popovers
1781
- * ========================================================================
1782
- * Copyright 2011-2016 Twitter, Inc.
1783
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1784
- * ======================================================================== */
1785
-
1786
-
1787
- +function ($) {
1788
- 'use strict';
1789
-
1790
- // POPOVER PUBLIC CLASS DEFINITION
1791
- // ===============================
1792
-
1793
- var Popover = function (element, options) {
1794
- this.init('popover', element, options)
1795
- }
1796
-
1797
- if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1798
-
1799
- Popover.VERSION = '3.3.7'
1800
-
1801
- Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1802
- placement: 'right',
1803
- trigger: 'click',
1804
- content: '',
1805
- template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1806
- })
1807
-
1808
-
1809
- // NOTE: POPOVER EXTENDS tooltip.js
1810
- // ================================
1811
-
1812
- Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1813
-
1814
- Popover.prototype.constructor = Popover
1815
-
1816
- Popover.prototype.getDefaults = function () {
1817
- return Popover.DEFAULTS
1818
- }
1819
-
1820
- Popover.prototype.setContent = function () {
1821
- var $tip = this.tip()
1822
- var title = this.getTitle()
1823
- var content = this.getContent()
1824
-
1825
- $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1826
- $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
1827
- this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
1828
- ](content)
1829
-
1830
- $tip.removeClass('fade top bottom left right in')
1831
-
1832
- // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
1833
- // this manually by checking the contents.
1834
- if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
1835
- }
1836
-
1837
- Popover.prototype.hasContent = function () {
1838
- return this.getTitle() || this.getContent()
1839
- }
1840
-
1841
- Popover.prototype.getContent = function () {
1842
- var $e = this.$element
1843
- var o = this.options
1844
-
1845
- return $e.attr('data-content')
1846
- || (typeof o.content == 'function' ?
1847
- o.content.call($e[0]) :
1848
- o.content)
1849
- }
1850
-
1851
- Popover.prototype.arrow = function () {
1852
- return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
1853
- }
1854
-
1855
-
1856
- // POPOVER PLUGIN DEFINITION
1857
- // =========================
1858
-
1859
- function Plugin(option) {
1860
- return this.each(function () {
1861
- var $this = $(this)
1862
- var data = $this.data('bs.popover')
1863
- var options = typeof option == 'object' && option
1864
-
1865
- if (!data && /destroy|hide/.test(option)) return
1866
- if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1867
- if (typeof option == 'string') data[option]()
1868
- })
1869
- }
1870
-
1871
- var old = $.fn.popover
1872
-
1873
- $.fn.popover = Plugin
1874
- $.fn.popover.Constructor = Popover
1875
-
1876
-
1877
- // POPOVER NO CONFLICT
1878
- // ===================
1879
-
1880
- $.fn.popover.noConflict = function () {
1881
- $.fn.popover = old
1882
- return this
1883
- }
1884
-
1885
- }(jQuery);
1886
-
1887
- /* ========================================================================
1888
- * Bootstrap: scrollspy.js v3.3.7
1889
- * http://getbootstrap.com/javascript/#scrollspy
1890
- * ========================================================================
1891
- * Copyright 2011-2016 Twitter, Inc.
1892
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1893
- * ======================================================================== */
1894
-
1895
-
1896
- +function ($) {
1897
- 'use strict';
1898
-
1899
- // SCROLLSPY CLASS DEFINITION
1900
- // ==========================
1901
-
1902
- function ScrollSpy(element, options) {
1903
- this.$body = $(document.body)
1904
- this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
1905
- this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
1906
- this.selector = (this.options.target || '') + ' .nav li > a'
1907
- this.offsets = []
1908
- this.targets = []
1909
- this.activeTarget = null
1910
- this.scrollHeight = 0
1911
-
1912
- this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
1913
- this.refresh()
1914
- this.process()
1915
- }
1916
-
1917
- ScrollSpy.VERSION = '3.3.7'
1918
-
1919
- ScrollSpy.DEFAULTS = {
1920
- offset: 10
1921
- }
1922
-
1923
- ScrollSpy.prototype.getScrollHeight = function () {
1924
- return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
1925
- }
1926
-
1927
- ScrollSpy.prototype.refresh = function () {
1928
- var that = this
1929
- var offsetMethod = 'offset'
1930
- var offsetBase = 0
1931
-
1932
- this.offsets = []
1933
- this.targets = []
1934
- this.scrollHeight = this.getScrollHeight()
1935
-
1936
- if (!$.isWindow(this.$scrollElement[0])) {
1937
- offsetMethod = 'position'
1938
- offsetBase = this.$scrollElement.scrollTop()
1939
- }
1940
-
1941
- this.$body
1942
- .find(this.selector)
1943
- .map(function () {
1944
- var $el = $(this)
1945
- var href = $el.data('target') || $el.attr('href')
1946
- var $href = /^#./.test(href) && $(href)
1947
-
1948
- return ($href
1949
- && $href.length
1950
- && $href.is(':visible')
1951
- && [[$href[offsetMethod]().top + offsetBase, href]]) || null
1952
- })
1953
- .sort(function (a, b) { return a[0] - b[0] })
1954
- .each(function () {
1955
- that.offsets.push(this[0])
1956
- that.targets.push(this[1])
1957
- })
1958
- }
1959
-
1960
- ScrollSpy.prototype.process = function () {
1961
- var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1962
- var scrollHeight = this.getScrollHeight()
1963
- var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
1964
- var offsets = this.offsets
1965
- var targets = this.targets
1966
- var activeTarget = this.activeTarget
1967
- var i
1968
-
1969
- if (this.scrollHeight != scrollHeight) {
1970
- this.refresh()
1971
- }
1972
-
1973
- if (scrollTop >= maxScroll) {
1974
- return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
1975
- }
1976
-
1977
- if (activeTarget && scrollTop < offsets[0]) {
1978
- this.activeTarget = null
1979
- return this.clear()
1980
- }
1981
-
1982
- for (i = offsets.length; i--;) {
1983
- activeTarget != targets[i]
1984
- && scrollTop >= offsets[i]
1985
- && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
1986
- && this.activate(targets[i])
1987
- }
1988
- }
1989
-
1990
- ScrollSpy.prototype.activate = function (target) {
1991
- this.activeTarget = target
1992
-
1993
- this.clear()
1994
-
1995
- var selector = this.selector +
1996
- '[data-target="' + target + '"],' +
1997
- this.selector + '[href="' + target + '"]'
1998
-
1999
- var active = $(selector)
2000
- .parents('li')
2001
- .addClass('active')
2002
-
2003
- if (active.parent('.dropdown-menu').length) {
2004
- active = active
2005
- .closest('li.dropdown')
2006
- .addClass('active')
2007
- }
2008
-
2009
- active.trigger('activate.bs.scrollspy')
2010
- }
2011
-
2012
- ScrollSpy.prototype.clear = function () {
2013
- $(this.selector)
2014
- .parentsUntil(this.options.target, '.active')
2015
- .removeClass('active')
2016
- }
2017
-
2018
-
2019
- // SCROLLSPY PLUGIN DEFINITION
2020
- // ===========================
2021
-
2022
- function Plugin(option) {
2023
- return this.each(function () {
2024
- var $this = $(this)
2025
- var data = $this.data('bs.scrollspy')
2026
- var options = typeof option == 'object' && option
2027
-
2028
- if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
2029
- if (typeof option == 'string') data[option]()
2030
- })
2031
- }
2032
-
2033
- var old = $.fn.scrollspy
2034
-
2035
- $.fn.scrollspy = Plugin
2036
- $.fn.scrollspy.Constructor = ScrollSpy
2037
-
2038
-
2039
- // SCROLLSPY NO CONFLICT
2040
- // =====================
2041
-
2042
- $.fn.scrollspy.noConflict = function () {
2043
- $.fn.scrollspy = old
2044
- return this
2045
- }
2046
-
2047
-
2048
- // SCROLLSPY DATA-API
2049
- // ==================
2050
-
2051
- $(window).on('load.bs.scrollspy.data-api', function () {
2052
- $('[data-spy="scroll"]').each(function () {
2053
- var $spy = $(this)
2054
- Plugin.call($spy, $spy.data())
2055
- })
2056
- })
2057
-
2058
- }(jQuery);
2059
-
2060
- /* ========================================================================
2061
- * Bootstrap: tab.js v3.3.7
2062
- * http://getbootstrap.com/javascript/#tabs
2063
- * ========================================================================
2064
- * Copyright 2011-2016 Twitter, Inc.
2065
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2066
- * ======================================================================== */
2067
-
2068
-
2069
- +function ($) {
2070
- 'use strict';
2071
-
2072
- // TAB CLASS DEFINITION
2073
- // ====================
2074
-
2075
- var Tab = function (element) {
2076
- // jscs:disable requireDollarBeforejQueryAssignment
2077
- this.element = $(element)
2078
- // jscs:enable requireDollarBeforejQueryAssignment
2079
- }
2080
-
2081
- Tab.VERSION = '3.3.7'
2082
-
2083
- Tab.TRANSITION_DURATION = 150
2084
-
2085
- Tab.prototype.show = function () {
2086
- var $this = this.element
2087
- var $ul = $this.closest('ul:not(.dropdown-menu)')
2088
- var selector = $this.data('target')
2089
-
2090
- if (!selector) {
2091
- selector = $this.attr('href')
2092
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
2093
- }
2094
-
2095
- if ($this.parent('li').hasClass('active')) return
2096
-
2097
- var $previous = $ul.find('.active:last a')
2098
- var hideEvent = $.Event('hide.bs.tab', {
2099
- relatedTarget: $this[0]
2100
- })
2101
- var showEvent = $.Event('show.bs.tab', {
2102
- relatedTarget: $previous[0]
2103
- })
2104
-
2105
- $previous.trigger(hideEvent)
2106
- $this.trigger(showEvent)
2107
-
2108
- if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
2109
-
2110
- var $target = $(selector)
2111
-
2112
- this.activate($this.closest('li'), $ul)
2113
- this.activate($target, $target.parent(), function () {
2114
- $previous.trigger({
2115
- type: 'hidden.bs.tab',
2116
- relatedTarget: $this[0]
2117
- })
2118
- $this.trigger({
2119
- type: 'shown.bs.tab',
2120
- relatedTarget: $previous[0]
2121
- })
2122
- })
2123
- }
2124
-
2125
- Tab.prototype.activate = function (element, container, callback) {
2126
- var $active = container.find('> .active')
2127
- var transition = callback
2128
- && $.support.transition
2129
- && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
2130
-
2131
- function next() {
2132
- $active
2133
- .removeClass('active')
2134
- .find('> .dropdown-menu > .active')
2135
- .removeClass('active')
2136
- .end()
2137
- .find('[data-toggle="tab"]')
2138
- .attr('aria-expanded', false)
2139
-
2140
- element
2141
- .addClass('active')
2142
- .find('[data-toggle="tab"]')
2143
- .attr('aria-expanded', true)
2144
-
2145
- if (transition) {
2146
- element[0].offsetWidth // reflow for transition
2147
- element.addClass('in')
2148
- } else {
2149
- element.removeClass('fade')
2150
- }
2151
-
2152
- if (element.parent('.dropdown-menu').length) {
2153
- element
2154
- .closest('li.dropdown')
2155
- .addClass('active')
2156
- .end()
2157
- .find('[data-toggle="tab"]')
2158
- .attr('aria-expanded', true)
2159
- }
2160
-
2161
- callback && callback()
2162
- }
2163
-
2164
- $active.length && transition ?
2165
- $active
2166
- .one('bsTransitionEnd', next)
2167
- .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
2168
- next()
2169
-
2170
- $active.removeClass('in')
2171
- }
2172
-
2173
-
2174
- // TAB PLUGIN DEFINITION
2175
- // =====================
2176
-
2177
- function Plugin(option) {
2178
- return this.each(function () {
2179
- var $this = $(this)
2180
- var data = $this.data('bs.tab')
2181
-
2182
- if (!data) $this.data('bs.tab', (data = new Tab(this)))
2183
- if (typeof option == 'string') data[option]()
2184
- })
2185
- }
2186
-
2187
- var old = $.fn.tab
2188
-
2189
- $.fn.tab = Plugin
2190
- $.fn.tab.Constructor = Tab
2191
-
2192
-
2193
- // TAB NO CONFLICT
2194
- // ===============
2195
-
2196
- $.fn.tab.noConflict = function () {
2197
- $.fn.tab = old
2198
- return this
2199
- }
2200
-
2201
-
2202
- // TAB DATA-API
2203
- // ============
2204
-
2205
- var clickHandler = function (e) {
2206
- e.preventDefault()
2207
- Plugin.call($(this), 'show')
2208
- }
2209
-
2210
- $(document)
2211
- .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
2212
- .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
2213
-
2214
- }(jQuery);
2215
-
2216
- /* ========================================================================
2217
- * Bootstrap: affix.js v3.3.7
2218
- * http://getbootstrap.com/javascript/#affix
2219
- * ========================================================================
2220
- * Copyright 2011-2016 Twitter, Inc.
2221
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2222
- * ======================================================================== */
2223
-
2224
-
2225
- +function ($) {
2226
- 'use strict';
2227
-
2228
- // AFFIX CLASS DEFINITION
2229
- // ======================
2230
-
2231
- var Affix = function (element, options) {
2232
- this.options = $.extend({}, Affix.DEFAULTS, options)
2233
-
2234
- this.$target = $(this.options.target)
2235
- .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
2236
- .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
2237
-
2238
- this.$element = $(element)
2239
- this.affixed = null
2240
- this.unpin = null
2241
- this.pinnedOffset = null
2242
-
2243
- this.checkPosition()
2244
- }
2245
-
2246
- Affix.VERSION = '3.3.7'
2247
-
2248
- Affix.RESET = 'affix affix-top affix-bottom'
2249
-
2250
- Affix.DEFAULTS = {
2251
- offset: 0,
2252
- target: window
2253
- }
2254
-
2255
- Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
2256
- var scrollTop = this.$target.scrollTop()
2257
- var position = this.$element.offset()
2258
- var targetHeight = this.$target.height()
2259
-
2260
- if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
2261
-
2262
- if (this.affixed == 'bottom') {
2263
- if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
2264
- return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
2265
- }
2266
-
2267
- var initializing = this.affixed == null
2268
- var colliderTop = initializing ? scrollTop : position.top
2269
- var colliderHeight = initializing ? targetHeight : height
2270
-
2271
- if (offsetTop != null && scrollTop <= offsetTop) return 'top'
2272
- if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
2273
-
2274
- return false
2275
- }
2276
-
2277
- Affix.prototype.getPinnedOffset = function () {
2278
- if (this.pinnedOffset) return this.pinnedOffset
2279
- this.$element.removeClass(Affix.RESET).addClass('affix')
2280
- var scrollTop = this.$target.scrollTop()
2281
- var position = this.$element.offset()
2282
- return (this.pinnedOffset = position.top - scrollTop)
2283
- }
2284
-
2285
- Affix.prototype.checkPositionWithEventLoop = function () {
2286
- setTimeout($.proxy(this.checkPosition, this), 1)
2287
- }
2288
-
2289
- Affix.prototype.checkPosition = function () {
2290
- if (!this.$element.is(':visible')) return
2291
-
2292
- var height = this.$element.height()
2293
- var offset = this.options.offset
2294
- var offsetTop = offset.top
2295
- var offsetBottom = offset.bottom
2296
- var scrollHeight = Math.max($(document).height(), $(document.body).height())
2297
-
2298
- if (typeof offset != 'object') offsetBottom = offsetTop = offset
2299
- if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
2300
- if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
2301
-
2302
- var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
2303
-
2304
- if (this.affixed != affix) {
2305
- if (this.unpin != null) this.$element.css('top', '')
2306
-
2307
- var affixType = 'affix' + (affix ? '-' + affix : '')
2308
- var e = $.Event(affixType + '.bs.affix')
2309
-
2310
- this.$element.trigger(e)
2311
-
2312
- if (e.isDefaultPrevented()) return
2313
-
2314
- this.affixed = affix
2315
- this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
2316
-
2317
- this.$element
2318
- .removeClass(Affix.RESET)
2319
- .addClass(affixType)
2320
- .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
2321
- }
2322
-
2323
- if (affix == 'bottom') {
2324
- this.$element.offset({
2325
- top: scrollHeight - height - offsetBottom
2326
- })
2327
- }
2328
- }
2329
-
2330
-
2331
- // AFFIX PLUGIN DEFINITION
2332
- // =======================
2333
-
2334
- function Plugin(option) {
2335
- return this.each(function () {
2336
- var $this = $(this)
2337
- var data = $this.data('bs.affix')
2338
- var options = typeof option == 'object' && option
2339
-
2340
- if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
2341
- if (typeof option == 'string') data[option]()
2342
- })
2343
- }
2344
-
2345
- var old = $.fn.affix
2346
-
2347
- $.fn.affix = Plugin
2348
- $.fn.affix.Constructor = Affix
2349
-
2350
-
2351
- // AFFIX NO CONFLICT
2352
- // =================
2353
-
2354
- $.fn.affix.noConflict = function () {
2355
- $.fn.affix = old
2356
- return this
2357
- }
2358
-
2359
-
2360
- // AFFIX DATA-API
2361
- // ==============
2362
-
2363
- $(window).on('load', function () {
2364
- $('[data-spy="affix"]').each(function () {
2365
- var $spy = $(this)
2366
- var data = $spy.data()
2367
-
2368
- data.offset = data.offset || {}
2369
-
2370
- if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
2371
- if (data.offsetTop != null) data.offset.top = data.offsetTop
2372
-
2373
- Plugin.call($spy, data)
2374
- })
2375
- })
2376
-
2377
- }(jQuery);
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under the MIT license
5
+ */
6
+
7
+ if (typeof jQuery === 'undefined') {
8
+ throw new Error('Bootstrap\'s JavaScript requires jQuery')
9
+ }
10
+
11
+ +function ($) {
12
+ 'use strict';
13
+ var version = $.fn.jquery.split(' ')[0].split('.')
14
+ if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
15
+ throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
16
+ }
17
+ }(jQuery);
18
+
19
+ /* ========================================================================
20
+ * Bootstrap: transition.js v3.3.7
21
+ * http://getbootstrap.com/javascript/#transitions
22
+ * ========================================================================
23
+ * Copyright 2011-2016 Twitter, Inc.
24
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25
+ * ======================================================================== */
26
+
27
+
28
+ +function ($) {
29
+ 'use strict';
30
+
31
+ // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
32
+ // ============================================================
33
+
34
+ function transitionEnd() {
35
+ var el = document.createElement('bootstrap')
36
+
37
+ var transEndEventNames = {
38
+ WebkitTransition : 'webkitTransitionEnd',
39
+ MozTransition : 'transitionend',
40
+ OTransition : 'oTransitionEnd otransitionend',
41
+ transition : 'transitionend'
42
+ }
43
+
44
+ for (var name in transEndEventNames) {
45
+ if (el.style[name] !== undefined) {
46
+ return { end: transEndEventNames[name] }
47
+ }
48
+ }
49
+
50
+ return false // explicit for ie8 ( ._.)
51
+ }
52
+
53
+ // http://blog.alexmaccaw.com/css-transitions
54
+ $.fn.emulateTransitionEnd = function (duration) {
55
+ var called = false
56
+ var $el = this
57
+ $(this).one('bsTransitionEnd', function () { called = true })
58
+ var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
59
+ setTimeout(callback, duration)
60
+ return this
61
+ }
62
+
63
+ $(function () {
64
+ $.support.transition = transitionEnd()
65
+
66
+ if (!$.support.transition) return
67
+
68
+ $.event.special.bsTransitionEnd = {
69
+ bindType: $.support.transition.end,
70
+ delegateType: $.support.transition.end,
71
+ handle: function (e) {
72
+ if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
73
+ }
74
+ }
75
+ })
76
+
77
+ }(jQuery);
78
+
79
+ /* ========================================================================
80
+ * Bootstrap: alert.js v3.3.7
81
+ * http://getbootstrap.com/javascript/#alerts
82
+ * ========================================================================
83
+ * Copyright 2011-2016 Twitter, Inc.
84
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
85
+ * ======================================================================== */
86
+
87
+
88
+ +function ($) {
89
+ 'use strict';
90
+
91
+ // ALERT CLASS DEFINITION
92
+ // ======================
93
+
94
+ var dismiss = '[data-dismiss="alert"]'
95
+ var Alert = function (el) {
96
+ $(el).on('click', dismiss, this.close)
97
+ }
98
+
99
+ Alert.VERSION = '3.3.7'
100
+
101
+ Alert.TRANSITION_DURATION = 150
102
+
103
+ Alert.prototype.close = function (e) {
104
+ var $this = $(this)
105
+ var selector = $this.attr('data-target')
106
+
107
+ if (!selector) {
108
+ selector = $this.attr('href')
109
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
110
+ }
111
+
112
+ var $parent = $(selector === '#' ? [] : selector)
113
+
114
+ if (e) e.preventDefault()
115
+
116
+ if (!$parent.length) {
117
+ $parent = $this.closest('.alert')
118
+ }
119
+
120
+ $parent.trigger(e = $.Event('close.bs.alert'))
121
+
122
+ if (e.isDefaultPrevented()) return
123
+
124
+ $parent.removeClass('in')
125
+
126
+ function removeElement() {
127
+ // detach from parent, fire event then clean up data
128
+ $parent.detach().trigger('closed.bs.alert').remove()
129
+ }
130
+
131
+ $.support.transition && $parent.hasClass('fade') ?
132
+ $parent
133
+ .one('bsTransitionEnd', removeElement)
134
+ .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
135
+ removeElement()
136
+ }
137
+
138
+
139
+ // ALERT PLUGIN DEFINITION
140
+ // =======================
141
+
142
+ function Plugin(option) {
143
+ return this.each(function () {
144
+ var $this = $(this)
145
+ var data = $this.data('bs.alert')
146
+
147
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
148
+ if (typeof option == 'string') data[option].call($this)
149
+ })
150
+ }
151
+
152
+ var old = $.fn.alert
153
+
154
+ $.fn.alert = Plugin
155
+ $.fn.alert.Constructor = Alert
156
+
157
+
158
+ // ALERT NO CONFLICT
159
+ // =================
160
+
161
+ $.fn.alert.noConflict = function () {
162
+ $.fn.alert = old
163
+ return this
164
+ }
165
+
166
+
167
+ // ALERT DATA-API
168
+ // ==============
169
+
170
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
171
+
172
+ }(jQuery);
173
+
174
+ /* ========================================================================
175
+ * Bootstrap: button.js v3.3.7
176
+ * http://getbootstrap.com/javascript/#buttons
177
+ * ========================================================================
178
+ * Copyright 2011-2016 Twitter, Inc.
179
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
180
+ * ======================================================================== */
181
+
182
+
183
+ +function ($) {
184
+ 'use strict';
185
+
186
+ // BUTTON PUBLIC CLASS DEFINITION
187
+ // ==============================
188
+
189
+ var Button = function (element, options) {
190
+ this.$element = $(element)
191
+ this.options = $.extend({}, Button.DEFAULTS, options)
192
+ this.isLoading = false
193
+ }
194
+
195
+ Button.VERSION = '3.3.7'
196
+
197
+ Button.DEFAULTS = {
198
+ loadingText: 'loading...'
199
+ }
200
+
201
+ Button.prototype.setState = function (state) {
202
+ var d = 'disabled'
203
+ var $el = this.$element
204
+ var val = $el.is('input') ? 'val' : 'html'
205
+ var data = $el.data()
206
+
207
+ state += 'Text'
208
+
209
+ if (data.resetText == null) $el.data('resetText', $el[val]())
210
+
211
+ // push to event loop to allow forms to submit
212
+ setTimeout($.proxy(function () {
213
+ $el[val](data[state] == null ? this.options[state] : data[state])
214
+
215
+ if (state == 'loadingText') {
216
+ this.isLoading = true
217
+ $el.addClass(d).attr(d, d).prop(d, true)
218
+ } else if (this.isLoading) {
219
+ this.isLoading = false
220
+ $el.removeClass(d).removeAttr(d).prop(d, false)
221
+ }
222
+ }, this), 0)
223
+ }
224
+
225
+ Button.prototype.toggle = function () {
226
+ var changed = true
227
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
228
+
229
+ if ($parent.length) {
230
+ var $input = this.$element.find('input')
231
+ if ($input.prop('type') == 'radio') {
232
+ if ($input.prop('checked')) changed = false
233
+ $parent.find('.active').removeClass('active')
234
+ this.$element.addClass('active')
235
+ } else if ($input.prop('type') == 'checkbox') {
236
+ if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
237
+ this.$element.toggleClass('active')
238
+ }
239
+ $input.prop('checked', this.$element.hasClass('active'))
240
+ if (changed) $input.trigger('change')
241
+ } else {
242
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
243
+ this.$element.toggleClass('active')
244
+ }
245
+ }
246
+
247
+
248
+ // BUTTON PLUGIN DEFINITION
249
+ // ========================
250
+
251
+ function Plugin(option) {
252
+ return this.each(function () {
253
+ var $this = $(this)
254
+ var data = $this.data('bs.button')
255
+ var options = typeof option == 'object' && option
256
+
257
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
258
+
259
+ if (option == 'toggle') data.toggle()
260
+ else if (option) data.setState(option)
261
+ })
262
+ }
263
+
264
+ var old = $.fn.button
265
+
266
+ $.fn.button = Plugin
267
+ $.fn.button.Constructor = Button
268
+
269
+
270
+ // BUTTON NO CONFLICT
271
+ // ==================
272
+
273
+ $.fn.button.noConflict = function () {
274
+ $.fn.button = old
275
+ return this
276
+ }
277
+
278
+
279
+ // BUTTON DATA-API
280
+ // ===============
281
+
282
+ $(document)
283
+ .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
284
+ var $btn = $(e.target).closest('.btn')
285
+ Plugin.call($btn, 'toggle')
286
+ if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
287
+ // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
288
+ e.preventDefault()
289
+ // The target component still receive the focus
290
+ if ($btn.is('input,button')) $btn.trigger('focus')
291
+ else $btn.find('input:visible,button:visible').first().trigger('focus')
292
+ }
293
+ })
294
+ .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
295
+ $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
296
+ })
297
+
298
+ }(jQuery);
299
+
300
+ /* ========================================================================
301
+ * Bootstrap: carousel.js v3.3.7
302
+ * http://getbootstrap.com/javascript/#carousel
303
+ * ========================================================================
304
+ * Copyright 2011-2016 Twitter, Inc.
305
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
306
+ * ======================================================================== */
307
+
308
+
309
+ +function ($) {
310
+ 'use strict';
311
+
312
+ // CAROUSEL CLASS DEFINITION
313
+ // =========================
314
+
315
+ var Carousel = function (element, options) {
316
+ this.$element = $(element)
317
+ this.$indicators = this.$element.find('.carousel-indicators')
318
+ this.options = options
319
+ this.paused = null
320
+ this.sliding = null
321
+ this.interval = null
322
+ this.$active = null
323
+ this.$items = null
324
+
325
+ this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
326
+
327
+ this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
328
+ .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
329
+ .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
330
+ }
331
+
332
+ Carousel.VERSION = '3.3.7'
333
+
334
+ Carousel.TRANSITION_DURATION = 600
335
+
336
+ Carousel.DEFAULTS = {
337
+ interval: 5000,
338
+ pause: 'hover',
339
+ wrap: true,
340
+ keyboard: true
341
+ }
342
+
343
+ Carousel.prototype.keydown = function (e) {
344
+ if (/input|textarea/i.test(e.target.tagName)) return
345
+ switch (e.which) {
346
+ case 37: this.prev(); break
347
+ case 39: this.next(); break
348
+ default: return
349
+ }
350
+
351
+ e.preventDefault()
352
+ }
353
+
354
+ Carousel.prototype.cycle = function (e) {
355
+ e || (this.paused = false)
356
+
357
+ this.interval && clearInterval(this.interval)
358
+
359
+ this.options.interval
360
+ && !this.paused
361
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
362
+
363
+ return this
364
+ }
365
+
366
+ Carousel.prototype.getItemIndex = function (item) {
367
+ this.$items = item.parent().children('.item')
368
+ return this.$items.index(item || this.$active)
369
+ }
370
+
371
+ Carousel.prototype.getItemForDirection = function (direction, active) {
372
+ var activeIndex = this.getItemIndex(active)
373
+ var willWrap = (direction == 'prev' && activeIndex === 0)
374
+ || (direction == 'next' && activeIndex == (this.$items.length - 1))
375
+ if (willWrap && !this.options.wrap) return active
376
+ var delta = direction == 'prev' ? -1 : 1
377
+ var itemIndex = (activeIndex + delta) % this.$items.length
378
+ return this.$items.eq(itemIndex)
379
+ }
380
+
381
+ Carousel.prototype.to = function (pos) {
382
+ var that = this
383
+ var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
384
+
385
+ if (pos > (this.$items.length - 1) || pos < 0) return
386
+
387
+ if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
388
+ if (activeIndex == pos) return this.pause().cycle()
389
+
390
+ return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
391
+ }
392
+
393
+ Carousel.prototype.pause = function (e) {
394
+ e || (this.paused = true)
395
+
396
+ if (this.$element.find('.next, .prev').length && $.support.transition) {
397
+ this.$element.trigger($.support.transition.end)
398
+ this.cycle(true)
399
+ }
400
+
401
+ this.interval = clearInterval(this.interval)
402
+
403
+ return this
404
+ }
405
+
406
+ Carousel.prototype.next = function () {
407
+ if (this.sliding) return
408
+ return this.slide('next')
409
+ }
410
+
411
+ Carousel.prototype.prev = function () {
412
+ if (this.sliding) return
413
+ return this.slide('prev')
414
+ }
415
+
416
+ Carousel.prototype.slide = function (type, next) {
417
+ var $active = this.$element.find('.item.active')
418
+ var $next = next || this.getItemForDirection(type, $active)
419
+ var isCycling = this.interval
420
+ var direction = type == 'next' ? 'left' : 'right'
421
+ var that = this
422
+
423
+ if ($next.hasClass('active')) return (this.sliding = false)
424
+
425
+ var relatedTarget = $next[0]
426
+ var slideEvent = $.Event('slide.bs.carousel', {
427
+ relatedTarget: relatedTarget,
428
+ direction: direction
429
+ })
430
+ this.$element.trigger(slideEvent)
431
+ if (slideEvent.isDefaultPrevented()) return
432
+
433
+ this.sliding = true
434
+
435
+ isCycling && this.pause()
436
+
437
+ if (this.$indicators.length) {
438
+ this.$indicators.find('.active').removeClass('active')
439
+ var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
440
+ $nextIndicator && $nextIndicator.addClass('active')
441
+ }
442
+
443
+ var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
444
+ if ($.support.transition && this.$element.hasClass('slide')) {
445
+ $next.addClass(type)
446
+ $next[0].offsetWidth // force reflow
447
+ $active.addClass(direction)
448
+ $next.addClass(direction)
449
+ $active
450
+ .one('bsTransitionEnd', function () {
451
+ $next.removeClass([type, direction].join(' ')).addClass('active')
452
+ $active.removeClass(['active', direction].join(' '))
453
+ that.sliding = false
454
+ setTimeout(function () {
455
+ that.$element.trigger(slidEvent)
456
+ }, 0)
457
+ })
458
+ .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
459
+ } else {
460
+ $active.removeClass('active')
461
+ $next.addClass('active')
462
+ this.sliding = false
463
+ this.$element.trigger(slidEvent)
464
+ }
465
+
466
+ isCycling && this.cycle()
467
+
468
+ return this
469
+ }
470
+
471
+
472
+ // CAROUSEL PLUGIN DEFINITION
473
+ // ==========================
474
+
475
+ function Plugin(option) {
476
+ return this.each(function () {
477
+ var $this = $(this)
478
+ var data = $this.data('bs.carousel')
479
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
480
+ var action = typeof option == 'string' ? option : options.slide
481
+
482
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
483
+ if (typeof option == 'number') data.to(option)
484
+ else if (action) data[action]()
485
+ else if (options.interval) data.pause().cycle()
486
+ })
487
+ }
488
+
489
+ var old = $.fn.carousel
490
+
491
+ $.fn.carousel = Plugin
492
+ $.fn.carousel.Constructor = Carousel
493
+
494
+
495
+ // CAROUSEL NO CONFLICT
496
+ // ====================
497
+
498
+ $.fn.carousel.noConflict = function () {
499
+ $.fn.carousel = old
500
+ return this
501
+ }
502
+
503
+
504
+ // CAROUSEL DATA-API
505
+ // =================
506
+
507
+ var clickHandler = function (e) {
508
+ var href
509
+ var $this = $(this)
510
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
511
+ if (!$target.hasClass('carousel')) return
512
+ var options = $.extend({}, $target.data(), $this.data())
513
+ var slideIndex = $this.attr('data-slide-to')
514
+ if (slideIndex) options.interval = false
515
+
516
+ Plugin.call($target, options)
517
+
518
+ if (slideIndex) {
519
+ $target.data('bs.carousel').to(slideIndex)
520
+ }
521
+
522
+ e.preventDefault()
523
+ }
524
+
525
+ $(document)
526
+ .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
527
+ .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
528
+
529
+ $(window).on('load', function () {
530
+ $('[data-ride="carousel"]').each(function () {
531
+ var $carousel = $(this)
532
+ Plugin.call($carousel, $carousel.data())
533
+ })
534
+ })
535
+
536
+ }(jQuery);
537
+
538
+ /* ========================================================================
539
+ * Bootstrap: collapse.js v3.3.7
540
+ * http://getbootstrap.com/javascript/#collapse
541
+ * ========================================================================
542
+ * Copyright 2011-2016 Twitter, Inc.
543
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
544
+ * ======================================================================== */
545
+
546
+ /* jshint latedef: false */
547
+
548
+ +function ($) {
549
+ 'use strict';
550
+
551
+ // COLLAPSE PUBLIC CLASS DEFINITION
552
+ // ================================
553
+
554
+ var Collapse = function (element, options) {
555
+ this.$element = $(element)
556
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
557
+ this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
558
+ '[data-toggle="collapse"][data-target="#' + element.id + '"]')
559
+ this.transitioning = null
560
+
561
+ if (this.options.parent) {
562
+ this.$parent = this.getParent()
563
+ } else {
564
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
565
+ }
566
+
567
+ if (this.options.toggle) this.toggle()
568
+ }
569
+
570
+ Collapse.VERSION = '3.3.7'
571
+
572
+ Collapse.TRANSITION_DURATION = 350
573
+
574
+ Collapse.DEFAULTS = {
575
+ toggle: true
576
+ }
577
+
578
+ Collapse.prototype.dimension = function () {
579
+ var hasWidth = this.$element.hasClass('width')
580
+ return hasWidth ? 'width' : 'height'
581
+ }
582
+
583
+ Collapse.prototype.show = function () {
584
+ if (this.transitioning || this.$element.hasClass('in')) return
585
+
586
+ var activesData
587
+ var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
588
+
589
+ if (actives && actives.length) {
590
+ activesData = actives.data('bs.collapse')
591
+ if (activesData && activesData.transitioning) return
592
+ }
593
+
594
+ var startEvent = $.Event('show.bs.collapse')
595
+ this.$element.trigger(startEvent)
596
+ if (startEvent.isDefaultPrevented()) return
597
+
598
+ if (actives && actives.length) {
599
+ Plugin.call(actives, 'hide')
600
+ activesData || actives.data('bs.collapse', null)
601
+ }
602
+
603
+ var dimension = this.dimension()
604
+
605
+ this.$element
606
+ .removeClass('collapse')
607
+ .addClass('collapsing')[dimension](0)
608
+ .attr('aria-expanded', true)
609
+
610
+ this.$trigger
611
+ .removeClass('collapsed')
612
+ .attr('aria-expanded', true)
613
+
614
+ this.transitioning = 1
615
+
616
+ var complete = function () {
617
+ this.$element
618
+ .removeClass('collapsing')
619
+ .addClass('collapse in')[dimension]('')
620
+ this.transitioning = 0
621
+ this.$element
622
+ .trigger('shown.bs.collapse')
623
+ }
624
+
625
+ if (!$.support.transition) return complete.call(this)
626
+
627
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
628
+
629
+ this.$element
630
+ .one('bsTransitionEnd', $.proxy(complete, this))
631
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
632
+ }
633
+
634
+ Collapse.prototype.hide = function () {
635
+ if (this.transitioning || !this.$element.hasClass('in')) return
636
+
637
+ var startEvent = $.Event('hide.bs.collapse')
638
+ this.$element.trigger(startEvent)
639
+ if (startEvent.isDefaultPrevented()) return
640
+
641
+ var dimension = this.dimension()
642
+
643
+ this.$element[dimension](this.$element[dimension]())[0].offsetHeight
644
+
645
+ this.$element
646
+ .addClass('collapsing')
647
+ .removeClass('collapse in')
648
+ .attr('aria-expanded', false)
649
+
650
+ this.$trigger
651
+ .addClass('collapsed')
652
+ .attr('aria-expanded', false)
653
+
654
+ this.transitioning = 1
655
+
656
+ var complete = function () {
657
+ this.transitioning = 0
658
+ this.$element
659
+ .removeClass('collapsing')
660
+ .addClass('collapse')
661
+ .trigger('hidden.bs.collapse')
662
+ }
663
+
664
+ if (!$.support.transition) return complete.call(this)
665
+
666
+ this.$element
667
+ [dimension](0)
668
+ .one('bsTransitionEnd', $.proxy(complete, this))
669
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
670
+ }
671
+
672
+ Collapse.prototype.toggle = function () {
673
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
674
+ }
675
+
676
+ Collapse.prototype.getParent = function () {
677
+ return $(this.options.parent)
678
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
679
+ .each($.proxy(function (i, element) {
680
+ var $element = $(element)
681
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
682
+ }, this))
683
+ .end()
684
+ }
685
+
686
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
687
+ var isOpen = $element.hasClass('in')
688
+
689
+ $element.attr('aria-expanded', isOpen)
690
+ $trigger
691
+ .toggleClass('collapsed', !isOpen)
692
+ .attr('aria-expanded', isOpen)
693
+ }
694
+
695
+ function getTargetFromTrigger($trigger) {
696
+ var href
697
+ var target = $trigger.attr('data-target')
698
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
699
+
700
+ return $(target)
701
+ }
702
+
703
+
704
+ // COLLAPSE PLUGIN DEFINITION
705
+ // ==========================
706
+
707
+ function Plugin(option) {
708
+ return this.each(function () {
709
+ var $this = $(this)
710
+ var data = $this.data('bs.collapse')
711
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
712
+
713
+ if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
714
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
715
+ if (typeof option == 'string') data[option]()
716
+ })
717
+ }
718
+
719
+ var old = $.fn.collapse
720
+
721
+ $.fn.collapse = Plugin
722
+ $.fn.collapse.Constructor = Collapse
723
+
724
+
725
+ // COLLAPSE NO CONFLICT
726
+ // ====================
727
+
728
+ $.fn.collapse.noConflict = function () {
729
+ $.fn.collapse = old
730
+ return this
731
+ }
732
+
733
+
734
+ // COLLAPSE DATA-API
735
+ // =================
736
+
737
+ $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
738
+ var $this = $(this)
739
+
740
+ if (!$this.attr('data-target')) e.preventDefault()
741
+
742
+ var $target = getTargetFromTrigger($this)
743
+ var data = $target.data('bs.collapse')
744
+ var option = data ? 'toggle' : $this.data()
745
+
746
+ Plugin.call($target, option)
747
+ })
748
+
749
+ }(jQuery);
750
+
751
+ /* ========================================================================
752
+ * Bootstrap: dropdown.js v3.3.7
753
+ * http://getbootstrap.com/javascript/#dropdowns
754
+ * ========================================================================
755
+ * Copyright 2011-2016 Twitter, Inc.
756
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
757
+ * ======================================================================== */
758
+
759
+
760
+ +function ($) {
761
+ 'use strict';
762
+
763
+ // DROPDOWN CLASS DEFINITION
764
+ // =========================
765
+
766
+ var backdrop = '.dropdown-backdrop'
767
+ var toggle = '[data-toggle="dropdown"]'
768
+ var Dropdown = function (element) {
769
+ $(element).on('click.bs.dropdown', this.toggle)
770
+ }
771
+
772
+ Dropdown.VERSION = '3.3.7'
773
+
774
+ function getParent($this) {
775
+ var selector = $this.attr('data-target')
776
+
777
+ if (!selector) {
778
+ selector = $this.attr('href')
779
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
780
+ }
781
+
782
+ var $parent = selector && $(selector)
783
+
784
+ return $parent && $parent.length ? $parent : $this.parent()
785
+ }
786
+
787
+ function clearMenus(e) {
788
+ if (e && e.which === 3) return
789
+ $(backdrop).remove()
790
+ $(toggle).each(function () {
791
+ var $this = $(this)
792
+ var $parent = getParent($this)
793
+ var relatedTarget = { relatedTarget: this }
794
+
795
+ if (!$parent.hasClass('open')) return
796
+
797
+ if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
798
+
799
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
800
+
801
+ if (e.isDefaultPrevented()) return
802
+
803
+ $this.attr('aria-expanded', 'false')
804
+ $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
805
+ })
806
+ }
807
+
808
+ Dropdown.prototype.toggle = function (e) {
809
+ var $this = $(this)
810
+
811
+ if ($this.is('.disabled, :disabled')) return
812
+
813
+ var $parent = getParent($this)
814
+ var isActive = $parent.hasClass('open')
815
+
816
+ clearMenus()
817
+
818
+ if (!isActive) {
819
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
820
+ // if mobile we use a backdrop because click events don't delegate
821
+ $(document.createElement('div'))
822
+ .addClass('dropdown-backdrop')
823
+ .insertAfter($(this))
824
+ .on('click', clearMenus)
825
+ }
826
+
827
+ var relatedTarget = { relatedTarget: this }
828
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
829
+
830
+ if (e.isDefaultPrevented()) return
831
+
832
+ $this
833
+ .trigger('focus')
834
+ .attr('aria-expanded', 'true')
835
+
836
+ $parent
837
+ .toggleClass('open')
838
+ .trigger($.Event('shown.bs.dropdown', relatedTarget))
839
+ }
840
+
841
+ return false
842
+ }
843
+
844
+ Dropdown.prototype.keydown = function (e) {
845
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
846
+
847
+ var $this = $(this)
848
+
849
+ e.preventDefault()
850
+ e.stopPropagation()
851
+
852
+ if ($this.is('.disabled, :disabled')) return
853
+
854
+ var $parent = getParent($this)
855
+ var isActive = $parent.hasClass('open')
856
+
857
+ if (!isActive && e.which != 27 || isActive && e.which == 27) {
858
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
859
+ return $this.trigger('click')
860
+ }
861
+
862
+ var desc = ' li:not(.disabled):visible a'
863
+ var $items = $parent.find('.dropdown-menu' + desc)
864
+
865
+ if (!$items.length) return
866
+
867
+ var index = $items.index(e.target)
868
+
869
+ if (e.which == 38 && index > 0) index-- // up
870
+ if (e.which == 40 && index < $items.length - 1) index++ // down
871
+ if (!~index) index = 0
872
+
873
+ $items.eq(index).trigger('focus')
874
+ }
875
+
876
+
877
+ // DROPDOWN PLUGIN DEFINITION
878
+ // ==========================
879
+
880
+ function Plugin(option) {
881
+ return this.each(function () {
882
+ var $this = $(this)
883
+ var data = $this.data('bs.dropdown')
884
+
885
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
886
+ if (typeof option == 'string') data[option].call($this)
887
+ })
888
+ }
889
+
890
+ var old = $.fn.dropdown
891
+
892
+ $.fn.dropdown = Plugin
893
+ $.fn.dropdown.Constructor = Dropdown
894
+
895
+
896
+ // DROPDOWN NO CONFLICT
897
+ // ====================
898
+
899
+ $.fn.dropdown.noConflict = function () {
900
+ $.fn.dropdown = old
901
+ return this
902
+ }
903
+
904
+
905
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
906
+ // ===================================
907
+
908
+ $(document)
909
+ .on('click.bs.dropdown.data-api', clearMenus)
910
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
911
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
912
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
913
+ .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
914
+
915
+ }(jQuery);
916
+
917
+ /* ========================================================================
918
+ * Bootstrap: modal.js v3.3.7
919
+ * http://getbootstrap.com/javascript/#modals
920
+ * ========================================================================
921
+ * Copyright 2011-2016 Twitter, Inc.
922
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
923
+ * ======================================================================== */
924
+
925
+
926
+ +function ($) {
927
+ 'use strict';
928
+
929
+ // MODAL CLASS DEFINITION
930
+ // ======================
931
+
932
+ var Modal = function (element, options) {
933
+ this.options = options
934
+ this.$body = $(document.body)
935
+ this.$element = $(element)
936
+ this.$dialog = this.$element.find('.modal-dialog')
937
+ this.$backdrop = null
938
+ this.isShown = null
939
+ this.originalBodyPad = null
940
+ this.scrollbarWidth = 0
941
+ this.ignoreBackdropClick = false
942
+
943
+ if (this.options.remote) {
944
+ this.$element
945
+ .find('.modal-content')
946
+ .load(this.options.remote, $.proxy(function () {
947
+ this.$element.trigger('loaded.bs.modal')
948
+ }, this))
949
+ }
950
+ }
951
+
952
+ Modal.VERSION = '3.3.7'
953
+
954
+ Modal.TRANSITION_DURATION = 300
955
+ Modal.BACKDROP_TRANSITION_DURATION = 150
956
+
957
+ Modal.DEFAULTS = {
958
+ backdrop: true,
959
+ keyboard: true,
960
+ show: true
961
+ }
962
+
963
+ Modal.prototype.toggle = function (_relatedTarget) {
964
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
965
+ }
966
+
967
+ Modal.prototype.show = function (_relatedTarget) {
968
+ var that = this
969
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
970
+
971
+ this.$element.trigger(e)
972
+
973
+ if (this.isShown || e.isDefaultPrevented()) return
974
+
975
+ this.isShown = true
976
+
977
+ this.checkScrollbar()
978
+ this.setScrollbar()
979
+ this.$body.addClass('modal-open')
980
+
981
+ this.escape()
982
+ this.resize()
983
+
984
+ this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
985
+
986
+ this.$dialog.on('mousedown.dismiss.bs.modal', function () {
987
+ that.$element.one('mouseup.dismiss.bs.modal', function (e) {
988
+ if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
989
+ })
990
+ })
991
+
992
+ this.backdrop(function () {
993
+ var transition = $.support.transition && that.$element.hasClass('fade')
994
+
995
+ if (!that.$element.parent().length) {
996
+ that.$element.appendTo(that.$body) // don't move modals dom position
997
+ }
998
+
999
+ that.$element
1000
+ .show()
1001
+ .scrollTop(0)
1002
+
1003
+ that.adjustDialog()
1004
+
1005
+ if (transition) {
1006
+ that.$element[0].offsetWidth // force reflow
1007
+ }
1008
+
1009
+ that.$element.addClass('in')
1010
+
1011
+ that.enforceFocus()
1012
+
1013
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
1014
+
1015
+ transition ?
1016
+ that.$dialog // wait for modal to slide in
1017
+ .one('bsTransitionEnd', function () {
1018
+ that.$element.trigger('focus').trigger(e)
1019
+ })
1020
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1021
+ that.$element.trigger('focus').trigger(e)
1022
+ })
1023
+ }
1024
+
1025
+ Modal.prototype.hide = function (e) {
1026
+ if (e) e.preventDefault()
1027
+
1028
+ e = $.Event('hide.bs.modal')
1029
+
1030
+ this.$element.trigger(e)
1031
+
1032
+ if (!this.isShown || e.isDefaultPrevented()) return
1033
+
1034
+ this.isShown = false
1035
+
1036
+ this.escape()
1037
+ this.resize()
1038
+
1039
+ $(document).off('focusin.bs.modal')
1040
+
1041
+ this.$element
1042
+ .removeClass('in')
1043
+ .off('click.dismiss.bs.modal')
1044
+ .off('mouseup.dismiss.bs.modal')
1045
+
1046
+ this.$dialog.off('mousedown.dismiss.bs.modal')
1047
+
1048
+ $.support.transition && this.$element.hasClass('fade') ?
1049
+ this.$element
1050
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
1051
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1052
+ this.hideModal()
1053
+ }
1054
+
1055
+ Modal.prototype.enforceFocus = function () {
1056
+ $(document)
1057
+ .off('focusin.bs.modal') // guard against infinite focus loop
1058
+ .on('focusin.bs.modal', $.proxy(function (e) {
1059
+ if (document !== e.target &&
1060
+ this.$element[0] !== e.target &&
1061
+ !this.$element.has(e.target).length) {
1062
+ this.$element.trigger('focus')
1063
+ }
1064
+ }, this))
1065
+ }
1066
+
1067
+ Modal.prototype.escape = function () {
1068
+ if (this.isShown && this.options.keyboard) {
1069
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
1070
+ e.which == 27 && this.hide()
1071
+ }, this))
1072
+ } else if (!this.isShown) {
1073
+ this.$element.off('keydown.dismiss.bs.modal')
1074
+ }
1075
+ }
1076
+
1077
+ Modal.prototype.resize = function () {
1078
+ if (this.isShown) {
1079
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
1080
+ } else {
1081
+ $(window).off('resize.bs.modal')
1082
+ }
1083
+ }
1084
+
1085
+ Modal.prototype.hideModal = function () {
1086
+ var that = this
1087
+ this.$element.hide()
1088
+ this.backdrop(function () {
1089
+ that.$body.removeClass('modal-open')
1090
+ that.resetAdjustments()
1091
+ that.resetScrollbar()
1092
+ that.$element.trigger('hidden.bs.modal')
1093
+ })
1094
+ }
1095
+
1096
+ Modal.prototype.removeBackdrop = function () {
1097
+ this.$backdrop && this.$backdrop.remove()
1098
+ this.$backdrop = null
1099
+ }
1100
+
1101
+ Modal.prototype.backdrop = function (callback) {
1102
+ var that = this
1103
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
1104
+
1105
+ if (this.isShown && this.options.backdrop) {
1106
+ var doAnimate = $.support.transition && animate
1107
+
1108
+ this.$backdrop = $(document.createElement('div'))
1109
+ .addClass('modal-backdrop ' + animate)
1110
+ .appendTo(this.$body)
1111
+
1112
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
1113
+ if (this.ignoreBackdropClick) {
1114
+ this.ignoreBackdropClick = false
1115
+ return
1116
+ }
1117
+ if (e.target !== e.currentTarget) return
1118
+ this.options.backdrop == 'static'
1119
+ ? this.$element[0].focus()
1120
+ : this.hide()
1121
+ }, this))
1122
+
1123
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
1124
+
1125
+ this.$backdrop.addClass('in')
1126
+
1127
+ if (!callback) return
1128
+
1129
+ doAnimate ?
1130
+ this.$backdrop
1131
+ .one('bsTransitionEnd', callback)
1132
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1133
+ callback()
1134
+
1135
+ } else if (!this.isShown && this.$backdrop) {
1136
+ this.$backdrop.removeClass('in')
1137
+
1138
+ var callbackRemove = function () {
1139
+ that.removeBackdrop()
1140
+ callback && callback()
1141
+ }
1142
+ $.support.transition && this.$element.hasClass('fade') ?
1143
+ this.$backdrop
1144
+ .one('bsTransitionEnd', callbackRemove)
1145
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1146
+ callbackRemove()
1147
+
1148
+ } else if (callback) {
1149
+ callback()
1150
+ }
1151
+ }
1152
+
1153
+ // these following methods are used to handle overflowing modals
1154
+
1155
+ Modal.prototype.handleUpdate = function () {
1156
+ this.adjustDialog()
1157
+ }
1158
+
1159
+ Modal.prototype.adjustDialog = function () {
1160
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1161
+
1162
+ this.$element.css({
1163
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1164
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1165
+ })
1166
+ }
1167
+
1168
+ Modal.prototype.resetAdjustments = function () {
1169
+ this.$element.css({
1170
+ paddingLeft: '',
1171
+ paddingRight: ''
1172
+ })
1173
+ }
1174
+
1175
+ Modal.prototype.checkScrollbar = function () {
1176
+ var fullWindowWidth = window.innerWidth
1177
+ if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
1178
+ var documentElementRect = document.documentElement.getBoundingClientRect()
1179
+ fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
1180
+ }
1181
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
1182
+ this.scrollbarWidth = this.measureScrollbar()
1183
+ }
1184
+
1185
+ Modal.prototype.setScrollbar = function () {
1186
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1187
+ this.originalBodyPad = document.body.style.paddingRight || ''
1188
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
1189
+ }
1190
+
1191
+ Modal.prototype.resetScrollbar = function () {
1192
+ this.$body.css('padding-right', this.originalBodyPad)
1193
+ }
1194
+
1195
+ Modal.prototype.measureScrollbar = function () { // thx walsh
1196
+ var scrollDiv = document.createElement('div')
1197
+ scrollDiv.className = 'modal-scrollbar-measure'
1198
+ this.$body.append(scrollDiv)
1199
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
1200
+ this.$body[0].removeChild(scrollDiv)
1201
+ return scrollbarWidth
1202
+ }
1203
+
1204
+
1205
+ // MODAL PLUGIN DEFINITION
1206
+ // =======================
1207
+
1208
+ function Plugin(option, _relatedTarget) {
1209
+ return this.each(function () {
1210
+ var $this = $(this)
1211
+ var data = $this.data('bs.modal')
1212
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1213
+
1214
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
1215
+ if (typeof option == 'string') data[option](_relatedTarget)
1216
+ else if (options.show) data.show(_relatedTarget)
1217
+ })
1218
+ }
1219
+
1220
+ var old = $.fn.modal
1221
+
1222
+ $.fn.modal = Plugin
1223
+ $.fn.modal.Constructor = Modal
1224
+
1225
+
1226
+ // MODAL NO CONFLICT
1227
+ // =================
1228
+
1229
+ $.fn.modal.noConflict = function () {
1230
+ $.fn.modal = old
1231
+ return this
1232
+ }
1233
+
1234
+
1235
+ // MODAL DATA-API
1236
+ // ==============
1237
+
1238
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1239
+ var $this = $(this)
1240
+ var href = $this.attr('href')
1241
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
1242
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1243
+
1244
+ if ($this.is('a')) e.preventDefault()
1245
+
1246
+ $target.one('show.bs.modal', function (showEvent) {
1247
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
1248
+ $target.one('hidden.bs.modal', function () {
1249
+ $this.is(':visible') && $this.trigger('focus')
1250
+ })
1251
+ })
1252
+ Plugin.call($target, option, this)
1253
+ })
1254
+
1255
+ }(jQuery);
1256
+
1257
+ /* ========================================================================
1258
+ * Bootstrap: tooltip.js v3.3.7
1259
+ * http://getbootstrap.com/javascript/#tooltip
1260
+ * Inspired by the original jQuery.tipsy by Jason Frame
1261
+ * ========================================================================
1262
+ * Copyright 2011-2016 Twitter, Inc.
1263
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1264
+ * ======================================================================== */
1265
+
1266
+
1267
+ +function ($) {
1268
+ 'use strict';
1269
+
1270
+ // TOOLTIP PUBLIC CLASS DEFINITION
1271
+ // ===============================
1272
+
1273
+ var Tooltip = function (element, options) {
1274
+ this.type = null
1275
+ this.options = null
1276
+ this.enabled = null
1277
+ this.timeout = null
1278
+ this.hoverState = null
1279
+ this.$element = null
1280
+ this.inState = null
1281
+
1282
+ this.init('tooltip', element, options)
1283
+ }
1284
+
1285
+ Tooltip.VERSION = '3.3.7'
1286
+
1287
+ Tooltip.TRANSITION_DURATION = 150
1288
+
1289
+ Tooltip.DEFAULTS = {
1290
+ animation: true,
1291
+ placement: 'top',
1292
+ selector: false,
1293
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1294
+ trigger: 'hover focus',
1295
+ title: '',
1296
+ delay: 0,
1297
+ html: false,
1298
+ container: false,
1299
+ viewport: {
1300
+ selector: 'body',
1301
+ padding: 0
1302
+ }
1303
+ }
1304
+
1305
+ Tooltip.prototype.init = function (type, element, options) {
1306
+ this.enabled = true
1307
+ this.type = type
1308
+ this.$element = $(element)
1309
+ this.options = this.getOptions(options)
1310
+ this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1311
+ this.inState = { click: false, hover: false, focus: false }
1312
+
1313
+ if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1314
+ throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1315
+ }
1316
+
1317
+ var triggers = this.options.trigger.split(' ')
1318
+
1319
+ for (var i = triggers.length; i--;) {
1320
+ var trigger = triggers[i]
1321
+
1322
+ if (trigger == 'click') {
1323
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1324
+ } else if (trigger != 'manual') {
1325
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
1326
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1327
+
1328
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1329
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1330
+ }
1331
+ }
1332
+
1333
+ this.options.selector ?
1334
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1335
+ this.fixTitle()
1336
+ }
1337
+
1338
+ Tooltip.prototype.getDefaults = function () {
1339
+ return Tooltip.DEFAULTS
1340
+ }
1341
+
1342
+ Tooltip.prototype.getOptions = function (options) {
1343
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
1344
+
1345
+ if (options.delay && typeof options.delay == 'number') {
1346
+ options.delay = {
1347
+ show: options.delay,
1348
+ hide: options.delay
1349
+ }
1350
+ }
1351
+
1352
+ return options
1353
+ }
1354
+
1355
+ Tooltip.prototype.getDelegateOptions = function () {
1356
+ var options = {}
1357
+ var defaults = this.getDefaults()
1358
+
1359
+ this._options && $.each(this._options, function (key, value) {
1360
+ if (defaults[key] != value) options[key] = value
1361
+ })
1362
+
1363
+ return options
1364
+ }
1365
+
1366
+ Tooltip.prototype.enter = function (obj) {
1367
+ var self = obj instanceof this.constructor ?
1368
+ obj : $(obj.currentTarget).data('bs.' + this.type)
1369
+
1370
+ if (!self) {
1371
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1372
+ $(obj.currentTarget).data('bs.' + this.type, self)
1373
+ }
1374
+
1375
+ if (obj instanceof $.Event) {
1376
+ self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1377
+ }
1378
+
1379
+ if (self.tip().hasClass('in') || self.hoverState == 'in') {
1380
+ self.hoverState = 'in'
1381
+ return
1382
+ }
1383
+
1384
+ clearTimeout(self.timeout)
1385
+
1386
+ self.hoverState = 'in'
1387
+
1388
+ if (!self.options.delay || !self.options.delay.show) return self.show()
1389
+
1390
+ self.timeout = setTimeout(function () {
1391
+ if (self.hoverState == 'in') self.show()
1392
+ }, self.options.delay.show)
1393
+ }
1394
+
1395
+ Tooltip.prototype.isInStateTrue = function () {
1396
+ for (var key in this.inState) {
1397
+ if (this.inState[key]) return true
1398
+ }
1399
+
1400
+ return false
1401
+ }
1402
+
1403
+ Tooltip.prototype.leave = function (obj) {
1404
+ var self = obj instanceof this.constructor ?
1405
+ obj : $(obj.currentTarget).data('bs.' + this.type)
1406
+
1407
+ if (!self) {
1408
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1409
+ $(obj.currentTarget).data('bs.' + this.type, self)
1410
+ }
1411
+
1412
+ if (obj instanceof $.Event) {
1413
+ self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1414
+ }
1415
+
1416
+ if (self.isInStateTrue()) return
1417
+
1418
+ clearTimeout(self.timeout)
1419
+
1420
+ self.hoverState = 'out'
1421
+
1422
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
1423
+
1424
+ self.timeout = setTimeout(function () {
1425
+ if (self.hoverState == 'out') self.hide()
1426
+ }, self.options.delay.hide)
1427
+ }
1428
+
1429
+ Tooltip.prototype.show = function () {
1430
+ var e = $.Event('show.bs.' + this.type)
1431
+
1432
+ if (this.hasContent() && this.enabled) {
1433
+ this.$element.trigger(e)
1434
+
1435
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
1436
+ if (e.isDefaultPrevented() || !inDom) return
1437
+ var that = this
1438
+
1439
+ var $tip = this.tip()
1440
+
1441
+ var tipId = this.getUID(this.type)
1442
+
1443
+ this.setContent()
1444
+ $tip.attr('id', tipId)
1445
+ this.$element.attr('aria-describedby', tipId)
1446
+
1447
+ if (this.options.animation) $tip.addClass('fade')
1448
+
1449
+ var placement = typeof this.options.placement == 'function' ?
1450
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
1451
+ this.options.placement
1452
+
1453
+ var autoToken = /\s?auto?\s?/i
1454
+ var autoPlace = autoToken.test(placement)
1455
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1456
+
1457
+ $tip
1458
+ .detach()
1459
+ .css({ top: 0, left: 0, display: 'block' })
1460
+ .addClass(placement)
1461
+ .data('bs.' + this.type, this)
1462
+
1463
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1464
+ this.$element.trigger('inserted.bs.' + this.type)
1465
+
1466
+ var pos = this.getPosition()
1467
+ var actualWidth = $tip[0].offsetWidth
1468
+ var actualHeight = $tip[0].offsetHeight
1469
+
1470
+ if (autoPlace) {
1471
+ var orgPlacement = placement
1472
+ var viewportDim = this.getPosition(this.$viewport)
1473
+
1474
+ placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
1475
+ placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
1476
+ placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
1477
+ placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
1478
+ placement
1479
+
1480
+ $tip
1481
+ .removeClass(orgPlacement)
1482
+ .addClass(placement)
1483
+ }
1484
+
1485
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1486
+
1487
+ this.applyPlacement(calculatedOffset, placement)
1488
+
1489
+ var complete = function () {
1490
+ var prevHoverState = that.hoverState
1491
+ that.$element.trigger('shown.bs.' + that.type)
1492
+ that.hoverState = null
1493
+
1494
+ if (prevHoverState == 'out') that.leave(that)
1495
+ }
1496
+
1497
+ $.support.transition && this.$tip.hasClass('fade') ?
1498
+ $tip
1499
+ .one('bsTransitionEnd', complete)
1500
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1501
+ complete()
1502
+ }
1503
+ }
1504
+
1505
+ Tooltip.prototype.applyPlacement = function (offset, placement) {
1506
+ var $tip = this.tip()
1507
+ var width = $tip[0].offsetWidth
1508
+ var height = $tip[0].offsetHeight
1509
+
1510
+ // manually read margins because getBoundingClientRect includes difference
1511
+ var marginTop = parseInt($tip.css('margin-top'), 10)
1512
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
1513
+
1514
+ // we must check for NaN for ie 8/9
1515
+ if (isNaN(marginTop)) marginTop = 0
1516
+ if (isNaN(marginLeft)) marginLeft = 0
1517
+
1518
+ offset.top += marginTop
1519
+ offset.left += marginLeft
1520
+
1521
+ // $.fn.offset doesn't round pixel values
1522
+ // so we use setOffset directly with our own function B-0
1523
+ $.offset.setOffset($tip[0], $.extend({
1524
+ using: function (props) {
1525
+ $tip.css({
1526
+ top: Math.round(props.top),
1527
+ left: Math.round(props.left)
1528
+ })
1529
+ }
1530
+ }, offset), 0)
1531
+
1532
+ $tip.addClass('in')
1533
+
1534
+ // check to see if placing tip in new offset caused the tip to resize itself
1535
+ var actualWidth = $tip[0].offsetWidth
1536
+ var actualHeight = $tip[0].offsetHeight
1537
+
1538
+ if (placement == 'top' && actualHeight != height) {
1539
+ offset.top = offset.top + height - actualHeight
1540
+ }
1541
+
1542
+ var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
1543
+
1544
+ if (delta.left) offset.left += delta.left
1545
+ else offset.top += delta.top
1546
+
1547
+ var isVertical = /top|bottom/.test(placement)
1548
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
1549
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
1550
+
1551
+ $tip.offset(offset)
1552
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1553
+ }
1554
+
1555
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1556
+ this.arrow()
1557
+ .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1558
+ .css(isVertical ? 'top' : 'left', '')
1559
+ }
1560
+
1561
+ Tooltip.prototype.setContent = function () {
1562
+ var $tip = this.tip()
1563
+ var title = this.getTitle()
1564
+
1565
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1566
+ $tip.removeClass('fade in top bottom left right')
1567
+ }
1568
+
1569
+ Tooltip.prototype.hide = function (callback) {
1570
+ var that = this
1571
+ var $tip = $(this.$tip)
1572
+ var e = $.Event('hide.bs.' + this.type)
1573
+
1574
+ function complete() {
1575
+ if (that.hoverState != 'in') $tip.detach()
1576
+ if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1577
+ that.$element
1578
+ .removeAttr('aria-describedby')
1579
+ .trigger('hidden.bs.' + that.type)
1580
+ }
1581
+ callback && callback()
1582
+ }
1583
+
1584
+ this.$element.trigger(e)
1585
+
1586
+ if (e.isDefaultPrevented()) return
1587
+
1588
+ $tip.removeClass('in')
1589
+
1590
+ $.support.transition && $tip.hasClass('fade') ?
1591
+ $tip
1592
+ .one('bsTransitionEnd', complete)
1593
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1594
+ complete()
1595
+
1596
+ this.hoverState = null
1597
+
1598
+ return this
1599
+ }
1600
+
1601
+ Tooltip.prototype.fixTitle = function () {
1602
+ var $e = this.$element
1603
+ if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1604
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1605
+ }
1606
+ }
1607
+
1608
+ Tooltip.prototype.hasContent = function () {
1609
+ return this.getTitle()
1610
+ }
1611
+
1612
+ Tooltip.prototype.getPosition = function ($element) {
1613
+ $element = $element || this.$element
1614
+
1615
+ var el = $element[0]
1616
+ var isBody = el.tagName == 'BODY'
1617
+
1618
+ var elRect = el.getBoundingClientRect()
1619
+ if (elRect.width == null) {
1620
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1621
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1622
+ }
1623
+ var isSvg = window.SVGElement && el instanceof window.SVGElement
1624
+ // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1625
+ // See https://github.com/twbs/bootstrap/issues/20280
1626
+ var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1627
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1628
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1629
+
1630
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
1631
+ }
1632
+
1633
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1634
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1635
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1636
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1637
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1638
+
1639
+ }
1640
+
1641
+ Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
1642
+ var delta = { top: 0, left: 0 }
1643
+ if (!this.$viewport) return delta
1644
+
1645
+ var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
1646
+ var viewportDimensions = this.getPosition(this.$viewport)
1647
+
1648
+ if (/right|left/.test(placement)) {
1649
+ var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
1650
+ var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
1651
+ if (topEdgeOffset < viewportDimensions.top) { // top overflow
1652
+ delta.top = viewportDimensions.top - topEdgeOffset
1653
+ } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
1654
+ delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
1655
+ }
1656
+ } else {
1657
+ var leftEdgeOffset = pos.left - viewportPadding
1658
+ var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1659
+ if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1660
+ delta.left = viewportDimensions.left - leftEdgeOffset
1661
+ } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1662
+ delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1663
+ }
1664
+ }
1665
+
1666
+ return delta
1667
+ }
1668
+
1669
+ Tooltip.prototype.getTitle = function () {
1670
+ var title
1671
+ var $e = this.$element
1672
+ var o = this.options
1673
+
1674
+ title = $e.attr('data-original-title')
1675
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1676
+
1677
+ return title
1678
+ }
1679
+
1680
+ Tooltip.prototype.getUID = function (prefix) {
1681
+ do prefix += ~~(Math.random() * 1000000)
1682
+ while (document.getElementById(prefix))
1683
+ return prefix
1684
+ }
1685
+
1686
+ Tooltip.prototype.tip = function () {
1687
+ if (!this.$tip) {
1688
+ this.$tip = $(this.options.template)
1689
+ if (this.$tip.length != 1) {
1690
+ throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1691
+ }
1692
+ }
1693
+ return this.$tip
1694
+ }
1695
+
1696
+ Tooltip.prototype.arrow = function () {
1697
+ return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
1698
+ }
1699
+
1700
+ Tooltip.prototype.enable = function () {
1701
+ this.enabled = true
1702
+ }
1703
+
1704
+ Tooltip.prototype.disable = function () {
1705
+ this.enabled = false
1706
+ }
1707
+
1708
+ Tooltip.prototype.toggleEnabled = function () {
1709
+ this.enabled = !this.enabled
1710
+ }
1711
+
1712
+ Tooltip.prototype.toggle = function (e) {
1713
+ var self = this
1714
+ if (e) {
1715
+ self = $(e.currentTarget).data('bs.' + this.type)
1716
+ if (!self) {
1717
+ self = new this.constructor(e.currentTarget, this.getDelegateOptions())
1718
+ $(e.currentTarget).data('bs.' + this.type, self)
1719
+ }
1720
+ }
1721
+
1722
+ if (e) {
1723
+ self.inState.click = !self.inState.click
1724
+ if (self.isInStateTrue()) self.enter(self)
1725
+ else self.leave(self)
1726
+ } else {
1727
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1728
+ }
1729
+ }
1730
+
1731
+ Tooltip.prototype.destroy = function () {
1732
+ var that = this
1733
+ clearTimeout(this.timeout)
1734
+ this.hide(function () {
1735
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
1736
+ if (that.$tip) {
1737
+ that.$tip.detach()
1738
+ }
1739
+ that.$tip = null
1740
+ that.$arrow = null
1741
+ that.$viewport = null
1742
+ that.$element = null
1743
+ })
1744
+ }
1745
+
1746
+
1747
+ // TOOLTIP PLUGIN DEFINITION
1748
+ // =========================
1749
+
1750
+ function Plugin(option) {
1751
+ return this.each(function () {
1752
+ var $this = $(this)
1753
+ var data = $this.data('bs.tooltip')
1754
+ var options = typeof option == 'object' && option
1755
+
1756
+ if (!data && /destroy|hide/.test(option)) return
1757
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1758
+ if (typeof option == 'string') data[option]()
1759
+ })
1760
+ }
1761
+
1762
+ var old = $.fn.tooltip
1763
+
1764
+ $.fn.tooltip = Plugin
1765
+ $.fn.tooltip.Constructor = Tooltip
1766
+
1767
+
1768
+ // TOOLTIP NO CONFLICT
1769
+ // ===================
1770
+
1771
+ $.fn.tooltip.noConflict = function () {
1772
+ $.fn.tooltip = old
1773
+ return this
1774
+ }
1775
+
1776
+ }(jQuery);
1777
+
1778
+ /* ========================================================================
1779
+ * Bootstrap: popover.js v3.3.7
1780
+ * http://getbootstrap.com/javascript/#popovers
1781
+ * ========================================================================
1782
+ * Copyright 2011-2016 Twitter, Inc.
1783
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1784
+ * ======================================================================== */
1785
+
1786
+
1787
+ +function ($) {
1788
+ 'use strict';
1789
+
1790
+ // POPOVER PUBLIC CLASS DEFINITION
1791
+ // ===============================
1792
+
1793
+ var Popover = function (element, options) {
1794
+ this.init('popover', element, options)
1795
+ }
1796
+
1797
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1798
+
1799
+ Popover.VERSION = '3.3.7'
1800
+
1801
+ Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1802
+ placement: 'right',
1803
+ trigger: 'click',
1804
+ content: '',
1805
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1806
+ })
1807
+
1808
+
1809
+ // NOTE: POPOVER EXTENDS tooltip.js
1810
+ // ================================
1811
+
1812
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1813
+
1814
+ Popover.prototype.constructor = Popover
1815
+
1816
+ Popover.prototype.getDefaults = function () {
1817
+ return Popover.DEFAULTS
1818
+ }
1819
+
1820
+ Popover.prototype.setContent = function () {
1821
+ var $tip = this.tip()
1822
+ var title = this.getTitle()
1823
+ var content = this.getContent()
1824
+
1825
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1826
+ $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
1827
+ this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
1828
+ ](content)
1829
+
1830
+ $tip.removeClass('fade top bottom left right in')
1831
+
1832
+ // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
1833
+ // this manually by checking the contents.
1834
+ if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
1835
+ }
1836
+
1837
+ Popover.prototype.hasContent = function () {
1838
+ return this.getTitle() || this.getContent()
1839
+ }
1840
+
1841
+ Popover.prototype.getContent = function () {
1842
+ var $e = this.$element
1843
+ var o = this.options
1844
+
1845
+ return $e.attr('data-content')
1846
+ || (typeof o.content == 'function' ?
1847
+ o.content.call($e[0]) :
1848
+ o.content)
1849
+ }
1850
+
1851
+ Popover.prototype.arrow = function () {
1852
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
1853
+ }
1854
+
1855
+
1856
+ // POPOVER PLUGIN DEFINITION
1857
+ // =========================
1858
+
1859
+ function Plugin(option) {
1860
+ return this.each(function () {
1861
+ var $this = $(this)
1862
+ var data = $this.data('bs.popover')
1863
+ var options = typeof option == 'object' && option
1864
+
1865
+ if (!data && /destroy|hide/.test(option)) return
1866
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1867
+ if (typeof option == 'string') data[option]()
1868
+ })
1869
+ }
1870
+
1871
+ var old = $.fn.popover
1872
+
1873
+ $.fn.popover = Plugin
1874
+ $.fn.popover.Constructor = Popover
1875
+
1876
+
1877
+ // POPOVER NO CONFLICT
1878
+ // ===================
1879
+
1880
+ $.fn.popover.noConflict = function () {
1881
+ $.fn.popover = old
1882
+ return this
1883
+ }
1884
+
1885
+ }(jQuery);
1886
+
1887
+ /* ========================================================================
1888
+ * Bootstrap: scrollspy.js v3.3.7
1889
+ * http://getbootstrap.com/javascript/#scrollspy
1890
+ * ========================================================================
1891
+ * Copyright 2011-2016 Twitter, Inc.
1892
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1893
+ * ======================================================================== */
1894
+
1895
+
1896
+ +function ($) {
1897
+ 'use strict';
1898
+
1899
+ // SCROLLSPY CLASS DEFINITION
1900
+ // ==========================
1901
+
1902
+ function ScrollSpy(element, options) {
1903
+ this.$body = $(document.body)
1904
+ this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
1905
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
1906
+ this.selector = (this.options.target || '') + ' .nav li > a'
1907
+ this.offsets = []
1908
+ this.targets = []
1909
+ this.activeTarget = null
1910
+ this.scrollHeight = 0
1911
+
1912
+ this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
1913
+ this.refresh()
1914
+ this.process()
1915
+ }
1916
+
1917
+ ScrollSpy.VERSION = '3.3.7'
1918
+
1919
+ ScrollSpy.DEFAULTS = {
1920
+ offset: 10
1921
+ }
1922
+
1923
+ ScrollSpy.prototype.getScrollHeight = function () {
1924
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
1925
+ }
1926
+
1927
+ ScrollSpy.prototype.refresh = function () {
1928
+ var that = this
1929
+ var offsetMethod = 'offset'
1930
+ var offsetBase = 0
1931
+
1932
+ this.offsets = []
1933
+ this.targets = []
1934
+ this.scrollHeight = this.getScrollHeight()
1935
+
1936
+ if (!$.isWindow(this.$scrollElement[0])) {
1937
+ offsetMethod = 'position'
1938
+ offsetBase = this.$scrollElement.scrollTop()
1939
+ }
1940
+
1941
+ this.$body
1942
+ .find(this.selector)
1943
+ .map(function () {
1944
+ var $el = $(this)
1945
+ var href = $el.data('target') || $el.attr('href')
1946
+ var $href = /^#./.test(href) && $(href)
1947
+
1948
+ return ($href
1949
+ && $href.length
1950
+ && $href.is(':visible')
1951
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
1952
+ })
1953
+ .sort(function (a, b) { return a[0] - b[0] })
1954
+ .each(function () {
1955
+ that.offsets.push(this[0])
1956
+ that.targets.push(this[1])
1957
+ })
1958
+ }
1959
+
1960
+ ScrollSpy.prototype.process = function () {
1961
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1962
+ var scrollHeight = this.getScrollHeight()
1963
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
1964
+ var offsets = this.offsets
1965
+ var targets = this.targets
1966
+ var activeTarget = this.activeTarget
1967
+ var i
1968
+
1969
+ if (this.scrollHeight != scrollHeight) {
1970
+ this.refresh()
1971
+ }
1972
+
1973
+ if (scrollTop >= maxScroll) {
1974
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
1975
+ }
1976
+
1977
+ if (activeTarget && scrollTop < offsets[0]) {
1978
+ this.activeTarget = null
1979
+ return this.clear()
1980
+ }
1981
+
1982
+ for (i = offsets.length; i--;) {
1983
+ activeTarget != targets[i]
1984
+ && scrollTop >= offsets[i]
1985
+ && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
1986
+ && this.activate(targets[i])
1987
+ }
1988
+ }
1989
+
1990
+ ScrollSpy.prototype.activate = function (target) {
1991
+ this.activeTarget = target
1992
+
1993
+ this.clear()
1994
+
1995
+ var selector = this.selector +
1996
+ '[data-target="' + target + '"],' +
1997
+ this.selector + '[href="' + target + '"]'
1998
+
1999
+ var active = $(selector)
2000
+ .parents('li')
2001
+ .addClass('active')
2002
+
2003
+ if (active.parent('.dropdown-menu').length) {
2004
+ active = active
2005
+ .closest('li.dropdown')
2006
+ .addClass('active')
2007
+ }
2008
+
2009
+ active.trigger('activate.bs.scrollspy')
2010
+ }
2011
+
2012
+ ScrollSpy.prototype.clear = function () {
2013
+ $(this.selector)
2014
+ .parentsUntil(this.options.target, '.active')
2015
+ .removeClass('active')
2016
+ }
2017
+
2018
+
2019
+ // SCROLLSPY PLUGIN DEFINITION
2020
+ // ===========================
2021
+
2022
+ function Plugin(option) {
2023
+ return this.each(function () {
2024
+ var $this = $(this)
2025
+ var data = $this.data('bs.scrollspy')
2026
+ var options = typeof option == 'object' && option
2027
+
2028
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
2029
+ if (typeof option == 'string') data[option]()
2030
+ })
2031
+ }
2032
+
2033
+ var old = $.fn.scrollspy
2034
+
2035
+ $.fn.scrollspy = Plugin
2036
+ $.fn.scrollspy.Constructor = ScrollSpy
2037
+
2038
+
2039
+ // SCROLLSPY NO CONFLICT
2040
+ // =====================
2041
+
2042
+ $.fn.scrollspy.noConflict = function () {
2043
+ $.fn.scrollspy = old
2044
+ return this
2045
+ }
2046
+
2047
+
2048
+ // SCROLLSPY DATA-API
2049
+ // ==================
2050
+
2051
+ $(window).on('load.bs.scrollspy.data-api', function () {
2052
+ $('[data-spy="scroll"]').each(function () {
2053
+ var $spy = $(this)
2054
+ Plugin.call($spy, $spy.data())
2055
+ })
2056
+ })
2057
+
2058
+ }(jQuery);
2059
+
2060
+ /* ========================================================================
2061
+ * Bootstrap: tab.js v3.3.7
2062
+ * http://getbootstrap.com/javascript/#tabs
2063
+ * ========================================================================
2064
+ * Copyright 2011-2016 Twitter, Inc.
2065
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2066
+ * ======================================================================== */
2067
+
2068
+
2069
+ +function ($) {
2070
+ 'use strict';
2071
+
2072
+ // TAB CLASS DEFINITION
2073
+ // ====================
2074
+
2075
+ var Tab = function (element) {
2076
+ // jscs:disable requireDollarBeforejQueryAssignment
2077
+ this.element = $(element)
2078
+ // jscs:enable requireDollarBeforejQueryAssignment
2079
+ }
2080
+
2081
+ Tab.VERSION = '3.3.7'
2082
+
2083
+ Tab.TRANSITION_DURATION = 150
2084
+
2085
+ Tab.prototype.show = function () {
2086
+ var $this = this.element
2087
+ var $ul = $this.closest('ul:not(.dropdown-menu)')
2088
+ var selector = $this.data('target')
2089
+
2090
+ if (!selector) {
2091
+ selector = $this.attr('href')
2092
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
2093
+ }
2094
+
2095
+ if ($this.parent('li').hasClass('active')) return
2096
+
2097
+ var $previous = $ul.find('.active:last a')
2098
+ var hideEvent = $.Event('hide.bs.tab', {
2099
+ relatedTarget: $this[0]
2100
+ })
2101
+ var showEvent = $.Event('show.bs.tab', {
2102
+ relatedTarget: $previous[0]
2103
+ })
2104
+
2105
+ $previous.trigger(hideEvent)
2106
+ $this.trigger(showEvent)
2107
+
2108
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
2109
+
2110
+ var $target = $(selector)
2111
+
2112
+ this.activate($this.closest('li'), $ul)
2113
+ this.activate($target, $target.parent(), function () {
2114
+ $previous.trigger({
2115
+ type: 'hidden.bs.tab',
2116
+ relatedTarget: $this[0]
2117
+ })
2118
+ $this.trigger({
2119
+ type: 'shown.bs.tab',
2120
+ relatedTarget: $previous[0]
2121
+ })
2122
+ })
2123
+ }
2124
+
2125
+ Tab.prototype.activate = function (element, container, callback) {
2126
+ var $active = container.find('> .active')
2127
+ var transition = callback
2128
+ && $.support.transition
2129
+ && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
2130
+
2131
+ function next() {
2132
+ $active
2133
+ .removeClass('active')
2134
+ .find('> .dropdown-menu > .active')
2135
+ .removeClass('active')
2136
+ .end()
2137
+ .find('[data-toggle="tab"]')
2138
+ .attr('aria-expanded', false)
2139
+
2140
+ element
2141
+ .addClass('active')
2142
+ .find('[data-toggle="tab"]')
2143
+ .attr('aria-expanded', true)
2144
+
2145
+ if (transition) {
2146
+ element[0].offsetWidth // reflow for transition
2147
+ element.addClass('in')
2148
+ } else {
2149
+ element.removeClass('fade')
2150
+ }
2151
+
2152
+ if (element.parent('.dropdown-menu').length) {
2153
+ element
2154
+ .closest('li.dropdown')
2155
+ .addClass('active')
2156
+ .end()
2157
+ .find('[data-toggle="tab"]')
2158
+ .attr('aria-expanded', true)
2159
+ }
2160
+
2161
+ callback && callback()
2162
+ }
2163
+
2164
+ $active.length && transition ?
2165
+ $active
2166
+ .one('bsTransitionEnd', next)
2167
+ .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
2168
+ next()
2169
+
2170
+ $active.removeClass('in')
2171
+ }
2172
+
2173
+
2174
+ // TAB PLUGIN DEFINITION
2175
+ // =====================
2176
+
2177
+ function Plugin(option) {
2178
+ return this.each(function () {
2179
+ var $this = $(this)
2180
+ var data = $this.data('bs.tab')
2181
+
2182
+ if (!data) $this.data('bs.tab', (data = new Tab(this)))
2183
+ if (typeof option == 'string') data[option]()
2184
+ })
2185
+ }
2186
+
2187
+ var old = $.fn.tab
2188
+
2189
+ $.fn.tab = Plugin
2190
+ $.fn.tab.Constructor = Tab
2191
+
2192
+
2193
+ // TAB NO CONFLICT
2194
+ // ===============
2195
+
2196
+ $.fn.tab.noConflict = function () {
2197
+ $.fn.tab = old
2198
+ return this
2199
+ }
2200
+
2201
+
2202
+ // TAB DATA-API
2203
+ // ============
2204
+
2205
+ var clickHandler = function (e) {
2206
+ e.preventDefault()
2207
+ Plugin.call($(this), 'show')
2208
+ }
2209
+
2210
+ $(document)
2211
+ .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
2212
+ .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
2213
+
2214
+ }(jQuery);
2215
+
2216
+ /* ========================================================================
2217
+ * Bootstrap: affix.js v3.3.7
2218
+ * http://getbootstrap.com/javascript/#affix
2219
+ * ========================================================================
2220
+ * Copyright 2011-2016 Twitter, Inc.
2221
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2222
+ * ======================================================================== */
2223
+
2224
+
2225
+ +function ($) {
2226
+ 'use strict';
2227
+
2228
+ // AFFIX CLASS DEFINITION
2229
+ // ======================
2230
+
2231
+ var Affix = function (element, options) {
2232
+ this.options = $.extend({}, Affix.DEFAULTS, options)
2233
+
2234
+ this.$target = $(this.options.target)
2235
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
2236
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
2237
+
2238
+ this.$element = $(element)
2239
+ this.affixed = null
2240
+ this.unpin = null
2241
+ this.pinnedOffset = null
2242
+
2243
+ this.checkPosition()
2244
+ }
2245
+
2246
+ Affix.VERSION = '3.3.7'
2247
+
2248
+ Affix.RESET = 'affix affix-top affix-bottom'
2249
+
2250
+ Affix.DEFAULTS = {
2251
+ offset: 0,
2252
+ target: window
2253
+ }
2254
+
2255
+ Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
2256
+ var scrollTop = this.$target.scrollTop()
2257
+ var position = this.$element.offset()
2258
+ var targetHeight = this.$target.height()
2259
+
2260
+ if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
2261
+
2262
+ if (this.affixed == 'bottom') {
2263
+ if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
2264
+ return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
2265
+ }
2266
+
2267
+ var initializing = this.affixed == null
2268
+ var colliderTop = initializing ? scrollTop : position.top
2269
+ var colliderHeight = initializing ? targetHeight : height
2270
+
2271
+ if (offsetTop != null && scrollTop <= offsetTop) return 'top'
2272
+ if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
2273
+
2274
+ return false
2275
+ }
2276
+
2277
+ Affix.prototype.getPinnedOffset = function () {
2278
+ if (this.pinnedOffset) return this.pinnedOffset
2279
+ this.$element.removeClass(Affix.RESET).addClass('affix')
2280
+ var scrollTop = this.$target.scrollTop()
2281
+ var position = this.$element.offset()
2282
+ return (this.pinnedOffset = position.top - scrollTop)
2283
+ }
2284
+
2285
+ Affix.prototype.checkPositionWithEventLoop = function () {
2286
+ setTimeout($.proxy(this.checkPosition, this), 1)
2287
+ }
2288
+
2289
+ Affix.prototype.checkPosition = function () {
2290
+ if (!this.$element.is(':visible')) return
2291
+
2292
+ var height = this.$element.height()
2293
+ var offset = this.options.offset
2294
+ var offsetTop = offset.top
2295
+ var offsetBottom = offset.bottom
2296
+ var scrollHeight = Math.max($(document).height(), $(document.body).height())
2297
+
2298
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
2299
+ if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
2300
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
2301
+
2302
+ var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
2303
+
2304
+ if (this.affixed != affix) {
2305
+ if (this.unpin != null) this.$element.css('top', '')
2306
+
2307
+ var affixType = 'affix' + (affix ? '-' + affix : '')
2308
+ var e = $.Event(affixType + '.bs.affix')
2309
+
2310
+ this.$element.trigger(e)
2311
+
2312
+ if (e.isDefaultPrevented()) return
2313
+
2314
+ this.affixed = affix
2315
+ this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
2316
+
2317
+ this.$element
2318
+ .removeClass(Affix.RESET)
2319
+ .addClass(affixType)
2320
+ .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
2321
+ }
2322
+
2323
+ if (affix == 'bottom') {
2324
+ this.$element.offset({
2325
+ top: scrollHeight - height - offsetBottom
2326
+ })
2327
+ }
2328
+ }
2329
+
2330
+
2331
+ // AFFIX PLUGIN DEFINITION
2332
+ // =======================
2333
+
2334
+ function Plugin(option) {
2335
+ return this.each(function () {
2336
+ var $this = $(this)
2337
+ var data = $this.data('bs.affix')
2338
+ var options = typeof option == 'object' && option
2339
+
2340
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
2341
+ if (typeof option == 'string') data[option]()
2342
+ })
2343
+ }
2344
+
2345
+ var old = $.fn.affix
2346
+
2347
+ $.fn.affix = Plugin
2348
+ $.fn.affix.Constructor = Affix
2349
+
2350
+
2351
+ // AFFIX NO CONFLICT
2352
+ // =================
2353
+
2354
+ $.fn.affix.noConflict = function () {
2355
+ $.fn.affix = old
2356
+ return this
2357
+ }
2358
+
2359
+
2360
+ // AFFIX DATA-API
2361
+ // ==============
2362
+
2363
+ $(window).on('load', function () {
2364
+ $('[data-spy="affix"]').each(function () {
2365
+ var $spy = $(this)
2366
+ var data = $spy.data()
2367
+
2368
+ data.offset = data.offset || {}
2369
+
2370
+ if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
2371
+ if (data.offsetTop != null) data.offset.top = data.offsetTop
2372
+
2373
+ Plugin.call($spy, data)
2374
+ })
2375
+ })
2376
+
2377
+ }(jQuery);