Commit df36d354 authored by phùng văn dung's avatar phùng văn dung

commit 1

parents b45ae672 325eb2b8
...@@ -469,10 +469,10 @@ uiStateDirective = [ ...@@ -469,10 +469,10 @@ uiStateDirective = [
* the specified state names/globs, even the abstract ones. * the specified state names/globs, even the abstract ones.
* *
* #### Example: * #### Example:
* Given the following template, with "admin" being an abstract state: * Given the following template, with "common" being an abstract state:
* ```html * ```html
* <div ui-sref-active="{'active': 'admin.**'}"> * <div ui-sref-active="{'active': 'common.**'}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
...@@ -480,14 +480,14 @@ uiStateDirective = [ ...@@ -480,14 +480,14 @@ uiStateDirective = [
* This allows multiple states to add `active` class. * This allows multiple states to add `active` class.
* *
* #### Example: * #### Example:
* Given the following template, with "admin.roles" being the current state, the class will be added too: * Given the following template, with "common.roles" being the current state, the class will be added too:
* ```html * ```html
* <div ui-sref-active="{'active': ['owner.**', 'admin.**']}"> * <div ui-sref-active="{'active': ['owner.**', 'common.**']}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
* When the current state is "admin.roles" the "active" class will be applied to both the `<div>` and `<a>` elements. * When the current state is "common.roles" the "active" class will be applied to both the `<div>` and `<a>` elements.
* It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`. * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.
* *
* ### Notes: * ### Notes:
......
...@@ -471,10 +471,10 @@ uiStateDirective = [ ...@@ -471,10 +471,10 @@ uiStateDirective = [
* the specified state names/globs, even the abstract ones. * the specified state names/globs, even the abstract ones.
* *
* #### Example: * #### Example:
* Given the following template, with "admin" being an abstract state: * Given the following template, with "common" being an abstract state:
* ```html * ```html
* <div ui-sref-active="{'active': 'admin.**'}"> * <div ui-sref-active="{'active': 'common.**'}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
...@@ -482,14 +482,14 @@ uiStateDirective = [ ...@@ -482,14 +482,14 @@ uiStateDirective = [
* This allows multiple states to add `active` class. * This allows multiple states to add `active` class.
* *
* #### Example: * #### Example:
* Given the following template, with "admin.roles" being the current state, the class will be added too: * Given the following template, with "common.roles" being the current state, the class will be added too:
* ```html * ```html
* <div ui-sref-active="{'active': ['owner.**', 'admin.**']}"> * <div ui-sref-active="{'active': ['owner.**', 'common.**']}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
* When the current state is "admin.roles" the "active" class will be applied to both the `<div>` and `<a>` elements. * When the current state is "common.roles" the "active" class will be applied to both the `<div>` and `<a>` elements.
* It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`. * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.
* *
* ### Notes: * ### Notes:
......
...@@ -4597,7 +4597,7 @@ ...@@ -4597,7 +4597,7 @@
if (find(_this._params, propEq('id', id))) if (find(_this._params, propEq('id', id)))
throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern$$1 + "'"); throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern$$1 + "'");
}; };
// Split into static segments separated by path parameter placeholders. // Split into common segments separated by path parameter placeholders.
// The number of segments is always 1 more than the number of parameters. // The number of segments is always 1 more than the number of parameters.
var matchDetails = function (m, isSearch) { var matchDetails = function (m, isSearch) {
// IE[78] returns '' for unmatched groups instead of null // IE[78] returns '' for unmatched groups instead of null
...@@ -4674,11 +4674,11 @@ ...@@ -4674,11 +4674,11 @@
/** /**
* Compare two UrlMatchers * Compare two UrlMatchers
* *
* This comparison function converts a UrlMatcher into static and dynamic path segments. * This comparison function converts a UrlMatcher into common and dynamic path segments.
* Each static path segment is a static string between a path separator (slash character). * Each common path segment is a common string between a path separator (slash character).
* Each dynamic segment is a path parameter. * Each dynamic segment is a path parameter.
* *
* The comparison function sorts static segments before dynamic ones. * The comparison function sorts common segments before dynamic ones.
*/ */
UrlMatcher.compare = function (a, b) { UrlMatcher.compare = function (a, b) {
/** /**
...@@ -4710,7 +4710,7 @@ ...@@ -4710,7 +4710,7 @@
return (matcher._cache.weights = return (matcher._cache.weights =
matcher._cache.weights || matcher._cache.weights ||
segments(matcher).map(function (segment) { segments(matcher).map(function (segment) {
// Sort slashes first, then static strings, the Params // Sort slashes first, then common strings, the Params
if (segment === '/') if (segment === '/')
return 1; return 1;
if (isString(segment)) if (isString(segment))
...@@ -4917,7 +4917,7 @@ ...@@ -4917,7 +4917,7 @@
if (values$$1 === void 0) { values$$1 = {}; } if (values$$1 === void 0) { values$$1 = {}; }
// Build the full path of UrlMatchers (including all parent UrlMatchers) // Build the full path of UrlMatchers (including all parent UrlMatchers)
var urlMatchers = this._cache.path; var urlMatchers = this._cache.path;
// Extract all the static segments and Params (processed as ParamDetails) // Extract all the common segments and Params (processed as ParamDetails)
// into an ordered array // into an ordered array
var pathSegmentsAndParams = urlMatchers var pathSegmentsAndParams = urlMatchers
.map(UrlMatcher.pathSegmentsAndParams) .map(UrlMatcher.pathSegmentsAndParams)
...@@ -4946,9 +4946,9 @@ ...@@ -4946,9 +4946,9 @@
var encoded = param.type.encode(value); var encoded = param.type.encode(value);
return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded }; return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };
} }
// Build up the path-portion from the list of static segments and parameters // Build up the path-portion from the list of common segments and parameters
var pathString = pathSegmentsAndParams.reduce(function (acc, x) { var pathString = pathSegmentsAndParams.reduce(function (acc, x) {
// The element is a static segment (a raw string); just append it // The element is a common segment (a raw string); just append it
if (isString(x)) if (isString(x))
return acc + x; return acc + x;
// Otherwise, it's a ParamDetails. // Otherwise, it's a ParamDetails.
...@@ -9909,10 +9909,10 @@ ...@@ -9909,10 +9909,10 @@
* the specified state names/globs, even the abstract ones. * the specified state names/globs, even the abstract ones.
* *
* #### Example: * #### Example:
* Given the following template, with "admin" being an abstract state: * Given the following template, with "common" being an abstract state:
* ```html * ```html
* <div ui-sref-active="{'active': 'admin.**'}"> * <div ui-sref-active="{'active': 'common.**'}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
...@@ -9920,14 +9920,14 @@ ...@@ -9920,14 +9920,14 @@
* This allows multiple states to add `active` class. * This allows multiple states to add `active` class.
* *
* #### Example: * #### Example:
* Given the following template, with "admin.roles" being the current state, the class will be added too: * Given the following template, with "common.roles" being the current state, the class will be added too:
* ```html * ```html
* <div ui-sref-active="{'active': ['owner.**', 'admin.**']}"> * <div ui-sref-active="{'active': ['owner.**', 'common.**']}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
* When the current state is "admin.roles" the "active" class will be applied to both the `<div>` and `<a>` elements. * When the current state is "common.roles" the "active" class will be applied to both the `<div>` and `<a>` elements.
* It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`. * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.
* *
* ### Notes: * ### Notes:
......
...@@ -1396,10 +1396,10 @@ ...@@ -1396,10 +1396,10 @@
* the specified state names/globs, even the abstract ones. * the specified state names/globs, even the abstract ones.
* *
* #### Example: * #### Example:
* Given the following template, with "admin" being an abstract state: * Given the following template, with "common" being an abstract state:
* ```html * ```html
* <div ui-sref-active="{'active': 'admin.**'}"> * <div ui-sref-active="{'active': 'common.**'}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
...@@ -1407,14 +1407,14 @@ ...@@ -1407,14 +1407,14 @@
* This allows multiple states to add `active` class. * This allows multiple states to add `active` class.
* *
* #### Example: * #### Example:
* Given the following template, with "admin.roles" being the current state, the class will be added too: * Given the following template, with "common.roles" being the current state, the class will be added too:
* ```html * ```html
* <div ui-sref-active="{'active': ['owner.**', 'admin.**']}"> * <div ui-sref-active="{'active': ['owner.**', 'common.**']}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a> * <a ui-sref-active="active" ui-sref="common.roles">Roles</a>
* </div> * </div>
* ``` * ```
* *
* When the current state is "admin.roles" the "active" class will be applied to both the `<div>` and `<a>` elements. * When the current state is "common.roles" the "active" class will be applied to both the `<div>` and `<a>` elements.
* It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`. * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.
* *
* ### Notes: * ### Notes:
......
...@@ -4589,7 +4589,7 @@ ...@@ -4589,7 +4589,7 @@
if (find(_this._params, propEq('id', id))) if (find(_this._params, propEq('id', id)))
throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern$$1 + "'"); throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern$$1 + "'");
}; };
// Split into static segments separated by path parameter placeholders. // Split into common segments separated by path parameter placeholders.
// The number of segments is always 1 more than the number of parameters. // The number of segments is always 1 more than the number of parameters.
var matchDetails = function (m, isSearch) { var matchDetails = function (m, isSearch) {
// IE[78] returns '' for unmatched groups instead of null // IE[78] returns '' for unmatched groups instead of null
...@@ -4666,11 +4666,11 @@ ...@@ -4666,11 +4666,11 @@
/** /**
* Compare two UrlMatchers * Compare two UrlMatchers
* *
* This comparison function converts a UrlMatcher into static and dynamic path segments. * This comparison function converts a UrlMatcher into common and dynamic path segments.
* Each static path segment is a static string between a path separator (slash character). * Each common path segment is a common string between a path separator (slash character).
* Each dynamic segment is a path parameter. * Each dynamic segment is a path parameter.
* *
* The comparison function sorts static segments before dynamic ones. * The comparison function sorts common segments before dynamic ones.
*/ */
UrlMatcher.compare = function (a, b) { UrlMatcher.compare = function (a, b) {
/** /**
...@@ -4702,7 +4702,7 @@ ...@@ -4702,7 +4702,7 @@
return (matcher._cache.weights = return (matcher._cache.weights =
matcher._cache.weights || matcher._cache.weights ||
segments(matcher).map(function (segment) { segments(matcher).map(function (segment) {
// Sort slashes first, then static strings, the Params // Sort slashes first, then common strings, the Params
if (segment === '/') if (segment === '/')
return 1; return 1;
if (isString(segment)) if (isString(segment))
...@@ -4909,7 +4909,7 @@ ...@@ -4909,7 +4909,7 @@
if (values$$1 === void 0) { values$$1 = {}; } if (values$$1 === void 0) { values$$1 = {}; }
// Build the full path of UrlMatchers (including all parent UrlMatchers) // Build the full path of UrlMatchers (including all parent UrlMatchers)
var urlMatchers = this._cache.path; var urlMatchers = this._cache.path;
// Extract all the static segments and Params (processed as ParamDetails) // Extract all the common segments and Params (processed as ParamDetails)
// into an ordered array // into an ordered array
var pathSegmentsAndParams = urlMatchers var pathSegmentsAndParams = urlMatchers
.map(UrlMatcher.pathSegmentsAndParams) .map(UrlMatcher.pathSegmentsAndParams)
...@@ -4938,9 +4938,9 @@ ...@@ -4938,9 +4938,9 @@
var encoded = param.type.encode(value); var encoded = param.type.encode(value);
return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded }; return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };
} }
// Build up the path-portion from the list of static segments and parameters // Build up the path-portion from the list of common segments and parameters
var pathString = pathSegmentsAndParams.reduce(function (acc, x) { var pathString = pathSegmentsAndParams.reduce(function (acc, x) {
// The element is a static segment (a raw string); just append it // The element is a common segment (a raw string); just append it
if (isString(x)) if (isString(x))
return acc + x; return acc + x;
// Otherwise, it's a ParamDetails. // Otherwise, it's a ParamDetails.
......
...@@ -425,7 +425,7 @@ export interface Replace { ...@@ -425,7 +425,7 @@ export interface Replace {
* *
* *
* This example decodes an integer from the URL. * This example decodes an integer from the URL.
* It uses the integer as an index to look up an item from a static list. * It uses the integer as an index to look up an item from a common list.
* That item from the list is the decoded parameter value. * That item from the list is the decoded parameter value.
* *
* @example * @example
......
...@@ -25,7 +25,7 @@ export declare class Param { ...@@ -25,7 +25,7 @@ export declare class Param {
inherit: boolean; inherit: boolean;
array: boolean; array: boolean;
config: any; config: any;
/** Cache the default value if it is a static value */ /** Cache the default value if it is a common value */
_defaultValueCache: { _defaultValueCache: {
defaultValue: any; defaultValue: any;
}; };
......
...@@ -467,12 +467,12 @@ export interface IHookRegistry { ...@@ -467,12 +467,12 @@ export interface IHookRegistry {
* *
* #### Audit Log * #### Audit Log
* *
* This example uses a service to log that a user has entered the admin section of an app. * This example uses a service to log that a user has entered the common section of an app.
* This assumes that there are substates of the "admin" state, such as "admin.users", "admin.pages", etc. * This assumes that there are substates of the "common" state, such as "common.users", "common.pages", etc.
* @example * @example
* ``` * ```
* *
* $transitions.onEnter({ entering: 'admin' }, function(transition, state) { * $transitions.onEnter({ entering: 'common' }, function(transition, state) {
* var AuditService = trans.injector().get('AuditService'); * var AuditService = trans.injector().get('AuditService');
* AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name); * AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name);
* } * }
...@@ -483,8 +483,8 @@ export interface IHookRegistry { ...@@ -483,8 +483,8 @@ export interface IHookRegistry {
* The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example. * The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example.
* ``` * ```
* { * {
* name: 'admin', * name: 'common',
* component: 'admin', * component: 'common',
* onEnter: function($transition$, $state$) { * onEnter: function($transition$, $state$) {
* var AuditService = $transition$.injector().get('AuditService'); * var AuditService = $transition$.injector().get('AuditService');
* AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name); * AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name);
......
...@@ -80,11 +80,11 @@ export declare class UrlMatcher { ...@@ -80,11 +80,11 @@ export declare class UrlMatcher {
/** /**
* Compare two UrlMatchers * Compare two UrlMatchers
* *
* This comparison function converts a UrlMatcher into static and dynamic path segments. * This comparison function converts a UrlMatcher into common and dynamic path segments.
* Each static path segment is a static string between a path separator (slash character). * Each common path segment is a common string between a path separator (slash character).
* Each dynamic segment is a path parameter. * Each dynamic segment is a path parameter.
* *
* The comparison function sorts static segments before dynamic ones. * The comparison function sorts common segments before dynamic ones.
*/ */
static compare(a: UrlMatcher, b: UrlMatcher): number; static compare(a: UrlMatcher, b: UrlMatcher): number;
/** /**
......
...@@ -130,7 +130,7 @@ var UrlMatcher = /** @class */ (function () { ...@@ -130,7 +130,7 @@ var UrlMatcher = /** @class */ (function () {
if (find(_this._params, propEq('id', id))) if (find(_this._params, propEq('id', id)))
throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'"); throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'");
}; };
// Split into static segments separated by path parameter placeholders. // Split into common segments separated by path parameter placeholders.
// The number of segments is always 1 more than the number of parameters. // The number of segments is always 1 more than the number of parameters.
var matchDetails = function (m, isSearch) { var matchDetails = function (m, isSearch) {
// IE[78] returns '' for unmatched groups instead of null // IE[78] returns '' for unmatched groups instead of null
...@@ -207,11 +207,11 @@ var UrlMatcher = /** @class */ (function () { ...@@ -207,11 +207,11 @@ var UrlMatcher = /** @class */ (function () {
/** /**
* Compare two UrlMatchers * Compare two UrlMatchers
* *
* This comparison function converts a UrlMatcher into static and dynamic path segments. * This comparison function converts a UrlMatcher into common and dynamic path segments.
* Each static path segment is a static string between a path separator (slash character). * Each common path segment is a common string between a path separator (slash character).
* Each dynamic segment is a path parameter. * Each dynamic segment is a path parameter.
* *
* The comparison function sorts static segments before dynamic ones. * The comparison function sorts common segments before dynamic ones.
*/ */
UrlMatcher.compare = function (a, b) { UrlMatcher.compare = function (a, b) {
/** /**
...@@ -243,7 +243,7 @@ var UrlMatcher = /** @class */ (function () { ...@@ -243,7 +243,7 @@ var UrlMatcher = /** @class */ (function () {
return (matcher._cache.weights = return (matcher._cache.weights =
matcher._cache.weights || matcher._cache.weights ||
segments(matcher).map(function (segment) { segments(matcher).map(function (segment) {
// Sort slashes first, then static strings, the Params // Sort slashes first, then common strings, the Params
if (segment === '/') if (segment === '/')
return 1; return 1;
if (isString(segment)) if (isString(segment))
...@@ -450,7 +450,7 @@ var UrlMatcher = /** @class */ (function () { ...@@ -450,7 +450,7 @@ var UrlMatcher = /** @class */ (function () {
if (values === void 0) { values = {}; } if (values === void 0) { values = {}; }
// Build the full path of UrlMatchers (including all parent UrlMatchers) // Build the full path of UrlMatchers (including all parent UrlMatchers)
var urlMatchers = this._cache.path; var urlMatchers = this._cache.path;
// Extract all the static segments and Params (processed as ParamDetails) // Extract all the common segments and Params (processed as ParamDetails)
// into an ordered array // into an ordered array
var pathSegmentsAndParams = urlMatchers var pathSegmentsAndParams = urlMatchers
.map(UrlMatcher.pathSegmentsAndParams) .map(UrlMatcher.pathSegmentsAndParams)
...@@ -479,9 +479,9 @@ var UrlMatcher = /** @class */ (function () { ...@@ -479,9 +479,9 @@ var UrlMatcher = /** @class */ (function () {
var encoded = param.type.encode(value); var encoded = param.type.encode(value);
return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded }; return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };
} }
// Build up the path-portion from the list of static segments and parameters // Build up the path-portion from the list of common segments and parameters
var pathString = pathSegmentsAndParams.reduce(function (acc, x) { var pathString = pathSegmentsAndParams.reduce(function (acc, x) {
// The element is a static segment (a raw string); just append it // The element is a common segment (a raw string); just append it
if (isString(x)) if (isString(x))
return acc + x; return acc + x;
// Otherwise, it's a ParamDetails. // Otherwise, it's a ParamDetails.
......
...@@ -425,7 +425,7 @@ export interface Replace { ...@@ -425,7 +425,7 @@ export interface Replace {
* *
* *
* This example decodes an integer from the URL. * This example decodes an integer from the URL.
* It uses the integer as an index to look up an item from a static list. * It uses the integer as an index to look up an item from a common list.
* That item from the list is the decoded parameter value. * That item from the list is the decoded parameter value.
* *
* @example * @example
......
...@@ -25,7 +25,7 @@ export declare class Param { ...@@ -25,7 +25,7 @@ export declare class Param {
inherit: boolean; inherit: boolean;
array: boolean; array: boolean;
config: any; config: any;
/** Cache the default value if it is a static value */ /** Cache the default value if it is a common value */
_defaultValueCache: { _defaultValueCache: {
defaultValue: any; defaultValue: any;
}; };
......
...@@ -467,12 +467,12 @@ export interface IHookRegistry { ...@@ -467,12 +467,12 @@ export interface IHookRegistry {
* *
* #### Audit Log * #### Audit Log
* *
* This example uses a service to log that a user has entered the admin section of an app. * This example uses a service to log that a user has entered the common section of an app.
* This assumes that there are substates of the "admin" state, such as "admin.users", "admin.pages", etc. * This assumes that there are substates of the "common" state, such as "common.users", "common.pages", etc.
* @example * @example
* ``` * ```
* *
* $transitions.onEnter({ entering: 'admin' }, function(transition, state) { * $transitions.onEnter({ entering: 'common' }, function(transition, state) {
* var AuditService = trans.injector().get('AuditService'); * var AuditService = trans.injector().get('AuditService');
* AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name); * AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name);
* } * }
...@@ -483,8 +483,8 @@ export interface IHookRegistry { ...@@ -483,8 +483,8 @@ export interface IHookRegistry {
* The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example. * The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example.
* ``` * ```
* { * {
* name: 'admin', * name: 'common',
* component: 'admin', * component: 'common',
* onEnter: function($transition$, $state$) { * onEnter: function($transition$, $state$) {
* var AuditService = $transition$.injector().get('AuditService'); * var AuditService = $transition$.injector().get('AuditService');
* AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name); * AuditService.log("Entered " + state.name + " module while transitioning to " + transition.to().name);
......
...@@ -80,11 +80,11 @@ export declare class UrlMatcher { ...@@ -80,11 +80,11 @@ export declare class UrlMatcher {
/** /**
* Compare two UrlMatchers * Compare two UrlMatchers
* *
* This comparison function converts a UrlMatcher into static and dynamic path segments. * This comparison function converts a UrlMatcher into common and dynamic path segments.
* Each static path segment is a static string between a path separator (slash character). * Each common path segment is a common string between a path separator (slash character).
* Each dynamic segment is a path parameter. * Each dynamic segment is a path parameter.
* *
* The comparison function sorts static segments before dynamic ones. * The comparison function sorts common segments before dynamic ones.
*/ */
static compare(a: UrlMatcher, b: UrlMatcher): number; static compare(a: UrlMatcher, b: UrlMatcher): number;
/** /**
......
...@@ -132,7 +132,7 @@ var UrlMatcher = /** @class */ (function () { ...@@ -132,7 +132,7 @@ var UrlMatcher = /** @class */ (function () {
if (common_1.find(_this._params, hof_1.propEq('id', id))) if (common_1.find(_this._params, hof_1.propEq('id', id)))
throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'"); throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'");
}; };
// Split into static segments separated by path parameter placeholders. // Split into common segments separated by path parameter placeholders.
// The number of segments is always 1 more than the number of parameters. // The number of segments is always 1 more than the number of parameters.
var matchDetails = function (m, isSearch) { var matchDetails = function (m, isSearch) {
// IE[78] returns '' for unmatched groups instead of null // IE[78] returns '' for unmatched groups instead of null
...@@ -209,11 +209,11 @@ var UrlMatcher = /** @class */ (function () { ...@@ -209,11 +209,11 @@ var UrlMatcher = /** @class */ (function () {
/** /**
* Compare two UrlMatchers * Compare two UrlMatchers
* *
* This comparison function converts a UrlMatcher into static and dynamic path segments. * This comparison function converts a UrlMatcher into common and dynamic path segments.
* Each static path segment is a static string between a path separator (slash character). * Each common path segment is a common string between a path separator (slash character).
* Each dynamic segment is a path parameter. * Each dynamic segment is a path parameter.
* *
* The comparison function sorts static segments before dynamic ones. * The comparison function sorts common segments before dynamic ones.
*/ */
UrlMatcher.compare = function (a, b) { UrlMatcher.compare = function (a, b) {
/** /**
...@@ -245,7 +245,7 @@ var UrlMatcher = /** @class */ (function () { ...@@ -245,7 +245,7 @@ var UrlMatcher = /** @class */ (function () {
return (matcher._cache.weights = return (matcher._cache.weights =
matcher._cache.weights || matcher._cache.weights ||
segments(matcher).map(function (segment) { segments(matcher).map(function (segment) {
// Sort slashes first, then static strings, the Params // Sort slashes first, then common strings, the Params
if (segment === '/') if (segment === '/')
return 1; return 1;
if (predicates_1.isString(segment)) if (predicates_1.isString(segment))
...@@ -452,7 +452,7 @@ var UrlMatcher = /** @class */ (function () { ...@@ -452,7 +452,7 @@ var UrlMatcher = /** @class */ (function () {
if (values === void 0) { values = {}; } if (values === void 0) { values = {}; }
// Build the full path of UrlMatchers (including all parent UrlMatchers) // Build the full path of UrlMatchers (including all parent UrlMatchers)
var urlMatchers = this._cache.path; var urlMatchers = this._cache.path;
// Extract all the static segments and Params (processed as ParamDetails) // Extract all the common segments and Params (processed as ParamDetails)
// into an ordered array // into an ordered array
var pathSegmentsAndParams = urlMatchers var pathSegmentsAndParams = urlMatchers
.map(UrlMatcher.pathSegmentsAndParams) .map(UrlMatcher.pathSegmentsAndParams)
...@@ -481,9 +481,9 @@ var UrlMatcher = /** @class */ (function () { ...@@ -481,9 +481,9 @@ var UrlMatcher = /** @class */ (function () {
var encoded = param.type.encode(value); var encoded = param.type.encode(value);
return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded }; return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };
} }
// Build up the path-portion from the list of static segments and parameters // Build up the path-portion from the list of common segments and parameters
var pathString = pathSegmentsAndParams.reduce(function (acc, x) { var pathString = pathSegmentsAndParams.reduce(function (acc, x) {
// The element is a static segment (a raw string); just append it // The element is a common segment (a raw string); just append it
if (predicates_1.isString(x)) if (predicates_1.isString(x))
return acc + x; return acc + x;
// Otherwise, it's a ParamDetails. // Otherwise, it's a ParamDetails.
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies> <dependencies>
...@@ -57,7 +58,8 @@ ...@@ -57,7 +58,8 @@
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
</plugin> </plugin>
</plugins> </plugins>
<finalName>Spring4MVCCRUDRestService</finalName>
</build> </build>
</project> </project>
...@@ -2,14 +2,11 @@ package com.itsol.quantrivanphong.access.homepage.controller; ...@@ -2,14 +2,11 @@ package com.itsol.quantrivanphong.access.homepage.controller;
import com.itsol.quantrivanphong.access.homepage.business.CatalogiBusiness; import com.itsol.quantrivanphong.access.homepage.business.CatalogiBusiness;
import com.itsol.quantrivanphong.access.homepage.business.NewsBusiness; import com.itsol.quantrivanphong.access.homepage.business.NewsBusiness;
import com.itsol.quantrivanphong.business.EmployeeBusiness;
import com.itsol.quantrivanphong.exception.ResourceNotFoundException; import com.itsol.quantrivanphong.exception.ResourceNotFoundException;
import com.itsol.quantrivanphong.manager.employee.business.EmployeeBusiness;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.News; import com.itsol.quantrivanphong.model.News;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
......
package com.itsol.quantrivanphong.business; package com.itsol.quantrivanphong.manager.employee.business;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import org.springframework.validation.Validator; import org.springframework.validation.Validator;
......
package com.itsol.quantrivanphong.business.impl; package com.itsol.quantrivanphong.manager.employee.business.impl;
import com.itsol.quantrivanphong.manager.employee.business.EmployeeBusiness;
import com.itsol.quantrivanphong.manager.employee.repository.EmployeeRepository;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.repository.EmployeeRepository;
import com.itsol.quantrivanphong.business.EmployeeBusiness;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.Errors; import org.springframework.validation.Errors;
......
package com.itsol.quantrivanphong.controller; package com.itsol.quantrivanphong.manager.employee.controller;
import com.itsol.quantrivanphong.manager.employee.business.EmployeeBusiness;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.business.EmployeeBusiness;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
...@@ -12,6 +12,7 @@ import org.springframework.web.util.UriComponentsBuilder; ...@@ -12,6 +12,7 @@ import org.springframework.web.util.UriComponentsBuilder;
import java.util.List; import java.util.List;
@RestController @RestController
public class EmployeeController { public class EmployeeController {
@Autowired @Autowired
//Retrieve Employee by id //Retrieve Employee by id
......
package com.itsol.quantrivanphong.repository; package com.itsol.quantrivanphong.manager.employee.repository;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
......
package com.itsol.quantrivanphong.manager.employee;
public class test {
}
package com.itsol.quantrivanphong.report.leaveform.business; package com.itsol.quantrivanphong.report.leaveform.business;
import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO; import com.itsol.quantrivanphong.manager.employee.repository.EmployeeRepository;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveFormRepository;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveTypeRepository;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.LeaveForm; import com.itsol.quantrivanphong.model.LeaveForm;
import com.itsol.quantrivanphong.model.LeaveType; import com.itsol.quantrivanphong.model.LeaveType;
import com.itsol.quantrivanphong.repository.EmployeeRepository; import com.itsol.quantrivanphong.report.leaveform.dto.LeaveFormDTO;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveFormRepository;
import com.itsol.quantrivanphong.report.leaveform.repository.LeaveTypeRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
......
package com.itsol.quantrivanphong.report.timesheet.business; package com.itsol.quantrivanphong.report.timesheet.business;
import com.itsol.quantrivanphong.report.timesheet.dto.TimeSheetDTO; import com.itsol.quantrivanphong.manager.employee.repository.EmployeeRepository;
import com.itsol.quantrivanphong.report.timesheet.repository.EProjectRepository;
import com.itsol.quantrivanphong.report.timesheet.repository.TimeSheetRepository;
import com.itsol.quantrivanphong.model.Employee; import com.itsol.quantrivanphong.model.Employee;
import com.itsol.quantrivanphong.model.Eproject; import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.model.TimeSheet; import com.itsol.quantrivanphong.model.TimeSheet;
import com.itsol.quantrivanphong.repository.EmployeeRepository; import com.itsol.quantrivanphong.report.timesheet.dto.TimeSheetDTO;
import com.itsol.quantrivanphong.report.timesheet.repository.EProjectRepository;
import com.itsol.quantrivanphong.report.timesheet.repository.TimeSheetRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
......
server.port=8081 server.port=8080
# =============================== # ===============================
# DATABASE CONNECTION # DATABASE CONNECTION
# =============================== # ===============================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/qtvp_01 spring.datasource.url=jdbc:mysql://localhost:3306/qtvp_01
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=12345678 spring.datasource.password=12345678
# ===============================
# JPA / HIBERNATE
# ===============================
spring.jpa.show-sql=true spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.default_schema=quantrivanphong
## Fix Postgres JPA Error:
## Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented.
#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.mail.host=smtp.gmail.com spring.mail.host=smtp.gmail.com
spring.mail.port=587 spring.mail.port=587
spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.enable=true
...@@ -24,4 +27,6 @@ spring.mail.properties.mail.smtp.connectiontimeout=5000 ...@@ -24,4 +27,6 @@ spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000 spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000 spring.mail.properties.mail.smtp.writetimeout=5000
## App Properties
app.jwtSecret= JWTSuperSecretKey
app.jwtExpirationInMs = 604800000
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*!
DataTables Bootstrap 4 integration
©2011-2017 SpryMedia Ltd - datatables.net/license
*/
(function(b){"function"===typeof define&&define.amd?define(["common/common/js/jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a, d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b, a, d, m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();
!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="&#x2026;";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",
{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
(function(factory){if(typeof define==="function"&&define.amd){define(["common/common/js/jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("common/common/js/jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
(function($) {
"use strict"; // Start of use strict
// Toggle the side navigation
$("#sidebarToggle").on('click', function(e) {
e.preventDefault();
$("body").toggleClass("sidebar-toggled");
$(".sidebar").toggleClass("toggled");
});
// Prevent the content wrapper from scrolling when the fixed side navigation hovered over
$('body.fixed-nav .sidebar').on('mousewheel DOMMouseScroll wheel', function(e) {
if ($(window).width() > 768) {
var e0 = e.originalEvent,
delta = e0.wheelDelta || -e0.detail;
this.scrollTop += (delta < 0 ? 1 : -1) * 30;
e.preventDefault();
}
});
// Scroll to top button appear
$(document).on('scroll', function() {
var scrollDistance = $(this).scrollTop();
if (scrollDistance > 100) {
$('.scroll-to-top').fadeIn();
} else {
$('.scroll-to-top').fadeOut();
}
});
// Smooth scrolling using jQuery easing
$(document).on('click', 'a.scroll-to-top', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: ($($anchor.attr('href')).offset().top)
}, 1000, 'easeInOutExpo');
event.preventDefault();
});
})(jQuery); // End of use strict
/*!
* Start Bootstrap - SB Admin v5.0.3 (https://startbootstrap.com/template-overviews/sb-admin)
* Copyright 2013-2019 Start Bootstrap
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin/blob/master/LICENSE)
*/
!function(l){"use strict";l("#sidebarToggle").on("click",function(o){o.preventDefault(),l("body").toggleClass("sidebar-toggled"),l(".sidebar").toggleClass("toggled")}),l("body.fixed-nav .sidebar").on("mousewheel DOMMouseScroll wheel",function(o){if(768<l(window).width()){var e=o.originalEvent,t=e.wheelDelta||-e.detail;this.scrollTop+=30*(t<0?1:-1),o.preventDefault()}}),l(document).on("scroll",function(){100<l(this).scrollTop()?l(".scroll-to-top").fadeIn():l(".scroll-to-top").fadeOut()}),l(document).on("click","a.scroll-to-top",function(o){var e=l(this);l("html, body").stop().animate({scrollTop:l(e.attr("href")).offset().top},1e3,"easeInOutExpo"),o.preventDefault()})}(jQuery);
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -77,7 +77,7 @@ function isValidObjectMaxDepth(maxDepth) { ...@@ -77,7 +77,7 @@ function isValidObjectMaxDepth(maxDepth) {
* are applied with respect to how minErr instances are created and called. * are applied with respect to how minErr instances are created and called.
* Instances should have names of the form namespaceMinErr for a minErr created * Instances should have names of the form namespaceMinErr for a minErr created
* using minErr('namespace') . Error codes, namespaces and template strings * using minErr('namespace') . Error codes, namespaces and template strings
* should all be static strings, not variables or general expressions. * should all be common strings, not variables or general expressions.
* *
* @param {string} module The namespace to use for the new minErr instance. * @param {string} module The namespace to use for the new minErr instance.
* @param {function} ErrorConstructor Custom error constructor to be instantiated when returning * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
...@@ -4727,9 +4727,9 @@ function annotate(fn, strictDi, name) { ...@@ -4727,9 +4727,9 @@ function annotate(fn, strictDi, name) {
* @example * @example
* Here are some examples of creating value services. * Here are some examples of creating value services.
* ```js * ```js
* $provide.value('ADMIN_USER', 'admin'); * $provide.value('ADMIN_USER', 'common');
* *
* $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 }); * $provide.value('RoleLookup', { common: 0, writer: 1, reader: 2 });
* *
* $provide.value('halfOf', function(value) { * $provide.value('halfOf', function(value) {
* return value / 2; * return value / 2;
...@@ -32909,7 +32909,7 @@ var SelectController = ...@@ -32909,7 +32909,7 @@ var SelectController =
} }
}); });
} else { } else {
// The value attribute is static // The value attribute is common
self.addOption(optionAttrs.value, optionElement); self.addOption(optionAttrs.value, optionElement);
} }
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
<div>
layout1
<a ui-sref="employees">Employee</a>
<a ui-sref="report">Report</a>
<a ui-sref="project">Project</a>
<div ui-view="content">
</div>
</div>
\ No newline at end of file
<div>
layout2
Không có menu
<div ui-view="content"></div>
</div>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<div class="container">
Project works
</div>
/**
*
*/
angular.module("myApp").controller("projectController", function($scope, $http,$window) {
console.log("projectController");
});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment