telephone-clients 3.0.104-52 → 3.0.104-52-lixian

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 (1070) 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 -54
  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/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  20. package/src/bootstrap/less/.csscomb.json +304 -304
  21. package/src/bootstrap/less/.csslintrc +19 -19
  22. package/src/bootstrap/less/alerts.less +73 -73
  23. package/src/bootstrap/less/aofeng/animate.min.css +10 -10
  24. package/src/bootstrap/less/aofeng/standard.less +585 -585
  25. package/src/bootstrap/less/aofeng/themeOne/BinaryTemplate.less +478 -478
  26. package/src/bootstrap/less/aofeng/themeOne/loginStyle.less +1586 -1586
  27. package/src/bootstrap/less/aofeng/themeOne/systemStyle.less +1905 -1905
  28. package/src/bootstrap/less/aofeng/themeTwo/newStyle1.less +415 -415
  29. package/src/bootstrap/less/badges.less +66 -66
  30. package/src/bootstrap/less/bootstrap.less +65 -65
  31. package/src/bootstrap/less/breadcrumbs.less +26 -26
  32. package/src/bootstrap/less/button-groups.less +247 -247
  33. package/src/bootstrap/less/buttons.less +172 -172
  34. package/src/bootstrap/less/carousel.less +269 -269
  35. package/src/bootstrap/less/close.less +34 -34
  36. package/src/bootstrap/less/code.less +69 -69
  37. package/src/bootstrap/less/component-animations.less +33 -33
  38. package/src/bootstrap/less/dropdowns.less +216 -216
  39. package/src/bootstrap/less/forms.less +626 -626
  40. package/src/bootstrap/less/glyphicons.less +305 -305
  41. package/src/bootstrap/less/grid.less +84 -84
  42. package/src/bootstrap/less/input-groups.less +167 -167
  43. package/src/bootstrap/less/jumbotron.less +52 -52
  44. package/src/bootstrap/less/labels.less +64 -64
  45. package/src/bootstrap/less/list-group.less +141 -141
  46. package/src/bootstrap/less/manageStyle/manageChile.less +180 -180
  47. package/src/bootstrap/less/manageStyle/manageStyle.less +1102 -1102
  48. package/src/bootstrap/less/manageStyle/safeStyle.less +498 -498
  49. package/src/bootstrap/less/media.less +66 -66
  50. package/src/bootstrap/less/mixins/alerts.less +14 -14
  51. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  52. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  53. package/src/bootstrap/less/mixins/buttons.less +69 -69
  54. package/src/bootstrap/less/mixins/center-block.less +7 -7
  55. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  56. package/src/bootstrap/less/mixins/forms.less +90 -90
  57. package/src/bootstrap/less/mixins/gradients.less +59 -59
  58. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  59. package/src/bootstrap/less/mixins/grid.less +122 -122
  60. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  61. package/src/bootstrap/less/mixins/image.less +33 -33
  62. package/src/bootstrap/less/mixins/labels.less +12 -12
  63. package/src/bootstrap/less/mixins/list-group.less +30 -30
  64. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  65. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  66. package/src/bootstrap/less/mixins/opacity.less +8 -8
  67. package/src/bootstrap/less/mixins/pagination.less +24 -24
  68. package/src/bootstrap/less/mixins/panels.less +24 -24
  69. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  70. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  71. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  72. package/src/bootstrap/less/mixins/resize.less +6 -6
  73. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  74. package/src/bootstrap/less/mixins/size.less +10 -10
  75. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  76. package/src/bootstrap/less/mixins/table-row.less +44 -44
  77. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  78. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  79. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  80. package/src/bootstrap/less/mixins.less +40 -40
  81. package/src/bootstrap/less/modals.less +151 -151
  82. package/src/bootstrap/less/navbar.less +660 -660
  83. package/src/bootstrap/less/navs.less +285 -285
  84. package/src/bootstrap/less/normalize.less +424 -424
  85. package/src/bootstrap/less/pager.less +76 -76
  86. package/src/bootstrap/less/pagination.less +89 -89
  87. package/src/bootstrap/less/panels.less +275 -275
  88. package/src/bootstrap/less/popovers.less +131 -131
  89. package/src/bootstrap/less/print.less +101 -101
  90. package/src/bootstrap/less/progress-bars.less +87 -87
  91. package/src/bootstrap/less/responsive-embed.less +35 -35
  92. package/src/bootstrap/less/responsive-utilities.less +194 -194
  93. package/src/bootstrap/less/scaffolding.less +161 -161
  94. package/src/bootstrap/less/stand.less +211 -211
  95. package/src/bootstrap/less/standard.less +503 -503
  96. package/src/bootstrap/less/systemStyle.less +860 -860
  97. package/src/bootstrap/less/tables.less +312 -312
  98. package/src/bootstrap/less/theme.less +291 -291
  99. package/src/bootstrap/less/themeOne.less +34 -34
  100. package/src/bootstrap/less/themeTwo.less +27 -27
  101. package/src/bootstrap/less/thumbnails.less +36 -36
  102. package/src/bootstrap/less/tooltip.less +102 -102
  103. package/src/bootstrap/less/type.less +303 -303
  104. package/src/bootstrap/less/utilities.less +55 -55
  105. package/src/bootstrap/less/variables.less +896 -896
  106. package/src/bootstrap/less/wells.less +29 -29
  107. package/src/bus.js +2 -2
  108. package/src/components/CaseContainer.vue +86 -86
  109. package/src/components/ExportExcel.vue +342 -342
  110. package/src/components/ImgSelfTel.vue +126 -126
  111. package/src/components/MaterialsManage/MaterialsBase.vue +177 -177
  112. package/src/components/MaterialsManage/MaterialsList.vue +244 -244
  113. package/src/components/MaterialsManage/MaterialsManage.vue +60 -60
  114. package/src/components/PartialView.vue +44 -44
  115. package/src/components/Test.vue +26 -26
  116. package/src/components/TimelineItem.vue +119 -119
  117. package/src/components/Util/FileUpload.vue +139 -139
  118. package/src/components/Util/ImgSelfSafePlus.vue +156 -156
  119. package/src/components/Util/RightTreeSafe.vue +346 -346
  120. package/src/components/Util/RightTreeSafeDep.vue +350 -350
  121. package/src/components/Util/TelePhoneUpload.vue +279 -279
  122. package/src/components/Util.js +600 -600
  123. package/src/components/android/AddMyTask.vue +353 -353
  124. package/src/components/android/AppHeader.vue +69 -69
  125. package/src/components/android/CameraImg.vue +111 -111
  126. package/src/components/android/CompletedRepair.vue +264 -264
  127. package/src/components/android/EmployeeInfo.vue +59 -59
  128. package/src/components/android/EmployeePage.vue +71 -71
  129. package/src/components/android/Lbt.vue +103 -103
  130. package/src/components/android/LoginApp.vue +374 -374
  131. package/src/components/android/NavBottom.vue +104 -104
  132. package/src/components/changemeter/ChangeMeterAll.vue +189 -189
  133. package/src/components/changemeter/ChangeMeterDetail.vue +300 -300
  134. package/src/components/changemeter/ChangeMeterMain.vue +37 -37
  135. package/src/components/eachart/BarBrokenline.vue +206 -206
  136. package/src/components/eachart/BarChart.vue +165 -165
  137. package/src/components/eachart/PieChart.vue +182 -182
  138. package/src/components/eachart/datesumchart.vue +165 -165
  139. package/src/components/eachart/statework.vue +226 -226
  140. package/src/components/eachart/workorderchart.vue +183 -183
  141. package/src/components/guoxin/Console.vue +393 -393
  142. package/src/components/guoxin/RecordInfoRight.vue +75 -75
  143. package/src/components/guoxin/VisitInfo.vue +270 -270
  144. package/src/components/guoxin/call.state.api.js +217 -217
  145. package/src/components/guoxin/reconnecting-websocket.min.js +1 -1
  146. package/src/components/guoxin/telephone.js +15 -15
  147. package/src/components/map/AMapTrailShowWx.vue +178 -178
  148. package/src/components/map/CallMap.vue +403 -403
  149. package/src/components/map/CriteriaData.vue +81 -81
  150. package/src/components/map/OlMap.vue +831 -831
  151. package/src/components/map/OrderService.vue +249 -249
  152. package/src/components/map/PipeMap.vue +154 -154
  153. package/src/components/map/dragbox.js +234 -234
  154. package/src/components/pay/createQRcode.vue +192 -192
  155. package/src/components/pay/telReadCard.vue +59 -59
  156. package/src/components/pc/AllUser.vue +615 -615
  157. package/src/components/pc/AllUserNew.vue +638 -638
  158. package/src/components/pc/ArrearsList.vue +397 -397
  159. package/src/components/pc/AttendantCallStat.vue +213 -213
  160. package/src/components/pc/AttendantWorkHistory.vue +98 -98
  161. package/src/components/pc/Auxfunc.vue +76 -76
  162. package/src/components/pc/BottleGas/BottleGasManage.vue +304 -304
  163. package/src/components/pc/BottleGasWork.vue +214 -214
  164. package/src/components/pc/BuildReport.vue +60 -60
  165. package/src/components/pc/CallerInfoList.vue +98 -98
  166. package/src/components/pc/ChatMsg.vue +338 -338
  167. package/src/components/pc/ComplainWork.vue +326 -326
  168. package/src/components/pc/Console.vue +617 -617
  169. package/src/components/pc/DelayReply.vue +60 -60
  170. package/src/components/pc/DistributeWork.vue +177 -177
  171. package/src/components/pc/ElseWork.vue +44 -44
  172. package/src/components/pc/ElseWorkList.vue +267 -267
  173. package/src/components/pc/Emoji.vue +64 -64
  174. package/src/components/pc/Evaluate.vue +145 -145
  175. package/src/components/pc/EvaluateList.vue +195 -195
  176. package/src/components/pc/EvaluateModel.vue +53 -53
  177. package/src/components/pc/FailureEdit.vue +192 -192
  178. package/src/components/pc/FailureShow.vue +61 -61
  179. package/src/components/pc/FireQuery.vue +165 -165
  180. package/src/components/pc/FootPrintList.vue +40 -40
  181. package/src/components/pc/GasWork.vue +764 -764
  182. package/src/components/pc/GroupResend.vue +111 -111
  183. package/src/components/pc/InstallWork.vue +734 -734
  184. package/src/components/pc/ManageMaterial.vue +282 -282
  185. package/src/components/pc/MessageList.vue +635 -635
  186. package/src/components/pc/MessageManage.vue +136 -136
  187. package/src/components/pc/MessageManageList.vue +127 -127
  188. package/src/components/pc/MessageManageNew.vue +121 -121
  189. package/src/components/pc/MonitorGroup.vue +82 -82
  190. package/src/components/pc/NewRepairPaper.vue +370 -370
  191. package/src/components/pc/OrderService.vue +182 -182
  192. package/src/components/pc/ProgressBar.vue +50 -50
  193. package/src/components/pc/QueryJoinlv.vue +136 -136
  194. package/src/components/pc/QueryTeleHistory.vue +95 -95
  195. package/src/components/pc/QueryTextHistory.vue +98 -98
  196. package/src/components/pc/QueryVisitHistory.vue +217 -217
  197. package/src/components/pc/ReVisitList.vue +208 -208
  198. package/src/components/pc/RecordInfoRight.vue +84 -84
  199. package/src/components/pc/RecordList.vue +53 -53
  200. package/src/components/pc/RecordList2.vue +155 -155
  201. package/src/components/pc/RecordListLeft.vue +217 -240
  202. package/src/components/pc/RecordReport.vue +181 -181
  203. package/src/components/pc/ReminderOrder.vue +52 -52
  204. package/src/components/pc/RepairHistoryList.vue +152 -152
  205. package/src/components/pc/RepairsWork.vue +867 -867
  206. package/src/components/pc/ReturnRecord.vue +126 -126
  207. package/src/components/pc/RoleSelector.vue +139 -139
  208. package/src/components/pc/RoleSelectorDep.vue +158 -158
  209. package/src/components/pc/SeatInfo.vue +207 -207
  210. package/src/components/pc/Seekwork.vue +310 -310
  211. package/src/components/pc/ServerAppendixInfo.vue +52 -52
  212. package/src/components/pc/ServiceBack.vue +49 -49
  213. package/src/components/pc/ServiceDetails.vue +53 -53
  214. package/src/components/pc/ServiceDetailsNew.vue +53 -53
  215. package/src/components/pc/SiteBack.vue +84 -84
  216. package/src/components/pc/SiteCase.vue +87 -87
  217. package/src/components/pc/SiteSend.vue +316 -316
  218. package/src/components/pc/StandSend.vue +600 -600
  219. package/src/components/pc/StandServer.vue +25 -25
  220. package/src/components/pc/StandWork.vue +91 -91
  221. package/src/components/pc/StandWorkNew.vue +91 -91
  222. package/src/components/pc/TelFindUser.vue +304 -304
  223. package/src/components/pc/TelListener.vue +174 -174
  224. package/src/components/pc/TelLossList.vue +247 -264
  225. package/src/components/pc/TelMaterSelect.vue +225 -225
  226. package/src/components/pc/TelUserMaterSend.vue +171 -171
  227. package/src/components/pc/TeleInfo.vue +140 -140
  228. package/src/components/pc/TeleList.vue +99 -99
  229. package/src/components/pc/TeleOperKl.vue +91 -91
  230. package/src/components/pc/TemplateMessage.vue +92 -92
  231. package/src/components/pc/TextControl.vue +113 -113
  232. package/src/components/pc/TextInfoRight.vue +84 -84
  233. package/src/components/pc/TextList.vue +45 -45
  234. package/src/components/pc/TextListLeft.vue +156 -156
  235. package/src/components/pc/TextServer.vue +154 -154
  236. package/src/components/pc/TextService.vue +849 -849
  237. package/src/components/pc/UserDefinedMessage.vue +90 -90
  238. package/src/components/pc/UserDefinedMessageNew.vue +121 -121
  239. package/src/components/pc/UserOperate.vue +48 -48
  240. package/src/components/pc/VideoPlayer.vue +73 -73
  241. package/src/components/pc/VisitInfo.vue +311 -311
  242. package/src/components/pc/VoiceServer.vue +208 -208
  243. package/src/components/pc/WorkCenter.vue +105 -105
  244. package/src/components/pc/WorkCenterContent.vue +100 -100
  245. package/src/components/pc/WorkCenterList.vue +292 -292
  246. package/src/components/pc/WorkFind.vue +128 -128
  247. package/src/components/pc/WorkHistory.vue +560 -560
  248. package/src/components/pc/WorkList.vue +744 -744
  249. package/src/components/pc/WorkListAll.vue +630 -630
  250. package/src/components/pc/WorkListAllNew.vue +724 -715
  251. package/src/components/pc/WorkListNew.vue +712 -712
  252. package/src/components/pc/WorkMsg.vue +105 -105
  253. package/src/components/pc/analysis/AnalysisMain.vue +423 -423
  254. package/src/components/pc/analysis/StateStatistics.vue +292 -292
  255. package/src/components/pc/analysis/TelephoneAnaly.vue +104 -104
  256. package/src/components/pc/analysis/TelephoneType.vue +270 -270
  257. package/src/components/pc/config/DefaultPrint.js +7 -7
  258. package/src/components/pc/dataManager/KlCatalog.vue +293 -293
  259. package/src/components/pc/dataManager/KlContent.vue +193 -193
  260. package/src/components/pc/dataManager/Knowledge.vue +21 -21
  261. package/src/components/pc/dataManager/Materials.vue +553 -553
  262. package/src/components/pc/dataManager/OutletsList.vue +85 -85
  263. package/src/components/pc/dataManager/SafeEditor.vue +91 -91
  264. package/src/components/pc/dataManager/SafeList.vue +77 -77
  265. package/src/components/pc/dataManager/ShowMaterials.vue +159 -159
  266. package/src/components/pc/dataManager/StopGasManager.vue +320 -320
  267. package/src/components/pc/imgmove.vue +192 -192
  268. package/src/components/pc/olddata/OldWorkList.vue +193 -193
  269. package/src/components/pc/serviceDeleteOrder.vue +53 -53
  270. package/src/components/pc/wx/BookingService.vue +407 -407
  271. package/src/components/pc/wx/CustomMenu.vue +154 -154
  272. package/src/components/pc/wx/MenuView.vue +249 -249
  273. package/src/components/pc/wx/MobileView.vue +273 -273
  274. package/src/components/pc/wx/NewsMaterial.vue +144 -144
  275. package/src/components/pc/wx/SelectMaterial.vue +100 -100
  276. package/src/components/pc/wx/TelOutletsManager.vue +186 -186
  277. package/src/components/pos/Init.vue +213 -213
  278. package/src/components/pos/Main.vue +123 -123
  279. package/src/components/pos/Plugin/AndroidPlugin.js +148 -148
  280. package/src/components/pos/Plugin/PosUtil.js +315 -315
  281. package/src/components/pos/aotePos.js +55 -55
  282. package/src/components/pos/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  283. package/src/components/pos/bootstrap/less/.csscomb.json +304 -304
  284. package/src/components/pos/bootstrap/less/.csslintrc +19 -19
  285. package/src/components/pos/bootstrap/less/alerts.less +73 -73
  286. package/src/components/pos/bootstrap/less/badges.less +66 -66
  287. package/src/components/pos/bootstrap/less/bootstrap.less +56 -56
  288. package/src/components/pos/bootstrap/less/breadcrumbs.less +26 -26
  289. package/src/components/pos/bootstrap/less/button-groups.less +247 -247
  290. package/src/components/pos/bootstrap/less/buttons.less +172 -172
  291. package/src/components/pos/bootstrap/less/carousel.less +269 -269
  292. package/src/components/pos/bootstrap/less/close.less +34 -34
  293. package/src/components/pos/bootstrap/less/code.less +69 -69
  294. package/src/components/pos/bootstrap/less/component-animations.less +33 -33
  295. package/src/components/pos/bootstrap/less/dropdowns.less +216 -216
  296. package/src/components/pos/bootstrap/less/forms.less +626 -626
  297. package/src/components/pos/bootstrap/less/glyphicons.less +305 -305
  298. package/src/components/pos/bootstrap/less/grid.less +84 -84
  299. package/src/components/pos/bootstrap/less/input-groups.less +167 -167
  300. package/src/components/pos/bootstrap/less/jumbotron.less +52 -52
  301. package/src/components/pos/bootstrap/less/labels.less +64 -64
  302. package/src/components/pos/bootstrap/less/list-group.less +141 -141
  303. package/src/components/pos/bootstrap/less/media.less +66 -66
  304. package/src/components/pos/bootstrap/less/mixins/alerts.less +14 -14
  305. package/src/components/pos/bootstrap/less/mixins/background-variant.less +9 -9
  306. package/src/components/pos/bootstrap/less/mixins/border-radius.less +18 -18
  307. package/src/components/pos/bootstrap/less/mixins/buttons.less +69 -69
  308. package/src/components/pos/bootstrap/less/mixins/center-block.less +7 -7
  309. package/src/components/pos/bootstrap/less/mixins/clearfix.less +22 -22
  310. package/src/components/pos/bootstrap/less/mixins/forms.less +90 -90
  311. package/src/components/pos/bootstrap/less/mixins/gradients.less +59 -59
  312. package/src/components/pos/bootstrap/less/mixins/grid-framework.less +92 -92
  313. package/src/components/pos/bootstrap/less/mixins/grid.less +122 -122
  314. package/src/components/pos/bootstrap/less/mixins/hide-text.less +21 -21
  315. package/src/components/pos/bootstrap/less/mixins/image.less +33 -33
  316. package/src/components/pos/bootstrap/less/mixins/labels.less +12 -12
  317. package/src/components/pos/bootstrap/less/mixins/list-group.less +30 -30
  318. package/src/components/pos/bootstrap/less/mixins/nav-divider.less +10 -10
  319. package/src/components/pos/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  320. package/src/components/pos/bootstrap/less/mixins/opacity.less +8 -8
  321. package/src/components/pos/bootstrap/less/mixins/pagination.less +24 -24
  322. package/src/components/pos/bootstrap/less/mixins/panels.less +24 -24
  323. package/src/components/pos/bootstrap/less/mixins/progress-bar.less +10 -10
  324. package/src/components/pos/bootstrap/less/mixins/reset-filter.less +8 -8
  325. package/src/components/pos/bootstrap/less/mixins/reset-text.less +18 -18
  326. package/src/components/pos/bootstrap/less/mixins/resize.less +6 -6
  327. package/src/components/pos/bootstrap/less/mixins/responsive-visibility.less +15 -15
  328. package/src/components/pos/bootstrap/less/mixins/size.less +10 -10
  329. package/src/components/pos/bootstrap/less/mixins/tab-focus.less +9 -9
  330. package/src/components/pos/bootstrap/less/mixins/table-row.less +44 -44
  331. package/src/components/pos/bootstrap/less/mixins/text-emphasis.less +9 -9
  332. package/src/components/pos/bootstrap/less/mixins/text-overflow.less +8 -8
  333. package/src/components/pos/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  334. package/src/components/pos/bootstrap/less/mixins.less +40 -40
  335. package/src/components/pos/bootstrap/less/modals.less +151 -151
  336. package/src/components/pos/bootstrap/less/navbar.less +660 -660
  337. package/src/components/pos/bootstrap/less/navs.less +286 -286
  338. package/src/components/pos/bootstrap/less/normalize.less +424 -424
  339. package/src/components/pos/bootstrap/less/pager.less +76 -76
  340. package/src/components/pos/bootstrap/less/pagination.less +89 -89
  341. package/src/components/pos/bootstrap/less/panels.less +274 -274
  342. package/src/components/pos/bootstrap/less/popovers.less +131 -131
  343. package/src/components/pos/bootstrap/less/print.less +101 -101
  344. package/src/components/pos/bootstrap/less/progress-bars.less +87 -87
  345. package/src/components/pos/bootstrap/less/responsive-embed.less +35 -35
  346. package/src/components/pos/bootstrap/less/responsive-utilities.less +194 -194
  347. package/src/components/pos/bootstrap/less/scaffolding.less +161 -161
  348. package/src/components/pos/bootstrap/less/tables.less +262 -262
  349. package/src/components/pos/bootstrap/less/theme.less +291 -291
  350. package/src/components/pos/bootstrap/less/thumbnails.less +36 -36
  351. package/src/components/pos/bootstrap/less/tooltip.less +102 -102
  352. package/src/components/pos/bootstrap/less/type.less +303 -303
  353. package/src/components/pos/bootstrap/less/utilities.less +55 -55
  354. package/src/components/pos/bootstrap/less/variables.less +895 -895
  355. package/src/components/pos/bootstrap/less/wells.less +29 -29
  356. package/src/components/pos/charge/card/CardInfo.vue +43 -43
  357. package/src/components/pos/charge/card/CheckUser.Vue +116 -116
  358. package/src/components/pos/charge/card/ReadCardInter.vue +177 -177
  359. package/src/components/pos/charge/card/ReadCardToBuy.vue +174 -174
  360. package/src/components/pos/charge/card/SelectUser.Vue +104 -104
  361. package/src/components/pos/charge/machine/MachineSearch.Vue +124 -124
  362. package/src/components/pos/charge/sellgas/AdvertPop.vue +70 -70
  363. package/src/components/pos/charge/sellgas/CardSellGas.vue +361 -361
  364. package/src/components/pos/charge/sellgas/ChoosePayWay.vue +275 -275
  365. package/src/components/pos/charge/sellgas/GudingPrice.vue +38 -38
  366. package/src/components/pos/charge/sellgas/JietiPrice.vue +54 -54
  367. package/src/components/pos/charge/sellgas/ScanQrcode.vue +171 -171
  368. package/src/components/pos/charge/sellgas/WriteCard.vue +366 -366
  369. package/src/components/pos/charge/userinfo/ChangeMeterList.vue +43 -43
  370. package/src/components/pos/charge/userinfo/FillGasList.vue +43 -43
  371. package/src/components/pos/charge/userinfo/HistorySellList.vue +90 -90
  372. package/src/components/pos/charge/userinfo/OtherList.vue +43 -43
  373. package/src/components/pos/charge/userinfo/SellList.vue +43 -43
  374. package/src/components/pos/charge/userinfo/TransList.vue +43 -43
  375. package/src/components/pos/charge/userinfo/UserInfo.vue +176 -176
  376. package/src/components/pos/charge/userinfo/WritecardInfo.vue +44 -44
  377. package/src/components/pos/css/bootstrap.less +6757 -6757
  378. package/src/components/pos/css/style.less +158 -158
  379. package/src/components/pos/css/style.less.bak +84 -84
  380. package/src/components/pos/fonts/fontawesome-webfont.svg +2671 -2671
  381. package/src/components/pos/fonts/glyphicons-halflings-regular.svg +287 -287
  382. package/src/components/pos/js/bootstrap.js +2377 -2377
  383. package/src/components/pos/js/bootstrap.min.js +6 -6
  384. package/src/components/pos/js/jquery.chromatable.js +150 -150
  385. package/src/components/pos/js/jquery.min.js +5 -5
  386. package/src/components/pos/js/npm.js +12 -12
  387. package/src/components/pos/ztprint.js +26 -26
  388. package/src/components/qinhua/qhonlineChangeMeter.vue +440 -440
  389. package/src/components/qinhua/qhonlineoperation.vue +227 -227
  390. package/src/components/reli/ChoosePayWay.vue +179 -179
  391. package/src/components/reli/HistorySellLists.vue +128 -128
  392. package/src/components/reli/MachineMain.vue +470 -470
  393. package/src/components/reli/UserInfo.vue +211 -211
  394. package/src/components/reli/searchSells.vue +446 -446
  395. package/src/components/repaircount/RepairDetail.vue +74 -74
  396. package/src/components/repaircount/RepairPlan.vue +58 -58
  397. package/src/components/repaircount/SelectRepairPlan.vue +189 -189
  398. package/src/components/sale/CardMeterCenter.vue +625 -625
  399. package/src/components/sale/IOTMeterCenter.vue +443 -443
  400. package/src/components/sale/MachineMeterCenter.vue +591 -591
  401. package/src/components/sendsingle/CardChangeFill.vue +338 -338
  402. package/src/components/sendsingle/ChangeSendCard.vue +19 -19
  403. package/src/components/sendsingle/IotChangeFill.vue +471 -471
  404. package/src/components/sendsingle/MachineChangeFill.vue +143 -143
  405. package/src/components/sendsingle/PosMakeGas.vue +342 -342
  406. package/src/components/sendsingle/QueryTemporaryRepair.vue +226 -226
  407. package/src/components/sendsingle/TelLotChangeFill.vue +626 -626
  408. package/src/components/sendsingle/TemporarySingle.vue +480 -480
  409. package/src/components/sendsingle/ceshi.vue +51 -51
  410. package/src/components/sendsingle/onlineBuyGas.vue +632 -632
  411. package/src/components/sendsingle/onlineBuyGasOld.vue +19 -19
  412. package/src/components/sendsingle/onlineChangeMeter.vue +419 -419
  413. package/src/components/sendsingle/onlinemakecard.vue +413 -413
  414. package/src/components/sendsingle/onlineoperation.vue +401 -401
  415. package/src/components/sendsingle/onlinequeryuser.vue +468 -468
  416. package/src/components/sendsingle/posMaintainer.vue +277 -277
  417. package/src/components/shaoguan/DelayReply.vue +60 -60
  418. package/src/components/shaoguan/FailureEdit.vue +172 -172
  419. package/src/components/shaoguan/RepairDetailsChange.vue +399 -399
  420. package/src/components/shaoguan/RepairOrderChange.vue +673 -673
  421. package/src/components/shaoguan/RepairUserInfoChange.vue +532 -532
  422. package/src/components/shaoguan/WorkHistory.vue +346 -346
  423. package/src/components/shaoguan/WorkListAll.vue +521 -521
  424. package/src/components/shaoguan/config/DefaultPrint.js +7 -7
  425. package/src/components/telcount/TelByAttendant.vue +118 -118
  426. package/src/components/telcount/TelByLouQi.vue +113 -113
  427. package/src/components/telcount/TelByLouQiMingxi.vue +117 -117
  428. package/src/components/telcount/TelByOrderMan.vue +105 -105
  429. package/src/components/telcount/TelByWeiXiu.vue +199 -199
  430. package/src/components/telcount/TelByZhiHuan.vue +109 -109
  431. package/src/components/telreport/HotlineMonthly.vue +121 -121
  432. package/src/components/telreport/RepairsDetailsReport.vue +98 -98
  433. package/src/components/telreport/TableFaultReport.vue +96 -96
  434. package/src/components/telreport/TelAgentVoiceReport.vue +275 -275
  435. package/src/components/telreport/TelMan.vue +127 -127
  436. package/src/components/telreport/TelReport.vue +122 -122
  437. package/src/components/telreport/TelephoneManReport.vue +121 -121
  438. package/src/components/telreport/Traffic.vue +94 -94
  439. package/src/components/telreport/TrafficClassificationReport.vue +135 -135
  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 +75 -75
  445. package/src/components/temp/DeviceInfo.vue +80 -80
  446. package/src/components/temp/DisableInforMation.vue +82 -82
  447. package/src/components/temp/HandplanInfo.vue +93 -93
  448. package/src/components/temp/InfoTable.vue +134 -134
  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 +80 -80
  452. package/src/components/temp/MetterInfo.vue +92 -92
  453. package/src/components/temp/OldRepairList.vue +100 -100
  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 -87
  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 -268
  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 -726
  511. package/src/components/weinan/WorkListAll.vue +974 -974
  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 -321
  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 -1041
  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 +613 -613
  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/RepairPaperAndroid.vue +351 -351
  559. package/src/components/workorder/RepairSend.vue +264 -264
  560. package/src/components/workorder/RepairUserInfo.vue +532 -532
  561. package/src/components/workorder/Repairpage.vue +100 -100
  562. package/src/components/workorder/RepairsVisit.vue +319 -319
  563. package/src/components/workorder/SafeCheckService.vue +355 -355
  564. package/src/components/workorder/ServiceOnlineQuery.vue +306 -306
  565. package/src/components/workorder/SubstitFirstV.vue +143 -143
  566. package/src/components/workorder/SubstitutionPage.vue +100 -100
  567. package/src/components/workorder/TelChangeMatter.vue +231 -231
  568. package/src/components/workorder/TemporarySingle.vue +480 -480
  569. package/src/components/workorder/TroubleRemoval.vue +419 -419
  570. package/src/components/workorder/UpLoad.vue +111 -111
  571. package/src/components/workorder/ZHihuanFirst.vue +546 -546
  572. package/src/components/workorder/ZhiCompletedRepair.vue +217 -217
  573. package/src/components/workorder/ZhiUpLoad.vue +136 -136
  574. package/src/expandcss.less +620 -620
  575. package/src/filiale/lixian/onlineChangeMeter.vue +481 -0
  576. package/src/filiale/lixian/onlineoperation.vue +606 -0
  577. package/src/filiale/{rongcheng → lixian}/onlinequeryuser.vue +509 -460
  578. package/src/filiale/lixian/telephoneAndroid.js +23 -0
  579. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +1067 -1067
  580. package/src/filiale/qianneng/android/Examine.vue +513 -513
  581. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  582. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  583. package/src/filiale/qianneng/android/PhoneStandWork.vue +413 -412
  584. package/src/filiale/qianneng/android/QueryTemporaryRepair.vue +243 -243
  585. package/src/filiale/qianneng/android/QueryTemporaryRepair2.vue +220 -0
  586. package/src/filiale/qianneng/android/RepairDetails.vue +666 -666
  587. package/src/filiale/qianneng/android/RepairFirstV.vue +626 -615
  588. package/src/filiale/qianneng/android/RepairInfo.vue +147 -147
  589. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  590. package/src/filiale/qianneng/android/RepairUserInfo.vue +542 -542
  591. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -537
  592. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  593. package/src/filiale/{zhoukou → qianneng}/android/onlinequeryuser.vue +464 -468
  594. package/src/filiale/qianneng/pc/ComplainWork.vue +324 -324
  595. package/src/filiale/qianneng/pc/DistributeWork.vue +182 -182
  596. package/src/filiale/qianneng/pc/FailureEdit.vue +161 -161
  597. package/src/filiale/qianneng/pc/Indoorinstallation.vue +832 -832
  598. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -260
  599. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -144
  600. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  601. package/src/filiale/qianneng/pc/Outdoorinstallation.vue +736 -736
  602. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -992
  603. package/src/filiale/qianneng/pc/Seekwork.vue +308 -308
  604. package/src/filiale/qianneng/pc/WorkHistory.vue +562 -562
  605. package/src/filiale/qianneng/pc/WorkListAllNew.vue +757 -749
  606. package/src/filiale/qianneng/pc/changetable.vue +273 -273
  607. package/src/filiale/qianneng/telephone.js +22 -22
  608. package/src/filiale/qianneng/telephoneAndroid.js +24 -22
  609. package/src/index.js +15 -15
  610. package/src/main.js +22 -22
  611. package/src/plugins/DataSql.js +569 -569
  612. package/src/plugins/EmojiData.js +514 -514
  613. package/src/plugins/EncryptUtil.js +53 -53
  614. package/src/plugins/HttpLoad.js +93 -93
  615. package/src/plugins/LoadData.js +40 -40
  616. package/src/plugins/LoadParams.js +54 -54
  617. package/src/plugins/LocalPagedList.js +107 -107
  618. package/src/plugins/ObjTree.js +532 -532
  619. package/src/plugins/TelGetSaleParams.js +63 -63
  620. package/src/qrcode.js +618 -618
  621. package/src/qrcode.min.js +1 -1
  622. package/src/stores/exportConfig.js +10 -10
  623. package/src/stores/wxconfig.js +10 -10
  624. package/src/telephone-android.js +373 -373
  625. package/src/telephone-shaoguan.js +256 -256
  626. package/src/telephone-tongcheng.js +254 -254
  627. package/src/telephone.js +757 -749
  628. package/src/telephoneanaly.less +704 -704
  629. package/src/utils/LdapHelper.js +99 -99
  630. package/src/weinan-android.js +350 -350
  631. package/src/weinan.js +537 -537
  632. package/static/fonts/font.css +6 -6
  633. package/static/js/adapter.min.js +2049 -2049
  634. package/static/js/bootstrap.min.js +7 -7
  635. package/static/js/ctilink.js +1303 -1303
  636. package/static/js/ctimsg.js +655 -655
  637. package/static/js/janus.js +4034 -4034
  638. package/static/js/jquery-2.1.1.min.js +5 -5
  639. package/yarn-error.log +7872 -7872
  640. 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
  641. package/src/filiale/fugu/pc/ComplainWork.vue +0 -206
  642. package/src/filiale/fugu/pc/FailureEdit.vue +0 -183
  643. package/src/filiale/fugu/pc/RepairsWork.vue +0 -793
  644. package/src/filiale/fugu/pc/Seekwork.vue +0 -182
  645. package/src/filiale/fugu/telephone.js +0 -16
  646. package/src/filiale/furuike/android/CompletedRepair.vue +0 -210
  647. package/src/filiale/furuike/android/FaultAll.vue +0 -861
  648. package/src/filiale/furuike/android/Materials.vue +0 -410
  649. package/src/filiale/furuike/android/RepairFirstVnew.vue +0 -580
  650. package/src/filiale/furuike/android/RepairOrderVnew.vue +0 -890
  651. package/src/filiale/furuike/pc/Auxfunc.vue +0 -109
  652. package/src/filiale/furuike/pc/CallRcords.vue +0 -109
  653. package/src/filiale/furuike/pc/ChangemeterInfo.vue +0 -87
  654. package/src/filiale/furuike/pc/ComplainWork.vue +0 -348
  655. package/src/filiale/furuike/pc/DeviceInfo.vue +0 -82
  656. package/src/filiale/furuike/pc/DisableInforMation.vue +0 -82
  657. package/src/filiale/furuike/pc/FailureEdit.vue +0 -198
  658. package/src/filiale/furuike/pc/HandplanInfo.vue +0 -78
  659. package/src/filiale/furuike/pc/InfoTable.vue +0 -134
  660. package/src/filiale/furuike/pc/InstructInfo.vue +0 -86
  661. package/src/filiale/furuike/pc/LineReport.vue +0 -215
  662. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWork.vue +0 -400
  663. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWorkOrderManage.vue +0 -63
  664. package/src/filiale/furuike/pc/MaterialWorkOrder/WorkOrderMaterial.vue +0 -381
  665. package/src/filiale/furuike/pc/MetereadInfo.vue +0 -82
  666. package/src/filiale/furuike/pc/MetterInfo.vue +0 -92
  667. package/src/filiale/furuike/pc/NewRepairPaper.vue +0 -415
  668. package/src/filiale/furuike/pc/ProblemList.vue +0 -170
  669. package/src/filiale/furuike/pc/QueryVisitHistory.vue +0 -183
  670. package/src/filiale/furuike/pc/RecordListLeft.vue +0 -259
  671. package/src/filiale/furuike/pc/ReminderOrder.vue +0 -50
  672. package/src/filiale/furuike/pc/RepairList.vue +0 -102
  673. package/src/filiale/furuike/pc/RepairsWork.vue +0 -918
  674. package/src/filiale/furuike/pc/SecuritycheckInfo.vue +0 -128
  675. package/src/filiale/furuike/pc/Seekwork.vue +0 -352
  676. package/src/filiale/furuike/pc/SellInfo.vue +0 -158
  677. package/src/filiale/furuike/pc/TableReport.vue +0 -160
  678. package/src/filiale/furuike/pc/TelFindUser.vue +0 -229
  679. package/src/filiale/furuike/pc/TelLossList.vue +0 -145
  680. package/src/filiale/furuike/pc/TelePhoneUpload.vue +0 -279
  681. package/src/filiale/furuike/pc/TextServer.vue +0 -168
  682. package/src/filiale/furuike/pc/VoiceServer.vue +0 -216
  683. package/src/filiale/furuike/pc/WorkCenter.vue +0 -104
  684. package/src/filiale/furuike/pc/WorkHistory.vue +0 -576
  685. package/src/filiale/furuike/pc/WorkListAllNew.vue +0 -855
  686. package/src/filiale/furuike/telephone.js +0 -115
  687. package/src/filiale/furuike/telephoneAndroid.js +0 -23
  688. package/src/filiale/gehua/pc/Console.vue +0 -676
  689. package/src/filiale/gehua/pc/TelAgentVoiceReport.vue +0 -285
  690. package/src/filiale/gehua/pc/TelFindUser.vue +0 -214
  691. package/src/filiale/gehua/telephone.js +0 -16
  692. package/src/filiale/gehua/telephoneAndroid.js +0 -9
  693. package/src/filiale/gongyi/android/RepairDetails.vue +0 -542
  694. package/src/filiale/gongyi/android/RepairFirstV.vue +0 -537
  695. package/src/filiale/gongyi/android/RepairOrderV.vue +0 -1415
  696. package/src/filiale/gongyi/pc/WorkListAll.vue +0 -632
  697. package/src/filiale/gongyi/telephone.js +0 -13
  698. package/src/filiale/gongyi/telephoneAndroid.js +0 -15
  699. package/src/filiale/guangxi/android/FaultAll.vue +0 -896
  700. package/src/filiale/guangxi/telephoneAndroid.js +0 -13
  701. package/src/filiale/hanzhong/PagedList.js +0 -248
  702. package/src/filiale/hanzhong/android/Outlay.vue +0 -265
  703. package/src/filiale/hanzhong/android/RepairInfo.vue +0 -167
  704. package/src/filiale/hanzhong/hzSelectUtil.js +0 -84
  705. package/src/filiale/hanzhong/md5.js +0 -266
  706. package/src/filiale/hanzhong/pc/AnalysisMain.vue +0 -477
  707. package/src/filiale/hanzhong/pc/Console.vue +0 -884
  708. package/src/filiale/hanzhong/pc/DistributeWork.vue +0 -420
  709. package/src/filiale/hanzhong/pc/FailureEdit.vue +0 -195
  710. package/src/filiale/hanzhong/pc/RecordInfoRight.vue +0 -84
  711. package/src/filiale/hanzhong/pc/RecordList.vue +0 -53
  712. package/src/filiale/hanzhong/pc/RecordListLeft.vue +0 -196
  713. package/src/filiale/hanzhong/pc/Seekwork.vue +0 -318
  714. package/src/filiale/hanzhong/pc/StateStatistics.vue +0 -292
  715. package/src/filiale/hanzhong/pc/TelFindUser.vue +0 -224
  716. package/src/filiale/hanzhong/pc/TelLossList.vue +0 -137
  717. package/src/filiale/hanzhong/pc/TelephoneAnaly.vue +0 -104
  718. package/src/filiale/hanzhong/pc/TelephoneType.vue +0 -269
  719. package/src/filiale/hanzhong/pc/TextServer.vue +0 -157
  720. package/src/filiale/hanzhong/pc/VoiceServer.vue +0 -208
  721. package/src/filiale/hanzhong/pc/message/AllUser.vue +0 -615
  722. package/src/filiale/hanzhong/pc/message/AllUserNew.vue +0 -638
  723. package/src/filiale/hanzhong/pc/message/ArrearsList.vue +0 -397
  724. package/src/filiale/hanzhong/pc/message/MessageList.vue +0 -635
  725. package/src/filiale/hanzhong/pc/message/MessageManage.vue +0 -136
  726. package/src/filiale/hanzhong/pc/message/MessageManageList.vue +0 -127
  727. package/src/filiale/hanzhong/pc/message/MessageManageNew.vue +0 -121
  728. package/src/filiale/hanzhong/pc/message/TemplateMessage.vue +0 -92
  729. package/src/filiale/hanzhong/pc/message/UserDefinedMessage.vue +0 -90
  730. package/src/filiale/hanzhong/pc/message/UserDefinedMessageNew.vue +0 -121
  731. package/src/filiale/hanzhong/telephone.js +0 -48
  732. package/src/filiale/hanzhong/telephoneAndroid.js +0 -15
  733. package/src/filiale/jiaocheng/android/createQRcode.vue +0 -204
  734. package/src/filiale/jiaocheng/android/onlineBuyGas.vue +0 -637
  735. package/src/filiale/jiaocheng/telephone.js +0 -8
  736. package/src/filiale/jiaocheng/telephoneAndroid.js +0 -15
  737. package/src/filiale/kelai/android/AppTakePic.vue +0 -143
  738. package/src/filiale/kelai/android/Outlay.vue +0 -274
  739. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +0 -176
  740. package/src/filiale/kelai/android/RepairFirstV.vue +0 -552
  741. package/src/filiale/kelai/android/RepairOrderV.vue +0 -1446
  742. package/src/filiale/kelai/android/RepairTypeList.vue +0 -170
  743. package/src/filiale/kelai/android/RepairUserInfo.vue +0 -537
  744. package/src/filiale/kelai/pc/CallReport/CallReportMainPage-Kelai.vue +0 -612
  745. package/src/filiale/kelai/pc/CallReport/CumulativeCalls.vue +0 -128
  746. package/src/filiale/kelai/pc/CallReport/IncomingTimedata.vue +0 -69
  747. package/src/filiale/kelai/pc/CallReport/Incomingcallvolume.vue +0 -82
  748. package/src/filiale/kelai/pc/CallReport/SeatStatus.vue +0 -60
  749. package/src/filiale/kelai/pc/CallReport/Time.vue +0 -107
  750. package/src/filiale/kelai/pc/CallReport/WorkorderTypesum.vue +0 -76
  751. package/src/filiale/kelai/pc/CallReport/timeRunning.vue +0 -66
  752. package/src/filiale/kelai/pc/KeLaiMaintenanceReport.vue +0 -297
  753. package/src/filiale/kelai/pc/RecordListLeft.vue +0 -188
  754. package/src/filiale/kelai/pc/Seekwork.vue +0 -308
  755. package/src/filiale/kelai/pc/TelAgentVoiceReport.vue +0 -276
  756. package/src/filiale/kelai/pc/TelFindUser.vue +0 -214
  757. package/src/filiale/kelai/pc/TelLossList.vue +0 -154
  758. package/src/filiale/kelai/pc/TextServer.vue +0 -157
  759. package/src/filiale/kelai/pc/Trafficassess.vue +0 -159
  760. package/src/filiale/kelai/pc/VisitInfo.vue +0 -268
  761. package/src/filiale/kelai/pc/VoiceServer.vue +0 -227
  762. package/src/filiale/kelai/pc/WorkCenterList.vue +0 -315
  763. package/src/filiale/kelai/pc/WorkListAllNew.vue +0 -717
  764. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +0 -55
  765. package/src/filiale/kelai/telephone.js +0 -40
  766. package/src/filiale/kelai/telephoneAndroid.js +0 -19
  767. package/src/filiale/liaoyuan/android/FaultAll.vue +0 -737
  768. package/src/filiale/liaoyuan/android/RepairDetails.vue +0 -493
  769. package/src/filiale/liaoyuan/android/RepairOrderV.vue +0 -831
  770. package/src/filiale/liaoyuan/telephoneAndroid.js +0 -13
  771. package/src/filiale/meihekou/android/Othercharge.vue +0 -443
  772. package/src/filiale/meihekou/android/createQRcode.vue +0 -192
  773. package/src/filiale/meihekou/android/onlineBuyGas.vue +0 -793
  774. package/src/filiale/meihekou/telephone.js +0 -13
  775. package/src/filiale/meihekou/telephoneAndroid.js +0 -18
  776. package/src/filiale/rizhao/android/FaultAll.vue +0 -893
  777. package/src/filiale/rizhao/android/Othercharge.vue +0 -423
  778. package/src/filiale/rizhao/android/RepairFirstV.vue +0 -525
  779. package/src/filiale/rizhao/android/RepairInfo.vue +0 -172
  780. package/src/filiale/rizhao/android/RepairOrderV.vue +0 -1415
  781. package/src/filiale/rizhao/pc/AnalysisMain.vue +0 -355
  782. package/src/filiale/rizhao/pc/CallRecords.vue +0 -89
  783. package/src/filiale/rizhao/pc/ChangemeterInfo.vue +0 -87
  784. package/src/filiale/rizhao/pc/ComplainWork.vue +0 -357
  785. package/src/filiale/rizhao/pc/Console.vue +0 -456
  786. package/src/filiale/rizhao/pc/DispatchMan.vue +0 -100
  787. package/src/filiale/rizhao/pc/DispatchWork.vue +0 -100
  788. package/src/filiale/rizhao/pc/DistributeWork.vue +0 -188
  789. package/src/filiale/rizhao/pc/FailureEdit.vue +0 -183
  790. package/src/filiale/rizhao/pc/FailureEditFire.vue +0 -169
  791. package/src/filiale/rizhao/pc/FailureEditRepair.vue +0 -174
  792. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +0 -890
  793. package/src/filiale/rizhao/pc/NewRepairPaper.vue +0 -377
  794. package/src/filiale/rizhao/pc/RecordListLeft.vue +0 -189
  795. package/src/filiale/rizhao/pc/ReminderOrder.vue +0 -51
  796. package/src/filiale/rizhao/pc/RepairsWork.vue +0 -936
  797. package/src/filiale/rizhao/pc/Seekwork.vue +0 -339
  798. package/src/filiale/rizhao/pc/SiteSend.vue +0 -258
  799. package/src/filiale/rizhao/pc/StateStatistics.vue +0 -292
  800. package/src/filiale/rizhao/pc/TelFindUser.vue +0 -243
  801. package/src/filiale/rizhao/pc/TelMan.vue +0 -133
  802. package/src/filiale/rizhao/pc/TeleInfo.vue +0 -142
  803. package/src/filiale/rizhao/pc/TelephoneAnaly.vue +0 -72
  804. package/src/filiale/rizhao/pc/TelephoneType.vue +0 -272
  805. package/src/filiale/rizhao/pc/Traffic.vue +0 -91
  806. package/src/filiale/rizhao/pc/UserOperate.vue +0 -49
  807. package/src/filiale/rizhao/pc/VoiceServer.vue +0 -219
  808. package/src/filiale/rizhao/pc/WorkCenterList.vue +0 -294
  809. package/src/filiale/rizhao/pc/WorkHistory.vue +0 -541
  810. package/src/filiale/rizhao/pc/WorkList.vue +0 -783
  811. package/src/filiale/rizhao/pc/WorkListAllNew.vue +0 -677
  812. package/src/filiale/rizhao/pc/WxBaobiaoService.vue +0 -134
  813. package/src/filiale/rizhao/telephone.js +0 -57
  814. package/src/filiale/rizhao/telephoneAndroid.js +0 -16
  815. package/src/filiale/rongcheng/CliWorkListAll.vue +0 -701
  816. package/src/filiale/rongcheng/FaultAll.vue +0 -713
  817. package/src/filiale/rongcheng/RepairFirstV.vue +0 -418
  818. package/src/filiale/rongcheng/RepairOrderV.vue +0 -1445
  819. package/src/filiale/rongcheng/RepairUserInfo.vue +0 -539
  820. package/src/filiale/rongcheng/ServiceDetails.vue +0 -53
  821. package/src/filiale/rongcheng/WorkListAll.vue +0 -727
  822. package/src/filiale/rongcheng/batchPrintSafeCheckOrder.vue +0 -303
  823. package/src/filiale/rongcheng/checkmsgZG.vue +0 -243
  824. package/src/filiale/rongcheng/onlineBuyGas.vue +0 -799
  825. package/src/filiale/rongcheng/onlineoperation.vue +0 -383
  826. package/src/filiale/rongcheng/telephone.js +0 -19
  827. package/src/filiale/rongcheng/telephoneAndroid.js +0 -19
  828. package/src/filiale/shanxian/android/RepairFirstV.vue +0 -639
  829. package/src/filiale/shanxian/pc/RepairsWork.vue +0 -826
  830. package/src/filiale/shanxian/pc/TelFindUser.vue +0 -310
  831. package/src/filiale/shanxian/pc/WorkList.vue +0 -823
  832. package/src/filiale/shanxian/telephone.js +0 -14
  833. package/src/filiale/shanxian/telephoneAndroid.js +0 -13
  834. package/src/filiale/shaoguan/pc/WorkCenterList.vue +0 -326
  835. package/src/filiale/shaoguan/pc/WorkListAllNew.vue +0 -683
  836. package/src/filiale/shaoguan/telephone.js +0 -14
  837. package/src/filiale/shexian/android/AddMyTask.vue +0 -361
  838. package/src/filiale/shexian/android/CompletedRepair.vue +0 -280
  839. package/src/filiale/shexian/android/FaultAll.vue +0 -847
  840. package/src/filiale/shexian/android/Outlay.vue +0 -266
  841. package/src/filiale/shexian/android/RepairFirstV.vue +0 -780
  842. package/src/filiale/shexian/android/RepairInfo.vue +0 -183
  843. package/src/filiale/shexian/android/RepairOrderV.vue +0 -732
  844. package/src/filiale/shexian/pc/NewRepairPaper.vue +0 -374
  845. package/src/filiale/shexian/pc/QueryVisitHistory.vue +0 -237
  846. package/src/filiale/shexian/pc/TelAgentVoiceReport.vue +0 -271
  847. package/src/filiale/shexian/pc/TelByOrderMan.vue +0 -109
  848. package/src/filiale/shexian/pc/TelByOrderManCount.vue +0 -124
  849. package/src/filiale/shexian/pc/TelByRepairType.vue +0 -111
  850. package/src/filiale/shexian/pc/WorkList.vue +0 -785
  851. package/src/filiale/shexian/pc/WorkListAllNew.vue +0 -735
  852. package/src/filiale/shexian/telephone.js +0 -21
  853. package/src/filiale/shexian/telephoneAndroid.js +0 -32
  854. package/src/filiale/shimen/pc/ChangemeterInfo.vue +0 -108
  855. package/src/filiale/shimen/pc/ComplainWork.vue +0 -297
  856. package/src/filiale/shimen/pc/DistributeWork.vue +0 -173
  857. package/src/filiale/shimen/pc/InfoTable.vue +0 -122
  858. package/src/filiale/shimen/pc/RepairList.vue +0 -109
  859. package/src/filiale/shimen/pc/RepairsWork.vue +0 -803
  860. package/src/filiale/shimen/pc/Seekwork.vue +0 -307
  861. package/src/filiale/shimen/pc/SellInfo.vue +0 -87
  862. package/src/filiale/shimen/pc/WorkListAllNew.vue +0 -680
  863. package/src/filiale/shimen/telephone.js +0 -23
  864. package/src/filiale/tianke/android/FaultAll.vue +0 -854
  865. package/src/filiale/tianke/android/RepairFirstV.vue +0 -614
  866. package/src/filiale/tianke/android.js +0 -12
  867. package/src/filiale/tianke/pc/DistributeWork.vue +0 -180
  868. package/src/filiale/tianke/pc/IgnitionVentilationWork.vue +0 -801
  869. package/src/filiale/tianke/pc/NewRepairPaper.vue +0 -370
  870. package/src/filiale/tianke/pc/RepairsWork.vue +0 -794
  871. package/src/filiale/tianke/pc/WorkList.vue +0 -769
  872. package/src/filiale/tianke/telephone.js +0 -17
  873. package/src/filiale/tianke/telephoneAndroid.js +0 -13
  874. package/src/filiale/tongchuan/android/AndroidStopGasManager.vue +0 -321
  875. package/src/filiale/tongchuan/android/CompletedRepair.vue +0 -211
  876. package/src/filiale/tongchuan/android/PhoneStandWork.vue +0 -409
  877. package/src/filiale/tongchuan/android/PhoneUpUserinfo.vue +0 -1005
  878. package/src/filiale/tongchuan/android/RepairDetails.vue +0 -623
  879. package/src/filiale/tongchuan/android/RepairFirstV.vue +0 -646
  880. package/src/filiale/tongchuan/android/RepairInfo.vue +0 -172
  881. package/src/filiale/tongchuan/android/RepairOrderV.vue +0 -1446
  882. package/src/filiale/tongchuan/android/TicketDetails.vue +0 -411
  883. package/src/filiale/tongchuan/pc/AnalysisMain.vue +0 -355
  884. package/src/filiale/tongchuan/pc/CallRecords.vue +0 -96
  885. package/src/filiale/tongchuan/pc/CheckWork.vue +0 -289
  886. package/src/filiale/tongchuan/pc/ComplainWork.vue +0 -324
  887. package/src/filiale/tongchuan/pc/DepRepairManCount.vue +0 -148
  888. package/src/filiale/tongchuan/pc/DistributeWork.vue +0 -179
  889. package/src/filiale/tongchuan/pc/ExportExcel.vue +0 -204
  890. package/src/filiale/tongchuan/pc/HiddenSituationWeixiu.vue +0 -115
  891. package/src/filiale/tongchuan/pc/QueryVisitHistory.vue +0 -236
  892. package/src/filiale/tongchuan/pc/RecordListLeft.vue +0 -216
  893. package/src/filiale/tongchuan/pc/RepairList.vue +0 -102
  894. package/src/filiale/tongchuan/pc/RepairWorkReport.vue +0 -133
  895. package/src/filiale/tongchuan/pc/RepairsWork.vue +0 -836
  896. package/src/filiale/tongchuan/pc/SeatInfo.vue +0 -325
  897. package/src/filiale/tongchuan/pc/Seekwork.vue +0 -307
  898. package/src/filiale/tongchuan/pc/ServiceDetails.vue +0 -112
  899. package/src/filiale/tongchuan/pc/StateStatistics.vue +0 -292
  900. package/src/filiale/tongchuan/pc/TelFindUser.vue +0 -278
  901. package/src/filiale/tongchuan/pc/TelMan.vue +0 -142
  902. package/src/filiale/tongchuan/pc/TelephoneAnaly.vue +0 -102
  903. package/src/filiale/tongchuan/pc/TelephoneType.vue +0 -272
  904. package/src/filiale/tongchuan/pc/Traffic.vue +0 -103
  905. package/src/filiale/tongchuan/pc/UserWork.vue +0 -805
  906. package/src/filiale/tongchuan/pc/VisitInfo.vue +0 -305
  907. package/src/filiale/tongchuan/pc/VisitListWork.vue +0 -251
  908. package/src/filiale/tongchuan/pc/VoiceServer.vue +0 -218
  909. package/src/filiale/tongchuan/pc/WorkCenterList.vue +0 -297
  910. package/src/filiale/tongchuan/pc/WorkHistory.vue +0 -521
  911. package/src/filiale/tongchuan/pc/WorkList.vue +0 -811
  912. package/src/filiale/tongchuan/pc/WorkListAll.vue +0 -731
  913. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +0 -294
  914. package/src/filiale/tongchuan/pc/WorkorderCheckDistributePlan.vue +0 -376
  915. package/src/filiale/tongchuan/pc/visitPlanList.vue +0 -342
  916. package/src/filiale/tongchuan/pc/visitPlanManage.vue +0 -599
  917. package/src/filiale/tongchuan/pc/visitServiceList.vue +0 -285
  918. package/src/filiale/tongchuan/telephone.js +0 -52
  919. package/src/filiale/tongchuan/telephoneAndroid.js +0 -23
  920. package/src/filiale/v3new/android/FaultAll.vue +0 -809
  921. package/src/filiale/v3new/android/RepairFirstV.vue +0 -633
  922. package/src/filiale/v3new/pc/SiteBack.vue +0 -83
  923. package/src/filiale/v3new/pc/WorkCenter.vue +0 -104
  924. package/src/filiale/v3new/pc/WorkCenterList.vue +0 -274
  925. package/src/filiale/v3new/pc/WorkHistory.vue +0 -537
  926. package/src/filiale/v3new/pc/WorkList.vue +0 -766
  927. package/src/filiale/v3new/pc/WorkListNew.vue +0 -706
  928. package/src/filiale/v3new/pc/serviceDeleteOrder.vue +0 -51
  929. package/src/filiale/v3new/telephone.js +0 -19
  930. package/src/filiale/v3new/telephoneAndroid.js +0 -15
  931. package/src/filiale/weinanct/android/AppInstallationMaterial.vue +0 -586
  932. package/src/filiale/weinanct/android/FaultAll.vue +0 -854
  933. package/src/filiale/weinanct/android/RepairDetails.vue +0 -508
  934. package/src/filiale/weinanct/android/RepairFirstV.vue +0 -635
  935. package/src/filiale/weinanct/android/RepairOrderV.vue +0 -1443
  936. package/src/filiale/weinanct/pc/TelFindUser.vue +0 -213
  937. package/src/filiale/weinanct/pc/VoiceServer.vue +0 -208
  938. package/src/filiale/weinanct/telephone.js +0 -14
  939. package/src/filiale/weinanct/telephoneAndroid.js +0 -20
  940. package/src/filiale/weinanct//350/257/264/346/230/216.txt +0 -1
  941. package/src/filiale/wenxi/android/FailureShow.vue +0 -61
  942. package/src/filiale/wenxi/android/FaultAll.vue +0 -710
  943. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +0 -1053
  944. package/src/filiale/wenxi/android/RepairFirstV.vue +0 -537
  945. package/src/filiale/wenxi/android/RepairInfo.vue +0 -252
  946. package/src/filiale/wenxi/android/RepairOrderV.vue +0 -805
  947. package/src/filiale/wenxi/android/RepairUserInfo.vue +0 -532
  948. package/src/filiale/wenxi/android/ZHihuanFirst.vue +0 -505
  949. package/src/filiale/wenxi/pc/DistributeWork.vue +0 -163
  950. package/src/filiale/wenxi/pc/FailureEdit.vue +0 -206
  951. package/src/filiale/wenxi/pc/GasWork.vue +0 -747
  952. package/src/filiale/wenxi/pc/MetereadInfo.vue +0 -82
  953. package/src/filiale/wenxi/pc/RepairsWork.vue +0 -853
  954. package/src/filiale/wenxi/pc/TelAgentVoiceReport.vue +0 -290
  955. package/src/filiale/wenxi/pc/TelFindUser.vue +0 -306
  956. package/src/filiale/wenxi/pc/VoiceServer.vue +0 -214
  957. package/src/filiale/wenxi/pc/WorkListAll.vue +0 -698
  958. package/src/filiale/wenxi/telephone.js +0 -19
  959. package/src/filiale/wenxi/telephoneAndroid.js +0 -20
  960. package/src/filiale/wuan/Util.js +0 -461
  961. package/src/filiale/wuan/android/AddMyTask.vue +0 -227
  962. package/src/filiale/wuan/android/RepairInfo.vue +0 -136
  963. package/src/filiale/wuan/android/RepairOrderV.vue +0 -1384
  964. package/src/filiale/wuan/android/RepairUserInfo.vue +0 -581
  965. package/src/filiale/wuan/pc/BatchList.vue +0 -329
  966. package/src/filiale/wuan/pc/BatchListSanhu.vue +0 -329
  967. package/src/filiale/wuan/pc/BatchOrdersSanhu.vue +0 -115
  968. package/src/filiale/wuan/pc/CheckWork.vue +0 -263
  969. package/src/filiale/wuan/pc/DistributeWork.vue +0 -136
  970. package/src/filiale/wuan/pc/FailureEdit.vue +0 -174
  971. package/src/filiale/wuan/pc/GasWorkSanhu.vue +0 -817
  972. package/src/filiale/wuan/pc/RepairsWork.vue +0 -848
  973. package/src/filiale/wuan/pc/Seekwork.vue +0 -311
  974. package/src/filiale/wuan/pc/TelFindUser.vue +0 -229
  975. package/src/filiale/wuan/pc/WorkListAll.vue +0 -642
  976. package/src/filiale/wuan/telephone.js +0 -23
  977. package/src/filiale/wuan/telephoneAndroid.js +0 -17
  978. package/src/filiale/wuhai/pc/CallRcords.vue +0 -109
  979. package/src/filiale/wuhai/pc/ComplainWork.vue +0 -324
  980. package/src/filiale/wuhai/pc/Console.vue +0 -432
  981. package/src/filiale/wuhai/pc/DistributeWork.vue +0 -173
  982. package/src/filiale/wuhai/pc/FailureEdit.vue +0 -190
  983. package/src/filiale/wuhai/pc/InfoTable.vue +0 -135
  984. package/src/filiale/wuhai/pc/NewRepairPaper.vue +0 -380
  985. package/src/filiale/wuhai/pc/RecordListLeft.vue +0 -202
  986. package/src/filiale/wuhai/pc/RepairsWork.vue +0 -811
  987. package/src/filiale/wuhai/pc/SecuritycheckInfo.vue +0 -92
  988. package/src/filiale/wuhai/pc/Seekwork.vue +0 -361
  989. package/src/filiale/wuhai/pc/ServiceRcords.vue +0 -146
  990. package/src/filiale/wuhai/pc/TelFindUser.vue +0 -256
  991. package/src/filiale/wuhai/pc/VoiceServer.vue +0 -211
  992. package/src/filiale/wuhai/pc/WorkCenter.vue +0 -104
  993. package/src/filiale/wuhai/pc/WorkCenterList.vue +0 -337
  994. package/src/filiale/wuhai/pc/WorkListAllNew.vue +0 -715
  995. package/src/filiale/wuhai/pc/serviceDeleteOrder.vue +0 -54
  996. package/src/filiale/wuhai/telephone.js +0 -35
  997. package/src/filiale/xinkang/android/FaultAll.vue +0 -840
  998. package/src/filiale/xinkang/android/RepairFirstV.vue +0 -484
  999. package/src/filiale/xinkang/telephoneAndroid.js +0 -14
  1000. package/src/filiale/yuansheng/android/RepairFirstV.vue +0 -636
  1001. package/src/filiale/yuansheng/android/RepairInfo.vue +0 -166
  1002. package/src/filiale/yuansheng/pc/DistributeWork.vue +0 -177
  1003. package/src/filiale/yuansheng/pc/FailureEdit.vue +0 -188
  1004. package/src/filiale/yuansheng/pc/HandplanInfo.vue +0 -78
  1005. package/src/filiale/yuansheng/pc/MetereadInfo.vue +0 -83
  1006. package/src/filiale/yuansheng/pc/ReservationWork.vue +0 -156
  1007. package/src/filiale/yuansheng/pc/TelFindUser.vue +0 -237
  1008. package/src/filiale/yuansheng/pc/VoiceServer.vue +0 -208
  1009. package/src/filiale/yuansheng/telephone.js +0 -20
  1010. package/src/filiale/yuansheng/telephoneAndroid.js +0 -16
  1011. package/src/filiale/yuncheng/pc/TelFindUser.vue +0 -315
  1012. package/src/filiale/yuncheng/pc/WorkList.vue +0 -823
  1013. package/src/filiale/yuncheng/pc/WorkListAllNew.vue +0 -722
  1014. package/src/filiale/yuncheng/telephone.js +0 -14
  1015. package/src/filiale/zhongsheng/android/FailureShow.vue +0 -61
  1016. package/src/filiale/zhongsheng/android/FaultAll.vue +0 -741
  1017. package/src/filiale/zhongsheng/android/RepairFirstV.vue +0 -464
  1018. package/src/filiale/zhongsheng/android/RepairInfo.vue +0 -133
  1019. package/src/filiale/zhongsheng/android/RepairOrderV.vue +0 -1430
  1020. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +0 -559
  1021. package/src/filiale/zhongsheng/pc/ComplainWork.vue +0 -299
  1022. package/src/filiale/zhongsheng/pc/Console.vue +0 -432
  1023. package/src/filiale/zhongsheng/pc/DistributeWork.vue +0 -173
  1024. package/src/filiale/zhongsheng/pc/IgnitionVentilationWork.vue +0 -836
  1025. package/src/filiale/zhongsheng/pc/InfoTable.vue +0 -124
  1026. package/src/filiale/zhongsheng/pc/RepairsWork.vue +0 -775
  1027. package/src/filiale/zhongsheng/pc/Seekwork.vue +0 -283
  1028. package/src/filiale/zhongsheng/pc/TelFindUser.vue +0 -216
  1029. package/src/filiale/zhongsheng/pc/WorkList.vue +0 -805
  1030. package/src/filiale/zhongsheng/pc/WorkListAll.vue +0 -628
  1031. package/src/filiale/zhongsheng/telephone.js +0 -23
  1032. package/src/filiale/zhongsheng/telephoneAndroid.js +0 -19
  1033. package/src/filiale/zhongyi/android/FaultAll.vue +0 -854
  1034. package/src/filiale/zhongyi/android/RepairFirstV.vue +0 -614
  1035. package/src/filiale/zhongyi/android.js +0 -12
  1036. package/src/filiale/zhongyi/pc/DistributeWork.vue +0 -180
  1037. package/src/filiale/zhongyi/pc/IgnitionVentilationWork.vue +0 -801
  1038. package/src/filiale/zhongyi/pc/NewRepairPaper.vue +0 -370
  1039. package/src/filiale/zhongyi/pc/RepairsWork.vue +0 -794
  1040. package/src/filiale/zhongyi/pc/WorkList.vue +0 -769
  1041. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +0 -672
  1042. package/src/filiale/zhongyi/telephone.js +0 -18
  1043. package/src/filiale/zhongyi/telephoneAndroid.js +0 -13
  1044. package/src/filiale/zhoukou/android/ChargeBill.vue +0 -201
  1045. package/src/filiale/zhoukou/android/FaultAll.vue +0 -779
  1046. package/src/filiale/zhoukou/android/Othercharge.vue +0 -591
  1047. package/src/filiale/zhoukou/android/OtherchargeZhoukou.vue +0 -574
  1048. package/src/filiale/zhoukou/android/Outlay.vue +0 -236
  1049. package/src/filiale/zhoukou/android/RepairDetails.vue +0 -544
  1050. package/src/filiale/zhoukou/android/RepairFirstV.vue +0 -542
  1051. package/src/filiale/zhoukou/android/RepairInfo.vue +0 -136
  1052. package/src/filiale/zhoukou/android/RepairOrderV.vue +0 -1383
  1053. package/src/filiale/zhoukou/android/RepairUserInfo.vue +0 -532
  1054. package/src/filiale/zhoukou/android/ZkBill.vue +0 -191
  1055. package/src/filiale/zhoukou/android/createQRcode.vue +0 -256
  1056. package/src/filiale/zhoukou/android/onlineBuyGas.vue +0 -804
  1057. package/src/filiale/zhoukou/android/onlineoperation.vue +0 -416
  1058. package/src/filiale/zhoukou/assets/dancheng.png +0 -0
  1059. package/src/filiale/zhoukou/assets/luyi.png +0 -0
  1060. package/src/filiale/zhoukou/assets/xiangcheng.png +0 -0
  1061. package/src/filiale/zhoukou/assets/xihua.png +0 -0
  1062. package/src/filiale/zhoukou/assets/zhoukou.png +0 -0
  1063. package/src/filiale/zhoukou/pc/ExportExcel.vue +0 -204
  1064. package/src/filiale/zhoukou/pc/NewRepairPaper.vue +0 -366
  1065. package/src/filiale/zhoukou/pc/SiteSend.vue +0 -265
  1066. package/src/filiale/zhoukou/pc/WorkHistory.vue +0 -514
  1067. package/src/filiale/zhoukou/pc/WorkList.vue +0 -653
  1068. package/src/filiale/zhoukou/pc/WorkListAllNew.vue +0 -675
  1069. package/src/filiale/zhoukou/telephone.js +0 -18
  1070. package/src/filiale/zhoukou/telephoneAndroid.js +0 -33
@@ -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);