layout.html 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. {% block head %}
  5. <style>
  6. /* Loading Spinner */
  7. .spinner{margin:0;width:70px;height:18px;margin:-35px 0 0 -9px;position:absolute;top:50%;left:50%;text-align:center}.spinner > div{width:18px;height:18px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0.0)}40%{-webkit-transform:scale(1.0)}}@keyframes bouncedelay{0%,80%,100%{transform:scale(0.0);-webkit-transform:scale(0.0)}40%{transform:scale(1.0);-webkit-transform:scale(1.0)}}
  8. .affix {
  9. top: 10px;
  10. position: sticky;
  11. }
  12. .affix-top {
  13. }
  14. .affix-bottom {
  15. }
  16. .alert-top {
  17. display: none;
  18. position: fixed !important;
  19. float: right !important;
  20. right: 0 !important;
  21. z-index: 9999 !important;
  22. margin-right: 30px !important;
  23. padding-top: .5rem !important;
  24. padding-bottom: .5rem !important;
  25. }
  26. @font-face {
  27. font-family: 'Baskerville';
  28. src: url('/static/fonts/Baskerville/Baskerville-Italic.eot');
  29. src: url('/static/fonts/Baskerville/Baskerville-Italic.eot?#iefix') format('embedded-opentype'),
  30. url('/static/fonts/Baskerville/Baskerville-Italic.woff2') format('woff2'),
  31. url('/static/fonts/Baskerville/Baskerville-Italic.woff') format('woff'),
  32. url('/static/fonts/Baskerville/Baskerville-Italic.ttf') format('truetype'),
  33. url('/static/fonts/Baskerville/Baskerville-Italic.svg#Baskerville-Italic') format('svg');
  34. font-weight: normal;
  35. font-style: italic;
  36. }
  37. </style>
  38. <meta charset="UTF-8">
  39. <!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
  40. <title>JimV</title>
  41. <meta name="description" content="">
  42. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">
  43. <!-- Favicons -->
  44. <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ url_for('static', filename='images/icons/JimV-icon_144X144.png') }}">
  45. <link rel="apple-touch-icon-precomposed" sizes="114x114" href="{{ url_for('static', filename='images/icons/JimV-icon_114X114.png') }}">
  46. <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ url_for('static', filename='images/icons/JimV-icon_72X72.png') }}">
  47. <link rel="apple-touch-icon-precomposed" href="{{ url_for('static', filename='images/icons/JimV-icon_57X57.png') }}">
  48. <link rel="shortcut icon" href="{{ url_for('static', filename='images/icons/JimV-icon_32X32.png') }}">
  49. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap/css/bootstrap.min.css') }}">
  50. <!-- HELPERS -->
  51. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/animate.css') }}">
  52. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/backgrounds.css') }}">
  53. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/boilerplate.css') }}">
  54. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/border-radius.css') }}">
  55. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/grid.css') }}">
  56. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/page-transitions.css') }}">
  57. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/spacing.css') }}">
  58. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/typography.css') }}">
  59. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/utils.css') }}">
  60. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/colors.css') }}">
  61. <!-- ELEMENTS -->
  62. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/badges.css') }}">
  63. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/buttons.css') }}">
  64. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/content-box.css') }}">
  65. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/dashboard-box.css') }}">
  66. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/forms.css') }}">
  67. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/images.css') }}">
  68. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/info-box.css') }}">
  69. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/invoice.css') }}">
  70. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/loading-indicators.css') }}">
  71. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/menus.css') }}">
  72. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/panel-box.css') }}">
  73. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/response-messages.css') }}">
  74. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/responsive-tables.css') }}">
  75. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/ribbon.css') }}">
  76. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/social-box.css') }}">
  77. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/tables.css') }}">
  78. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/tile-box.css') }}">
  79. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='elements/timeline.css') }}">
  80. <!-- ICONS -->
  81. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons/whhg-font/css/whhg.css') }}">
  82. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons-min/fontawesome/fontawesome.css') }}">
  83. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons-min/linecons/linecons.css') }}">
  84. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons-min/spinnericon/spinnericon.css') }}">
  85. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons/iconic/iconic.css') }}">
  86. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons/elusive/elusive.css') }}">
  87. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons/meteocons/meteocons.css') }}">
  88. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='icons/typicons/typicons.css') }}">
  89. <!-- WIDGETS -->
  90. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/accordion-ui/accordion.css') }}">
  91. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/calendar/calendar.css') }}">
  92. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/carousel/carousel.css') }}">
  93. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/charts/justgage/justgage.css') }}">
  94. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/charts/morris/morris.css') }}">
  95. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/charts/piegage/piegage.css') }}">
  96. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/charts/xcharts/xcharts.css') }}">
  97. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/chosen/chosen.css') }}">
  98. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/colorpicker/colorpicker.css') }}">
  99. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/datatable/datatable.css') }}">
  100. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/datepicker/datepicker.css') }}">
  101. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/datepicker-ui/datepicker.css') }}">
  102. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/daterangepicker/daterangepicker.css') }}">
  103. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/dialog/dialog.css') }}">
  104. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/dropdown/dropdown.css') }}">
  105. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/dropzone/dropzone.css') }}">
  106. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/file-input/fileinput.css') }}">
  107. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/input-switch/inputswitch.css') }}">
  108. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/input-switch/inputswitch-alt.css') }}">
  109. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/ionrangeslider/ionrangeslider.css') }}">
  110. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/jcrop/jcrop.css') }}">
  111. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/jgrowl-notifications/jgrowl.css') }}">
  112. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/loading-bar/loadingbar.css') }}">
  113. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/maps/vector-maps/vectormaps.css') }}">
  114. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/markdown/markdown.css') }}">
  115. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/modal/modal.css') }}">
  116. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/multi-select/multiselect.css') }}">
  117. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/multi-upload/fileupload.css') }}">
  118. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/nestable/nestable.css') }}">
  119. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/noty-notifications/noty.css') }}">
  120. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/popover/popover.css') }}">
  121. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/pretty-photo/prettyphoto.css') }}">
  122. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/progressbar/progressbar.css') }}">
  123. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/range-slider/rangeslider.css') }}">
  124. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/slidebars/slidebars.css') }}">
  125. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/slider-ui/slider.css') }}">
  126. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/summernote-wysiwyg/summernote-wysiwyg.css') }}">
  127. <!--<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/tabs-ui/tabs.css') }}">-->
  128. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/theme-switcher/themeswitcher.css') }}">
  129. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/timepicker/timepicker.css') }}">
  130. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/tocify/tocify.css') }}">
  131. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/tooltip/tooltip.css') }}">
  132. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/touchspin/touchspin.css') }}">
  133. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/uniform/uniform.css') }}">
  134. <!--<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/wizard/wizard.css') }}">-->
  135. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='widgets/xeditable/xeditable.css') }}">
  136. <!-- SNIPPETS -->
  137. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/chat.css') }}">
  138. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/files-box.css') }}">
  139. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/login-box.css') }}">
  140. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/notification-box.css') }}">
  141. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/progress-box.css') }}">
  142. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/todo.css') }}">
  143. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/user-profile.css') }}">
  144. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='snippets/mobile-navigation.css') }}">
  145. <!-- APPLICATIONS -->
  146. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='applications/mailbox.css') }}">
  147. <!-- Admin theme -->
  148. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='themes/admin/layout.css') }}">
  149. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='themes/admin/color-schemes/default.css') }}">
  150. <!-- Components theme -->
  151. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='themes/components/default.css') }}">
  152. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='themes/components/border-radius.css') }}">
  153. <!-- Admin responsive -->
  154. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/responsive-elements.css') }}">
  155. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='helpers/admin-responsive.css') }}">
  156. <!-- Latest compiled and minified CSS -->
  157. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap-select/css/bootstrap-select.min.css') }}">
  158. <!-- smartwizard CSS -->
  159. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='smartwizard/css/smart_wizard.min.css') }}">
  160. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='smartwizard/css/smart_wizard_theme_arrows.min.css') }}">
  161. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='smartwizard/css/smart_wizard_theme_circles.min.css') }}">
  162. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='smartwizard/css/smart_wizard_theme_dots.min.css') }}">
  163. <!-- JimV -->
  164. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/icons.css') }}">
  165. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/host-table.css') }}">
  166. <!-- JS Core -->
  167. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/jquery-core.js') }}"></script>
  168. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/jquery-ui-widget.js') }}"></script>
  169. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/jquery-ui-mouse.js') }}"></script>
  170. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/jquery-ui-position.js') }}"></script>
  171. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/modernizr.js') }}"></script>
  172. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/jquery-cookie.js') }}"></script>
  173. <script type="text/javascript" src="{{ url_for('static', filename='js-core-min/jquery-cookie.js') }}"></script>
  174. <script type="text/javascript">
  175. function alter_success(message) {
  176. $('#alert-success-tip').text(message);
  177. $('#alert-success-tip').css('display', 'block');
  178. setTimeout(function () {
  179. $('#alert-success-tip').css('display', 'none');
  180. }, 3000);
  181. }
  182. function alter_warning(message) {
  183. $('#alert-warning-tip').text(message);
  184. $('#alert-warning-tip').css('display', 'block');
  185. setTimeout(function () {
  186. $('#alert-warning-tip').css('display', 'none');
  187. }, 3000);
  188. }
  189. function alter_danger(message) {
  190. $('#alert-danger-tip').text(message);
  191. $('#alert-danger-tip').css('display', 'block');
  192. setTimeout(function () {
  193. $('#alert-danger-tip').css('display', 'none');
  194. }, 3000);
  195. }
  196. function logout() {
  197. $.ajax({
  198. url: '/api/user/_sign_out',
  199. type: 'GET',
  200. dataType: 'json',
  201. error: function () {
  202. alter_danger('注销失败!');
  203. },
  204. success : function(data, textStatus, xhr) {
  205. window.location.href="/";
  206. }
  207. })
  208. }
  209. </script>
  210. {% endblock head %}
  211. </head>
  212. <body>
  213. <div id="sb-site" style="height: 100%;">
  214. <!--<div id="loading">
  215. <div class="spinner">
  216. <div class="bounce1"></div>
  217. <div class="bounce2"></div>
  218. <div class="bounce3"></div>
  219. </div>
  220. </div>-->
  221. {% block body %}
  222. <div id="page-wrapper">
  223. <div id="page-header" class="font-inverse" style="background-color: rgba(2, 117, 216, 0.88)!important;">
  224. <div id="header-logo" class="logo-bg">
  225. <a href="/" class="logo-content-big" title="JimV" style="font-family: Baskerville; font-size: 60px; color: #fff; text-decoration: none;">
  226. JimV
  227. </a>
  228. <a id="close-sidebar" href="#" title="Close sidebar">
  229. <i class="glyph-icon icon-angle-left"></i>
  230. </a>
  231. </div>
  232. <div id="header-nav-left">
  233. <div class="user-account-btn dropdown">
  234. <a href="#" title="Admin" class="user-profile clearfix" data-toggle="dropdown">
  235. <img width="28" src="{{ url_for('static', filename='avatar/Burung-Pelatuk_144x144.png') }}" alt="Avatar">
  236. <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Admin</span>
  237. <i class="glyph-icon icon-angle-down"></i>
  238. </a>
  239. <div class="dropdown-menu float-left">
  240. <div class="box-sm">
  241. <div class="login-box clearfix">
  242. <div class="user-img">
  243. <a href="#" title="" class="change-img">Change photo</a>
  244. <img src="{{ url_for('static', filename='avatar/Burung-Pelatuk_144x144.png') }}" alt="Avatar">
  245. </div>
  246. <div class="user-info">
  247. <span>
  248. Admin
  249. <i>管理员</i>
  250. </span>
  251. </div>
  252. </div>
  253. <div class="pad5A button-pane button-pane-alt text-center">
  254. <a href="#" class="btn display-block font-normal btn-danger" onclick="logout();">
  255. <i class="glyph-icon icon-power-off"></i>
  256. 安全退出
  257. </a>
  258. </div>
  259. </div>
  260. </div>
  261. </div>
  262. </div><!-- #header-nav-left -->
  263. <div id="header-nav-right">
  264. <a class="header-btn" id="logout-btn" href="lockscreen-3.html" title="Lockscreen page example">
  265. <i class="glyph-icon icon-linecons-lock"></i>
  266. </a>
  267. </div><!-- #header-nav-right -->
  268. </div><!-- #page-header -->
  269. {% block page_sidebar %}
  270. <div id="page-sidebar" style="margin-top: 20px;">
  271. <div class="scroll-sidebar">
  272. <ul id="sidebar-menu" data-spy="affix" data-offset-top="10">
  273. <li class="header"><span>虚拟化管理平台</span></li>
  274. <li>
  275. <a href="#" title="虚拟机">
  276. <i class="glyph-icon icon-linecons-cloud"></i>
  277. <span>虚拟机</span>
  278. </a>
  279. <div class="sidebar-submenu">
  280. <ul>
  281. <li><a href="{{ url_for('v_guests.show') }}" title="虚拟机实例列表"><span>实例</span></a></li>
  282. <li><a href="{{ url_for('v_guests.show_guests_boot_jobs') }}" title="虚拟机启动作业列表"><span>启动作业</span></a></li>
  283. </ul>
  284. </div><!-- .sidebar-submenu -->
  285. </li>
  286. <li>
  287. <a href="{{ url_for('v_disks.show') }}" title="磁盘实例列表">
  288. <i class="glyph-icon icon-hdd-o"></i>
  289. <span>磁盘</span>
  290. </a>
  291. </li>
  292. <li>
  293. <a href="{{ url_for('v_hosts.show') }}" title="宿主机列表">
  294. <i class="glyph-icon icon-linecons-desktop"></i>
  295. <span>宿主机</span>
  296. </a>
  297. </li>
  298. <li>
  299. <a href="{{ url_for('v_logs.show') }}" title="JimV 虚拟化平台日志">
  300. <i class="glyph-icon icon-linecons-eye"></i>
  301. <span>平台日志</span>
  302. </a>
  303. </li>
  304. <li>
  305. <a href="{{ url_for('v_os_templates.show') }}" title="虚拟机模板列表">
  306. <i class="glyph-icon icon-linecons-inbox"></i>
  307. <span>虚拟机模板</span>
  308. </a>
  309. </li>
  310. <li>
  311. <a href="#" title="虚拟机启动作业">
  312. <i class="glyph-icon icon-linecons-paper-plane"></i>
  313. <span>启动作业</span>
  314. </a>
  315. <div class="sidebar-submenu">
  316. <ul>
  317. <li><a href="{{ url_for('v_boot_jobs.show') }}" title="启动作业列表"><span>启动作业</span></a></li>
  318. <li><a href="{{ url_for('v_operate_rules.show') }}" title="启动作业操作细则"><span>启动作业操作细则</span></a></li>
  319. </ul>
  320. </div><!-- .sidebar-submenu -->
  321. </li>
  322. <li>
  323. <a href="{{ url_for('v_config.show') }}" title="JimV 虚拟化平台系统配置">
  324. <i class="glyph-icon icon-linecons-cog"></i>
  325. <span>系统配置</span>
  326. </a>
  327. </li>
  328. </ul><!-- #sidebar-menu -->
  329. </div><!-- #scroll-sidebar -->
  330. </div><!-- #page-sidebar -->
  331. {% endblock page_sidebar %}
  332. <div id="page-content-wrapper">
  333. <div id="alert-success-tip" class="alert alert-success alert-top">
  334. </div>
  335. <div id="alert-warning-tip" class="alert alert-warning alert-top">
  336. </div>
  337. <div id="alert-danger-tip" class="alert alert-danger alert-top">
  338. </div>
  339. <div id="page-content">
  340. <div class="container">
  341. {% block content %}{% endblock %}
  342. </div>
  343. </div>
  344. </div>
  345. </div>
  346. {% endblock body %}
  347. <!-- WIDGETS -->
  348. <script type="text/javascript" src="{{ url_for('static', filename='tether/js/tether.js') }}"></script>
  349. <script type="text/javascript" src="{{ url_for('static', filename='bootstrap/js/bootstrap.min.js') }}"></script>
  350. <script type="text/javascript" src="{{ url_for('static', filename='bootstrap/js/affix.js') }}"></script>
  351. <!-- Bootstrap Dropdown -->
  352. <!-- <script type="text/javascript" src="{{ url_for('static', filename='widgets/dropdown/dropdown.js') }}"></script> -->
  353. <!-- Bootstrap Tooltip -->
  354. <!-- <script type="text/javascript" src="{{ url_for('static', filename='widgets/tooltip/tooltip.js') }}"></script> -->
  355. <!-- Bootstrap Popover -->
  356. <!-- <script type="text/javascript" src="{{ url_for('static', filename='widgets/popover/popover.js') }}"></script> -->
  357. <!-- Bootstrap Progress Bar -->
  358. <script type="text/javascript" src="{{ url_for('static', filename='widgets/progressbar/progressbar.js') }}"></script>
  359. <!-- Bootstrap Buttons -->
  360. <!-- <script type="text/javascript" src="{{ url_for('static', filename='widgets/button/button.js') }}"></script> -->
  361. <!-- Bootstrap Collapse -->
  362. <!-- <script type="text/javascript" src="{{ url_for('static', filename='widgets/collapse/collapse.js') }}"></script> -->
  363. <!-- Superclick -->
  364. <script type="text/javascript" src="{{ url_for('static', filename='widgets/superclick/superclick.js') }}"></script>
  365. <!-- Input switch alternate -->
  366. <script type="text/javascript" src="{{ url_for('static', filename='widgets/input-switch/inputswitch-alt.js') }}"></script>
  367. <!-- Bootstrap Wizard -->
  368. <!--<script type="text/javascript" src="{{ url_for('static', filename='widgets/wizard/wizard.js') }}"></script>
  369. <script type="text/javascript" src="{{ url_for('static', filename='widgets/wizard/wizard-demo.js') }}"></script>-->
  370. <!-- Boostrap Tabs -->
  371. <!--<script type="text/javascript" src="{{ url_for('static', filename='widgets/tabs/tabs.js') }}"></script>-->
  372. <!-- Slim scroll -->
  373. <script type="text/javascript" src="{{ url_for('static', filename='widgets/slimscroll/slimscroll.js') }}"></script>
  374. <!-- Slidebars -->
  375. <script type="text/javascript" src="{{ url_for('static', filename='widgets/slidebars/slidebars.js') }}"></script>
  376. <script type="text/javascript" src="{{ url_for('static', filename='widgets/slidebars/slidebars-demo.js') }}"></script>
  377. <!-- PieGage -->
  378. <script type="text/javascript" src="{{ url_for('static', filename='widgets/charts/piegage/piegage.js') }}"></script>
  379. <script type="text/javascript" src="{{ url_for('static', filename='widgets/charts/piegage/piegage-demo.js') }}"></script>
  380. <!-- Screenfull -->
  381. <script type="text/javascript" src="{{ url_for('static', filename='widgets/screenfull/screenfull.js') }}"></script>
  382. <!-- Content box -->
  383. <script type="text/javascript" src="{{ url_for('static', filename='widgets/content-box/contentbox.js') }}"></script>
  384. <!-- Overlay -->
  385. <script type="text/javascript" src="{{ url_for('static', filename='widgets/overlay/overlay.js') }}"></script>
  386. <!-- Widgets init for demo -->
  387. <script type="text/javascript" src="{{ url_for('static', filename='js-init/widgets-init.js') }}"></script>
  388. <!-- Theme layout -->
  389. <script type="text/javascript" src="{{ url_for('static', filename='themes/admin/layout.js') }}"></script>
  390. <!-- Theme switcher -->
  391. <script type="text/javascript" src="{{ url_for('static', filename='widgets/theme-switcher/themeswitcher.js') }}"></script>
  392. <!-- Chosen -->
  393. <script type="text/javascript" src="{{ url_for('static', filename='widgets/chosen/chosen.js') }}"></script>
  394. <script type="text/javascript" src="{{ url_for('static', filename='widgets/chosen/chosen-demo.js') }}"></script>
  395. <!-- Touchspin -->
  396. <script type="text/javascript" src="{{ url_for('static', filename='widgets/touchspin/touchspin.js') }}"></script>
  397. <script type="text/javascript" src="{{ url_for('static', filename='js-core/echarts.min.js') }}"></script>
  398. <script type="text/javascript" src="{{ url_for('static', filename='js-core/date_format.js') }}"></script>
  399. <!-- Latest compiled and minified JavaScript -->
  400. <script type="text/javascript" src="{{ url_for('static', filename='bootstrap-select/js/bootstrap-select.min.js') }}"></script>
  401. <!-- (Optional) Latest compiled and minified JavaScript translation files -->
  402. <!--<script type="text/javascript" src="{{ url_for('static', filename='bootstrap-select/js/i18n/defaults-zh_CN.min.js') }}"></script>-->
  403. <!-- smartwizard JavaScript -->
  404. <script type="text/javascript" src="{{ url_for('static', filename='smartwizard/js/jquery.smartWizard.min.js') }}"></script>
  405. <!-- JimV -->
  406. <script type="text/javascript" src="{{ url_for('static', filename='utils.js') }}"></script>
  407. </div>
  408. </body>
  409. </html>