Commit d8d8969c0ef159fe6f8a6bb93928e7233cbe6046
1 parent
fda87554
集成 angularjs
Showing
5 changed files
with
89 additions
and
36 deletions
src/main/java/com/bsth/entity/sys/Module.java
| @@ -35,6 +35,9 @@ public class Module { | @@ -35,6 +35,9 @@ public class Module { | ||
| 35 | 35 | ||
| 36 | private String icon; | 36 | private String icon; |
| 37 | 37 | ||
| 38 | + //页面容器 | ||
| 39 | + private String container; | ||
| 40 | + | ||
| 38 | /** | 41 | /** |
| 39 | * 1:组 | 42 | * 1:组 |
| 40 | * 2:目录 | 43 | * 2:目录 |
| @@ -152,4 +155,12 @@ public class Module { | @@ -152,4 +155,12 @@ public class Module { | ||
| 152 | // TODO Auto-generated method stub | 155 | // TODO Auto-generated method stub |
| 153 | return this.id.equals(((Module)obj).getId()); | 156 | return this.id.equals(((Module)obj).getId()); |
| 154 | } | 157 | } |
| 158 | + | ||
| 159 | + public String getContainer() { | ||
| 160 | + return container; | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + public void setContainer(String container) { | ||
| 164 | + this.container = container; | ||
| 165 | + } | ||
| 155 | } | 166 | } |
src/main/java/com/bsth/filter/ResourceFilter.java
| @@ -42,7 +42,7 @@ public class ResourceFilter extends BaseFilter { | @@ -42,7 +42,7 @@ public class ResourceFilter extends BaseFilter { | ||
| 42 | File f = new File(fPath); | 42 | File f = new File(fPath); |
| 43 | 43 | ||
| 44 | if (f.exists() && f.isFile() ){ | 44 | if (f.exists() && f.isFile() ){ |
| 45 | - response.sendRedirect("/#" + joinParam(request)); | 45 | + response.sendRedirect("/?_=" + joinParam(request)); |
| 46 | }else | 46 | }else |
| 47 | response.sendRedirect("/"); | 47 | response.sendRedirect("/"); |
| 48 | } | 48 | } |
src/main/resources/static/index.html
| @@ -89,6 +89,10 @@ tr.row-active td { | @@ -89,6 +89,10 @@ tr.row-active td { | ||
| 89 | .mt-element-list .list-simple.mt-list-container ul > .mt-list-item { | 89 | .mt-element-list .list-simple.mt-list-container ul > .mt-list-item { |
| 90 | padding: 3.3px 0; | 90 | padding: 3.3px 0; |
| 91 | } | 91 | } |
| 92 | + | ||
| 93 | +#route-container{ | ||
| 94 | + display: none; | ||
| 95 | +} | ||
| 92 | </style> | 96 | </style> |
| 93 | 97 | ||
| 94 | <!-- ocLazyLoading载入文件的位置 --> | 98 | <!-- ocLazyLoading载入文件的位置 --> |
| @@ -223,9 +227,15 @@ tr.row-active td { | @@ -223,9 +227,15 @@ tr.row-active td { | ||
| 223 | <ul class="sub-menu"> | 227 | <ul class="sub-menu"> |
| 224 | {{each dir.children as module s}} | 228 | {{each dir.children as module s}} |
| 225 | <li class="nav-item "> | 229 | <li class="nav-item "> |
| 226 | - <a href="/pages/{{module.path}}" class="nav-link " data-pjax> | ||
| 227 | - <span class="title">{{module.name}}</span> | ||
| 228 | - </a> | 230 | + {{if module.container=="pjax-container"}} |
| 231 | + <a href="/pages/{{module.path}}" class="nav-link " data-pjax> | ||
| 232 | + <span class="title">{{module.name}}</span> | ||
| 233 | + </a> | ||
| 234 | + {{else}} | ||
| 235 | + <a href="{{module.path}}" class="nav-link " data-angularjs> | ||
| 236 | + <span class="title">{{module.name}}</span> | ||
| 237 | + </a> | ||
| 238 | + {{/if}} | ||
| 229 | </li> | 239 | </li> |
| 230 | {{/each}} | 240 | {{/each}} |
| 231 | </ul> | 241 | </ul> |
| @@ -233,25 +243,6 @@ tr.row-active td { | @@ -233,25 +243,6 @@ tr.row-active td { | ||
| 233 | {{/each}} | 243 | {{/each}} |
| 234 | {{/each}} | 244 | {{/each}} |
| 235 | 245 | ||
| 236 | -<li class="heading"> | ||
| 237 | - <h3 class="uppercase">测试用例</h3> | ||
| 238 | -</li> | ||
| 239 | -<li class="nav-item"> | ||
| 240 | - <a href="javascript:;" class="nav-link nav-toggle "> | ||
| 241 | - <i class="fa fa-cloud"></i> | ||
| 242 | - <span class="title">用例组1</span> | ||
| 243 | - <span class="arrow"></span> | ||
| 244 | - </a> | ||
| 245 | - <ul class="sub-menu"> | ||
| 246 | - <li class="nav-item "> | ||
| 247 | - <a href="#/busConfig.html" class="nav-link "> | ||
| 248 | - <span class="title">用例1</span> | ||
| 249 | - </a> | ||
| 250 | - </li> | ||
| 251 | - </ul> | ||
| 252 | -</li> | ||
| 253 | - | ||
| 254 | - | ||
| 255 | </script> | 246 | </script> |
| 256 | <!--[if lt IE 9]> | 247 | <!--[if lt IE 9]> |
| 257 | <script src="assets/plugins/respond.min.js"></script> | 248 | <script src="assets/plugins/respond.min.js"></script> |
| @@ -300,14 +291,13 @@ tr.row-active td { | @@ -300,14 +291,13 @@ tr.row-active td { | ||
| 300 | <!-- 日期控件 --> | 291 | <!-- 日期控件 --> |
| 301 | <script src="metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js" type="text/javascript"></script> | 292 | <script src="metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js" type="text/javascript"></script> |
| 302 | 293 | ||
| 303 | -<!-- 地图相关(地图JS现在在子页面引入有问题,先全部放在index) --> | 294 | +<!-- 地图相关 --> |
| 304 | <!-- 百度 --> | 295 | <!-- 百度 --> |
| 305 | <script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT" ></script> | 296 | <script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT" ></script> |
| 306 | <script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js" ></script> | 297 | <script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js" ></script> |
| 307 | <!-- 高德 --> | 298 | <!-- 高德 --> |
| 308 | <script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script> | 299 | <script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script> |
| 309 | 300 | ||
| 310 | - | ||
| 311 | <script src="assets/js/common.js"></script> | 301 | <script src="assets/js/common.js"></script> |
| 312 | <!-- d3.js --> | 302 | <!-- d3.js --> |
| 313 | <script src="http://apps.bdimg.com/libs/d3/3.4.8/d3.min.js"></script> | 303 | <script src="http://apps.bdimg.com/libs/d3/3.4.8/d3.min.js"></script> |
| @@ -329,18 +319,25 @@ tr.row-active td { | @@ -329,18 +319,25 @@ tr.row-active td { | ||
| 329 | <script type="text/javascript"> | 319 | <script type="text/javascript"> |
| 330 | 320 | ||
| 331 | var dir = '/pages/'; | 321 | var dir = '/pages/'; |
| 332 | -var pjaxContainer = '#pjax-container'; | 322 | +var pjaxContainer = '#pjax-container' |
| 323 | + ,angJsContainer = '#route-container'; | ||
| 333 | 324 | ||
| 334 | $(function(){ | 325 | $(function(){ |
| 335 | //带 data-pjax 的链接由pjax加载 | 326 | //带 data-pjax 的链接由pjax加载 |
| 336 | $(document).pjax('a[data-pjax]', pjaxContainer); | 327 | $(document).pjax('a[data-pjax]', pjaxContainer); |
| 337 | 328 | ||
| 338 | - //左菜单点击事件 | 329 | + //pjax左菜单点击事件 |
| 339 | $(document).on('click','#leftMenuSidebar a[data-pjax]', function(){ | 330 | $(document).on('click','#leftMenuSidebar a[data-pjax]', function(){ |
| 340 | $('#leftMenuSidebar li.nav-item.active').removeClass('active'); | 331 | $('#leftMenuSidebar li.nav-item.active').removeClass('active'); |
| 341 | $(this).parent().addClass('active'); | 332 | $(this).parent().addClass('active'); |
| 342 | }); | 333 | }); |
| 343 | 334 | ||
| 335 | + //angularjs左菜单点击事件 | ||
| 336 | + $(document).on('click','#leftMenuSidebar a[data-angularjs]', function(){ | ||
| 337 | + $('#leftMenuSidebar li.nav-item.active').removeClass('active'); | ||
| 338 | + $(this).parent().addClass('active'); | ||
| 339 | + }); | ||
| 340 | + | ||
| 344 | //加载左菜单栏 | 341 | //加载左菜单栏 |
| 345 | $get('/module/findByCurrentUser', null, | 342 | $get('/module/findByCurrentUser', null, |
| 346 | function(ms){ | 343 | function(ms){ |
| @@ -351,15 +348,29 @@ $(function(){ | @@ -351,15 +348,29 @@ $(function(){ | ||
| 351 | var menuHtml = template('menu_list_temp', {list: treeArray}); | 348 | var menuHtml = template('menu_list_temp', {list: treeArray}); |
| 352 | $('#leftMenuSidebar').html(menuHtml); | 349 | $('#leftMenuSidebar').html(menuHtml); |
| 353 | 350 | ||
| 354 | - // 检查Hash值 | ||
| 355 | - var h = location.hash; | ||
| 356 | - if(h && h.indexOf(dir) != -1){ | ||
| 357 | - var path = h.substring(1, h.length); | ||
| 358 | - loadPage(path); | ||
| 359 | - //选中对应菜单项 | 351 | + /* |
| 352 | + * ----------- 检查URL ---------------- | ||
| 353 | + */ | ||
| 354 | + var p = $.url().param('_') | ||
| 355 | + ,h = location.hash; | ||
| 356 | + if(p && p.indexOf(dir) != -1){ | ||
| 357 | + showPjax(); | ||
| 358 | + //普通片段 | ||
| 359 | + loadPage(p); | ||
| 360 | + //选中菜单 | ||
| 361 | + $.each($('#leftMenuSidebar a'), function(i, item){ | ||
| 362 | + if(urlPattern($(item).attr('href'), p)){ | ||
| 363 | + activeLeftMenu(item); | ||
| 364 | + } | ||
| 365 | + }); | ||
| 366 | + } | ||
| 367 | + else if(h){ | ||
| 368 | + //angularjs片段 | ||
| 369 | + showAngJs(); | ||
| 370 | + //选中菜单 | ||
| 360 | $.each($('#leftMenuSidebar a'), function(i, item){ | 371 | $.each($('#leftMenuSidebar a'), function(i, item){ |
| 361 | - if(urlPattern($(item).attr('href'), path)){ | ||
| 362 | - $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open'); | 372 | + if($(item).attr('href') == h){ |
| 373 | + activeLeftMenu(item); | ||
| 363 | } | 374 | } |
| 364 | }); | 375 | }); |
| 365 | } | 376 | } |
| @@ -388,7 +399,20 @@ $(function(){ | @@ -388,7 +399,20 @@ $(function(){ | ||
| 388 | } | 399 | } |
| 389 | return r; | 400 | return r; |
| 390 | } | 401 | } |
| 391 | - | 402 | + |
| 403 | + function showPjax(){ | ||
| 404 | + $(angJsContainer).html('').hide(); | ||
| 405 | + $(pjaxContainer).show(); | ||
| 406 | + } | ||
| 407 | + | ||
| 408 | + function showAngJs(){ | ||
| 409 | + $(pjaxContainer).html('').hide(); | ||
| 410 | + $(angJsContainer).show(); | ||
| 411 | + } | ||
| 412 | + | ||
| 413 | + function activeLeftMenu(item){ | ||
| 414 | + $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open'); | ||
| 415 | + } | ||
| 392 | </script> | 416 | </script> |
| 393 | </body> | 417 | </body> |
| 394 | </html> | 418 | </html> |
| 395 | \ No newline at end of file | 419 | \ No newline at end of file |
src/main/resources/static/pages/permission/module/add_modal.html
| @@ -43,6 +43,15 @@ | @@ -43,6 +43,15 @@ | ||
| 43 | </div> | 43 | </div> |
| 44 | </div> | 44 | </div> |
| 45 | <div class="form-group"> | 45 | <div class="form-group"> |
| 46 | + <label class="col-md-3 control-label">片段渲染容器</label> | ||
| 47 | + <div class="col-md-9"> | ||
| 48 | + <select class="form-control input-medium" name="container"> | ||
| 49 | + <option value="pjax-container">pjax-container</option> | ||
| 50 | + <option value="route-container">route-container</option> | ||
| 51 | + </select> | ||
| 52 | + </div> | ||
| 53 | + </div> | ||
| 54 | + <div class="form-group"> | ||
| 46 | <label class="col-md-3 control-label">映射地址</label> | 55 | <label class="col-md-3 control-label">映射地址</label> |
| 47 | <div class="col-md-9"> | 56 | <div class="col-md-9"> |
| 48 | <input type="text" class="form-control input-medium" | 57 | <input type="text" class="form-control input-medium" |
src/main/resources/static/pages/permission/module/edit_modal.html
| @@ -45,6 +45,15 @@ | @@ -45,6 +45,15 @@ | ||
| 45 | </div> | 45 | </div> |
| 46 | </div> | 46 | </div> |
| 47 | <div class="form-group"> | 47 | <div class="form-group"> |
| 48 | + <label class="col-md-3 control-label">片段渲染容器</label> | ||
| 49 | + <div class="col-md-9"> | ||
| 50 | + <select class="form-control input-medium" name="container"> | ||
| 51 | + <option value="pjax-container">pjax-container</option> | ||
| 52 | + <option value="route-container">route-container</option> | ||
| 53 | + </select> | ||
| 54 | + </div> | ||
| 55 | + </div> | ||
| 56 | + <div class="form-group"> | ||
| 48 | <label class="col-md-3 control-label">映射</label> | 57 | <label class="col-md-3 control-label">映射</label> |
| 49 | <div class="col-md-9"> | 58 | <div class="col-md-9"> |
| 50 | <input type="text" class="form-control input-medium" | 59 | <input type="text" class="form-control input-medium" |