Commit 057b6f7d1200dc611c1b84628cdac1a3b9192bc4
1 parent
cc9ea059
update
Showing
27 changed files
with
2209 additions
and
5 deletions
src/main/java/com/bsth/controller/schedule/TTInfoController.java
0 → 100644
| 1 | +package com.bsth.controller.schedule; | ||
| 2 | + | ||
| 3 | +import com.bsth.controller.BaseController; | ||
| 4 | +import com.bsth.entity.schedule.TTInfo; | ||
| 5 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 6 | +import org.springframework.web.bind.annotation.RestController; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Created by xu on 16/5/12. | ||
| 10 | + */ | ||
| 11 | +@RestController | ||
| 12 | +@RequestMapping("tic") | ||
| 13 | +public class TTInfoController extends BaseController<TTInfo, Long> { | ||
| 14 | +} |
src/main/java/com/bsth/entity/schedule/TTInfo.java
0 → 100644
| 1 | +package com.bsth.entity.schedule; | ||
| 2 | + | ||
| 3 | +import javax.persistence.*; | ||
| 4 | +import java.util.Date; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 时刻表信息(TODO:之后要修正的) | ||
| 8 | + */ | ||
| 9 | +@Entity | ||
| 10 | +@Table(name="bsth_c_s_ttinfo") | ||
| 11 | +public class TTInfo { | ||
| 12 | + | ||
| 13 | + /** 主键Id */ | ||
| 14 | + @Id | ||
| 15 | + @GeneratedValue | ||
| 16 | + private Long id; | ||
| 17 | + | ||
| 18 | + /** TODO:之后再修正 */ | ||
| 19 | + /** 线路名称 */ | ||
| 20 | + private String xlName; | ||
| 21 | + /** 时刻表名称 */ | ||
| 22 | + private String name; | ||
| 23 | + /** 路牌数 */ | ||
| 24 | + private int lpCount; | ||
| 25 | + /** 圈数 */ | ||
| 26 | + private int loopCount; | ||
| 27 | + | ||
| 28 | + /** 是否启用 */ | ||
| 29 | + private boolean isEnable; | ||
| 30 | + | ||
| 31 | + // 创建日期 | ||
| 32 | + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") | ||
| 33 | + private Date createDate; | ||
| 34 | + // 修改日期 | ||
| 35 | + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") | ||
| 36 | + private Date updateDate; | ||
| 37 | + | ||
| 38 | + public Long getId() { | ||
| 39 | + return id; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void setId(Long id) { | ||
| 43 | + this.id = id; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public String getXlName() { | ||
| 47 | + return xlName; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + public void setXlName(String xlName) { | ||
| 51 | + this.xlName = xlName; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public String getName() { | ||
| 55 | + return name; | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public void setName(String name) { | ||
| 59 | + this.name = name; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public int getLpCount() { | ||
| 63 | + return lpCount; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public void setLpCount(int lpCount) { | ||
| 67 | + this.lpCount = lpCount; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public int getLoopCount() { | ||
| 71 | + return loopCount; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public void setLoopCount(int loopCount) { | ||
| 75 | + this.loopCount = loopCount; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + public boolean isEnable() { | ||
| 79 | + return isEnable; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public void setIsEnable(boolean isEnable) { | ||
| 83 | + this.isEnable = isEnable; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public Date getCreateDate() { | ||
| 87 | + return createDate; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public void setCreateDate(Date createDate) { | ||
| 91 | + this.createDate = createDate; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public Date getUpdateDate() { | ||
| 95 | + return updateDate; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + public void setUpdateDate(Date updateDate) { | ||
| 99 | + this.updateDate = updateDate; | ||
| 100 | + } | ||
| 101 | +} |
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
0 → 100644
src/main/java/com/bsth/repository/schedule/TTInfoRepository.java
0 → 100644
| 1 | +package com.bsth.repository.schedule; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.schedule.TTInfo; | ||
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 5 | +import org.springframework.stereotype.Repository; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Created by xu on 16/5/12. | ||
| 9 | + */ | ||
| 10 | +@Repository | ||
| 11 | +public interface TTInfoRepository extends BaseRepository<TTInfo, Long> { | ||
| 12 | +} |
src/main/java/com/bsth/service/schedule/TTInfoService.java
0 → 100644
src/main/java/com/bsth/service/schedule/TTInfoServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.schedule; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.schedule.TTInfo; | ||
| 4 | +import com.bsth.service.impl.BaseServiceImpl; | ||
| 5 | +import org.springframework.stereotype.Service; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Created by xu on 16/5/12. | ||
| 9 | + */ | ||
| 10 | +@Service | ||
| 11 | +public class TTInfoServiceImpl extends BaseServiceImpl<TTInfo, Long> implements TTInfoService { | ||
| 12 | +} |
src/main/resources/static/assets/bower_components/angular-route/.bower.json
0 → 100644
| 1 | +{ | ||
| 2 | + "name": "angular-route", | ||
| 3 | + "version": "1.4.10", | ||
| 4 | + "license": "MIT", | ||
| 5 | + "main": "./angular-route.js", | ||
| 6 | + "ignore": [], | ||
| 7 | + "dependencies": { | ||
| 8 | + "angular": "1.4.10" | ||
| 9 | + }, | ||
| 10 | + "homepage": "https://github.com/angular/bower-angular-route", | ||
| 11 | + "_release": "1.4.10", | ||
| 12 | + "_resolution": { | ||
| 13 | + "type": "version", | ||
| 14 | + "tag": "v1.4.10", | ||
| 15 | + "commit": "e47171deb69f1627ce8ab8cea3cf4ee79bf559d0" | ||
| 16 | + }, | ||
| 17 | + "_source": "https://github.com/angular/bower-angular-route.git", | ||
| 18 | + "_target": "1.4.x", | ||
| 19 | + "_originalSource": "angular-route" | ||
| 20 | +} | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
src/main/resources/static/assets/bower_components/angular-route/README.md
0 → 100644
| 1 | +# packaged angular-route | ||
| 2 | + | ||
| 3 | +This repo is for distribution on `npm` and `bower`. The source for this module is in the | ||
| 4 | +[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngRoute). | ||
| 5 | +Please file issues and pull requests against that repo. | ||
| 6 | + | ||
| 7 | +## Install | ||
| 8 | + | ||
| 9 | +You can install this package either with `npm` or with `bower`. | ||
| 10 | + | ||
| 11 | +### npm | ||
| 12 | + | ||
| 13 | +```shell | ||
| 14 | +npm install angular-route | ||
| 15 | +``` | ||
| 16 | + | ||
| 17 | +Then add `ngRoute` as a dependency for your app: | ||
| 18 | + | ||
| 19 | +```javascript | ||
| 20 | +angular.module('myApp', [require('angular-route')]); | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +### bower | ||
| 24 | + | ||
| 25 | +```shell | ||
| 26 | +bower install angular-route | ||
| 27 | +``` | ||
| 28 | + | ||
| 29 | +Add a `<script>` to your `index.html`: | ||
| 30 | + | ||
| 31 | +```html | ||
| 32 | +<script src="/bower_components/angular-route/angular-route.js"></script> | ||
| 33 | +``` | ||
| 34 | + | ||
| 35 | +Then add `ngRoute` as a dependency for your app: | ||
| 36 | + | ||
| 37 | +```javascript | ||
| 38 | +angular.module('myApp', ['ngRoute']); | ||
| 39 | +``` | ||
| 40 | + | ||
| 41 | +## Documentation | ||
| 42 | + | ||
| 43 | +Documentation is available on the | ||
| 44 | +[AngularJS docs site](http://docs.angularjs.org/api/ngRoute). | ||
| 45 | + | ||
| 46 | +## License | ||
| 47 | + | ||
| 48 | +The MIT License | ||
| 49 | + | ||
| 50 | +Copyright (c) 2010-2015 Google, Inc. http://angularjs.org | ||
| 51 | + | ||
| 52 | +Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 53 | +of this software and associated documentation files (the "Software"), to deal | ||
| 54 | +in the Software without restriction, including without limitation the rights | ||
| 55 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 56 | +copies of the Software, and to permit persons to whom the Software is | ||
| 57 | +furnished to do so, subject to the following conditions: | ||
| 58 | + | ||
| 59 | +The above copyright notice and this permission notice shall be included in | ||
| 60 | +all copies or substantial portions of the Software. | ||
| 61 | + | ||
| 62 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 63 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 64 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 65 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 66 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 67 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 68 | +THE SOFTWARE. |
src/main/resources/static/assets/bower_components/angular-route/angular-route.js
0 → 100644
| 1 | +/** | ||
| 2 | + * @license AngularJS v1.4.10 | ||
| 3 | + * (c) 2010-2015 Google, Inc. http://angularjs.org | ||
| 4 | + * License: MIT | ||
| 5 | + */ | ||
| 6 | +(function(window, angular, undefined) {'use strict'; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * @ngdoc module | ||
| 10 | + * @name ngRoute | ||
| 11 | + * @description | ||
| 12 | + * | ||
| 13 | + * # ngRoute | ||
| 14 | + * | ||
| 15 | + * The `ngRoute` module provides routing and deeplinking services and directives for angular apps. | ||
| 16 | + * | ||
| 17 | + * ## Example | ||
| 18 | + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. | ||
| 19 | + * | ||
| 20 | + * | ||
| 21 | + * <div doc-module-components="ngRoute"></div> | ||
| 22 | + */ | ||
| 23 | + /* global -ngRouteModule */ | ||
| 24 | +var ngRouteModule = angular.module('ngRoute', ['ng']). | ||
| 25 | + provider('$route', $RouteProvider), | ||
| 26 | + $routeMinErr = angular.$$minErr('ngRoute'); | ||
| 27 | + | ||
| 28 | +/** | ||
| 29 | + * @ngdoc provider | ||
| 30 | + * @name $routeProvider | ||
| 31 | + * | ||
| 32 | + * @description | ||
| 33 | + * | ||
| 34 | + * Used for configuring routes. | ||
| 35 | + * | ||
| 36 | + * ## Example | ||
| 37 | + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. | ||
| 38 | + * | ||
| 39 | + * ## Dependencies | ||
| 40 | + * Requires the {@link ngRoute `ngRoute`} module to be installed. | ||
| 41 | + */ | ||
| 42 | +function $RouteProvider() { | ||
| 43 | + function inherit(parent, extra) { | ||
| 44 | + return angular.extend(Object.create(parent), extra); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + var routes = {}; | ||
| 48 | + | ||
| 49 | + /** | ||
| 50 | + * @ngdoc method | ||
| 51 | + * @name $routeProvider#when | ||
| 52 | + * | ||
| 53 | + * @param {string} path Route path (matched against `$location.path`). If `$location.path` | ||
| 54 | + * contains redundant trailing slash or is missing one, the route will still match and the | ||
| 55 | + * `$location.path` will be updated to add or drop the trailing slash to exactly match the | ||
| 56 | + * route definition. | ||
| 57 | + * | ||
| 58 | + * * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up | ||
| 59 | + * to the next slash are matched and stored in `$routeParams` under the given `name` | ||
| 60 | + * when the route matches. | ||
| 61 | + * * `path` can contain named groups starting with a colon and ending with a star: | ||
| 62 | + * e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name` | ||
| 63 | + * when the route matches. | ||
| 64 | + * * `path` can contain optional named groups with a question mark: e.g.`:name?`. | ||
| 65 | + * | ||
| 66 | + * For example, routes like `/color/:color/largecode/:largecode*\/edit` will match | ||
| 67 | + * `/color/brown/largecode/code/with/slashes/edit` and extract: | ||
| 68 | + * | ||
| 69 | + * * `color: brown` | ||
| 70 | + * * `largecode: code/with/slashes`. | ||
| 71 | + * | ||
| 72 | + * | ||
| 73 | + * @param {Object} route Mapping information to be assigned to `$route.current` on route | ||
| 74 | + * match. | ||
| 75 | + * | ||
| 76 | + * Object properties: | ||
| 77 | + * | ||
| 78 | + * - `controller` – `{(string|function()=}` – Controller fn that should be associated with | ||
| 79 | + * newly created scope or the name of a {@link angular.Module#controller registered | ||
| 80 | + * controller} if passed as a string. | ||
| 81 | + * - `controllerAs` – `{string=}` – An identifier name for a reference to the controller. | ||
| 82 | + * If present, the controller will be published to scope under the `controllerAs` name. | ||
| 83 | + * - `template` – `{string=|function()=}` – html template as a string or a function that | ||
| 84 | + * returns an html template as a string which should be used by {@link | ||
| 85 | + * ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives. | ||
| 86 | + * This property takes precedence over `templateUrl`. | ||
| 87 | + * | ||
| 88 | + * If `template` is a function, it will be called with the following parameters: | ||
| 89 | + * | ||
| 90 | + * - `{Array.<Object>}` - route parameters extracted from the current | ||
| 91 | + * `$location.path()` by applying the current route | ||
| 92 | + * | ||
| 93 | + * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html | ||
| 94 | + * template that should be used by {@link ngRoute.directive:ngView ngView}. | ||
| 95 | + * | ||
| 96 | + * If `templateUrl` is a function, it will be called with the following parameters: | ||
| 97 | + * | ||
| 98 | + * - `{Array.<Object>}` - route parameters extracted from the current | ||
| 99 | + * `$location.path()` by applying the current route | ||
| 100 | + * | ||
| 101 | + * - `resolve` - `{Object.<string, function>=}` - An optional map of dependencies which should | ||
| 102 | + * be injected into the controller. If any of these dependencies are promises, the router | ||
| 103 | + * will wait for them all to be resolved or one to be rejected before the controller is | ||
| 104 | + * instantiated. | ||
| 105 | + * If all the promises are resolved successfully, the values of the resolved promises are | ||
| 106 | + * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is | ||
| 107 | + * fired. If any of the promises are rejected the | ||
| 108 | + * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object | ||
| 109 | + * is: | ||
| 110 | + * | ||
| 111 | + * - `key` – `{string}`: a name of a dependency to be injected into the controller. | ||
| 112 | + * - `factory` - `{string|function}`: If `string` then it is an alias for a service. | ||
| 113 | + * Otherwise if function, then it is {@link auto.$injector#invoke injected} | ||
| 114 | + * and the return value is treated as the dependency. If the result is a promise, it is | ||
| 115 | + * resolved before its value is injected into the controller. Be aware that | ||
| 116 | + * `ngRoute.$routeParams` will still refer to the previous route within these resolve | ||
| 117 | + * functions. Use `$route.current.params` to access the new route parameters, instead. | ||
| 118 | + * | ||
| 119 | + * - `redirectTo` – {(string|function())=} – value to update | ||
| 120 | + * {@link ng.$location $location} path with and trigger route redirection. | ||
| 121 | + * | ||
| 122 | + * If `redirectTo` is a function, it will be called with the following parameters: | ||
| 123 | + * | ||
| 124 | + * - `{Object.<string>}` - route parameters extracted from the current | ||
| 125 | + * `$location.path()` by applying the current route templateUrl. | ||
| 126 | + * - `{string}` - current `$location.path()` | ||
| 127 | + * - `{Object}` - current `$location.search()` | ||
| 128 | + * | ||
| 129 | + * The custom `redirectTo` function is expected to return a string which will be used | ||
| 130 | + * to update `$location.path()` and `$location.search()`. | ||
| 131 | + * | ||
| 132 | + * - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()` | ||
| 133 | + * or `$location.hash()` changes. | ||
| 134 | + * | ||
| 135 | + * If the option is set to `false` and url in the browser changes, then | ||
| 136 | + * `$routeUpdate` event is broadcasted on the root scope. | ||
| 137 | + * | ||
| 138 | + * - `[caseInsensitiveMatch=false]` - {boolean=} - match routes without being case sensitive | ||
| 139 | + * | ||
| 140 | + * If the option is set to `true`, then the particular route can be matched without being | ||
| 141 | + * case sensitive | ||
| 142 | + * | ||
| 143 | + * @returns {Object} self | ||
| 144 | + * | ||
| 145 | + * @description | ||
| 146 | + * Adds a new route definition to the `$route` service. | ||
| 147 | + */ | ||
| 148 | + this.when = function(path, route) { | ||
| 149 | + //copy original route object to preserve params inherited from proto chain | ||
| 150 | + var routeCopy = angular.copy(route); | ||
| 151 | + if (angular.isUndefined(routeCopy.reloadOnSearch)) { | ||
| 152 | + routeCopy.reloadOnSearch = true; | ||
| 153 | + } | ||
| 154 | + if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) { | ||
| 155 | + routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch; | ||
| 156 | + } | ||
| 157 | + routes[path] = angular.extend( | ||
| 158 | + routeCopy, | ||
| 159 | + path && pathRegExp(path, routeCopy) | ||
| 160 | + ); | ||
| 161 | + | ||
| 162 | + // create redirection for trailing slashes | ||
| 163 | + if (path) { | ||
| 164 | + var redirectPath = (path[path.length - 1] == '/') | ||
| 165 | + ? path.substr(0, path.length - 1) | ||
| 166 | + : path + '/'; | ||
| 167 | + | ||
| 168 | + routes[redirectPath] = angular.extend( | ||
| 169 | + {redirectTo: path}, | ||
| 170 | + pathRegExp(redirectPath, routeCopy) | ||
| 171 | + ); | ||
| 172 | + } | ||
| 173 | + | ||
| 174 | + return this; | ||
| 175 | + }; | ||
| 176 | + | ||
| 177 | + /** | ||
| 178 | + * @ngdoc property | ||
| 179 | + * @name $routeProvider#caseInsensitiveMatch | ||
| 180 | + * @description | ||
| 181 | + * | ||
| 182 | + * A boolean property indicating if routes defined | ||
| 183 | + * using this provider should be matched using a case insensitive | ||
| 184 | + * algorithm. Defaults to `false`. | ||
| 185 | + */ | ||
| 186 | + this.caseInsensitiveMatch = false; | ||
| 187 | + | ||
| 188 | + /** | ||
| 189 | + * @param path {string} path | ||
| 190 | + * @param opts {Object} options | ||
| 191 | + * @return {?Object} | ||
| 192 | + * | ||
| 193 | + * @description | ||
| 194 | + * Normalizes the given path, returning a regular expression | ||
| 195 | + * and the original path. | ||
| 196 | + * | ||
| 197 | + * Inspired by pathRexp in visionmedia/express/lib/utils.js. | ||
| 198 | + */ | ||
| 199 | + function pathRegExp(path, opts) { | ||
| 200 | + var insensitive = opts.caseInsensitiveMatch, | ||
| 201 | + ret = { | ||
| 202 | + originalPath: path, | ||
| 203 | + regexp: path | ||
| 204 | + }, | ||
| 205 | + keys = ret.keys = []; | ||
| 206 | + | ||
| 207 | + path = path | ||
| 208 | + .replace(/([().])/g, '\\$1') | ||
| 209 | + .replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g, function(_, slash, key, option) { | ||
| 210 | + var optional = (option === '?' || option === '*?') ? '?' : null; | ||
| 211 | + var star = (option === '*' || option === '*?') ? '*' : null; | ||
| 212 | + keys.push({ name: key, optional: !!optional }); | ||
| 213 | + slash = slash || ''; | ||
| 214 | + return '' | ||
| 215 | + + (optional ? '' : slash) | ||
| 216 | + + '(?:' | ||
| 217 | + + (optional ? slash : '') | ||
| 218 | + + (star && '(.+?)' || '([^/]+)') | ||
| 219 | + + (optional || '') | ||
| 220 | + + ')' | ||
| 221 | + + (optional || ''); | ||
| 222 | + }) | ||
| 223 | + .replace(/([\/$\*])/g, '\\$1'); | ||
| 224 | + | ||
| 225 | + ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : ''); | ||
| 226 | + return ret; | ||
| 227 | + } | ||
| 228 | + | ||
| 229 | + /** | ||
| 230 | + * @ngdoc method | ||
| 231 | + * @name $routeProvider#otherwise | ||
| 232 | + * | ||
| 233 | + * @description | ||
| 234 | + * Sets route definition that will be used on route change when no other route definition | ||
| 235 | + * is matched. | ||
| 236 | + * | ||
| 237 | + * @param {Object|string} params Mapping information to be assigned to `$route.current`. | ||
| 238 | + * If called with a string, the value maps to `redirectTo`. | ||
| 239 | + * @returns {Object} self | ||
| 240 | + */ | ||
| 241 | + this.otherwise = function(params) { | ||
| 242 | + if (typeof params === 'string') { | ||
| 243 | + params = {redirectTo: params}; | ||
| 244 | + } | ||
| 245 | + this.when(null, params); | ||
| 246 | + return this; | ||
| 247 | + }; | ||
| 248 | + | ||
| 249 | + | ||
| 250 | + this.$get = ['$rootScope', | ||
| 251 | + '$location', | ||
| 252 | + '$routeParams', | ||
| 253 | + '$q', | ||
| 254 | + '$injector', | ||
| 255 | + '$templateRequest', | ||
| 256 | + '$sce', | ||
| 257 | + function($rootScope, $location, $routeParams, $q, $injector, $templateRequest, $sce) { | ||
| 258 | + | ||
| 259 | + /** | ||
| 260 | + * @ngdoc service | ||
| 261 | + * @name $route | ||
| 262 | + * @requires $location | ||
| 263 | + * @requires $routeParams | ||
| 264 | + * | ||
| 265 | + * @property {Object} current Reference to the current route definition. | ||
| 266 | + * The route definition contains: | ||
| 267 | + * | ||
| 268 | + * - `controller`: The controller constructor as define in route definition. | ||
| 269 | + * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for | ||
| 270 | + * controller instantiation. The `locals` contain | ||
| 271 | + * the resolved values of the `resolve` map. Additionally the `locals` also contain: | ||
| 272 | + * | ||
| 273 | + * - `$scope` - The current route scope. | ||
| 274 | + * - `$template` - The current route template HTML. | ||
| 275 | + * | ||
| 276 | + * @property {Object} routes Object with all route configuration Objects as its properties. | ||
| 277 | + * | ||
| 278 | + * @description | ||
| 279 | + * `$route` is used for deep-linking URLs to controllers and views (HTML partials). | ||
| 280 | + * It watches `$location.url()` and tries to map the path to an existing route definition. | ||
| 281 | + * | ||
| 282 | + * Requires the {@link ngRoute `ngRoute`} module to be installed. | ||
| 283 | + * | ||
| 284 | + * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API. | ||
| 285 | + * | ||
| 286 | + * The `$route` service is typically used in conjunction with the | ||
| 287 | + * {@link ngRoute.directive:ngView `ngView`} directive and the | ||
| 288 | + * {@link ngRoute.$routeParams `$routeParams`} service. | ||
| 289 | + * | ||
| 290 | + * @example | ||
| 291 | + * This example shows how changing the URL hash causes the `$route` to match a route against the | ||
| 292 | + * URL, and the `ngView` pulls in the partial. | ||
| 293 | + * | ||
| 294 | + * <example name="$route-service" module="ngRouteExample" | ||
| 295 | + * deps="angular-route.js" fixBase="true"> | ||
| 296 | + * <file name="index.html"> | ||
| 297 | + * <div ng-controller="MainController"> | ||
| 298 | + * Choose: | ||
| 299 | + * <a href="Book/Moby">Moby</a> | | ||
| 300 | + * <a href="Book/Moby/ch/1">Moby: Ch1</a> | | ||
| 301 | + * <a href="Book/Gatsby">Gatsby</a> | | ||
| 302 | + * <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> | | ||
| 303 | + * <a href="Book/Scarlet">Scarlet Letter</a><br/> | ||
| 304 | + * | ||
| 305 | + * <div ng-view></div> | ||
| 306 | + * | ||
| 307 | + * <hr /> | ||
| 308 | + * | ||
| 309 | + * <pre>$location.path() = {{$location.path()}}</pre> | ||
| 310 | + * <pre>$route.current.templateUrl = {{$route.current.templateUrl}}</pre> | ||
| 311 | + * <pre>$route.current.params = {{$route.current.params}}</pre> | ||
| 312 | + * <pre>$route.current.scope.name = {{$route.current.scope.name}}</pre> | ||
| 313 | + * <pre>$routeParams = {{$routeParams}}</pre> | ||
| 314 | + * </div> | ||
| 315 | + * </file> | ||
| 316 | + * | ||
| 317 | + * <file name="book.html"> | ||
| 318 | + * controller: {{name}}<br /> | ||
| 319 | + * Book Id: {{params.bookId}}<br /> | ||
| 320 | + * </file> | ||
| 321 | + * | ||
| 322 | + * <file name="chapter.html"> | ||
| 323 | + * controller: {{name}}<br /> | ||
| 324 | + * Book Id: {{params.bookId}}<br /> | ||
| 325 | + * Chapter Id: {{params.chapterId}} | ||
| 326 | + * </file> | ||
| 327 | + * | ||
| 328 | + * <file name="script.js"> | ||
| 329 | + * angular.module('ngRouteExample', ['ngRoute']) | ||
| 330 | + * | ||
| 331 | + * .controller('MainController', function($scope, $route, $routeParams, $location) { | ||
| 332 | + * $scope.$route = $route; | ||
| 333 | + * $scope.$location = $location; | ||
| 334 | + * $scope.$routeParams = $routeParams; | ||
| 335 | + * }) | ||
| 336 | + * | ||
| 337 | + * .controller('BookController', function($scope, $routeParams) { | ||
| 338 | + * $scope.name = "BookController"; | ||
| 339 | + * $scope.params = $routeParams; | ||
| 340 | + * }) | ||
| 341 | + * | ||
| 342 | + * .controller('ChapterController', function($scope, $routeParams) { | ||
| 343 | + * $scope.name = "ChapterController"; | ||
| 344 | + * $scope.params = $routeParams; | ||
| 345 | + * }) | ||
| 346 | + * | ||
| 347 | + * .config(function($routeProvider, $locationProvider) { | ||
| 348 | + * $routeProvider | ||
| 349 | + * .when('/Book/:bookId', { | ||
| 350 | + * templateUrl: 'book.html', | ||
| 351 | + * controller: 'BookController', | ||
| 352 | + * resolve: { | ||
| 353 | + * // I will cause a 1 second delay | ||
| 354 | + * delay: function($q, $timeout) { | ||
| 355 | + * var delay = $q.defer(); | ||
| 356 | + * $timeout(delay.resolve, 1000); | ||
| 357 | + * return delay.promise; | ||
| 358 | + * } | ||
| 359 | + * } | ||
| 360 | + * }) | ||
| 361 | + * .when('/Book/:bookId/ch/:chapterId', { | ||
| 362 | + * templateUrl: 'chapter.html', | ||
| 363 | + * controller: 'ChapterController' | ||
| 364 | + * }); | ||
| 365 | + * | ||
| 366 | + * // configure html5 to get links working on jsfiddle | ||
| 367 | + * $locationProvider.html5Mode(true); | ||
| 368 | + * }); | ||
| 369 | + * | ||
| 370 | + * </file> | ||
| 371 | + * | ||
| 372 | + * <file name="protractor.js" type="protractor"> | ||
| 373 | + * it('should load and compile correct template', function() { | ||
| 374 | + * element(by.linkText('Moby: Ch1')).click(); | ||
| 375 | + * var content = element(by.css('[ng-view]')).getText(); | ||
| 376 | + * expect(content).toMatch(/controller\: ChapterController/); | ||
| 377 | + * expect(content).toMatch(/Book Id\: Moby/); | ||
| 378 | + * expect(content).toMatch(/Chapter Id\: 1/); | ||
| 379 | + * | ||
| 380 | + * element(by.partialLinkText('Scarlet')).click(); | ||
| 381 | + * | ||
| 382 | + * content = element(by.css('[ng-view]')).getText(); | ||
| 383 | + * expect(content).toMatch(/controller\: BookController/); | ||
| 384 | + * expect(content).toMatch(/Book Id\: Scarlet/); | ||
| 385 | + * }); | ||
| 386 | + * </file> | ||
| 387 | + * </example> | ||
| 388 | + */ | ||
| 389 | + | ||
| 390 | + /** | ||
| 391 | + * @ngdoc event | ||
| 392 | + * @name $route#$routeChangeStart | ||
| 393 | + * @eventType broadcast on root scope | ||
| 394 | + * @description | ||
| 395 | + * Broadcasted before a route change. At this point the route services starts | ||
| 396 | + * resolving all of the dependencies needed for the route change to occur. | ||
| 397 | + * Typically this involves fetching the view template as well as any dependencies | ||
| 398 | + * defined in `resolve` route property. Once all of the dependencies are resolved | ||
| 399 | + * `$routeChangeSuccess` is fired. | ||
| 400 | + * | ||
| 401 | + * The route change (and the `$location` change that triggered it) can be prevented | ||
| 402 | + * by calling `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} | ||
| 403 | + * for more details about event object. | ||
| 404 | + * | ||
| 405 | + * @param {Object} angularEvent Synthetic event object. | ||
| 406 | + * @param {Route} next Future route information. | ||
| 407 | + * @param {Route} current Current route information. | ||
| 408 | + */ | ||
| 409 | + | ||
| 410 | + /** | ||
| 411 | + * @ngdoc event | ||
| 412 | + * @name $route#$routeChangeSuccess | ||
| 413 | + * @eventType broadcast on root scope | ||
| 414 | + * @description | ||
| 415 | + * Broadcasted after a route change has happened successfully. | ||
| 416 | + * The `resolve` dependencies are now available in the `current.locals` property. | ||
| 417 | + * | ||
| 418 | + * {@link ngRoute.directive:ngView ngView} listens for the directive | ||
| 419 | + * to instantiate the controller and render the view. | ||
| 420 | + * | ||
| 421 | + * @param {Object} angularEvent Synthetic event object. | ||
| 422 | + * @param {Route} current Current route information. | ||
| 423 | + * @param {Route|Undefined} previous Previous route information, or undefined if current is | ||
| 424 | + * first route entered. | ||
| 425 | + */ | ||
| 426 | + | ||
| 427 | + /** | ||
| 428 | + * @ngdoc event | ||
| 429 | + * @name $route#$routeChangeError | ||
| 430 | + * @eventType broadcast on root scope | ||
| 431 | + * @description | ||
| 432 | + * Broadcasted if any of the resolve promises are rejected. | ||
| 433 | + * | ||
| 434 | + * @param {Object} angularEvent Synthetic event object | ||
| 435 | + * @param {Route} current Current route information. | ||
| 436 | + * @param {Route} previous Previous route information. | ||
| 437 | + * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise. | ||
| 438 | + */ | ||
| 439 | + | ||
| 440 | + /** | ||
| 441 | + * @ngdoc event | ||
| 442 | + * @name $route#$routeUpdate | ||
| 443 | + * @eventType broadcast on root scope | ||
| 444 | + * @description | ||
| 445 | + * The `reloadOnSearch` property has been set to false, and we are reusing the same | ||
| 446 | + * instance of the Controller. | ||
| 447 | + * | ||
| 448 | + * @param {Object} angularEvent Synthetic event object | ||
| 449 | + * @param {Route} current Current/previous route information. | ||
| 450 | + */ | ||
| 451 | + | ||
| 452 | + var forceReload = false, | ||
| 453 | + preparedRoute, | ||
| 454 | + preparedRouteIsUpdateOnly, | ||
| 455 | + $route = { | ||
| 456 | + routes: routes, | ||
| 457 | + | ||
| 458 | + /** | ||
| 459 | + * @ngdoc method | ||
| 460 | + * @name $route#reload | ||
| 461 | + * | ||
| 462 | + * @description | ||
| 463 | + * Causes `$route` service to reload the current route even if | ||
| 464 | + * {@link ng.$location $location} hasn't changed. | ||
| 465 | + * | ||
| 466 | + * As a result of that, {@link ngRoute.directive:ngView ngView} | ||
| 467 | + * creates new scope and reinstantiates the controller. | ||
| 468 | + */ | ||
| 469 | + reload: function() { | ||
| 470 | + forceReload = true; | ||
| 471 | + | ||
| 472 | + var fakeLocationEvent = { | ||
| 473 | + defaultPrevented: false, | ||
| 474 | + preventDefault: function fakePreventDefault() { | ||
| 475 | + this.defaultPrevented = true; | ||
| 476 | + forceReload = false; | ||
| 477 | + } | ||
| 478 | + }; | ||
| 479 | + | ||
| 480 | + $rootScope.$evalAsync(function() { | ||
| 481 | + prepareRoute(fakeLocationEvent); | ||
| 482 | + if (!fakeLocationEvent.defaultPrevented) commitRoute(); | ||
| 483 | + }); | ||
| 484 | + }, | ||
| 485 | + | ||
| 486 | + /** | ||
| 487 | + * @ngdoc method | ||
| 488 | + * @name $route#updateParams | ||
| 489 | + * | ||
| 490 | + * @description | ||
| 491 | + * Causes `$route` service to update the current URL, replacing | ||
| 492 | + * current route parameters with those specified in `newParams`. | ||
| 493 | + * Provided property names that match the route's path segment | ||
| 494 | + * definitions will be interpolated into the location's path, while | ||
| 495 | + * remaining properties will be treated as query params. | ||
| 496 | + * | ||
| 497 | + * @param {!Object<string, string>} newParams mapping of URL parameter names to values | ||
| 498 | + */ | ||
| 499 | + updateParams: function(newParams) { | ||
| 500 | + if (this.current && this.current.$$route) { | ||
| 501 | + newParams = angular.extend({}, this.current.params, newParams); | ||
| 502 | + $location.path(interpolate(this.current.$$route.originalPath, newParams)); | ||
| 503 | + // interpolate modifies newParams, only query params are left | ||
| 504 | + $location.search(newParams); | ||
| 505 | + } else { | ||
| 506 | + throw $routeMinErr('norout', 'Tried updating route when with no current route'); | ||
| 507 | + } | ||
| 508 | + } | ||
| 509 | + }; | ||
| 510 | + | ||
| 511 | + $rootScope.$on('$locationChangeStart', prepareRoute); | ||
| 512 | + $rootScope.$on('$locationChangeSuccess', commitRoute); | ||
| 513 | + | ||
| 514 | + return $route; | ||
| 515 | + | ||
| 516 | + ///////////////////////////////////////////////////// | ||
| 517 | + | ||
| 518 | + /** | ||
| 519 | + * @param on {string} current url | ||
| 520 | + * @param route {Object} route regexp to match the url against | ||
| 521 | + * @return {?Object} | ||
| 522 | + * | ||
| 523 | + * @description | ||
| 524 | + * Check if the route matches the current url. | ||
| 525 | + * | ||
| 526 | + * Inspired by match in | ||
| 527 | + * visionmedia/express/lib/router/router.js. | ||
| 528 | + */ | ||
| 529 | + function switchRouteMatcher(on, route) { | ||
| 530 | + var keys = route.keys, | ||
| 531 | + params = {}; | ||
| 532 | + | ||
| 533 | + if (!route.regexp) return null; | ||
| 534 | + | ||
| 535 | + var m = route.regexp.exec(on); | ||
| 536 | + if (!m) return null; | ||
| 537 | + | ||
| 538 | + for (var i = 1, len = m.length; i < len; ++i) { | ||
| 539 | + var key = keys[i - 1]; | ||
| 540 | + | ||
| 541 | + var val = m[i]; | ||
| 542 | + | ||
| 543 | + if (key && val) { | ||
| 544 | + params[key.name] = val; | ||
| 545 | + } | ||
| 546 | + } | ||
| 547 | + return params; | ||
| 548 | + } | ||
| 549 | + | ||
| 550 | + function prepareRoute($locationEvent) { | ||
| 551 | + var lastRoute = $route.current; | ||
| 552 | + | ||
| 553 | + preparedRoute = parseRoute(); | ||
| 554 | + preparedRouteIsUpdateOnly = preparedRoute && lastRoute && preparedRoute.$$route === lastRoute.$$route | ||
| 555 | + && angular.equals(preparedRoute.pathParams, lastRoute.pathParams) | ||
| 556 | + && !preparedRoute.reloadOnSearch && !forceReload; | ||
| 557 | + | ||
| 558 | + if (!preparedRouteIsUpdateOnly && (lastRoute || preparedRoute)) { | ||
| 559 | + if ($rootScope.$broadcast('$routeChangeStart', preparedRoute, lastRoute).defaultPrevented) { | ||
| 560 | + if ($locationEvent) { | ||
| 561 | + $locationEvent.preventDefault(); | ||
| 562 | + } | ||
| 563 | + } | ||
| 564 | + } | ||
| 565 | + } | ||
| 566 | + | ||
| 567 | + function commitRoute() { | ||
| 568 | + var lastRoute = $route.current; | ||
| 569 | + var nextRoute = preparedRoute; | ||
| 570 | + | ||
| 571 | + if (preparedRouteIsUpdateOnly) { | ||
| 572 | + lastRoute.params = nextRoute.params; | ||
| 573 | + angular.copy(lastRoute.params, $routeParams); | ||
| 574 | + $rootScope.$broadcast('$routeUpdate', lastRoute); | ||
| 575 | + } else if (nextRoute || lastRoute) { | ||
| 576 | + forceReload = false; | ||
| 577 | + $route.current = nextRoute; | ||
| 578 | + if (nextRoute) { | ||
| 579 | + if (nextRoute.redirectTo) { | ||
| 580 | + if (angular.isString(nextRoute.redirectTo)) { | ||
| 581 | + $location.path(interpolate(nextRoute.redirectTo, nextRoute.params)).search(nextRoute.params) | ||
| 582 | + .replace(); | ||
| 583 | + } else { | ||
| 584 | + $location.url(nextRoute.redirectTo(nextRoute.pathParams, $location.path(), $location.search())) | ||
| 585 | + .replace(); | ||
| 586 | + } | ||
| 587 | + } | ||
| 588 | + } | ||
| 589 | + | ||
| 590 | + $q.when(nextRoute). | ||
| 591 | + then(function() { | ||
| 592 | + if (nextRoute) { | ||
| 593 | + var locals = angular.extend({}, nextRoute.resolve), | ||
| 594 | + template, templateUrl; | ||
| 595 | + | ||
| 596 | + angular.forEach(locals, function(value, key) { | ||
| 597 | + locals[key] = angular.isString(value) ? | ||
| 598 | + $injector.get(value) : $injector.invoke(value, null, null, key); | ||
| 599 | + }); | ||
| 600 | + | ||
| 601 | + if (angular.isDefined(template = nextRoute.template)) { | ||
| 602 | + if (angular.isFunction(template)) { | ||
| 603 | + template = template(nextRoute.params); | ||
| 604 | + } | ||
| 605 | + } else if (angular.isDefined(templateUrl = nextRoute.templateUrl)) { | ||
| 606 | + if (angular.isFunction(templateUrl)) { | ||
| 607 | + templateUrl = templateUrl(nextRoute.params); | ||
| 608 | + } | ||
| 609 | + if (angular.isDefined(templateUrl)) { | ||
| 610 | + nextRoute.loadedTemplateUrl = $sce.valueOf(templateUrl); | ||
| 611 | + template = $templateRequest(templateUrl); | ||
| 612 | + } | ||
| 613 | + } | ||
| 614 | + if (angular.isDefined(template)) { | ||
| 615 | + locals['$template'] = template; | ||
| 616 | + } | ||
| 617 | + return $q.all(locals); | ||
| 618 | + } | ||
| 619 | + }). | ||
| 620 | + then(function(locals) { | ||
| 621 | + // after route change | ||
| 622 | + if (nextRoute == $route.current) { | ||
| 623 | + if (nextRoute) { | ||
| 624 | + nextRoute.locals = locals; | ||
| 625 | + angular.copy(nextRoute.params, $routeParams); | ||
| 626 | + } | ||
| 627 | + $rootScope.$broadcast('$routeChangeSuccess', nextRoute, lastRoute); | ||
| 628 | + } | ||
| 629 | + }, function(error) { | ||
| 630 | + if (nextRoute == $route.current) { | ||
| 631 | + $rootScope.$broadcast('$routeChangeError', nextRoute, lastRoute, error); | ||
| 632 | + } | ||
| 633 | + }); | ||
| 634 | + } | ||
| 635 | + } | ||
| 636 | + | ||
| 637 | + | ||
| 638 | + /** | ||
| 639 | + * @returns {Object} the current active route, by matching it against the URL | ||
| 640 | + */ | ||
| 641 | + function parseRoute() { | ||
| 642 | + // Match a route | ||
| 643 | + var params, match; | ||
| 644 | + angular.forEach(routes, function(route, path) { | ||
| 645 | + if (!match && (params = switchRouteMatcher($location.path(), route))) { | ||
| 646 | + match = inherit(route, { | ||
| 647 | + params: angular.extend({}, $location.search(), params), | ||
| 648 | + pathParams: params}); | ||
| 649 | + match.$$route = route; | ||
| 650 | + } | ||
| 651 | + }); | ||
| 652 | + // No route matched; fallback to "otherwise" route | ||
| 653 | + return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}}); | ||
| 654 | + } | ||
| 655 | + | ||
| 656 | + /** | ||
| 657 | + * @returns {string} interpolation of the redirect path with the parameters | ||
| 658 | + */ | ||
| 659 | + function interpolate(string, params) { | ||
| 660 | + var result = []; | ||
| 661 | + angular.forEach((string || '').split(':'), function(segment, i) { | ||
| 662 | + if (i === 0) { | ||
| 663 | + result.push(segment); | ||
| 664 | + } else { | ||
| 665 | + var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/); | ||
| 666 | + var key = segmentMatch[1]; | ||
| 667 | + result.push(params[key]); | ||
| 668 | + result.push(segmentMatch[2] || ''); | ||
| 669 | + delete params[key]; | ||
| 670 | + } | ||
| 671 | + }); | ||
| 672 | + return result.join(''); | ||
| 673 | + } | ||
| 674 | + }]; | ||
| 675 | +} | ||
| 676 | + | ||
| 677 | +ngRouteModule.provider('$routeParams', $RouteParamsProvider); | ||
| 678 | + | ||
| 679 | + | ||
| 680 | +/** | ||
| 681 | + * @ngdoc service | ||
| 682 | + * @name $routeParams | ||
| 683 | + * @requires $route | ||
| 684 | + * | ||
| 685 | + * @description | ||
| 686 | + * The `$routeParams` service allows you to retrieve the current set of route parameters. | ||
| 687 | + * | ||
| 688 | + * Requires the {@link ngRoute `ngRoute`} module to be installed. | ||
| 689 | + * | ||
| 690 | + * The route parameters are a combination of {@link ng.$location `$location`}'s | ||
| 691 | + * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}. | ||
| 692 | + * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched. | ||
| 693 | + * | ||
| 694 | + * In case of parameter name collision, `path` params take precedence over `search` params. | ||
| 695 | + * | ||
| 696 | + * The service guarantees that the identity of the `$routeParams` object will remain unchanged | ||
| 697 | + * (but its properties will likely change) even when a route change occurs. | ||
| 698 | + * | ||
| 699 | + * Note that the `$routeParams` are only updated *after* a route change completes successfully. | ||
| 700 | + * This means that you cannot rely on `$routeParams` being correct in route resolve functions. | ||
| 701 | + * Instead you can use `$route.current.params` to access the new route's parameters. | ||
| 702 | + * | ||
| 703 | + * @example | ||
| 704 | + * ```js | ||
| 705 | + * // Given: | ||
| 706 | + * // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby | ||
| 707 | + * // Route: /Chapter/:chapterId/Section/:sectionId | ||
| 708 | + * // | ||
| 709 | + * // Then | ||
| 710 | + * $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'} | ||
| 711 | + * ``` | ||
| 712 | + */ | ||
| 713 | +function $RouteParamsProvider() { | ||
| 714 | + this.$get = function() { return {}; }; | ||
| 715 | +} | ||
| 716 | + | ||
| 717 | +ngRouteModule.directive('ngView', ngViewFactory); | ||
| 718 | +ngRouteModule.directive('ngView', ngViewFillContentFactory); | ||
| 719 | + | ||
| 720 | + | ||
| 721 | +/** | ||
| 722 | + * @ngdoc directive | ||
| 723 | + * @name ngView | ||
| 724 | + * @restrict ECA | ||
| 725 | + * | ||
| 726 | + * @description | ||
| 727 | + * # Overview | ||
| 728 | + * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by | ||
| 729 | + * including the rendered template of the current route into the main layout (`index.html`) file. | ||
| 730 | + * Every time the current route changes, the included view changes with it according to the | ||
| 731 | + * configuration of the `$route` service. | ||
| 732 | + * | ||
| 733 | + * Requires the {@link ngRoute `ngRoute`} module to be installed. | ||
| 734 | + * | ||
| 735 | + * @animations | ||
| 736 | + * enter - animation is used to bring new content into the browser. | ||
| 737 | + * leave - animation is used to animate existing content away. | ||
| 738 | + * | ||
| 739 | + * The enter and leave animation occur concurrently. | ||
| 740 | + * | ||
| 741 | + * @scope | ||
| 742 | + * @priority 400 | ||
| 743 | + * @param {string=} onload Expression to evaluate whenever the view updates. | ||
| 744 | + * | ||
| 745 | + * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll | ||
| 746 | + * $anchorScroll} to scroll the viewport after the view is updated. | ||
| 747 | + * | ||
| 748 | + * - If the attribute is not set, disable scrolling. | ||
| 749 | + * - If the attribute is set without value, enable scrolling. | ||
| 750 | + * - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated | ||
| 751 | + * as an expression yields a truthy value. | ||
| 752 | + * @example | ||
| 753 | + <example name="ngView-directive" module="ngViewExample" | ||
| 754 | + deps="angular-route.js;angular-animate.js" | ||
| 755 | + animations="true" fixBase="true"> | ||
| 756 | + <file name="index.html"> | ||
| 757 | + <div ng-controller="MainCtrl as main"> | ||
| 758 | + Choose: | ||
| 759 | + <a href="Book/Moby">Moby</a> | | ||
| 760 | + <a href="Book/Moby/ch/1">Moby: Ch1</a> | | ||
| 761 | + <a href="Book/Gatsby">Gatsby</a> | | ||
| 762 | + <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> | | ||
| 763 | + <a href="Book/Scarlet">Scarlet Letter</a><br/> | ||
| 764 | + | ||
| 765 | + <div class="view-animate-container"> | ||
| 766 | + <div ng-view class="view-animate"></div> | ||
| 767 | + </div> | ||
| 768 | + <hr /> | ||
| 769 | + | ||
| 770 | + <pre>$location.path() = {{main.$location.path()}}</pre> | ||
| 771 | + <pre>$route.current.templateUrl = {{main.$route.current.templateUrl}}</pre> | ||
| 772 | + <pre>$route.current.params = {{main.$route.current.params}}</pre> | ||
| 773 | + <pre>$routeParams = {{main.$routeParams}}</pre> | ||
| 774 | + </div> | ||
| 775 | + </file> | ||
| 776 | + | ||
| 777 | + <file name="book.html"> | ||
| 778 | + <div> | ||
| 779 | + controller: {{book.name}}<br /> | ||
| 780 | + Book Id: {{book.params.bookId}}<br /> | ||
| 781 | + </div> | ||
| 782 | + </file> | ||
| 783 | + | ||
| 784 | + <file name="chapter.html"> | ||
| 785 | + <div> | ||
| 786 | + controller: {{chapter.name}}<br /> | ||
| 787 | + Book Id: {{chapter.params.bookId}}<br /> | ||
| 788 | + Chapter Id: {{chapter.params.chapterId}} | ||
| 789 | + </div> | ||
| 790 | + </file> | ||
| 791 | + | ||
| 792 | + <file name="animations.css"> | ||
| 793 | + .view-animate-container { | ||
| 794 | + position:relative; | ||
| 795 | + height:100px!important; | ||
| 796 | + background:white; | ||
| 797 | + border:1px solid black; | ||
| 798 | + height:40px; | ||
| 799 | + overflow:hidden; | ||
| 800 | + } | ||
| 801 | + | ||
| 802 | + .view-animate { | ||
| 803 | + padding:10px; | ||
| 804 | + } | ||
| 805 | + | ||
| 806 | + .view-animate.ng-enter, .view-animate.ng-leave { | ||
| 807 | + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; | ||
| 808 | + | ||
| 809 | + display:block; | ||
| 810 | + width:100%; | ||
| 811 | + border-left:1px solid black; | ||
| 812 | + | ||
| 813 | + position:absolute; | ||
| 814 | + top:0; | ||
| 815 | + left:0; | ||
| 816 | + right:0; | ||
| 817 | + bottom:0; | ||
| 818 | + padding:10px; | ||
| 819 | + } | ||
| 820 | + | ||
| 821 | + .view-animate.ng-enter { | ||
| 822 | + left:100%; | ||
| 823 | + } | ||
| 824 | + .view-animate.ng-enter.ng-enter-active { | ||
| 825 | + left:0; | ||
| 826 | + } | ||
| 827 | + .view-animate.ng-leave.ng-leave-active { | ||
| 828 | + left:-100%; | ||
| 829 | + } | ||
| 830 | + </file> | ||
| 831 | + | ||
| 832 | + <file name="script.js"> | ||
| 833 | + angular.module('ngViewExample', ['ngRoute', 'ngAnimate']) | ||
| 834 | + .config(['$routeProvider', '$locationProvider', | ||
| 835 | + function($routeProvider, $locationProvider) { | ||
| 836 | + $routeProvider | ||
| 837 | + .when('/Book/:bookId', { | ||
| 838 | + templateUrl: 'book.html', | ||
| 839 | + controller: 'BookCtrl', | ||
| 840 | + controllerAs: 'book' | ||
| 841 | + }) | ||
| 842 | + .when('/Book/:bookId/ch/:chapterId', { | ||
| 843 | + templateUrl: 'chapter.html', | ||
| 844 | + controller: 'ChapterCtrl', | ||
| 845 | + controllerAs: 'chapter' | ||
| 846 | + }); | ||
| 847 | + | ||
| 848 | + $locationProvider.html5Mode(true); | ||
| 849 | + }]) | ||
| 850 | + .controller('MainCtrl', ['$route', '$routeParams', '$location', | ||
| 851 | + function($route, $routeParams, $location) { | ||
| 852 | + this.$route = $route; | ||
| 853 | + this.$location = $location; | ||
| 854 | + this.$routeParams = $routeParams; | ||
| 855 | + }]) | ||
| 856 | + .controller('BookCtrl', ['$routeParams', function($routeParams) { | ||
| 857 | + this.name = "BookCtrl"; | ||
| 858 | + this.params = $routeParams; | ||
| 859 | + }]) | ||
| 860 | + .controller('ChapterCtrl', ['$routeParams', function($routeParams) { | ||
| 861 | + this.name = "ChapterCtrl"; | ||
| 862 | + this.params = $routeParams; | ||
| 863 | + }]); | ||
| 864 | + | ||
| 865 | + </file> | ||
| 866 | + | ||
| 867 | + <file name="protractor.js" type="protractor"> | ||
| 868 | + it('should load and compile correct template', function() { | ||
| 869 | + element(by.linkText('Moby: Ch1')).click(); | ||
| 870 | + var content = element(by.css('[ng-view]')).getText(); | ||
| 871 | + expect(content).toMatch(/controller\: ChapterCtrl/); | ||
| 872 | + expect(content).toMatch(/Book Id\: Moby/); | ||
| 873 | + expect(content).toMatch(/Chapter Id\: 1/); | ||
| 874 | + | ||
| 875 | + element(by.partialLinkText('Scarlet')).click(); | ||
| 876 | + | ||
| 877 | + content = element(by.css('[ng-view]')).getText(); | ||
| 878 | + expect(content).toMatch(/controller\: BookCtrl/); | ||
| 879 | + expect(content).toMatch(/Book Id\: Scarlet/); | ||
| 880 | + }); | ||
| 881 | + </file> | ||
| 882 | + </example> | ||
| 883 | + */ | ||
| 884 | + | ||
| 885 | + | ||
| 886 | +/** | ||
| 887 | + * @ngdoc event | ||
| 888 | + * @name ngView#$viewContentLoaded | ||
| 889 | + * @eventType emit on the current ngView scope | ||
| 890 | + * @description | ||
| 891 | + * Emitted every time the ngView content is reloaded. | ||
| 892 | + */ | ||
| 893 | +ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate']; | ||
| 894 | +function ngViewFactory($route, $anchorScroll, $animate) { | ||
| 895 | + return { | ||
| 896 | + restrict: 'ECA', | ||
| 897 | + terminal: true, | ||
| 898 | + priority: 400, | ||
| 899 | + transclude: 'element', | ||
| 900 | + link: function(scope, $element, attr, ctrl, $transclude) { | ||
| 901 | + var currentScope, | ||
| 902 | + currentElement, | ||
| 903 | + previousLeaveAnimation, | ||
| 904 | + autoScrollExp = attr.autoscroll, | ||
| 905 | + onloadExp = attr.onload || ''; | ||
| 906 | + | ||
| 907 | + scope.$on('$routeChangeSuccess', update); | ||
| 908 | + update(); | ||
| 909 | + | ||
| 910 | + function cleanupLastView() { | ||
| 911 | + if (previousLeaveAnimation) { | ||
| 912 | + $animate.cancel(previousLeaveAnimation); | ||
| 913 | + previousLeaveAnimation = null; | ||
| 914 | + } | ||
| 915 | + | ||
| 916 | + if (currentScope) { | ||
| 917 | + currentScope.$destroy(); | ||
| 918 | + currentScope = null; | ||
| 919 | + } | ||
| 920 | + if (currentElement) { | ||
| 921 | + previousLeaveAnimation = $animate.leave(currentElement); | ||
| 922 | + previousLeaveAnimation.then(function() { | ||
| 923 | + previousLeaveAnimation = null; | ||
| 924 | + }); | ||
| 925 | + currentElement = null; | ||
| 926 | + } | ||
| 927 | + } | ||
| 928 | + | ||
| 929 | + function update() { | ||
| 930 | + var locals = $route.current && $route.current.locals, | ||
| 931 | + template = locals && locals.$template; | ||
| 932 | + | ||
| 933 | + if (angular.isDefined(template)) { | ||
| 934 | + var newScope = scope.$new(); | ||
| 935 | + var current = $route.current; | ||
| 936 | + | ||
| 937 | + // Note: This will also link all children of ng-view that were contained in the original | ||
| 938 | + // html. If that content contains controllers, ... they could pollute/change the scope. | ||
| 939 | + // However, using ng-view on an element with additional content does not make sense... | ||
| 940 | + // Note: We can't remove them in the cloneAttchFn of $transclude as that | ||
| 941 | + // function is called before linking the content, which would apply child | ||
| 942 | + // directives to non existing elements. | ||
| 943 | + var clone = $transclude(newScope, function(clone) { | ||
| 944 | + $animate.enter(clone, null, currentElement || $element).then(function onNgViewEnter() { | ||
| 945 | + if (angular.isDefined(autoScrollExp) | ||
| 946 | + && (!autoScrollExp || scope.$eval(autoScrollExp))) { | ||
| 947 | + $anchorScroll(); | ||
| 948 | + } | ||
| 949 | + }); | ||
| 950 | + cleanupLastView(); | ||
| 951 | + }); | ||
| 952 | + | ||
| 953 | + currentElement = clone; | ||
| 954 | + currentScope = current.scope = newScope; | ||
| 955 | + currentScope.$emit('$viewContentLoaded'); | ||
| 956 | + currentScope.$eval(onloadExp); | ||
| 957 | + } else { | ||
| 958 | + cleanupLastView(); | ||
| 959 | + } | ||
| 960 | + } | ||
| 961 | + } | ||
| 962 | + }; | ||
| 963 | +} | ||
| 964 | + | ||
| 965 | +// This directive is called during the $transclude call of the first `ngView` directive. | ||
| 966 | +// It will replace and compile the content of the element with the loaded template. | ||
| 967 | +// We need this directive so that the element content is already filled when | ||
| 968 | +// the link function of another directive on the same element as ngView | ||
| 969 | +// is called. | ||
| 970 | +ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route']; | ||
| 971 | +function ngViewFillContentFactory($compile, $controller, $route) { | ||
| 972 | + return { | ||
| 973 | + restrict: 'ECA', | ||
| 974 | + priority: -400, | ||
| 975 | + link: function(scope, $element) { | ||
| 976 | + var current = $route.current, | ||
| 977 | + locals = current.locals; | ||
| 978 | + | ||
| 979 | + $element.html(locals.$template); | ||
| 980 | + | ||
| 981 | + var link = $compile($element.contents()); | ||
| 982 | + | ||
| 983 | + if (current.controller) { | ||
| 984 | + locals.$scope = scope; | ||
| 985 | + var controller = $controller(current.controller, locals); | ||
| 986 | + if (current.controllerAs) { | ||
| 987 | + scope[current.controllerAs] = controller; | ||
| 988 | + } | ||
| 989 | + $element.data('$ngControllerController', controller); | ||
| 990 | + $element.children().data('$ngControllerController', controller); | ||
| 991 | + } | ||
| 992 | + | ||
| 993 | + link(scope); | ||
| 994 | + } | ||
| 995 | + }; | ||
| 996 | +} | ||
| 997 | + | ||
| 998 | + | ||
| 999 | +})(window, window.angular); |
src/main/resources/static/assets/bower_components/angular-route/angular-route.min.js
0 → 100644
| 1 | +/* | ||
| 2 | + AngularJS v1.4.10 | ||
| 3 | + (c) 2010-2015 Google, Inc. http://angularjs.org | ||
| 4 | + License: MIT | ||
| 5 | +*/ | ||
| 6 | +(function(q,d,C){'use strict';function w(s,k,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,f,b,c,y){function z(){l&&(h.cancel(l),l=null);m&&(m.$destroy(),m=null);n&&(l=h.leave(n),l.then(function(){l=null}),n=null)}function x(){var b=s.current&&s.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),c=s.current;n=y(b,function(b){h.enter(b,null,n||f).then(function(){!d.isDefined(u)||u&&!a.$eval(u)||k()});z()});m=c.scope=b;m.$emit("$viewContentLoaded"); | ||
| 7 | +m.$eval(v)}else z()}var m,n,l,u=b.autoscroll,v=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,k,h){return{restrict:"ECA",priority:-400,link:function(a,f){var b=h.current,c=b.locals;f.html(c.$template);var y=d(f.contents());b.controller&&(c.$scope=a,c=k(b.controller,c),b.controllerAs&&(a[b.controllerAs]=c),f.data("$ngControllerController",c),f.children().data("$ngControllerController",c));y(a)}}}q=d.module("ngRoute",["ng"]).provider("$route",function(){function s(a,f){return d.extend(Object.create(a), | ||
| 8 | +f)}function k(a,d){var b=d.caseInsensitiveMatch,c={originalPath:a,regexp:a},h=c.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(a,d,b,c){a="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;h.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");c.regexp=new RegExp("^"+a+"$",b?"i":"");return c}var h={};this.when=function(a,f){var b=d.copy(f);d.isUndefined(b.reloadOnSearch)&& | ||
| 9 | +(b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);h[a]=d.extend(b,a&&k(a,b));if(a){var c="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[c]=d.extend({redirectTo:a},k(c,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(a,f,b,c,k,q,x){function m(b){var e= | ||
| 10 | +t.current;(w=(p=l())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!v)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function n(){var g=t.current,e=p;if(w)g.params=e.params,d.copy(g.params,b),a.$broadcast("$routeUpdate",g);else if(e||g)v=!1,(t.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?f.path(u(e.redirectTo,e.params)).search(e.params).replace():f.url(e.redirectTo(e.pathParams,f.path(),f.search())).replace()),c.when(e).then(function(){if(e){var a= | ||
| 11 | +d.extend({},e.resolve),b,g;d.forEach(a,function(b,e){a[e]=d.isString(b)?k.get(b):k.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(g=e.templateUrl)&&(d.isFunction(g)&&(g=g(e.params)),d.isDefined(g)&&(e.loadedTemplateUrl=x.valueOf(g),b=q(g)));d.isDefined(b)&&(a.$template=b);return c.all(a)}}).then(function(c){e==t.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",e,g))},function(b){e==t.current&&a.$broadcast("$routeChangeError", | ||
| 12 | +e,g,b)})}function l(){var a,b;d.forEach(h,function(c,h){var r;if(r=!b){var k=f.path();r=c.keys;var m={};if(c.regexp)if(k=c.regexp.exec(k)){for(var l=1,n=k.length;l<n;++l){var p=r[l-1],q=k[l];p&&q&&(m[p.name]=q)}r=m}else r=null;else r=null;r=a=r}r&&(b=s(c,{params:d.extend({},f.search(),a),pathParams:a}),b.$$route=c)});return b||h[null]&&s(h[null],{params:{},pathParams:{}})}function u(a,b){var c=[];d.forEach((a||"").split(":"),function(a,d){if(0===d)c.push(a);else{var g=a.match(/(\w+)(?:[?*])?(.*)/), | ||
| 13 | +f=g[1];c.push(b[f]);c.push(g[2]||"");delete b[f]}});return c.join("")}var v=!1,p,w,t={routes:h,reload:function(){v=!0;var b={defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0;v=!1}};a.$evalAsync(function(){m(b);b.defaultPrevented||n()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),f.path(u(this.current.$$route.originalPath,a)),f.search(a);else throw B("norout");}};a.$on("$locationChangeStart",m);a.$on("$locationChangeSuccess", | ||
| 14 | +n);return t}]});var B=d.$$minErr("ngRoute");q.provider("$routeParams",function(){this.$get=function(){return{}}});q.directive("ngView",w);q.directive("ngView",A);w.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular); | ||
| 15 | +//# sourceMappingURL=angular-route.min.js.map |
src/main/resources/static/assets/bower_components/angular-route/angular-route.min.js.map
0 → 100644
| 1 | +{ | ||
| 2 | +"version":3, | ||
| 3 | +"file":"angular-route.min.js", | ||
| 4 | +"lineCount":14, | ||
| 5 | +"mappings":"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", | ||
| 6 | +"sources":["angular-route.js"], | ||
| 7 | +"names":["window","angular","undefined","ngViewFactory","$route","$anchorScroll","$animate","restrict","terminal","priority","transclude","link","scope","$element","attr","ctrl","$transclude","cleanupLastView","previousLeaveAnimation","cancel","currentScope","$destroy","currentElement","leave","then","update","locals","current","isDefined","$template","newScope","$new","clone","enter","onNgViewEnter","autoScrollExp","$eval","$emit","onloadExp","autoscroll","onload","$on","ngViewFillContentFactory","$compile","$controller","html","contents","controller","$scope","controllerAs","data","children","ngRouteModule","module","provider","$RouteProvider","inherit","parent","extra","extend","Object","create","pathRegExp","path","opts","insensitive","caseInsensitiveMatch","ret","originalPath","regexp","keys","replace","_","slash","key","option","optional","star","push","name","RegExp","routes","when","this.when","route","routeCopy","copy","isUndefined","reloadOnSearch","redirectPath","length","substr","redirectTo","otherwise","this.otherwise","params","$get","$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce","prepareRoute","$locationEvent","lastRoute","preparedRouteIsUpdateOnly","preparedRoute","parseRoute","$$route","equals","pathParams","forceReload","$broadcast","defaultPrevented","preventDefault","commitRoute","nextRoute","isString","interpolate","search","url","resolve","template","templateUrl","forEach","value","get","invoke","isFunction","loadedTemplateUrl","valueOf","all","error","match","m","exec","on","i","len","val","string","result","split","segment","segmentMatch","join","reload","fakeLocationEvent","fakePreventDefault","$evalAsync","updateParams","newParams","$routeMinErr","$$minErr","$RouteParamsProvider","this.$get","directive","$inject"] | ||
| 8 | +} |
src/main/resources/static/assets/bower_components/angular-route/bower.json
0 → 100644
src/main/resources/static/assets/bower_components/angular-route/index.js
0 → 100644
src/main/resources/static/assets/bower_components/angular-route/package.json
0 → 100644
| 1 | +{ | ||
| 2 | + "name": "angular-route", | ||
| 3 | + "version": "1.4.10", | ||
| 4 | + "description": "AngularJS router module", | ||
| 5 | + "main": "index.js", | ||
| 6 | + "scripts": { | ||
| 7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
| 8 | + }, | ||
| 9 | + "repository": { | ||
| 10 | + "type": "git", | ||
| 11 | + "url": "https://github.com/angular/angular.js.git" | ||
| 12 | + }, | ||
| 13 | + "keywords": [ | ||
| 14 | + "angular", | ||
| 15 | + "framework", | ||
| 16 | + "browser", | ||
| 17 | + "router", | ||
| 18 | + "client-side" | ||
| 19 | + ], | ||
| 20 | + "author": "Angular Core Team <angular-core+npm@google.com>", | ||
| 21 | + "license": "MIT", | ||
| 22 | + "bugs": { | ||
| 23 | + "url": "https://github.com/angular/angular.js/issues" | ||
| 24 | + }, | ||
| 25 | + "homepage": "http://angularjs.org" | ||
| 26 | +} |
src/main/resources/static/pages/schedulePlan/Gruntfile.js
| @@ -118,7 +118,8 @@ module.exports = function (grunt) { | @@ -118,7 +118,8 @@ module.exports = function (grunt) { | ||
| 118 | }, | 118 | }, |
| 119 | timeTableManage: { // 时刻表管理模块 | 119 | timeTableManage: { // 时刻表管理模块 |
| 120 | files: { | 120 | files: { |
| 121 | - // TODO: | 121 | + 'app/core/timeTableManage/dist/service.min.js': ['app/core/timeTableManage/service.js'], |
| 122 | + 'app/core/timeTableManage/dist/controller.min.js': ['app/core/timeTableManage/controller.js'] | ||
| 122 | } | 123 | } |
| 123 | } | 124 | } |
| 124 | }, | 125 | }, |
| @@ -331,10 +332,12 @@ module.exports = function (grunt) { | @@ -331,10 +332,12 @@ module.exports = function (grunt) { | ||
| 331 | }, | 332 | }, |
| 332 | timeTableManage: { // 时刻表管理模块 | 333 | timeTableManage: { // 时刻表管理模块 |
| 333 | options: { | 334 | options: { |
| 334 | - basepath: 'app/core/timeTableManage' | 335 | + basepath: 'app/core/timeTableManage/' |
| 335 | }, | 336 | }, |
| 336 | files: { | 337 | files: { |
| 337 | - 'app/core/timeTableManage/dist/timeTableManage.dist.html': 'app/core/timeTableManage/tmp/timeTableManage.html' | 338 | + 'app/core/timeTableManage/dist/timeTableManage.html': 'app/core/timeTableManage/tmp/timeTableManage.html', |
| 339 | + 'app/core/timeTableManage/dist/timeTableList.html': 'app/core/timeTableManage/timeTableList.html', | ||
| 340 | + 'app/core/timeTableManage/dist/timeTableDetail.html': 'app/core/timeTableManage/timeTableDetail.html' | ||
| 338 | } | 341 | } |
| 339 | } | 342 | } |
| 340 | } | 343 | } |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/controller.js
0 → 100644
| 1 | +// 时刻表管理 controller | ||
| 2 | + | ||
| 3 | +angular.module('timeTableManageApp') | ||
| 4 | + .controller('timeTableManageCtrl', ['TTInfo', function(TTInfo) { | ||
| 5 | + var self = this; | ||
| 6 | + self.totalItems = 0; | ||
| 7 | + self.currentPage = 1; | ||
| 8 | + self.infos = []; | ||
| 9 | + self.pageChanged = function() { | ||
| 10 | + console.log("页面跳转到:" + self.currentPage); | ||
| 11 | + | ||
| 12 | + TTInfo.list({page: self.currentPage - 1}, function(result) { | ||
| 13 | + console.log("后台返回记录数:" + result.content.length); | ||
| 14 | + self.totalItems = result.totalElements; | ||
| 15 | + self.currentPage = result.number + 1; | ||
| 16 | + self.infos = result.content; | ||
| 17 | + }); | ||
| 18 | + }; | ||
| 19 | + | ||
| 20 | + TTInfo.list(function(result) { | ||
| 21 | + console.log("后台返回记录数:" + result.content.length); | ||
| 22 | + self.totalItems = result.totalElements; | ||
| 23 | + self.currentPage = result.number + 1; | ||
| 24 | + self.infos = result.content; | ||
| 25 | + }); | ||
| 26 | + | ||
| 27 | + self.showDetail = function() { | ||
| 28 | + alert("时刻信息详细"); | ||
| 29 | + }; | ||
| 30 | + | ||
| 31 | + // 模拟799路的时刻信息 | ||
| 32 | + self.detailHeads = [ | ||
| 33 | + '路牌', '出场', | ||
| 34 | + '华高新村1', '陆家嘴地铁站1', '华高新村2', '陆家嘴地铁站2', | ||
| 35 | + '华高新村3', '陆家嘴地铁站3', '华高新村4', '陆家嘴地铁站4', | ||
| 36 | + '华高新村5', '陆家嘴地铁站5', '华高新村6', '陆家嘴地铁站6', | ||
| 37 | + '华高新村7', '陆家嘴地铁站7', '华高新村8', '陆家嘴地铁站8', | ||
| 38 | + '进场', '空驶班次数/里程', '运营班次数/里程' | ||
| 39 | + ]; | ||
| 40 | + | ||
| 41 | + self.detailInfos = [ | ||
| 42 | + ['1', '07:01', '', '', '07:11', '08:01', '09:22', '10:12', '11:34', '12:24', '13:34', '14:24', '15:42', '16:32', '18:00', '18:50', '', '', '19:46', '2/1.6', '12/198'], | ||
| 43 | + ['2', '06:51', '07:01', '07:51', '09:12', '10:02', '11:22', '12:12', '13:22', '14:12', '15:36', '16:26', '17:55', '18:45', '20:05', '20:55', '', '', '21:51', '2/1.6', '14/231'], | ||
| 44 | + ['3', '05:56', '06:06', '06:56', '08:05', '08:55', '10:34', '11:24', '12:20', '', '', '17:01', '17:11', '18:01', '19:10', '19:58', '21:16', '22:08', '23:04', '4/3.2', '12/198'], | ||
| 45 | + ['4', '06:20', '06:30', '07:20', '08:20', '09:10', '11:02', '08:38', '12:46', '13:36', '12:57', '15:44', '17:20', '18:10', '19:24', '20:14', '', '', '21:10', '2/1.6', '14/231'], | ||
| 46 | + ['5', '07:21', '', '', '07:31', '08:21', '09:46', '10:36', '11:58', '12:48', '13:36', '14:46', '16:06', '16:56', '18:18', '19:08', '', '', '20:04', '2/1.6', '12/198'], | ||
| 47 | + ['6', '06:36', '06:46', '07:36', '08:40', '09:30', '10:58', '11:48', '12:58', '13:48', '15:18', '16:08', '17:40', '18:30', '19:48', '20:38', '21:50', '22:49', '23:45', '2/1.6', '16/264'], | ||
| 48 | + ['7', '07:30', '', '', '07:40', '08:31', '09:58', '10:48', '12:10', '13:00', '13:56', '16:20', '16:30', '17:20', '18:30', '19:20', '20:41', '21:31', '22:27', '4/3.2', '12/198'], | ||
| 49 | + ['8', '07:46', '', '', '07:56', '08:46', '10:22', '11:12', '12:34', '13:24', '14:20', '16:38', '16:48', '17:38', '18:49', '19:38', '21:00', '21:50', '22:46', '4/3.2', '12/198'], | ||
| 50 | + ['9', '07:38', '', '', '07:48', '08:38', '10:10', '10:00', '12:22', '13:12', '14:30', '15:20', '16:44', '17:34', '18:42', '19:32', '', '', '20:28', '2/1.6', '12/198'], | ||
| 51 | + ['10', '06:46', '06:56', '07:46', '09:00', '09:50', '11:10', '12:00', '13:10', '14:00', '15:24', '16:14', '17:45', '18:35', '19:56', '20:46', '22:00', '23:00', '23:56', '2/1.6', '16/264'], | ||
| 52 | + ['+1', '05:10', '05:20', '06:10', '07:21', '08:11', '09:07', '', '', '', '', '15:44', '15:54', '16:44', '18:12', '19:02', '20:23', '21:13', '22:09', '4/3.2', '10/165'], | ||
| 53 | + ['+2', '05:30', '05:40', '06:30', '07:44', '08:34', '09:30', '', '', '', '', '16:29', '16:39', '17:29', '18:36', '19:26', '20:50', '21:40', '22:36', '4/3.2', '10/165'], | ||
| 54 | + ['+3', '05:30', '', '06:00', '07:16', '08:06', '09:02', '', '', '', '', '15:38', '15:48', '16:38', '18:06', '18:56', '20:14', '21:04', '22:00', '4/14.95', '9/149'], | ||
| 55 | + ['+4', '05:48', '05:58', '06:48', '08:00', '08:50', '09:46', '', '', '', '', '16:52', '17:02', '17:52', '19:03', '19:50', '21:08', '21:59', '22:54', '4/3.2', '10/165'], | ||
| 56 | + ['+5', '05:40', '05:50', '06:40', '07:52', '08:42', '09:38', '', '', '14:26', '14:36', '15:26', '16:53', '17:43', '18:56', '19:44', '', '', '20:40', '4/3.2', '10/165'], | ||
| 57 | + ['+6', '06:31', '06:41', '07:31', '08:31', '09:21', '10:17', '', '', '14:56', '15:06', '15:56', '17:30', '18:20', '19:32', '20:22', '21:32', '22:27', '23:23', '4/3.2', '12/198'], | ||
| 58 | + ['+7', '05:20', '05:30', '06:20', '07:36', '08:26', '09:22', '', '', '', '', '16:08', '16:18', '17:08', '18:24', '19:14', '20:32', '21:22', '22:18', '4/3.2', '10/165'], | ||
| 59 | + ['+8', '06:04', '06:14', '07:04', '08:10', '09:00', '09:56', '', '', '', '', '17:05', '17:15', '18:05', '19:17', '20:06', '21:24', '22:17', '23:13', '4/3.2', '10/165'], | ||
| 60 | + ['+9', '06:41', '06:51', '07:41', '08:50', '09:40', '10:36', '', '', '15:02', '15:12', '16:02', '17:35', '18:25', '19:40', '20:30', '21:40', '22:38', '23:34', '4/3.2', '12/198'], | ||
| 61 | + ['+10', '07:16', '', '', '07:26', '08:16', '09:34', '10:24', '11:46', '12:36', '13:46', '14:36', '16:00', '16:50', '', '', '', '', '17:46', '2/1.6', '10/165'], | ||
| 62 | + ['+20', '06:12', '06:22', '07:12', '08:15', '09:05', '10:01', '', '', '14:50', '15:00', '15:50', '17:25', '18:15', '', '', '', '', '19:11', '4/3.2', '8/132'], | ||
| 63 | + ['+21', '06:26', '06:36', '07:26', '08:25', '09:15', '10:11', '', '', '15:20', '15:30', '16:20', '17:50', '18:40', '', '', '', '', '19:36', '4/3.2', '8/132'], | ||
| 64 | + ['+22', '06:56', '07:06', '07:56', '08:52', '', '', '', '', '14:38', '14:48', '15:38', '17:06', '17:56', '', '', '', '', '18:52', '4/3.2', '6/99'], | ||
| 65 | + ['机1', '13:56', '', '', '', '', '', '', '', '', '14:06', '14:56', '16:12', '17:02', '', '', '', '', '17:58', '2/1.6', '4/66'], | ||
| 66 | + ['机2', '14:04', '', '', '', '', '', '', '', '', '14:14', '15:04', '16:24', '17:14', '', '', '', '', '18:10', '2/1.6', '4/66'], | ||
| 67 | + ['机3', '14:12', '', '', '', '', '', '', '', '', '14:22', '15:12', '16:35', '17:25', '', '', '', '', '18:21', '2/1.6', '4/66'], | ||
| 68 | + ['机4', '14:32', '', '', '', '', '', '', '', '', '14:42', '15:32', '16:57', '17:47', '', '', '', '', '18:43', '2/1.6', '4/66'] | ||
| 69 | + | ||
| 70 | + ] | ||
| 71 | + | ||
| 72 | + | ||
| 73 | + | ||
| 74 | + | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + | ||
| 78 | + | ||
| 79 | + | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + | ||
| 84 | + | ||
| 85 | + | ||
| 86 | + | ||
| 87 | + | ||
| 88 | + | ||
| 89 | + | ||
| 90 | + | ||
| 91 | + | ||
| 92 | + | ||
| 93 | + | ||
| 94 | + | ||
| 95 | + | ||
| 96 | + | ||
| 97 | + | ||
| 98 | + | ||
| 99 | + | ||
| 100 | + | ||
| 101 | + | ||
| 102 | + }]); | ||
| 0 | \ No newline at end of file | 103 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/controller.min.js
0 → 100644
| 1 | +angular.module("timeTableManageApp").controller("timeTableManageCtrl",["TTInfo",function(a){var b=this;b.totalItems=0,b.currentPage=1,b.infos=[],b.pageChanged=function(){console.log("页面跳转到:"+b.currentPage),a.list({page:b.currentPage-1},function(a){console.log("后台返回记录数:"+a.content.length),b.totalItems=a.totalElements,b.currentPage=a.number+1,b.infos=a.content})},a.list(function(a){console.log("后台返回记录数:"+a.content.length),b.totalItems=a.totalElements,b.currentPage=a.number+1,b.infos=a.content}),b.showDetail=function(){alert("时刻信息详细")},b.detailHeads=["路牌","出场","华高新村1","陆家嘴地铁站1","华高新村2","陆家嘴地铁站2","华高新村3","陆家嘴地铁站3","华高新村4","陆家嘴地铁站4","华高新村5","陆家嘴地铁站5","华高新村6","陆家嘴地铁站6","华高新村7","陆家嘴地铁站7","华高新村8","陆家嘴地铁站8","进场","空驶班次数/里程","运营班次数/里程"],b.detailInfos=[["1","07:01","","","07:11","08:01","09:22","10:12","11:34","12:24","13:34","14:24","15:42","16:32","18:00","18:50","","","19:46","2/1.6","12/198"],["2","06:51","07:01","07:51","09:12","10:02","11:22","12:12","13:22","14:12","15:36","16:26","17:55","18:45","20:05","20:55","","","21:51","2/1.6","14/231"],["3","05:56","06:06","06:56","08:05","08:55","10:34","11:24","12:20","","","17:01","17:11","18:01","19:10","19:58","21:16","22:08","23:04","4/3.2","12/198"],["4","06:20","06:30","07:20","08:20","09:10","11:02","08:38","12:46","13:36","12:57","15:44","17:20","18:10","19:24","20:14","","","21:10","2/1.6","14/231"],["5","07:21","","","07:31","08:21","09:46","10:36","11:58","12:48","13:36","14:46","16:06","16:56","18:18","19:08","","","20:04","2/1.6","12/198"],["6","06:36","06:46","07:36","08:40","09:30","10:58","11:48","12:58","13:48","15:18","16:08","17:40","18:30","19:48","20:38","21:50","22:49","23:45","2/1.6","16/264"],["7","07:30","","","07:40","08:31","09:58","10:48","12:10","13:00","13:56","16:20","16:30","17:20","18:30","19:20","20:41","21:31","22:27","4/3.2","12/198"],["8","07:46","","","07:56","08:46","10:22","11:12","12:34","13:24","14:20","16:38","16:48","17:38","18:49","19:38","21:00","21:50","22:46","4/3.2","12/198"],["9","07:38","","","07:48","08:38","10:10","10:00","12:22","13:12","14:30","15:20","16:44","17:34","18:42","19:32","","","20:28","2/1.6","12/198"],["10","06:46","06:56","07:46","09:00","09:50","11:10","12:00","13:10","14:00","15:24","16:14","17:45","18:35","19:56","20:46","22:00","23:00","23:56","2/1.6","16/264"],["+1","05:10","05:20","06:10","07:21","08:11","09:07","","","","","15:44","15:54","16:44","18:12","19:02","20:23","21:13","22:09","4/3.2","10/165"],["+2","05:30","05:40","06:30","07:44","08:34","09:30","","","","","16:29","16:39","17:29","18:36","19:26","20:50","21:40","22:36","4/3.2","10/165"],["+3","05:30","","06:00","07:16","08:06","09:02","","","","","15:38","15:48","16:38","18:06","18:56","20:14","21:04","22:00","4/14.95","9/149"],["+4","05:48","05:58","06:48","08:00","08:50","09:46","","","","","16:52","17:02","17:52","19:03","19:50","21:08","21:59","22:54","4/3.2","10/165"],["+5","05:40","05:50","06:40","07:52","08:42","09:38","","","14:26","14:36","15:26","16:53","17:43","18:56","19:44","","","20:40","4/3.2","10/165"],["+6","06:31","06:41","07:31","08:31","09:21","10:17","","","14:56","15:06","15:56","17:30","18:20","19:32","20:22","21:32","22:27","23:23","4/3.2","12/198"],["+7","05:20","05:30","06:20","07:36","08:26","09:22","","","","","16:08","16:18","17:08","18:24","19:14","20:32","21:22","22:18","4/3.2","10/165"],["+8","06:04","06:14","07:04","08:10","09:00","09:56","","","","","17:05","17:15","18:05","19:17","20:06","21:24","22:17","23:13","4/3.2","10/165"],["+9","06:41","06:51","07:41","08:50","09:40","10:36","","","15:02","15:12","16:02","17:35","18:25","19:40","20:30","21:40","22:38","23:34","4/3.2","12/198"],["+10","07:16","","","07:26","08:16","09:34","10:24","11:46","12:36","13:46","14:36","16:00","16:50","","","","","17:46","2/1.6","10/165"],["+20","06:12","06:22","07:12","08:15","09:05","10:01","","","14:50","15:00","15:50","17:25","18:15","","","","","19:11","4/3.2","8/132"],["+21","06:26","06:36","07:26","08:25","09:15","10:11","","","15:20","15:30","16:20","17:50","18:40","","","","","19:36","4/3.2","8/132"],["+22","06:56","07:06","07:56","08:52","","","","","14:38","14:48","15:38","17:06","17:56","","","","","18:52","4/3.2","6/99"],["机1","13:56","","","","","","","","","14:06","14:56","16:12","17:02","","","","","17:58","2/1.6","4/66"],["机2","14:04","","","","","","","","","14:14","15:04","16:24","17:14","","","","","18:10","2/1.6","4/66"],["机3","14:12","","","","","","","","","14:22","15:12","16:35","17:25","","","","","18:21","2/1.6","4/66"],["机4","14:32","","","","","","","","","14:42","15:32","16:57","17:47","","","","","18:43","2/1.6","4/66"]]}]); | ||
| 0 | \ No newline at end of file | 2 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/service.min.js
0 → 100644
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/timeTableDetail.html
0 → 100644
| 1 | +<div class="page-head"> | ||
| 2 | + <div class="page-title"> | ||
| 3 | + <h1>时刻表明细</h1> | ||
| 4 | + </div> | ||
| 5 | +</div> | ||
| 6 | + | ||
| 7 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 8 | + <li> | ||
| 9 | + <a href="/pages/home.html" data-pjax>首页</a> | ||
| 10 | + <i class="fa fa-circle"></i> | ||
| 11 | + </li> | ||
| 12 | + <li> | ||
| 13 | + <span class="active">运营计划管理</span> | ||
| 14 | + <i class="fa fa-circle"></i> | ||
| 15 | + </li> | ||
| 16 | + <li> | ||
| 17 | + <span class="active">799路测试时刻表明细</span> | ||
| 18 | + </li> | ||
| 19 | +</ul> | ||
| 20 | + | ||
| 21 | +<div class="row" id="timeTableDetail" ng-app="timeTableManageApp"> | ||
| 22 | + <div class="col-md-12" ng-controller="timeTableManageCtrl as gmc"> | ||
| 23 | + <div class="portlet light bordered"> | ||
| 24 | + <div class="portlet-title"> | ||
| 25 | + <div class="caption font-dark"> | ||
| 26 | + <i class="fa fa-database font-dark"></i> | ||
| 27 | + <span class="caption-subject bold uppercase">799路测试时刻表明细</span> | ||
| 28 | + </div> | ||
| 29 | + <div class="actions"> | ||
| 30 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 31 | + <i class="fa fa-plus"></i> | ||
| 32 | + 动态生成 | ||
| 33 | + </a> | ||
| 34 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 35 | + <i class="fa fa-plus"></i> | ||
| 36 | + 分班 | ||
| 37 | + </a> | ||
| 38 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 39 | + <i class="fa fa-plus"></i> | ||
| 40 | + 取消分班 | ||
| 41 | + </a> | ||
| 42 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 43 | + <i class="fa fa-plus"></i> | ||
| 44 | + 反向 | ||
| 45 | + </a> | ||
| 46 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 47 | + <i class="fa fa-plus"></i> | ||
| 48 | + 批量选择 | ||
| 49 | + </a> | ||
| 50 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 51 | + <i class="fa fa-plus"></i> | ||
| 52 | + 批量修改 | ||
| 53 | + </a> | ||
| 54 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 55 | + <i class="fa fa-plus"></i> | ||
| 56 | + 删除 | ||
| 57 | + </a> | ||
| 58 | + <div class="btn-group"> | ||
| 59 | + <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown"> | ||
| 60 | + <i class="fa fa-share"></i> | ||
| 61 | + <span>系统工具</span> | ||
| 62 | + <i class="fa fa-angle-down"></i> | ||
| 63 | + </a> | ||
| 64 | + <ul class="dropdown-menu pull-right"> | ||
| 65 | + <li> | ||
| 66 | + <a href="javascript:" class="tool-action"> | ||
| 67 | + <i class="fa fa-file-excel-o"></i> | ||
| 68 | + 导出excel | ||
| 69 | + </a> | ||
| 70 | + </li> | ||
| 71 | + <li class="divider"></li> | ||
| 72 | + <li> | ||
| 73 | + <a href="javascript:" class="tool-action"> | ||
| 74 | + <i class="fa fa-refresh"></i> | ||
| 75 | + 刷行数据 | ||
| 76 | + </a> | ||
| 77 | + </li> | ||
| 78 | + </ul> | ||
| 79 | + </div> | ||
| 80 | + </div> | ||
| 81 | + </div> | ||
| 82 | + | ||
| 83 | + <div class="portlet-body"> | ||
| 84 | + <!--<div ng-view></div>--> | ||
| 85 | + <table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="timeTableManageCtrl as ctrl"> | ||
| 86 | + <thead> | ||
| 87 | + <tr> | ||
| 88 | + <th> | ||
| 89 | + <input type="checkbox" class="group-checkable" data-set="#busConfigInfoTable.checkboxes"/> | ||
| 90 | + </th> | ||
| 91 | + <th ng-repeat="head in ctrl.detailHeads"> | ||
| 92 | + <span ng-bind="head"></span> | ||
| 93 | + </th> | ||
| 94 | + | ||
| 95 | + </tr> | ||
| 96 | + </thead> | ||
| 97 | + <tbody> | ||
| 98 | + <tr ng-repeat="info in ctrl.detailInfos"> | ||
| 99 | + <td> | ||
| 100 | + <input type="checkbox" class="checkboxes"/> | ||
| 101 | + </td> | ||
| 102 | + <td ng-repeat="cell in info track by $index"> | ||
| 103 | + <span ng-bind="cell"></span> | ||
| 104 | + </td> | ||
| 105 | + </tr> | ||
| 106 | + | ||
| 107 | + </tbody> | ||
| 108 | + </table> | ||
| 109 | + | ||
| 110 | + <div style="text-align: right;"> | ||
| 111 | + <uib-pagination total-items="ctrl.totalItems" | ||
| 112 | + ng-model="ctrl.currentPage" | ||
| 113 | + ng-change="ctrl.pageChanged()" | ||
| 114 | + previous-text="上一页" | ||
| 115 | + next-text="下一页"> | ||
| 116 | + </uib-pagination> | ||
| 117 | + </div> | ||
| 118 | + | ||
| 119 | + </div> | ||
| 120 | + </div> | ||
| 121 | + </div> | ||
| 122 | +</div> | ||
| 123 | + | ||
| 124 | +<script>// 时刻表管理 service | ||
| 125 | + | ||
| 126 | +//angular.module('timeTableManageApp', ['ngResource', 'ui.router', 'ui.bootstrap']) | ||
| 127 | +angular.module('timeTableManageApp', ['ngResource', 'ui.bootstrap']) | ||
| 128 | + //.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { | ||
| 129 | + // $stateProvider | ||
| 130 | + // .state("timeTableList", { | ||
| 131 | + // url: '/timeTableList.html', | ||
| 132 | + // templateUrl: 'timeTableList.html' | ||
| 133 | + // }) | ||
| 134 | + // .state("timeTableDetail", { | ||
| 135 | + // url: '/timeTableDetail.html', | ||
| 136 | + // templateUrl: 'timeTableDetail.html' | ||
| 137 | + // }); | ||
| 138 | + // $urlRouterProvider.otherwise('/timeTableList.html'); | ||
| 139 | + //}]) | ||
| 140 | + .factory('TTInfo', ['$resource', function($resource) { | ||
| 141 | + return $resource( | ||
| 142 | + '/tic', | ||
| 143 | + {order: 'id', direction: 'ASC'}, | ||
| 144 | + { | ||
| 145 | + list: { | ||
| 146 | + method: 'GET', | ||
| 147 | + params: { | ||
| 148 | + page: 0 | ||
| 149 | + } | ||
| 150 | + } | ||
| 151 | + } | ||
| 152 | + ); | ||
| 153 | + }]);</script> | ||
| 154 | +<script>// 时刻表管理 controller | ||
| 155 | + | ||
| 156 | +angular.module('timeTableManageApp') | ||
| 157 | + .controller('timeTableManageCtrl', ['TTInfo', function(TTInfo) { | ||
| 158 | + var self = this; | ||
| 159 | + self.totalItems = 0; | ||
| 160 | + self.currentPage = 1; | ||
| 161 | + self.infos = []; | ||
| 162 | + self.pageChanged = function() { | ||
| 163 | + console.log("页面跳转到:" + self.currentPage); | ||
| 164 | + | ||
| 165 | + TTInfo.list({page: self.currentPage - 1}, function(result) { | ||
| 166 | + console.log("后台返回记录数:" + result.content.length); | ||
| 167 | + self.totalItems = result.totalElements; | ||
| 168 | + self.currentPage = result.number + 1; | ||
| 169 | + self.infos = result.content; | ||
| 170 | + }); | ||
| 171 | + }; | ||
| 172 | + | ||
| 173 | + TTInfo.list(function(result) { | ||
| 174 | + console.log("后台返回记录数:" + result.content.length); | ||
| 175 | + self.totalItems = result.totalElements; | ||
| 176 | + self.currentPage = result.number + 1; | ||
| 177 | + self.infos = result.content; | ||
| 178 | + }); | ||
| 179 | + | ||
| 180 | + self.showDetail = function() { | ||
| 181 | + alert("时刻信息详细"); | ||
| 182 | + }; | ||
| 183 | + | ||
| 184 | + // 模拟799路的时刻信息 | ||
| 185 | + self.detailHeads = [ | ||
| 186 | + '路牌', '出场', | ||
| 187 | + '华高新村1', '陆家嘴地铁站1', '华高新村2', '陆家嘴地铁站2', | ||
| 188 | + '华高新村3', '陆家嘴地铁站3', '华高新村4', '陆家嘴地铁站4', | ||
| 189 | + '华高新村5', '陆家嘴地铁站5', '华高新村6', '陆家嘴地铁站6', | ||
| 190 | + '华高新村7', '陆家嘴地铁站7', '华高新村8', '陆家嘴地铁站8', | ||
| 191 | + '进场', '空驶班次数/里程', '运营班次数/里程' | ||
| 192 | + ]; | ||
| 193 | + | ||
| 194 | + self.detailInfos = [ | ||
| 195 | + ['1', '07:01', '', '', '07:11', '08:01', '09:22', '10:12', '11:34', '12:24', '13:34', '14:24', '15:42', '16:32', '18:00', '18:50', '', '', '19:46', '2/1.6', '12/198'], | ||
| 196 | + ['2', '06:51', '07:01', '07:51', '09:12', '10:02', '11:22', '12:12', '13:22', '14:12', '15:36', '16:26', '17:55', '18:45', '20:05', '20:55', '', '', '21:51', '2/1.6', '14/231'], | ||
| 197 | + ['3', '05:56', '06:06', '06:56', '08:05', '08:55', '10:34', '11:24', '12:20', '', '', '17:01', '17:11', '18:01', '19:10', '19:58', '21:16', '22:08', '23:04', '4/3.2', '12/198'], | ||
| 198 | + ['4', '06:20', '06:30', '07:20', '08:20', '09:10', '11:02', '08:38', '12:46', '13:36', '12:57', '15:44', '17:20', '18:10', '19:24', '20:14', '', '', '21:10', '2/1.6', '14/231'], | ||
| 199 | + ['5', '07:21', '', '', '07:31', '08:21', '09:46', '10:36', '11:58', '12:48', '13:36', '14:46', '16:06', '16:56', '18:18', '19:08', '', '', '20:04', '2/1.6', '12/198'], | ||
| 200 | + ['6', '06:36', '06:46', '07:36', '08:40', '09:30', '10:58', '11:48', '12:58', '13:48', '15:18', '16:08', '17:40', '18:30', '19:48', '20:38', '21:50', '22:49', '23:45', '2/1.6', '16/264'], | ||
| 201 | + ['7', '07:30', '', '', '07:40', '08:31', '09:58', '10:48', '12:10', '13:00', '13:56', '16:20', '16:30', '17:20', '18:30', '19:20', '20:41', '21:31', '22:27', '4/3.2', '12/198'], | ||
| 202 | + ['8', '07:46', '', '', '07:56', '08:46', '10:22', '11:12', '12:34', '13:24', '14:20', '16:38', '16:48', '17:38', '18:49', '19:38', '21:00', '21:50', '22:46', '4/3.2', '12/198'], | ||
| 203 | + ['9', '07:38', '', '', '07:48', '08:38', '10:10', '10:00', '12:22', '13:12', '14:30', '15:20', '16:44', '17:34', '18:42', '19:32', '', '', '20:28', '2/1.6', '12/198'], | ||
| 204 | + ['10', '06:46', '06:56', '07:46', '09:00', '09:50', '11:10', '12:00', '13:10', '14:00', '15:24', '16:14', '17:45', '18:35', '19:56', '20:46', '22:00', '23:00', '23:56', '2/1.6', '16/264'], | ||
| 205 | + ['+1', '05:10', '05:20', '06:10', '07:21', '08:11', '09:07', '', '', '', '', '15:44', '15:54', '16:44', '18:12', '19:02', '20:23', '21:13', '22:09', '4/3.2', '10/165'], | ||
| 206 | + ['+2', '05:30', '05:40', '06:30', '07:44', '08:34', '09:30', '', '', '', '', '16:29', '16:39', '17:29', '18:36', '19:26', '20:50', '21:40', '22:36', '4/3.2', '10/165'], | ||
| 207 | + ['+3', '05:30', '', '06:00', '07:16', '08:06', '09:02', '', '', '', '', '15:38', '15:48', '16:38', '18:06', '18:56', '20:14', '21:04', '22:00', '4/14.95', '9/149'], | ||
| 208 | + ['+4', '05:48', '05:58', '06:48', '08:00', '08:50', '09:46', '', '', '', '', '16:52', '17:02', '17:52', '19:03', '19:50', '21:08', '21:59', '22:54', '4/3.2', '10/165'], | ||
| 209 | + ['+5', '05:40', '05:50', '06:40', '07:52', '08:42', '09:38', '', '', '14:26', '14:36', '15:26', '16:53', '17:43', '18:56', '19:44', '', '', '20:40', '4/3.2', '10/165'], | ||
| 210 | + ['+6', '06:31', '06:41', '07:31', '08:31', '09:21', '10:17', '', '', '14:56', '15:06', '15:56', '17:30', '18:20', '19:32', '20:22', '21:32', '22:27', '23:23', '4/3.2', '12/198'], | ||
| 211 | + ['+7', '05:20', '05:30', '06:20', '07:36', '08:26', '09:22', '', '', '', '', '16:08', '16:18', '17:08', '18:24', '19:14', '20:32', '21:22', '22:18', '4/3.2', '10/165'], | ||
| 212 | + ['+8', '06:04', '06:14', '07:04', '08:10', '09:00', '09:56', '', '', '', '', '17:05', '17:15', '18:05', '19:17', '20:06', '21:24', '22:17', '23:13', '4/3.2', '10/165'], | ||
| 213 | + ['+9', '06:41', '06:51', '07:41', '08:50', '09:40', '10:36', '', '', '15:02', '15:12', '16:02', '17:35', '18:25', '19:40', '20:30', '21:40', '22:38', '23:34', '4/3.2', '12/198'], | ||
| 214 | + ['+10', '07:16', '', '', '07:26', '08:16', '09:34', '10:24', '11:46', '12:36', '13:46', '14:36', '16:00', '16:50', '', '', '', '', '17:46', '2/1.6', '10/165'], | ||
| 215 | + ['+20', '06:12', '06:22', '07:12', '08:15', '09:05', '10:01', '', '', '14:50', '15:00', '15:50', '17:25', '18:15', '', '', '', '', '19:11', '4/3.2', '8/132'], | ||
| 216 | + ['+21', '06:26', '06:36', '07:26', '08:25', '09:15', '10:11', '', '', '15:20', '15:30', '16:20', '17:50', '18:40', '', '', '', '', '19:36', '4/3.2', '8/132'], | ||
| 217 | + ['+22', '06:56', '07:06', '07:56', '08:52', '', '', '', '', '14:38', '14:48', '15:38', '17:06', '17:56', '', '', '', '', '18:52', '4/3.2', '6/99'], | ||
| 218 | + ['机1', '13:56', '', '', '', '', '', '', '', '', '14:06', '14:56', '16:12', '17:02', '', '', '', '', '17:58', '2/1.6', '4/66'], | ||
| 219 | + ['机2', '14:04', '', '', '', '', '', '', '', '', '14:14', '15:04', '16:24', '17:14', '', '', '', '', '18:10', '2/1.6', '4/66'], | ||
| 220 | + ['机3', '14:12', '', '', '', '', '', '', '', '', '14:22', '15:12', '16:35', '17:25', '', '', '', '', '18:21', '2/1.6', '4/66'], | ||
| 221 | + ['机4', '14:32', '', '', '', '', '', '', '', '', '14:42', '15:32', '16:57', '17:47', '', '', '', '', '18:43', '2/1.6', '4/66'] | ||
| 222 | + | ||
| 223 | + ] | ||
| 224 | + | ||
| 225 | + | ||
| 226 | + | ||
| 227 | + | ||
| 228 | + | ||
| 229 | + | ||
| 230 | + | ||
| 231 | + | ||
| 232 | + | ||
| 233 | + | ||
| 234 | + | ||
| 235 | + | ||
| 236 | + | ||
| 237 | + | ||
| 238 | + | ||
| 239 | + | ||
| 240 | + | ||
| 241 | + | ||
| 242 | + | ||
| 243 | + | ||
| 244 | + | ||
| 245 | + | ||
| 246 | + | ||
| 247 | + | ||
| 248 | + | ||
| 249 | + | ||
| 250 | + | ||
| 251 | + | ||
| 252 | + | ||
| 253 | + | ||
| 254 | + | ||
| 255 | + }]);</script> | ||
| 256 | + | ||
| 257 | +<script type="text/javascript"> | ||
| 258 | + angular.bootstrap(document.getElementById("timeTableDetail"), ["timeTableManageApp"]); | ||
| 259 | +</script> | ||
| 0 | \ No newline at end of file | 260 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/timeTableList.html
0 → 100644
| 1 | +<table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="timeTableManageCtrl as ctrl"> | ||
| 2 | + <thead> | ||
| 3 | + <tr> | ||
| 4 | + <th> | ||
| 5 | + <input type="checkbox" class="group-checkable" data-set="#busConfigInfoTable.checkboxes"/> | ||
| 6 | + </th> | ||
| 7 | + <th>线路</th> | ||
| 8 | + <th>时刻表名称</th> | ||
| 9 | + <th>修改时间</th> | ||
| 10 | + <th>路牌数</th> | ||
| 11 | + <th>圈数</th> | ||
| 12 | + <th>是否启用</th> | ||
| 13 | + <th>操作1</th> | ||
| 14 | + <th>操作2</th> | ||
| 15 | + </tr> | ||
| 16 | + </thead> | ||
| 17 | + <tbody> | ||
| 18 | + <tr ng-repeat="info in ctrl.infos" class="odd gradeX"> | ||
| 19 | + <td> | ||
| 20 | + <input type="checkbox" class="checkboxes"/> | ||
| 21 | + </td> | ||
| 22 | + <td> | ||
| 23 | + <span ng-bind="info.xlName"></span> | ||
| 24 | + </td> | ||
| 25 | + <td> | ||
| 26 | + <span ng-bind="info.name"></span> | ||
| 27 | + </td> | ||
| 28 | + <td> | ||
| 29 | + <span ng-bind="info.updateDate | date:'yyyy-MM-dd HH:mm:ss'"></span> | ||
| 30 | + </td> | ||
| 31 | + <td> | ||
| 32 | + <span ng-bind="info.lpCount"></span> | ||
| 33 | + </td> | ||
| 34 | + <td> | ||
| 35 | + <span ng-bind="info.loopCount"></span> | ||
| 36 | + </td> | ||
| 37 | + <td> | ||
| 38 | + <span ng-bind="info.enable"></span> | ||
| 39 | + </td> | ||
| 40 | + <td> | ||
| 41 | + <a href="javascript:" ng-click="ctrl.showDetail()">时刻表明细信息</a> | ||
| 42 | + </td> | ||
| 43 | + <td> | ||
| 44 | + <a href="javascript:">预览</a> | ||
| 45 | + <a href="javascript:">基础信息修改</a> | ||
| 46 | + </td> | ||
| 47 | + </tr> | ||
| 48 | + </tbody> | ||
| 49 | +</table> | ||
| 50 | + | ||
| 51 | +<div style="text-align: right;"> | ||
| 52 | + <uib-pagination total-items="ctrl.totalItems" | ||
| 53 | + ng-model="ctrl.currentPage" | ||
| 54 | + ng-change="ctrl.pageChanged()" | ||
| 55 | + previous-text="上一页" | ||
| 56 | + next-text="下一页"> | ||
| 57 | + </uib-pagination> | ||
| 58 | +</div> | ||
| 0 | \ No newline at end of file | 59 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/timeTableManage.dist.html deleted
100644 → 0
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/timeTableManage.html
0 → 100644
| 1 | +<div class="page-head"> | ||
| 2 | + <div class="page-title"> | ||
| 3 | + <h1>时刻表管理</h1> | ||
| 4 | + </div> | ||
| 5 | +</div> | ||
| 6 | + | ||
| 7 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 8 | + <li> | ||
| 9 | + <a href="/pages/home.html" data-pjax>首页</a> | ||
| 10 | + <i class="fa fa-circle"></i> | ||
| 11 | + </li> | ||
| 12 | + <li> | ||
| 13 | + <span class="active">运营计划管理</span> | ||
| 14 | + <i class="fa fa-circle"></i> | ||
| 15 | + </li> | ||
| 16 | + <li> | ||
| 17 | + <span class="active">时刻表管理</span> | ||
| 18 | + </li> | ||
| 19 | +</ul> | ||
| 20 | + | ||
| 21 | +<div class="row" id="timeTableManage" ng-app="timeTableManageApp"> | ||
| 22 | + <div class="col-md-12" ng-controller="timeTableManageCtrl as gmc"> | ||
| 23 | + <div class="portlet light bordered"> | ||
| 24 | + <div class="portlet-title"> | ||
| 25 | + <div class="caption font-dark"> | ||
| 26 | + <i class="fa fa-database font-dark"></i> | ||
| 27 | + <span class="caption-subject bold uppercase">时刻表</span> | ||
| 28 | + </div> | ||
| 29 | + <div class="actions"> | ||
| 30 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 31 | + <i class="fa fa-plus"></i> | ||
| 32 | + 添加时刻表 | ||
| 33 | + </a> | ||
| 34 | + <div class="btn-group"> | ||
| 35 | + <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown"> | ||
| 36 | + <i class="fa fa-share"></i> | ||
| 37 | + <span>系统工具</span> | ||
| 38 | + <i class="fa fa-angle-down"></i> | ||
| 39 | + </a> | ||
| 40 | + <ul class="dropdown-menu pull-right"> | ||
| 41 | + <li> | ||
| 42 | + <a href="javascript:" class="tool-action"> | ||
| 43 | + <i class="fa fa-file-excel-o"></i> | ||
| 44 | + 导出excel | ||
| 45 | + </a> | ||
| 46 | + </li> | ||
| 47 | + <li class="divider"></li> | ||
| 48 | + <li> | ||
| 49 | + <a href="javascript:" class="tool-action"> | ||
| 50 | + <i class="fa fa-refresh"></i> | ||
| 51 | + 刷行数据 | ||
| 52 | + </a> | ||
| 53 | + </li> | ||
| 54 | + </ul> | ||
| 55 | + </div> | ||
| 56 | + </div> | ||
| 57 | + </div> | ||
| 58 | + | ||
| 59 | + <div class="portlet-body"> | ||
| 60 | + <!--<div ng-view></div>--> | ||
| 61 | + <table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="timeTableManageCtrl as ctrl"> | ||
| 62 | + <thead> | ||
| 63 | + <tr> | ||
| 64 | + <th> | ||
| 65 | + <input type="checkbox" class="group-checkable" data-set="#busConfigInfoTable.checkboxes"/> | ||
| 66 | + </th> | ||
| 67 | + <th>线路</th> | ||
| 68 | + <th>时刻表名称</th> | ||
| 69 | + <th>修改时间</th> | ||
| 70 | + <th>路牌数</th> | ||
| 71 | + <th>圈数</th> | ||
| 72 | + <th>是否启用</th> | ||
| 73 | + <th>操作1</th> | ||
| 74 | + <th>操作2</th> | ||
| 75 | + </tr> | ||
| 76 | + </thead> | ||
| 77 | + <tbody> | ||
| 78 | + <tr ng-repeat="info in ctrl.infos" class="odd gradeX"> | ||
| 79 | + <td> | ||
| 80 | + <input type="checkbox" class="checkboxes"/> | ||
| 81 | + </td> | ||
| 82 | + <td> | ||
| 83 | + <span ng-bind="info.xlName"></span> | ||
| 84 | + </td> | ||
| 85 | + <td> | ||
| 86 | + <span ng-bind="info.name"></span> | ||
| 87 | + </td> | ||
| 88 | + <td> | ||
| 89 | + <span ng-bind="info.updateDate | date:'yyyy-MM-dd HH:mm:ss'"></span> | ||
| 90 | + </td> | ||
| 91 | + <td> | ||
| 92 | + <span ng-bind="info.lpCount"></span> | ||
| 93 | + </td> | ||
| 94 | + <td> | ||
| 95 | + <span ng-bind="info.loopCount"></span> | ||
| 96 | + </td> | ||
| 97 | + <td> | ||
| 98 | + <span ng-bind="info.enable"></span> | ||
| 99 | + </td> | ||
| 100 | + <td> | ||
| 101 | + <a href="javascript:" ng-click="ctrl.showDetail()">时刻表明细信息</a> | ||
| 102 | + </td> | ||
| 103 | + <td> | ||
| 104 | + <a href="javascript:">预览</a> | ||
| 105 | + <a href="javascript:">基础信息修改</a> | ||
| 106 | + </td> | ||
| 107 | + </tr> | ||
| 108 | + </tbody> | ||
| 109 | + </table> | ||
| 110 | + | ||
| 111 | + <div style="text-align: right;"> | ||
| 112 | + <uib-pagination total-items="ctrl.totalItems" | ||
| 113 | + ng-model="ctrl.currentPage" | ||
| 114 | + ng-change="ctrl.pageChanged()" | ||
| 115 | + previous-text="上一页" | ||
| 116 | + next-text="下一页"> | ||
| 117 | + </uib-pagination> | ||
| 118 | + </div> | ||
| 119 | + | ||
| 120 | + </div> | ||
| 121 | + </div> | ||
| 122 | + </div> | ||
| 123 | +</div> | ||
| 124 | + | ||
| 125 | +<script>angular.module("timeTableManageApp",["ngResource","ui.bootstrap"]).factory("TTInfo",["$resource",function(a){return a("/tic",{order:"id",direction:"ASC"},{list:{method:"GET",params:{page:0}}})}]);</script> | ||
| 126 | +<script>angular.module("timeTableManageApp").controller("timeTableManageCtrl",["TTInfo",function(a){var b=this;b.totalItems=0,b.currentPage=1,b.infos=[],b.pageChanged=function(){console.log("页面跳转到:"+b.currentPage),a.list({page:b.currentPage-1},function(a){console.log("后台返回记录数:"+a.content.length),b.totalItems=a.totalElements,b.currentPage=a.number+1,b.infos=a.content})},a.list(function(a){console.log("后台返回记录数:"+a.content.length),b.totalItems=a.totalElements,b.currentPage=a.number+1,b.infos=a.content}),b.showDetail=function(){alert("时刻信息详细")},b.detailHeads=["路牌","出场","华高新村1","陆家嘴地铁站1","华高新村2","陆家嘴地铁站2","华高新村3","陆家嘴地铁站3","华高新村4","陆家嘴地铁站4","华高新村5","陆家嘴地铁站5","华高新村6","陆家嘴地铁站6","华高新村7","陆家嘴地铁站7","华高新村8","陆家嘴地铁站8","进场","空驶班次数/里程","运营班次数/里程"],b.detailInfos=[["1","07:01","","","07:11","08:01","09:22","10:12","11:34","12:24","13:34","14:24","15:42","16:32","18:00","18:50","","","19:46","2/1.6","12/198"],["2","06:51","07:01","07:51","09:12","10:02","11:22","12:12","13:22","14:12","15:36","16:26","17:55","18:45","20:05","20:55","","","21:51","2/1.6","14/231"],["3","05:56","06:06","06:56","08:05","08:55","10:34","11:24","12:20","","","17:01","17:11","18:01","19:10","19:58","21:16","22:08","23:04","4/3.2","12/198"],["4","06:20","06:30","07:20","08:20","09:10","11:02","08:38","12:46","13:36","12:57","15:44","17:20","18:10","19:24","20:14","","","21:10","2/1.6","14/231"],["5","07:21","","","07:31","08:21","09:46","10:36","11:58","12:48","13:36","14:46","16:06","16:56","18:18","19:08","","","20:04","2/1.6","12/198"],["6","06:36","06:46","07:36","08:40","09:30","10:58","11:48","12:58","13:48","15:18","16:08","17:40","18:30","19:48","20:38","21:50","22:49","23:45","2/1.6","16/264"],["7","07:30","","","07:40","08:31","09:58","10:48","12:10","13:00","13:56","16:20","16:30","17:20","18:30","19:20","20:41","21:31","22:27","4/3.2","12/198"],["8","07:46","","","07:56","08:46","10:22","11:12","12:34","13:24","14:20","16:38","16:48","17:38","18:49","19:38","21:00","21:50","22:46","4/3.2","12/198"],["9","07:38","","","07:48","08:38","10:10","10:00","12:22","13:12","14:30","15:20","16:44","17:34","18:42","19:32","","","20:28","2/1.6","12/198"],["10","06:46","06:56","07:46","09:00","09:50","11:10","12:00","13:10","14:00","15:24","16:14","17:45","18:35","19:56","20:46","22:00","23:00","23:56","2/1.6","16/264"],["+1","05:10","05:20","06:10","07:21","08:11","09:07","","","","","15:44","15:54","16:44","18:12","19:02","20:23","21:13","22:09","4/3.2","10/165"],["+2","05:30","05:40","06:30","07:44","08:34","09:30","","","","","16:29","16:39","17:29","18:36","19:26","20:50","21:40","22:36","4/3.2","10/165"],["+3","05:30","","06:00","07:16","08:06","09:02","","","","","15:38","15:48","16:38","18:06","18:56","20:14","21:04","22:00","4/14.95","9/149"],["+4","05:48","05:58","06:48","08:00","08:50","09:46","","","","","16:52","17:02","17:52","19:03","19:50","21:08","21:59","22:54","4/3.2","10/165"],["+5","05:40","05:50","06:40","07:52","08:42","09:38","","","14:26","14:36","15:26","16:53","17:43","18:56","19:44","","","20:40","4/3.2","10/165"],["+6","06:31","06:41","07:31","08:31","09:21","10:17","","","14:56","15:06","15:56","17:30","18:20","19:32","20:22","21:32","22:27","23:23","4/3.2","12/198"],["+7","05:20","05:30","06:20","07:36","08:26","09:22","","","","","16:08","16:18","17:08","18:24","19:14","20:32","21:22","22:18","4/3.2","10/165"],["+8","06:04","06:14","07:04","08:10","09:00","09:56","","","","","17:05","17:15","18:05","19:17","20:06","21:24","22:17","23:13","4/3.2","10/165"],["+9","06:41","06:51","07:41","08:50","09:40","10:36","","","15:02","15:12","16:02","17:35","18:25","19:40","20:30","21:40","22:38","23:34","4/3.2","12/198"],["+10","07:16","","","07:26","08:16","09:34","10:24","11:46","12:36","13:46","14:36","16:00","16:50","","","","","17:46","2/1.6","10/165"],["+20","06:12","06:22","07:12","08:15","09:05","10:01","","","14:50","15:00","15:50","17:25","18:15","","","","","19:11","4/3.2","8/132"],["+21","06:26","06:36","07:26","08:25","09:15","10:11","","","15:20","15:30","16:20","17:50","18:40","","","","","19:36","4/3.2","8/132"],["+22","06:56","07:06","07:56","08:52","","","","","14:38","14:48","15:38","17:06","17:56","","","","","18:52","4/3.2","6/99"],["机1","13:56","","","","","","","","","14:06","14:56","16:12","17:02","","","","","17:58","2/1.6","4/66"],["机2","14:04","","","","","","","","","14:14","15:04","16:24","17:14","","","","","18:10","2/1.6","4/66"],["机3","14:12","","","","","","","","","14:22","15:12","16:35","17:25","","","","","18:21","2/1.6","4/66"],["机4","14:32","","","","","","","","","14:42","15:32","16:57","17:47","","","","","18:43","2/1.6","4/66"]]}]);</script> | ||
| 127 | + | ||
| 128 | +<script type="text/javascript"> | ||
| 129 | + angular.bootstrap(document.getElementById("timeTableManage"), ["timeTableManageApp"]); | ||
| 130 | +</script> | ||
| 0 | \ No newline at end of file | 131 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/service.js
0 → 100644
| 1 | +// 时刻表管理 service | ||
| 2 | + | ||
| 3 | +//angular.module('timeTableManageApp', ['ngResource', 'ui.router', 'ui.bootstrap']) | ||
| 4 | +angular.module('timeTableManageApp', ['ngResource', 'ui.bootstrap']) | ||
| 5 | + //.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { | ||
| 6 | + // $stateProvider | ||
| 7 | + // .state("timeTableList", { | ||
| 8 | + // url: '/timeTableList.html', | ||
| 9 | + // templateUrl: 'timeTableList.html' | ||
| 10 | + // }) | ||
| 11 | + // .state("timeTableDetail", { | ||
| 12 | + // url: '/timeTableDetail.html', | ||
| 13 | + // templateUrl: 'timeTableDetail.html' | ||
| 14 | + // }); | ||
| 15 | + // $urlRouterProvider.otherwise('/timeTableList.html'); | ||
| 16 | + //}]) | ||
| 17 | + .factory('TTInfo', ['$resource', function($resource) { | ||
| 18 | + return $resource( | ||
| 19 | + '/tic', | ||
| 20 | + {order: 'id', direction: 'ASC'}, | ||
| 21 | + { | ||
| 22 | + list: { | ||
| 23 | + method: 'GET', | ||
| 24 | + params: { | ||
| 25 | + page: 0 | ||
| 26 | + } | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + ); | ||
| 30 | + }]); | ||
| 0 | \ No newline at end of file | 31 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/timeTableDetail.html
0 → 100644
| 1 | +<div class="page-head"> | ||
| 2 | + <div class="page-title"> | ||
| 3 | + <h1>时刻表明细</h1> | ||
| 4 | + </div> | ||
| 5 | +</div> | ||
| 6 | + | ||
| 7 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 8 | + <li> | ||
| 9 | + <a href="/pages/home.html" data-pjax>首页</a> | ||
| 10 | + <i class="fa fa-circle"></i> | ||
| 11 | + </li> | ||
| 12 | + <li> | ||
| 13 | + <span class="active">运营计划管理</span> | ||
| 14 | + <i class="fa fa-circle"></i> | ||
| 15 | + </li> | ||
| 16 | + <li> | ||
| 17 | + <span class="active">799路测试时刻表明细</span> | ||
| 18 | + </li> | ||
| 19 | +</ul> | ||
| 20 | + | ||
| 21 | +<div class="row" id="timeTableDetail" ng-app="timeTableManageApp"> | ||
| 22 | + <div class="col-md-12" ng-controller="timeTableManageCtrl as gmc"> | ||
| 23 | + <div class="portlet light bordered"> | ||
| 24 | + <div class="portlet-title"> | ||
| 25 | + <div class="caption font-dark"> | ||
| 26 | + <i class="fa fa-database font-dark"></i> | ||
| 27 | + <span class="caption-subject bold uppercase">799路测试时刻表明细</span> | ||
| 28 | + </div> | ||
| 29 | + <div class="actions"> | ||
| 30 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 31 | + <i class="fa fa-plus"></i> | ||
| 32 | + 动态生成 | ||
| 33 | + </a> | ||
| 34 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 35 | + <i class="fa fa-plus"></i> | ||
| 36 | + 分班 | ||
| 37 | + </a> | ||
| 38 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 39 | + <i class="fa fa-plus"></i> | ||
| 40 | + 取消分班 | ||
| 41 | + </a> | ||
| 42 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 43 | + <i class="fa fa-plus"></i> | ||
| 44 | + 反向 | ||
| 45 | + </a> | ||
| 46 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 47 | + <i class="fa fa-plus"></i> | ||
| 48 | + 批量选择 | ||
| 49 | + </a> | ||
| 50 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 51 | + <i class="fa fa-plus"></i> | ||
| 52 | + 批量修改 | ||
| 53 | + </a> | ||
| 54 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 55 | + <i class="fa fa-plus"></i> | ||
| 56 | + 删除 | ||
| 57 | + </a> | ||
| 58 | + <div class="btn-group"> | ||
| 59 | + <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown"> | ||
| 60 | + <i class="fa fa-share"></i> | ||
| 61 | + <span>系统工具</span> | ||
| 62 | + <i class="fa fa-angle-down"></i> | ||
| 63 | + </a> | ||
| 64 | + <ul class="dropdown-menu pull-right"> | ||
| 65 | + <li> | ||
| 66 | + <a href="javascript:" class="tool-action"> | ||
| 67 | + <i class="fa fa-file-excel-o"></i> | ||
| 68 | + 导出excel | ||
| 69 | + </a> | ||
| 70 | + </li> | ||
| 71 | + <li class="divider"></li> | ||
| 72 | + <li> | ||
| 73 | + <a href="javascript:" class="tool-action"> | ||
| 74 | + <i class="fa fa-refresh"></i> | ||
| 75 | + 刷行数据 | ||
| 76 | + </a> | ||
| 77 | + </li> | ||
| 78 | + </ul> | ||
| 79 | + </div> | ||
| 80 | + </div> | ||
| 81 | + </div> | ||
| 82 | + | ||
| 83 | + <div class="portlet-body"> | ||
| 84 | + <!--<div ng-view></div>--> | ||
| 85 | + <table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="timeTableManageCtrl as ctrl"> | ||
| 86 | + <thead> | ||
| 87 | + <tr> | ||
| 88 | + <th> | ||
| 89 | + <input type="checkbox" class="group-checkable" data-set="#busConfigInfoTable.checkboxes"/> | ||
| 90 | + </th> | ||
| 91 | + <th ng-repeat="head in ctrl.detailHeads"> | ||
| 92 | + <span ng-bind="head"></span> | ||
| 93 | + </th> | ||
| 94 | + | ||
| 95 | + </tr> | ||
| 96 | + </thead> | ||
| 97 | + <tbody> | ||
| 98 | + <tr ng-repeat="info in ctrl.detailInfos"> | ||
| 99 | + <td> | ||
| 100 | + <input type="checkbox" class="checkboxes"/> | ||
| 101 | + </td> | ||
| 102 | + <td ng-repeat="cell in info track by $index"> | ||
| 103 | + <span ng-bind="cell"></span> | ||
| 104 | + </td> | ||
| 105 | + </tr> | ||
| 106 | + | ||
| 107 | + </tbody> | ||
| 108 | + </table> | ||
| 109 | + | ||
| 110 | + <div style="text-align: right;"> | ||
| 111 | + <uib-pagination total-items="ctrl.totalItems" | ||
| 112 | + ng-model="ctrl.currentPage" | ||
| 113 | + ng-change="ctrl.pageChanged()" | ||
| 114 | + previous-text="上一页" | ||
| 115 | + next-text="下一页"> | ||
| 116 | + </uib-pagination> | ||
| 117 | + </div> | ||
| 118 | + | ||
| 119 | + </div> | ||
| 120 | + </div> | ||
| 121 | + </div> | ||
| 122 | +</div> | ||
| 123 | + | ||
| 124 | +<script src="service.js" inline="true"></script> | ||
| 125 | +<script src="controller.js" inline="true"></script> | ||
| 126 | + | ||
| 127 | +<script type="text/javascript"> | ||
| 128 | + angular.bootstrap(document.getElementById("timeTableDetail"), ["timeTableManageApp"]); | ||
| 129 | +</script> | ||
| 0 | \ No newline at end of file | 130 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/timeTableList.html
0 → 100644
| 1 | +<table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="timeTableManageCtrl as ctrl"> | ||
| 2 | + <thead> | ||
| 3 | + <tr> | ||
| 4 | + <th> | ||
| 5 | + <input type="checkbox" class="group-checkable" data-set="#busConfigInfoTable.checkboxes"/> | ||
| 6 | + </th> | ||
| 7 | + <th>线路</th> | ||
| 8 | + <th>时刻表名称</th> | ||
| 9 | + <th>修改时间</th> | ||
| 10 | + <th>路牌数</th> | ||
| 11 | + <th>圈数</th> | ||
| 12 | + <th>是否启用</th> | ||
| 13 | + <th>操作1</th> | ||
| 14 | + <th>操作2</th> | ||
| 15 | + </tr> | ||
| 16 | + </thead> | ||
| 17 | + <tbody> | ||
| 18 | + <tr ng-repeat="info in ctrl.infos" class="odd gradeX"> | ||
| 19 | + <td> | ||
| 20 | + <input type="checkbox" class="checkboxes"/> | ||
| 21 | + </td> | ||
| 22 | + <td> | ||
| 23 | + <span ng-bind="info.xlName"></span> | ||
| 24 | + </td> | ||
| 25 | + <td> | ||
| 26 | + <span ng-bind="info.name"></span> | ||
| 27 | + </td> | ||
| 28 | + <td> | ||
| 29 | + <span ng-bind="info.updateDate | date:'yyyy-MM-dd HH:mm:ss'"></span> | ||
| 30 | + </td> | ||
| 31 | + <td> | ||
| 32 | + <span ng-bind="info.lpCount"></span> | ||
| 33 | + </td> | ||
| 34 | + <td> | ||
| 35 | + <span ng-bind="info.loopCount"></span> | ||
| 36 | + </td> | ||
| 37 | + <td> | ||
| 38 | + <span ng-bind="info.enable"></span> | ||
| 39 | + </td> | ||
| 40 | + <td> | ||
| 41 | + <a href="javascript:" ng-click="ctrl.showDetail()">时刻表明细信息</a> | ||
| 42 | + </td> | ||
| 43 | + <td> | ||
| 44 | + <a href="javascript:">预览</a> | ||
| 45 | + <a href="javascript:">基础信息修改</a> | ||
| 46 | + </td> | ||
| 47 | + </tr> | ||
| 48 | + </tbody> | ||
| 49 | +</table> | ||
| 50 | + | ||
| 51 | +<div style="text-align: right;"> | ||
| 52 | + <uib-pagination total-items="ctrl.totalItems" | ||
| 53 | + ng-model="ctrl.currentPage" | ||
| 54 | + ng-change="ctrl.pageChanged()" | ||
| 55 | + previous-text="上一页" | ||
| 56 | + next-text="下一页"> | ||
| 57 | + </uib-pagination> | ||
| 58 | +</div> | ||
| 0 | \ No newline at end of file | 59 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/timeTableManage.html
| 1 | -时刻表管理 | ||
| 2 | \ No newline at end of file | 1 | \ No newline at end of file |
| 2 | +<div class="page-head"> | ||
| 3 | + <div class="page-title"> | ||
| 4 | + <h1>时刻表管理</h1> | ||
| 5 | + </div> | ||
| 6 | +</div> | ||
| 7 | + | ||
| 8 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 9 | + <li> | ||
| 10 | + <a href="/pages/home.html" data-pjax>首页</a> | ||
| 11 | + <i class="fa fa-circle"></i> | ||
| 12 | + </li> | ||
| 13 | + <li> | ||
| 14 | + <span class="active">运营计划管理</span> | ||
| 15 | + <i class="fa fa-circle"></i> | ||
| 16 | + </li> | ||
| 17 | + <li> | ||
| 18 | + <span class="active">时刻表管理</span> | ||
| 19 | + </li> | ||
| 20 | +</ul> | ||
| 21 | + | ||
| 22 | +<div class="row" id="timeTableManage" ng-app="timeTableManageApp"> | ||
| 23 | + <div class="col-md-12" ng-controller="timeTableManageCtrl as gmc"> | ||
| 24 | + <div class="portlet light bordered"> | ||
| 25 | + <div class="portlet-title"> | ||
| 26 | + <div class="caption font-dark"> | ||
| 27 | + <i class="fa fa-database font-dark"></i> | ||
| 28 | + <span class="caption-subject bold uppercase">时刻表</span> | ||
| 29 | + </div> | ||
| 30 | + <div class="actions"> | ||
| 31 | + <a href="javascirpt:" class="btn btn-circle blue"> | ||
| 32 | + <i class="fa fa-plus"></i> | ||
| 33 | + 添加时刻表 | ||
| 34 | + </a> | ||
| 35 | + <div class="btn-group"> | ||
| 36 | + <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown"> | ||
| 37 | + <i class="fa fa-share"></i> | ||
| 38 | + <span>系统工具</span> | ||
| 39 | + <i class="fa fa-angle-down"></i> | ||
| 40 | + </a> | ||
| 41 | + <ul class="dropdown-menu pull-right"> | ||
| 42 | + <li> | ||
| 43 | + <a href="javascript:" class="tool-action"> | ||
| 44 | + <i class="fa fa-file-excel-o"></i> | ||
| 45 | + 导出excel | ||
| 46 | + </a> | ||
| 47 | + </li> | ||
| 48 | + <li class="divider"></li> | ||
| 49 | + <li> | ||
| 50 | + <a href="javascript:" class="tool-action"> | ||
| 51 | + <i class="fa fa-refresh"></i> | ||
| 52 | + 刷行数据 | ||
| 53 | + </a> | ||
| 54 | + </li> | ||
| 55 | + </ul> | ||
| 56 | + </div> | ||
| 57 | + </div> | ||
| 58 | + </div> | ||
| 59 | + | ||
| 60 | + <div class="portlet-body"> | ||
| 61 | + <!--<div ng-view></div>--> | ||
| 62 | + <table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="timeTableManageCtrl as ctrl"> | ||
| 63 | + <thead> | ||
| 64 | + <tr> | ||
| 65 | + <th> | ||
| 66 | + <input type="checkbox" class="group-checkable" data-set="#busConfigInfoTable.checkboxes"/> | ||
| 67 | + </th> | ||
| 68 | + <th>线路</th> | ||
| 69 | + <th>时刻表名称</th> | ||
| 70 | + <th>修改时间</th> | ||
| 71 | + <th>路牌数</th> | ||
| 72 | + <th>圈数</th> | ||
| 73 | + <th>是否启用</th> | ||
| 74 | + <th>操作1</th> | ||
| 75 | + <th>操作2</th> | ||
| 76 | + </tr> | ||
| 77 | + </thead> | ||
| 78 | + <tbody> | ||
| 79 | + <tr ng-repeat="info in ctrl.infos" class="odd gradeX"> | ||
| 80 | + <td> | ||
| 81 | + <input type="checkbox" class="checkboxes"/> | ||
| 82 | + </td> | ||
| 83 | + <td> | ||
| 84 | + <span ng-bind="info.xlName"></span> | ||
| 85 | + </td> | ||
| 86 | + <td> | ||
| 87 | + <span ng-bind="info.name"></span> | ||
| 88 | + </td> | ||
| 89 | + <td> | ||
| 90 | + <span ng-bind="info.updateDate | date:'yyyy-MM-dd HH:mm:ss'"></span> | ||
| 91 | + </td> | ||
| 92 | + <td> | ||
| 93 | + <span ng-bind="info.lpCount"></span> | ||
| 94 | + </td> | ||
| 95 | + <td> | ||
| 96 | + <span ng-bind="info.loopCount"></span> | ||
| 97 | + </td> | ||
| 98 | + <td> | ||
| 99 | + <span ng-bind="info.enable"></span> | ||
| 100 | + </td> | ||
| 101 | + <td> | ||
| 102 | + <a href="javascript:" ng-click="ctrl.showDetail()">时刻表明细信息</a> | ||
| 103 | + </td> | ||
| 104 | + <td> | ||
| 105 | + <a href="javascript:">预览</a> | ||
| 106 | + <a href="javascript:">基础信息修改</a> | ||
| 107 | + </td> | ||
| 108 | + </tr> | ||
| 109 | + </tbody> | ||
| 110 | + </table> | ||
| 111 | + | ||
| 112 | + <div style="text-align: right;"> | ||
| 113 | + <uib-pagination total-items="ctrl.totalItems" | ||
| 114 | + ng-model="ctrl.currentPage" | ||
| 115 | + ng-change="ctrl.pageChanged()" | ||
| 116 | + previous-text="上一页" | ||
| 117 | + next-text="下一页"> | ||
| 118 | + </uib-pagination> | ||
| 119 | + </div> | ||
| 120 | + | ||
| 121 | + </div> | ||
| 122 | + </div> | ||
| 123 | + </div> | ||
| 124 | +</div> | ||
| 125 | + | ||
| 126 | +<script src="service.js" inline="true"></script> | ||
| 127 | +<script src="controller.js" inline="true"></script> | ||
| 128 | + | ||
| 129 | +<script type="text/javascript"> | ||
| 130 | + angular.bootstrap(document.getElementById("timeTableManage"), ["timeTableManageApp"]); | ||
| 131 | +</script> | ||
| 3 | \ No newline at end of file | 132 | \ No newline at end of file |
src/main/resources/static/pages/schedulePlan/bower.json
| @@ -13,6 +13,7 @@ | @@ -13,6 +13,7 @@ | ||
| 13 | "angular-mocks": "1.4.x", | 13 | "angular-mocks": "1.4.x", |
| 14 | "oclazyload": "1.0.9", | 14 | "oclazyload": "1.0.9", |
| 15 | "angular-bootstrap": "0.14.0", | 15 | "angular-bootstrap": "0.14.0", |
| 16 | + "angular-route": "1.4.x", | ||
| 16 | "angular-ui-router": "0.2.15", | 17 | "angular-ui-router": "0.2.15", |
| 17 | "angular-resource": "1.4.x" | 18 | "angular-resource": "1.4.x" |
| 18 | } | 19 | } |