Commit 057b6f7d1200dc611c1b84628cdac1a3b9192bc4

Authored by 徐烜
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
  1 +package com.bsth.entity.schedule;
  2 +
  3 +/**
  4 + * 时刻表明细(TODO:之后修正)。
  5 + */
  6 +public class TTInfoDetail {
  7 +}
... ...
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
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfo;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/5/12.
  8 + */
  9 +public interface TTInfoService extends BaseService<TTInfo, Long> {
  10 +}
... ...
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 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
  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 +}
... ...
src/main/resources/static/assets/bower_components/angular-route/index.js 0 → 100644
  1 +require('./angular-route');
  2 +module.exports = 'ngRoute';
... ...
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 118 },
119 119 timeTableManage: { // 时刻表管理模块
120 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 332 },
332 333 timeTableManage: { // 时刻表管理模块
333 334 options: {
334   - basepath: 'app/core/timeTableManage'
  335 + basepath: 'app/core/timeTableManage/'
335 336 },
336 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 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 2 \ No newline at end of file
... ...
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/service.min.js 0 → 100644
  1 +angular.module("timeTableManageApp",["ngResource","ui.bootstrap"]).factory("TTInfo",["$resource",function(a){return a("/tic",{order:"id",direction:"ASC"},{list:{method:"GET",params:{page:0}}})}]);
0 2 \ No newline at end of file
... ...
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 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 59 \ No newline at end of file
... ...
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/dist/timeTableManage.dist.html deleted 100644 → 0
1   -时刻表管理
2 0 \ No newline at end of file
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 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 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 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 59 \ No newline at end of file
... ...
src/main/resources/static/pages/schedulePlan/app/core/timeTableManage/timeTableManage.html
1   -时刻表管理
2 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 132 \ No newline at end of file
... ...
src/main/resources/static/pages/schedulePlan/bower.json
... ... @@ -13,6 +13,7 @@
13 13 "angular-mocks": "1.4.x",
14 14 "oclazyload": "1.0.9",
15 15 "angular-bootstrap": "0.14.0",
  16 + "angular-route": "1.4.x",
16 17 "angular-ui-router": "0.2.15",
17 18 "angular-resource": "1.4.x"
18 19 }
... ...