Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
apollo
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openSource
apollo
Commits
f60ee3e2
Commit
f60ee3e2
authored
May 09, 2016
by
Yiming Liu
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #179 from lepdou/namespace
创建appnamespace
parents
633eb438
1ea8697c
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
260 additions
and
76 deletions
+260
-76
AppController.java
...m/ctrip/apollo/adminservice/controller/AppController.java
+1
-0
AppNamespaceController.java
...pollo/adminservice/controller/AppNamespaceController.java
+25
-0
AppNamespaceControllerTest.java
...o/adminservice/controller/AppNamespaceControllerTest.java
+45
-0
AppNamespaceService.java
...ava/com/ctrip/apollo/biz/service/AppNamespaceService.java
+32
-1
AppNamespaceDTO.java
.../main/java/com/ctrip/apollo/core/dto/AppNamespaceDTO.java
+9
-0
AdminServiceAPI.java
...ain/java/com/ctrip/apollo/portal/api/AdminServiceAPI.java
+8
-2
AppController.java
...ava/com/ctrip/apollo/portal/controller/AppController.java
+2
-2
ConfigController.java
.../com/ctrip/apollo/portal/controller/ConfigController.java
+0
-1
NamespaceController.java
...m/ctrip/apollo/portal/controller/NamespaceController.java
+10
-2
AppService.java
...main/java/com/ctrip/apollo/portal/service/AppService.java
+4
-5
NamespaceService.java
...ava/com/ctrip/apollo/portal/service/NamespaceService.java
+14
-2
config.html
apollo-portal/src/main/resources/static/config.html
+2
-2
sync.html
apollo-portal/src/main/resources/static/config/sync.html
+1
-1
namespace.html
apollo-portal/src/main/resources/static/namespace.html
+29
-22
AppUtils.js
apollo-portal/src/main/resources/static/scripts/AppUtils.js
+0
-7
NamespaceController.js
...esources/static/scripts/controller/NamespaceController.js
+50
-20
AppConfigController.js
...rces/static/scripts/controller/app/AppConfigController.js
+2
-2
NamespaceService.js
...ain/resources/static/scripts/services/NamespaceService.js
+19
-3
common-style.css
...-portal/src/main/resources/static/styles/common-style.css
+0
-1
select2.min.css
.../src/main/resources/static/vendor/select2/select2.min.css
+1
-0
select2.min.js
...l/src/main/resources/static/vendor/select2/select2.min.js
+2
-0
footer.html
...portal/src/main/resources/static/views/common/footer.html
+1
-0
AppServiceTest.java
...src/test/java/com/ctrip/apollo/portal/AppServiceTest.java
+2
-2
ServiceExceptionTest.java
...st/java/com/ctrip/apollo/portal/ServiceExceptionTest.java
+1
-1
No files found.
apollo-adminservice/src/main/java/com/ctrip/apollo/adminservice/controller/AppController.java
View file @
f60ee3e2
...
...
@@ -40,6 +40,7 @@ public class AppController {
entity
=
appService
.
update
(
managedEntity
);
}
else
{
entity
.
setDataChangeCreatedBy
(
user
.
getUsername
());
entity
.
setDataChangeLastModifiedBy
(
user
.
getUsername
());
entity
=
adminService
.
createNewApp
(
entity
);
}
...
...
apollo-adminservice/src/main/java/com/ctrip/apollo/adminservice/controller/AppNamespaceController.java
View file @
f60ee3e2
...
...
@@ -2,12 +2,16 @@ package com.ctrip.apollo.adminservice.controller;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.ctrip.apollo.biz.entity.AppNamespace
;
import
com.ctrip.apollo.biz.service.AppNamespaceService
;
import
com.ctrip.apollo.common.auth.ActiveUser
;
import
com.ctrip.apollo.common.utils.BeanUtils
;
import
com.ctrip.apollo.core.dto.AppNamespaceDTO
;
...
...
@@ -31,4 +35,25 @@ public class AppNamespaceController {
return
BeanUtils
.
batchTransform
(
AppNamespaceDTO
.
class
,
appNamespaces
);
}
@RequestMapping
(
value
=
"/apps/{appId}/appnamespaces"
,
method
=
RequestMethod
.
POST
)
public
AppNamespaceDTO
createOrUpdate
(
@RequestBody
AppNamespaceDTO
appNamespace
,
@ActiveUser
UserDetails
user
){
AppNamespace
entity
=
BeanUtils
.
transfrom
(
AppNamespace
.
class
,
appNamespace
);
AppNamespace
managedEntity
=
appNamespaceService
.
findOne
(
entity
.
getAppId
(),
entity
.
getName
());
String
userName
=
user
.
getUsername
();
if
(
managedEntity
!=
null
){
managedEntity
.
setDataChangeLastModifiedBy
(
userName
);
BeanUtils
.
copyEntityProperties
(
entity
,
managedEntity
);
entity
=
appNamespaceService
.
update
(
managedEntity
);
}
else
{
entity
.
setDataChangeLastModifiedBy
(
userName
);
entity
.
setDataChangeCreatedBy
(
userName
);
entity
=
appNamespaceService
.
createAppNamespace
(
entity
,
userName
);
}
return
BeanUtils
.
transfrom
(
AppNamespaceDTO
.
class
,
entity
);
}
}
apollo-adminservice/src/test/java/com/ctrip/apollo/adminservice/controller/AppNamespaceControllerTest.java
0 → 100644
View file @
f60ee3e2
package
com
.
ctrip
.
apollo
.
adminservice
.
controller
;
import
com.ctrip.apollo.biz.entity.AppNamespace
;
import
com.ctrip.apollo.biz.repository.AppNamespaceRepository
;
import
com.ctrip.apollo.core.dto.AppNamespaceDTO
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.test.context.jdbc.Sql
;
public
class
AppNamespaceControllerTest
extends
AbstractControllerTest
{
@Autowired
private
AppNamespaceRepository
namespaceRepository
;
@Test
@Sql
(
scripts
=
"/controller/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreate
(){
String
appId
=
"6666"
;
String
name
=
"testnamespace"
;
String
comment
=
"comment"
;
AppNamespaceDTO
dto
=
new
AppNamespaceDTO
();
dto
.
setAppId
(
appId
);
dto
.
setName
(
name
);
dto
.
setComment
(
comment
);
AppNamespaceDTO
resultDto
=
restTemplate
.
postForEntity
(
String
.
format
(
"http://localhost:%d/apps/%s/appnamespaces"
,
port
,
appId
),
dto
,
AppNamespaceDTO
.
class
).
getBody
();
Assert
.
assertEquals
(
appId
,
resultDto
.
getAppId
());
Assert
.
assertTrue
(
resultDto
.
getId
()
>
0
);
AppNamespace
savedAppNs
=
namespaceRepository
.
findByAppIdAndName
(
appId
,
name
);
Assert
.
assertNotNull
(
savedAppNs
);
Assert
.
assertNotNull
(
savedAppNs
.
getDataChangeCreatedTime
());
Assert
.
assertNotNull
(
savedAppNs
.
getDataChangeLastModifiedTime
());
Assert
.
assertNotNull
(
savedAppNs
.
getDataChangeLastModifiedBy
());
Assert
.
assertNotNull
(
savedAppNs
.
getDataChangeCreatedBy
());
}
}
apollo-biz/src/main/java/com/ctrip/apollo/biz/service/AppNamespaceService.java
View file @
f60ee3e2
...
...
@@ -14,8 +14,10 @@ import org.springframework.transaction.annotation.Transactional;
import
com.ctrip.apollo.biz.entity.AppNamespace
;
import
com.ctrip.apollo.biz.entity.Audit
;
import
com.ctrip.apollo.biz.repository.AppNamespaceRepository
;
import
com.ctrip.apollo.common.utils.BeanUtils
;
import
com.ctrip.apollo.core.ConfigConsts
;
import
com.ctrip.apollo.core.exception.ServiceException
;
import
com.ctrip.apollo.core.utils.StringUtils
;
@Service
public
class
AppNamespaceService
{
...
...
@@ -37,6 +39,11 @@ public class AppNamespaceService {
return
appNamespaceRepository
.
findByName
(
namespaceName
);
}
public
AppNamespace
findOne
(
String
appId
,
String
namespaceName
){
Preconditions
.
checkArgument
(!
StringUtils
.
isContainEmpty
(
appId
,
namespaceName
),
"appId or Namespace must not be null"
);
return
appNamespaceRepository
.
findByAppIdAndName
(
appId
,
namespaceName
);
}
@Transactional
public
void
createDefaultAppNamespace
(
String
appId
,
String
createBy
)
{
if
(!
isAppNamespaceNameUnique
(
appId
,
appId
))
{
...
...
@@ -51,10 +58,34 @@ public class AppNamespaceService {
appNamespaceRepository
.
save
(
appNs
);
auditService
.
audit
(
AppNamespace
.
class
.
getSimpleName
(),
appNs
.
getId
(),
Audit
.
OP
.
INSERT
,
createBy
);
createBy
);
}
@Transactional
public
AppNamespace
createAppNamespace
(
AppNamespace
appNamespace
,
String
createBy
){
if
(!
isAppNamespaceNameUnique
(
appNamespace
.
getAppId
(),
appNamespace
.
getName
()))
{
throw
new
ServiceException
(
"appnamespace not unique"
);
}
appNamespace
.
setDataChangeCreatedBy
(
createBy
);
appNamespace
.
setDataChangeLastModifiedBy
(
createBy
);
appNamespace
=
appNamespaceRepository
.
save
(
appNamespace
);
auditService
.
audit
(
AppNamespace
.
class
.
getSimpleName
(),
appNamespace
.
getId
(),
Audit
.
OP
.
INSERT
,
createBy
);
return
appNamespace
;
}
public
List
<
AppNamespace
>
findPublicAppNamespaces
(){
return
appNamespaceRepository
.
findByNameNot
(
ConfigConsts
.
NAMESPACE_DEFAULT
);
}
public
AppNamespace
update
(
AppNamespace
appNamespace
){
AppNamespace
managedNs
=
appNamespaceRepository
.
findByAppIdAndName
(
appNamespace
.
getAppId
(),
appNamespace
.
getName
());
BeanUtils
.
copyEntityProperties
(
appNamespace
,
managedNs
);
managedNs
=
appNamespaceRepository
.
save
(
managedNs
);
auditService
.
audit
(
AppNamespace
.
class
.
getSimpleName
(),
managedNs
.
getId
(),
Audit
.
OP
.
UPDATE
,
managedNs
.
getDataChangeLastModifiedBy
());
return
managedNs
;
}
}
apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppNamespaceDTO.java
View file @
f60ee3e2
package
com
.
ctrip
.
apollo
.
core
.
dto
;
public
class
AppNamespaceDTO
{
private
long
id
;
private
String
name
;
...
...
@@ -8,6 +9,14 @@ public class AppNamespaceDTO {
private
String
comment
;
public
long
getId
()
{
return
id
;
}
public
void
setId
(
long
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/api/AdminServiceAPI.java
View file @
f60ee3e2
...
...
@@ -38,7 +38,7 @@ public class AdminServiceAPI {
return
restTemplate
.
getForObject
(
getAdminServiceHost
(
env
)
+
APP_API
+
"/"
+
appId
,
AppDTO
.
class
);
}
public
AppDTO
save
(
Env
env
,
AppDTO
app
)
{
public
AppDTO
createApp
(
Env
env
,
AppDTO
app
)
{
return
restTemplate
.
postForEntity
(
getAdminServiceHost
(
env
)
+
APP_API
,
app
,
AppDTO
.
class
)
.
getBody
();
}
...
...
@@ -70,13 +70,19 @@ public class AdminServiceAPI {
return
Arrays
.
asList
(
appNamespaceDTOs
);
}
public
NamespaceDTO
sav
e
(
Env
env
,
NamespaceDTO
namespace
)
{
public
NamespaceDTO
createNamespac
e
(
Env
env
,
NamespaceDTO
namespace
)
{
return
restTemplate
.
postForEntity
(
getAdminServiceHost
(
env
)
+
String
.
format
(
"/apps/%s/clusters/%s/namespaces"
,
namespace
.
getAppId
(),
namespace
.
getClusterName
()),
namespace
,
NamespaceDTO
.
class
)
.
getBody
();
}
public
AppNamespaceDTO
createAppNamespace
(
Env
env
,
AppNamespaceDTO
appNamespace
)
{
return
restTemplate
.
postForEntity
(
getAdminServiceHost
(
env
)
+
String
.
format
(
"/apps/%s/appnamespaces"
,
appNamespace
.
getAppId
()),
appNamespace
,
AppNamespaceDTO
.
class
)
.
getBody
();
}
}
@Service
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/controller/AppController.java
View file @
f60ee3e2
...
...
@@ -49,9 +49,9 @@ public class AppController {
throw
new
BadRequestException
(
"request payload contains empty"
);
}
if
(
"ALL"
.
equals
(
env
)){
appService
.
save
(
app
);
appService
.
createAppInAllEnvs
(
app
);
}
else
{
appService
.
save
(
Env
.
valueOf
(
env
),
app
);
appService
.
createApp
(
Env
.
valueOf
(
env
),
app
);
}
return
ResponseEntity
.
ok
().
build
();
}
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/controller/ConfigController.java
View file @
f60ee3e2
...
...
@@ -9,7 +9,6 @@ import com.ctrip.apollo.core.utils.StringUtils;
import
com.ctrip.apollo.portal.entity.ItemDiffs
;
import
com.ctrip.apollo.portal.entity.form.NamespaceSyncModel
;
import
com.ctrip.apollo.portal.entity.form.NamespaceTextModel
;
import
com.ctrip.apollo.portal.entity.NamespaceVO
;
import
com.ctrip.apollo.portal.entity.form.NamespaceReleaseModel
;
import
com.ctrip.apollo.portal.service.ConfigService
;
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/controller/NamespaceController.java
View file @
f60ee3e2
...
...
@@ -29,12 +29,20 @@ public class NamespaceController {
}
@RequestMapping
(
value
=
"/apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces"
,
method
=
RequestMethod
.
POST
)
public
NamespaceDTO
sav
e
(
@PathVariable
String
env
,
@RequestBody
NamespaceDTO
namespace
){
public
NamespaceDTO
createNamespac
e
(
@PathVariable
String
env
,
@RequestBody
NamespaceDTO
namespace
){
if
(
StringUtils
.
isContainEmpty
(
env
,
namespace
.
getAppId
(),
namespace
.
getClusterName
(),
namespace
.
getNamespaceName
())){
throw
new
BadRequestException
(
"request payload contains empty"
);
}
return
namespaceService
.
save
(
Env
.
valueOf
(
env
),
namespace
);
return
namespaceService
.
createNamespace
(
Env
.
valueOf
(
env
),
namespace
);
}
@RequestMapping
(
value
=
"/apps/{appId}/appnamespaces"
,
method
=
RequestMethod
.
POST
)
public
void
createAppNamespace
(
@PathVariable
String
appId
,
@RequestBody
AppNamespaceDTO
appNamespace
){
if
(
StringUtils
.
isContainEmpty
(
appId
,
appNamespace
.
getAppId
(),
appNamespace
.
getName
())){
throw
new
BadRequestException
(
"request payload contains empty"
);
}
namespaceService
.
createAppNamespace
(
appNamespace
);
}
@RequestMapping
(
"/apps/{appId}/env/{env}/clusters/{clusterName}/namespaces"
)
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/service/AppService.java
View file @
f60ee3e2
package
com
.
ctrip
.
apollo
.
portal
.
service
;
import
java.util.Arrays
;
import
java.util.LinkedList
;
import
java.util.List
;
...
...
@@ -84,11 +83,11 @@ public class AppService {
return
tree
;
}
public
void
save
(
AppDTO
app
)
{
public
void
createAppInAllEnvs
(
AppDTO
app
)
{
List
<
Env
>
envs
=
portalSettings
.
getEnvs
();
for
(
Env
env
:
envs
)
{
try
{
appAPI
.
save
(
env
,
app
);
appAPI
.
createApp
(
env
,
app
);
}
catch
(
HttpStatusCodeException
e
)
{
logger
.
error
(
ExceptionUtils
.
toString
(
e
));
throw
e
;
...
...
@@ -96,9 +95,9 @@ public class AppService {
}
}
public
void
save
(
Env
env
,
AppDTO
app
)
{
public
void
createApp
(
Env
env
,
AppDTO
app
)
{
try
{
appAPI
.
save
(
env
,
app
);
appAPI
.
createApp
(
env
,
app
);
}
catch
(
HttpStatusCodeException
e
)
{
logger
.
error
(
ExceptionUtils
.
toString
(
e
));
throw
e
;
...
...
apollo-portal/src/main/java/com/ctrip/apollo/portal/service/NamespaceService.java
View file @
f60ee3e2
...
...
@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.http.HttpStatus
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.client.HttpClientErrorException
;
import
org.springframework.web.client.HttpStatusCodeException
;
import
java.util.Collections
;
import
java.util.HashMap
;
...
...
@@ -50,8 +51,19 @@ public class NamespaceService {
return
namespaceAPI
.
findPublicAppNamespaces
(
portalSettings
.
getFirstEnv
());
}
public
NamespaceDTO
save
(
Env
env
,
NamespaceDTO
namespace
){
return
namespaceAPI
.
save
(
env
,
namespace
);
public
NamespaceDTO
createNamespace
(
Env
env
,
NamespaceDTO
namespace
){
return
namespaceAPI
.
createNamespace
(
env
,
namespace
);
}
public
void
createAppNamespace
(
AppNamespaceDTO
appNamespace
)
{
for
(
Env
env
:
portalSettings
.
getEnvs
())
{
try
{
namespaceAPI
.
createAppNamespace
(
env
,
appNamespace
);
}
catch
(
HttpStatusCodeException
e
)
{
logger
.
error
(
ExceptionUtils
.
toString
(
e
));
throw
e
;
}
}
}
/**
...
...
apollo-portal/src/main/resources/static/config.html
View file @
f60ee3e2
...
...
@@ -83,7 +83,7 @@
<!--</div>-->
<!--</a>-->
<a
class=
"list-group-item"
target=
"_blank"
href=
"namespace.html?#/appid={{pageContext.appId}}
"
>
<a
class=
"list-group-item"
href=
"namespace.html?#/appid={{pageContext.appId}}&type=link
"
>
<div
class=
"row"
>
<div
class=
"col-md-2"
><img
src=
"img/plus.png"
class=
"i-20"
></div>
<div
class=
"col-md-7 hidden-xs"
>
...
...
@@ -294,7 +294,7 @@
{{watch.value}}
<div
ng-show=
"watch.oldValue"
>
<hr>
老的值:
{{watch.oldValue}}
<b>
已发布的值:
</b>
{{watch.oldValue}}
</div>
</div>
<div
class=
"modal-footer"
>
...
...
apollo-portal/src/main/resources/static/config/sync.html
View file @
f60ee3e2
...
...
@@ -33,7 +33,7 @@
</button>
<button
type=
"button"
class=
"btn btn-success"
ng-show=
"syncItemStep == 2 && hasDiff"
ng-click=
"syncItems()"
>
同步
</button>
<button
type=
"button"
class=
"btn btn-
primary
"
data-dismiss=
"modal"
ng-show=
"syncItemStep == 3"
<button
type=
"button"
class=
"btn btn-
success
"
data-dismiss=
"modal"
ng-show=
"syncItemStep == 3"
ng-click=
"backToAppHomePage()"
>
返回
</button>
</div>
...
...
apollo-portal/src/main/resources/static/namespace.html
View file @
f60ee3e2
...
...
@@ -5,8 +5,8 @@
<!-- styles -->
<link
rel=
"stylesheet"
type=
"text/css"
href=
"vendor/bootstrap/css/bootstrap.min.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"vendor/angular/angular-toastr-1.4.1.min.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"vendor/select2/select2.min.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
media=
'all'
href=
"vendor/angular/loading-bar.min.css"
>
<link
href=
"http://cdn.bootcss.com/select2/4.0.2-rc.1/css/select2.css"
rel=
"stylesheet"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"styles/common-style.css"
>
<title>
新建Namespace
</title>
</head>
...
...
@@ -15,26 +15,32 @@
<div
ng-include=
"'views/common/nav.html'"
></div>
<div
class=
"container-fluid apollo-container"
>
<div
class=
"container-fluid apollo-container"
ng-controller=
"LinkNamespaceController"
>
<div
class=
"row"
>
<div
class=
"col-md-8 col-md-offset-2"
>
<div
class=
"panel"
>
<header
class=
"panel-heading"
>
新建Namespace
<div
class=
"row"
>
<div
class=
"col-md-6"
>
新建Namespace
</div>
<div
class=
"col-md-6 text-right"
>
<button
type=
"button"
class=
"btn btn-success"
ng-show=
"step == 2"
ng-click=
"back()"
>
返回
</button>
</div>
</div>
</header>
<div
class=
"panel-body"
>
<form
class=
"form-horizontal"
ng-controller=
"LinkNamespaceController"
ng-submit=
"sav
eNamespace()"
>
<form
class=
"form-horizontal"
ng-show=
"step == 1"
ng-submit=
"creat
eNamespace()"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
应用ID
</label>
<div
class=
"col-sm-6"
>
{{appId}}
</div>
</div>
<div
class=
"form-horizontal"
>
<div
class=
"form-horizontal"
ng-show=
"type == 'link'"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
选择集群
</label>
<label
class=
"col-sm-3 control-label"
>
<font
style=
"color: red"
>
*
</font>
选择集群
</label>
<div
class=
"col-sm-6"
>
<table
class=
"table table-hover"
>
<thead>
...
...
@@ -57,24 +63,19 @@
</div>
</div>
</div>
<div
class=
"form-group"
ng-show=
"
isRootUser
"
>
<label
class=
"col-sm-3 control-label"
><font
style=
"color: red"
>
*
</font>
namespace类型
</label>
<div
class=
"form-group"
ng-show=
"
type == 'create'
"
>
<label
class=
"col-sm-3 control-label"
><font
style=
"color: red"
>
*
</font>
名称
</label>
<div
class=
"col-sm-4"
>
<label
class=
"radio-inline"
>
<input
type=
"radio"
name=
"x"
ng-checked=
"namespaceType == 1"
ng-click=
"selectNamespaceType(1)"
>
关联
</label>
<label
class=
"radio-inline"
>
<input
type=
"radio"
name=
"x"
ng-checked=
"namespaceType == 2"
ng-click=
"selectNamespaceType(2)"
>
新建
</label>
<input
type=
"text"
class=
"form-control"
ng-model=
"appNamespace.name"
ng-required=
"type == 'create'"
>
</div>
</div>
<div
class=
"form-group"
ng-show=
"
namespaceType == 2
"
>
<label
class=
"col-sm-3 control-label"
>
<font
style=
"color: red"
>
*
</font>
namespace
</label>
<div
class=
"col-sm-
4
"
>
<input
type=
"text"
class=
"form-control"
placeholder=
"输入namespace名称"
>
<div
class=
"form-group"
ng-show=
"
type == 'create'
"
>
<label
class=
"col-sm-3 control-label"
>
备注
</label>
<div
class=
"col-sm-
7
"
>
<textarea
class=
"form-control"
rows=
"3"
ng-model=
"appNamespace.comment"
></textarea
>
</div>
</div>
<div
class=
"form-group"
ng-show=
"
namespaceType == 1
"
>
<div
class=
"form-group"
ng-show=
"
type == 'link'
"
>
<label
class=
"col-sm-3 control-label"
><font
style=
"color: red"
>
*
</font>
namespace
</label>
<div
class=
"col-sm-4"
>
<select
id=
"namespaces"
>
...
...
@@ -84,11 +85,16 @@
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-
2
col-sm-10"
>
<div
class=
"col-sm-offset-
3
col-sm-10"
>
<button
type=
"submit"
class=
"btn btn-default"
>
提交
</button>
</div>
</div>
</form>
<div
class=
"row text-center"
ng-show=
"step == 2"
>
<img
src=
"img/sync-succ.png"
style=
"height: 100px; width: 100px"
>
<h3>
创建成功!
</h3>
</div>
</div>
</div>
</div>
...
...
@@ -107,7 +113,8 @@
<!-- jquery.js -->
<script
src=
"vendor/jquery.js"
type=
"text/javascript"
></script>
<script
src=
"http://cdn.bootcss.com/select2/4.0.2-rc.1/js/select2.min.js"
></script>
<script
src=
"vendor/select2/select2.min.js"
type=
"text/javascript"
></script>
<!-- bootstrap.js -->
<script
src=
"vendor/bootstrap/js/bootstrap.min.js"
type=
"text/javascript"
></script>
...
...
@@ -117,7 +124,7 @@
<script
type=
"application/javascript"
src=
"scripts/services/NamespaceService.js"
></script>
<script
type=
"application/javascript"
src=
"scripts/AppUtils.js"
></script>
<script
type=
"application/javascript"
src=
"scripts/controller/
Link
NamespaceController.js"
></script>
<script
type=
"application/javascript"
src=
"scripts/controller/NamespaceController.js"
></script>
</body>
...
...
apollo-portal/src/main/resources/static/scripts/AppUtils.js
View file @
f60ee3e2
...
...
@@ -22,13 +22,6 @@ appUtil.service('AppUtil', [function () {
result
[
kv
[
0
]]
=
kv
[
1
];
});
return
result
;
},
cutOffString
:
function
(
str
,
maxLength
)
{
if
(
!
str
||
maxLength
<=
0
)
{
return
''
;
}
return
str
.
length
>
maxLength
?
str
.
substr
(
0
,
maxLength
)
:
str
;
}
}
}]);
apollo-portal/src/main/resources/static/scripts/controller/
Link
NamespaceController.js
→
apollo-portal/src/main/resources/static/scripts/controller/NamespaceController.js
View file @
f60ee3e2
...
...
@@ -4,7 +4,9 @@ application_module.controller("LinkNamespaceController",
var
params
=
AppUtil
.
parseParams
(
$location
.
$$url
);
$scope
.
appId
=
params
.
appid
;
$scope
.
isRootUser
=
params
.
root
?
true
:
false
;
$scope
.
type
=
params
.
type
;
$scope
.
step
=
1
;
////// load env //////
AppService
.
load_nav_tree
(
$scope
.
appId
).
then
(
function
(
result
)
{
...
...
@@ -36,26 +38,50 @@ application_module.controller("LinkNamespaceController",
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
"load public namespace error"
);
});
$scope
.
saveNamespace
=
function
()
{
var
selectedClusters
=
collectSelectedClusters
();
if
(
selectedClusters
.
length
==
0
){
toastr
.
warning
(
"请选择集群"
);
return
;
}
var
namespaceName
=
$
(
'#namespaces'
).
select2
(
'data'
)[
0
].
id
;
selectedClusters
.
forEach
(
function
(
cluster
)
{
NamespaceService
.
save
(
$scope
.
appId
,
cluster
.
env
,
cluster
.
clusterName
,
namespaceName
).
then
(
function
(
result
)
{
toastr
.
success
(
cluster
.
env
+
"_"
+
result
.
clusterName
+
"_"
+
result
.
namespaceName
+
"创建成功"
);
$scope
.
appNamespace
=
{
appId
:
$scope
.
appId
,
name
:
''
,
comment
:
''
};
$scope
.
createNamespace
=
function
()
{
if
(
$scope
.
type
==
'link'
){
var
selectedClusters
=
collectSelectedClusters
();
if
(
selectedClusters
.
length
==
0
){
toastr
.
warning
(
"请选择集群"
);
return
;
}
var
selectedClustersSize
=
selectedClusters
.
length
;
if
(
$scope
.
namespaceType
==
1
){
$scope
.
namespaceName
=
$
(
'#namespaces'
).
select2
(
'data'
)[
0
].
id
;
}
var
hasCreatedClusterCnt
=
0
;
selectedClusters
.
forEach
(
function
(
cluster
)
{
NamespaceService
.
createNamespace
(
$scope
.
appId
,
cluster
.
env
,
cluster
.
clusterName
,
$scope
.
namespaceName
).
then
(
function
(
result
)
{
toastr
.
success
(
cluster
.
env
+
"_"
+
result
.
clusterName
+
"_"
+
result
.
namespaceName
+
"创建成功"
);
hasCreatedClusterCnt
++
;
if
(
hasCreatedClusterCnt
==
selectedClustersSize
){
$scope
.
step
=
2
;
}
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
cluster
.
env
+
"_"
+
cluster
.
clusterName
+
"_"
+
$scope
.
namespaceName
+
"创建失败"
);
});
});
}
else
{
NamespaceService
.
createAppNamespace
(
$scope
.
appId
,
$scope
.
appNamespace
).
then
(
function
(
result
)
{
$scope
.
step
=
2
;
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
cluster
.
env
+
"_"
+
cluster
.
clusterName
+
"_"
+
namespaceName
+
"创建失败"
);
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
"创建失败"
);
});
})
}
};
var
envAllSelected
=
false
;
...
...
@@ -85,6 +111,10 @@ application_module.controller("LinkNamespaceController",
$scope
.
switchSelect
=
function
(
o
)
{
o
.
checked
=
!
o
.
checked
;
}
};
$scope
.
back
=
function
()
{
$window
.
location
.
href
=
'/config.html?#appid='
+
$scope
.
appId
;
};
}]);
apollo-portal/src/main/resources/static/scripts/controller/app/AppConfigController.js
View file @
f60ee3e2
...
...
@@ -121,6 +121,7 @@ application_module.controller("AppConfigController",
namespace
.
viewType
=
viewType
;
};
var
MAX_ROW_SIZE
=
30
;
//把表格内容解析成文本
function
parseModel2Text
(
namespace
)
{
...
...
@@ -139,8 +140,7 @@ application_module.controller("AppConfigController",
itemCnt
++
;
});
itemCnt
=
itemCnt
>
30
?
30
:
itemCnt
;
namespace
.
itemCnt
=
itemCnt
+
3
;
namespace
.
itemCnt
=
itemCnt
>
MAX_ROW_SIZE
?
MAX_ROW_SIZE
:
itemCnt
+
3
;
return
result
;
}
...
...
apollo-portal/src/main/resources/static/scripts/services/NamespaceService.js
View file @
f60ee3e2
...
...
@@ -5,10 +5,15 @@ appService.service("NamespaceService", ['$resource', '$q', function ($resource,
isArray
:
true
,
url
:
'/appnamespaces/public'
},
sav
e
:
{
createNamespac
e
:
{
method
:
'POST'
,
url
:
'/apps/:appId/envs/:env/clusters/:clusterName/namespaces'
,
isArray
:
false
},
createAppNamespace
:
{
method
:
'POST'
,
url
:
'/apps/:appId/appnamespaces'
,
isArray
:
false
}
});
...
...
@@ -22,9 +27,9 @@ appService.service("NamespaceService", ['$resource', '$q', function ($resource,
});
return
d
.
promise
;
},
sav
e
:
function
(
appId
,
env
,
clusterName
,
namespaceName
)
{
createNamespac
e
:
function
(
appId
,
env
,
clusterName
,
namespaceName
)
{
var
d
=
$q
.
defer
();
namespace_source
.
sav
e
({
namespace_source
.
createNamespac
e
({
appId
:
appId
,
env
:
env
,
clusterName
:
clusterName
...
...
@@ -38,6 +43,17 @@ appService.service("NamespaceService", ['$resource', '$q', function ($resource,
d
.
reject
(
result
);
});
return
d
.
promise
;
},
createAppNamespace
:
function
(
appId
,
appnamespace
)
{
var
d
=
$q
.
defer
();
namespace_source
.
createAppNamespace
({
appId
:
appId
},
appnamespace
,
function
(
result
)
{
d
.
resolve
(
result
);
},
function
(
result
)
{
d
.
reject
(
result
);
});
return
d
.
promise
;
}
}
...
...
apollo-portal/src/main/resources/static/styles/common-style.css
View file @
f60ee3e2
...
...
@@ -7,7 +7,6 @@ body {
padding
:
0px
!important
;
margin
:
0px
!important
;
font-size
:
13px
;
/*min-height: 650px;*/
background
:
#f1f2f7
;
font-family
:
'Open Sans'
,
sans-serif
;
}
...
...
apollo-portal/src/main/resources/static/vendor/select2/select2.min.css
0 → 100644
View file @
f60ee3e2
.select2-container
{
box-sizing
:
border-box
;
display
:
inline-block
;
margin
:
0
;
position
:
relative
;
vertical-align
:
middle
}
.select2-container
.select2-selection--single
{
box-sizing
:
border-box
;
cursor
:
pointer
;
display
:
block
;
height
:
28px
;
user-select
:
none
;
-webkit-user-select
:
none
}
.select2-container
.select2-selection--single
.select2-selection__rendered
{
display
:
block
;
padding-left
:
8px
;
padding-right
:
20px
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
.select2-container
.select2-selection--single
.select2-selection__clear
{
position
:
relative
}
.select2-container
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__rendered
{
padding-right
:
8px
;
padding-left
:
20px
}
.select2-container
.select2-selection--multiple
{
box-sizing
:
border-box
;
cursor
:
pointer
;
display
:
block
;
min-height
:
32px
;
user-select
:
none
;
-webkit-user-select
:
none
}
.select2-container
.select2-selection--multiple
.select2-selection__rendered
{
display
:
inline-block
;
overflow
:
hidden
;
padding-left
:
8px
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
.select2-container
.select2-search--inline
{
float
:
left
}
.select2-container
.select2-search--inline
.select2-search__field
{
box-sizing
:
border-box
;
border
:
none
;
font-size
:
100%
;
margin-top
:
5px
;
padding
:
0
}
.select2-container
.select2-search--inline
.select2-search__field
::-webkit-search-cancel-button
{
-webkit-appearance
:
none
}
.select2-dropdown
{
background-color
:
white
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
;
box-sizing
:
border-box
;
display
:
block
;
position
:
absolute
;
left
:
-100000px
;
width
:
100%
;
z-index
:
1051
}
.select2-results
{
display
:
block
}
.select2-results__options
{
list-style
:
none
;
margin
:
0
;
padding
:
0
}
.select2-results__option
{
padding
:
6px
;
user-select
:
none
;
-webkit-user-select
:
none
}
.select2-results__option
[
aria-selected
]
{
cursor
:
pointer
}
.select2-container--open
.select2-dropdown
{
left
:
0
}
.select2-container--open
.select2-dropdown--above
{
border-bottom
:
none
;
border-bottom-left-radius
:
0
;
border-bottom-right-radius
:
0
}
.select2-container--open
.select2-dropdown--below
{
border-top
:
none
;
border-top-left-radius
:
0
;
border-top-right-radius
:
0
}
.select2-search--dropdown
{
display
:
block
;
padding
:
4px
}
.select2-search--dropdown
.select2-search__field
{
padding
:
4px
;
width
:
100%
;
box-sizing
:
border-box
}
.select2-search--dropdown
.select2-search__field
::-webkit-search-cancel-button
{
-webkit-appearance
:
none
}
.select2-search--dropdown.select2-search--hide
{
display
:
none
}
.select2-close-mask
{
border
:
0
;
margin
:
0
;
padding
:
0
;
display
:
block
;
position
:
fixed
;
left
:
0
;
top
:
0
;
min-height
:
100%
;
min-width
:
100%
;
height
:
auto
;
width
:
auto
;
opacity
:
0
;
z-index
:
99
;
background-color
:
#fff
;
filter
:
alpha
(
opacity
=
0
)}
.select2-hidden-accessible
{
border
:
0
!important
;
clip
:
rect
(
0
0
0
0
)
!important
;
height
:
1px
!important
;
margin
:
-1px
!important
;
overflow
:
hidden
!important
;
padding
:
0
!important
;
position
:
absolute
!important
;
width
:
1px
!important
}
.select2-container--default
.select2-selection--single
{
background-color
:
#fff
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
}
.select2-container--default
.select2-selection--single
.select2-selection__rendered
{
color
:
#444
;
line-height
:
28px
}
.select2-container--default
.select2-selection--single
.select2-selection__clear
{
cursor
:
pointer
;
float
:
right
;
font-weight
:
bold
}
.select2-container--default
.select2-selection--single
.select2-selection__placeholder
{
color
:
#999
}
.select2-container--default
.select2-selection--single
.select2-selection__arrow
{
height
:
26px
;
position
:
absolute
;
top
:
1px
;
right
:
1px
;
width
:
20px
}
.select2-container--default
.select2-selection--single
.select2-selection__arrow
b
{
border-color
:
#888
transparent
transparent
transparent
;
border-style
:
solid
;
border-width
:
5px
4px
0
4px
;
height
:
0
;
left
:
50%
;
margin-left
:
-4px
;
margin-top
:
-2px
;
position
:
absolute
;
top
:
50%
;
width
:
0
}
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__clear
{
float
:
left
}
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__arrow
{
left
:
1px
;
right
:
auto
}
.select2-container--default.select2-container--disabled
.select2-selection--single
{
background-color
:
#eee
;
cursor
:
default
}
.select2-container--default.select2-container--disabled
.select2-selection--single
.select2-selection__clear
{
display
:
none
}
.select2-container--default.select2-container--open
.select2-selection--single
.select2-selection__arrow
b
{
border-color
:
transparent
transparent
#888
transparent
;
border-width
:
0
4px
5px
4px
}
.select2-container--default
.select2-selection--multiple
{
background-color
:
white
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
;
cursor
:
text
}
.select2-container--default
.select2-selection--multiple
.select2-selection__rendered
{
box-sizing
:
border-box
;
list-style
:
none
;
margin
:
0
;
padding
:
0
5px
;
width
:
100%
}
.select2-container--default
.select2-selection--multiple
.select2-selection__placeholder
{
color
:
#999
;
margin-top
:
5px
;
float
:
left
}
.select2-container--default
.select2-selection--multiple
.select2-selection__clear
{
cursor
:
pointer
;
float
:
right
;
font-weight
:
bold
;
margin-top
:
5px
;
margin-right
:
10px
}
.select2-container--default
.select2-selection--multiple
.select2-selection__choice
{
background-color
:
#e4e4e4
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
;
cursor
:
default
;
float
:
left
;
margin-right
:
5px
;
margin-top
:
5px
;
padding
:
0
5px
}
.select2-container--default
.select2-selection--multiple
.select2-selection__choice__remove
{
color
:
#999
;
cursor
:
pointer
;
display
:
inline-block
;
font-weight
:
bold
;
margin-right
:
2px
}
.select2-container--default
.select2-selection--multiple
.select2-selection__choice__remove
:hover
{
color
:
#333
}
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice
,
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__placeholder
,
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-search--inline
{
float
:
right
}
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice
{
margin-left
:
5px
;
margin-right
:
auto
}
.select2-container--default
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice__remove
{
margin-left
:
2px
;
margin-right
:
auto
}
.select2-container--default.select2-container--focus
.select2-selection--multiple
{
border
:
solid
black
1px
;
outline
:
0
}
.select2-container--default.select2-container--disabled
.select2-selection--multiple
{
background-color
:
#eee
;
cursor
:
default
}
.select2-container--default.select2-container--disabled
.select2-selection__choice__remove
{
display
:
none
}
.select2-container--default.select2-container--open.select2-container--above
.select2-selection--single
,
.select2-container--default.select2-container--open.select2-container--above
.select2-selection--multiple
{
border-top-left-radius
:
0
;
border-top-right-radius
:
0
}
.select2-container--default.select2-container--open.select2-container--below
.select2-selection--single
,
.select2-container--default.select2-container--open.select2-container--below
.select2-selection--multiple
{
border-bottom-left-radius
:
0
;
border-bottom-right-radius
:
0
}
.select2-container--default
.select2-search--dropdown
.select2-search__field
{
border
:
1px
solid
#aaa
}
.select2-container--default
.select2-search--inline
.select2-search__field
{
background
:
transparent
;
border
:
none
;
outline
:
0
;
box-shadow
:
none
;
-webkit-appearance
:
textfield
}
.select2-container--default
.select2-results
>
.select2-results__options
{
max-height
:
200px
;
overflow-y
:
auto
}
.select2-container--default
.select2-results__option
[
role
=
group
]
{
padding
:
0
}
.select2-container--default
.select2-results__option
[
aria-disabled
=
true
]
{
color
:
#999
}
.select2-container--default
.select2-results__option
[
aria-selected
=
true
]
{
background-color
:
#ddd
}
.select2-container--default
.select2-results__option
.select2-results__option
{
padding-left
:
1em
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__group
{
padding-left
:
0
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-1em
;
padding-left
:
2em
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-2em
;
padding-left
:
3em
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-3em
;
padding-left
:
4em
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-4em
;
padding-left
:
5em
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-5em
;
padding-left
:
6em
}
.select2-container--default
.select2-results__option--highlighted
[
aria-selected
]
{
background-color
:
#5897fb
;
color
:
white
}
.select2-container--default
.select2-results__group
{
cursor
:
default
;
display
:
block
;
padding
:
6px
}
.select2-container--classic
.select2-selection--single
{
background-color
:
#f7f7f7
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
;
outline
:
0
;
background-image
:
-webkit-linear-gradient
(
top
,
#fff
50%
,
#eee
100%
);
background-image
:
-o-linear-gradient
(
top
,
#fff
50%
,
#eee
100%
);
background-image
:
linear-gradient
(
to
bottom
,
#fff
50%
,
#eee
100%
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#FFFFFFFF'
,
endColorstr
=
'#FFEEEEEE'
,
GradientType
=
0
)}
.select2-container--classic
.select2-selection--single
:focus
{
border
:
1px
solid
#5897fb
}
.select2-container--classic
.select2-selection--single
.select2-selection__rendered
{
color
:
#444
;
line-height
:
28px
}
.select2-container--classic
.select2-selection--single
.select2-selection__clear
{
cursor
:
pointer
;
float
:
right
;
font-weight
:
bold
;
margin-right
:
10px
}
.select2-container--classic
.select2-selection--single
.select2-selection__placeholder
{
color
:
#999
}
.select2-container--classic
.select2-selection--single
.select2-selection__arrow
{
background-color
:
#ddd
;
border
:
none
;
border-left
:
1px
solid
#aaa
;
border-top-right-radius
:
4px
;
border-bottom-right-radius
:
4px
;
height
:
26px
;
position
:
absolute
;
top
:
1px
;
right
:
1px
;
width
:
20px
;
background-image
:
-webkit-linear-gradient
(
top
,
#eee
50%
,
#ccc
100%
);
background-image
:
-o-linear-gradient
(
top
,
#eee
50%
,
#ccc
100%
);
background-image
:
linear-gradient
(
to
bottom
,
#eee
50%
,
#ccc
100%
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#FFEEEEEE'
,
endColorstr
=
'#FFCCCCCC'
,
GradientType
=
0
)}
.select2-container--classic
.select2-selection--single
.select2-selection__arrow
b
{
border-color
:
#888
transparent
transparent
transparent
;
border-style
:
solid
;
border-width
:
5px
4px
0
4px
;
height
:
0
;
left
:
50%
;
margin-left
:
-4px
;
margin-top
:
-2px
;
position
:
absolute
;
top
:
50%
;
width
:
0
}
.select2-container--classic
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__clear
{
float
:
left
}
.select2-container--classic
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__arrow
{
border
:
none
;
border-right
:
1px
solid
#aaa
;
border-radius
:
0
;
border-top-left-radius
:
4px
;
border-bottom-left-radius
:
4px
;
left
:
1px
;
right
:
auto
}
.select2-container--classic.select2-container--open
.select2-selection--single
{
border
:
1px
solid
#5897fb
}
.select2-container--classic.select2-container--open
.select2-selection--single
.select2-selection__arrow
{
background
:
transparent
;
border
:
none
}
.select2-container--classic.select2-container--open
.select2-selection--single
.select2-selection__arrow
b
{
border-color
:
transparent
transparent
#888
transparent
;
border-width
:
0
4px
5px
4px
}
.select2-container--classic.select2-container--open.select2-container--above
.select2-selection--single
{
border-top
:
none
;
border-top-left-radius
:
0
;
border-top-right-radius
:
0
;
background-image
:
-webkit-linear-gradient
(
top
,
#fff
0%
,
#eee
50%
);
background-image
:
-o-linear-gradient
(
top
,
#fff
0%
,
#eee
50%
);
background-image
:
linear-gradient
(
to
bottom
,
#fff
0%
,
#eee
50%
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#FFFFFFFF'
,
endColorstr
=
'#FFEEEEEE'
,
GradientType
=
0
)}
.select2-container--classic.select2-container--open.select2-container--below
.select2-selection--single
{
border-bottom
:
none
;
border-bottom-left-radius
:
0
;
border-bottom-right-radius
:
0
;
background-image
:
-webkit-linear-gradient
(
top
,
#eee
50%
,
#fff
100%
);
background-image
:
-o-linear-gradient
(
top
,
#eee
50%
,
#fff
100%
);
background-image
:
linear-gradient
(
to
bottom
,
#eee
50%
,
#fff
100%
);
background-repeat
:
repeat-x
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#FFEEEEEE'
,
endColorstr
=
'#FFFFFFFF'
,
GradientType
=
0
)}
.select2-container--classic
.select2-selection--multiple
{
background-color
:
white
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
;
cursor
:
text
;
outline
:
0
}
.select2-container--classic
.select2-selection--multiple
:focus
{
border
:
1px
solid
#5897fb
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__rendered
{
list-style
:
none
;
margin
:
0
;
padding
:
0
5px
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__clear
{
display
:
none
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__choice
{
background-color
:
#e4e4e4
;
border
:
1px
solid
#aaa
;
border-radius
:
4px
;
cursor
:
default
;
float
:
left
;
margin-right
:
5px
;
margin-top
:
5px
;
padding
:
0
5px
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__choice__remove
{
color
:
#888
;
cursor
:
pointer
;
display
:
inline-block
;
font-weight
:
bold
;
margin-right
:
2px
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__choice__remove
:hover
{
color
:
#555
}
.select2-container--classic
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice
{
float
:
right
}
.select2-container--classic
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice
{
margin-left
:
5px
;
margin-right
:
auto
}
.select2-container--classic
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice__remove
{
margin-left
:
2px
;
margin-right
:
auto
}
.select2-container--classic.select2-container--open
.select2-selection--multiple
{
border
:
1px
solid
#5897fb
}
.select2-container--classic.select2-container--open.select2-container--above
.select2-selection--multiple
{
border-top
:
none
;
border-top-left-radius
:
0
;
border-top-right-radius
:
0
}
.select2-container--classic.select2-container--open.select2-container--below
.select2-selection--multiple
{
border-bottom
:
none
;
border-bottom-left-radius
:
0
;
border-bottom-right-radius
:
0
}
.select2-container--classic
.select2-search--dropdown
.select2-search__field
{
border
:
1px
solid
#aaa
;
outline
:
0
}
.select2-container--classic
.select2-search--inline
.select2-search__field
{
outline
:
0
;
box-shadow
:
none
}
.select2-container--classic
.select2-dropdown
{
background-color
:
#fff
;
border
:
1px
solid
transparent
}
.select2-container--classic
.select2-dropdown--above
{
border-bottom
:
none
}
.select2-container--classic
.select2-dropdown--below
{
border-top
:
none
}
.select2-container--classic
.select2-results
>
.select2-results__options
{
max-height
:
200px
;
overflow-y
:
auto
}
.select2-container--classic
.select2-results__option
[
role
=
group
]
{
padding
:
0
}
.select2-container--classic
.select2-results__option
[
aria-disabled
=
true
]
{
color
:
grey
}
.select2-container--classic
.select2-results__option--highlighted
[
aria-selected
]
{
background-color
:
#3875d7
;
color
:
#fff
}
.select2-container--classic
.select2-results__group
{
cursor
:
default
;
display
:
block
;
padding
:
6px
}
.select2-container--classic.select2-container--open
.select2-dropdown
{
border-color
:
#5897fb
}
apollo-portal/src/main/resources/static/vendor/select2/select2.min.js
0 → 100644
View file @
f60ee3e2
/*! Select2 4.0.2-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
!
function
(
a
){
"function"
==
typeof
define
&&
define
.
amd
?
define
([
"../jquery"
],
a
):
a
(
"object"
==
typeof
exports
?
require
(
"jquery"
):
jQuery
)}(
function
(
a
){
var
b
=
function
(){
if
(
a
&&
a
.
fn
&&
a
.
fn
.
select2
&&
a
.
fn
.
select2
.
amd
)
var
b
=
a
.
fn
.
select2
.
amd
;
var
b
;
return
function
(){
if
(
!
b
||
!
b
.
requirejs
){
b
?
c
=
b
:
b
=
{};
var
a
,
c
,
d
;
!
function
(
b
){
function
e
(
a
,
b
){
return
u
.
call
(
a
,
b
)}
function
f
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
=
b
&&
b
.
split
(
"/"
),
o
=
s
.
map
,
p
=
o
&&
o
[
"*"
]
||
{};
if
(
a
&&
"."
===
a
.
charAt
(
0
))
if
(
b
){
for
(
a
=
a
.
split
(
"/"
),
g
=
a
.
length
-
1
,
s
.
nodeIdCompat
&&
w
.
test
(
a
[
g
])
&&
(
a
[
g
]
=
a
[
g
].
replace
(
w
,
""
)),
a
=
n
.
slice
(
0
,
n
.
length
-
1
).
concat
(
a
),
k
=
0
;
k
<
a
.
length
;
k
+=
1
)
if
(
m
=
a
[
k
],
"."
===
m
)
a
.
splice
(
k
,
1
),
k
-=
1
;
else
if
(
".."
===
m
){
if
(
1
===
k
&&
(
".."
===
a
[
2
]
||
".."
===
a
[
0
]))
break
;
k
>
0
&&
(
a
.
splice
(
k
-
1
,
2
),
k
-=
2
)}
a
=
a
.
join
(
"/"
)}
else
0
===
a
.
indexOf
(
"./"
)
&&
(
a
=
a
.
substring
(
2
));
if
((
n
||
p
)
&&
o
){
for
(
c
=
a
.
split
(
"/"
),
k
=
c
.
length
;
k
>
0
;
k
-=
1
){
if
(
d
=
c
.
slice
(
0
,
k
).
join
(
"/"
),
n
)
for
(
l
=
n
.
length
;
l
>
0
;
l
-=
1
)
if
(
e
=
o
[
n
.
slice
(
0
,
l
).
join
(
"/"
)],
e
&&
(
e
=
e
[
d
])){
f
=
e
,
h
=
k
;
break
}
if
(
f
)
break
;
!
i
&&
p
&&
p
[
d
]
&&
(
i
=
p
[
d
],
j
=
k
)}
!
f
&&
i
&&
(
f
=
i
,
h
=
j
),
f
&&
(
c
.
splice
(
0
,
h
,
f
),
a
=
c
.
join
(
"/"
))}
return
a
}
function
g
(
a
,
c
){
return
function
(){
var
d
=
v
.
call
(
arguments
,
0
);
return
"string"
!=
typeof
d
[
0
]
&&
1
===
d
.
length
&&
d
.
push
(
null
),
n
.
apply
(
b
,
d
.
concat
([
a
,
c
]))}}
function
h
(
a
){
return
function
(
b
){
return
f
(
b
,
a
)}}
function
i
(
a
){
return
function
(
b
){
q
[
a
]
=
b
}}
function
j
(
a
){
if
(
e
(
r
,
a
)){
var
c
=
r
[
a
];
delete
r
[
a
],
t
[
a
]
=!
0
,
m
.
apply
(
b
,
c
)}
if
(
!
e
(
q
,
a
)
&&!
e
(
t
,
a
))
throw
new
Error
(
"No "
+
a
);
return
q
[
a
]}
function
k
(
a
){
var
b
,
c
=
a
?
a
.
indexOf
(
"!"
):
-
1
;
return
c
>-
1
&&
(
b
=
a
.
substring
(
0
,
c
),
a
=
a
.
substring
(
c
+
1
,
a
.
length
)),[
b
,
a
]}
function
l
(
a
){
return
function
(){
return
s
&&
s
.
config
&&
s
.
config
[
a
]
||
{}}}
var
m
,
n
,
o
,
p
,
q
=
{},
r
=
{},
s
=
{},
t
=
{},
u
=
Object
.
prototype
.
hasOwnProperty
,
v
=
[].
slice
,
w
=
/
\.
js$/
;
o
=
function
(
a
,
b
){
var
c
,
d
=
k
(
a
),
e
=
d
[
0
];
return
a
=
d
[
1
],
e
&&
(
e
=
f
(
e
,
b
),
c
=
j
(
e
)),
e
?
a
=
c
&&
c
.
normalize
?
c
.
normalize
(
a
,
h
(
b
)):
f
(
a
,
b
):(
a
=
f
(
a
,
b
),
d
=
k
(
a
),
e
=
d
[
0
],
a
=
d
[
1
],
e
&&
(
c
=
j
(
e
))),{
f
:
e
?
e
+
"!"
+
a
:
a
,
n
:
a
,
pr
:
e
,
p
:
c
}},
p
=
{
require
:
function
(
a
){
return
g
(
a
)},
exports
:
function
(
a
){
var
b
=
q
[
a
];
return
"undefined"
!=
typeof
b
?
b
:
q
[
a
]
=
{}},
module
:
function
(
a
){
return
{
id
:
a
,
uri
:
""
,
exports
:
q
[
a
],
config
:
l
(
a
)}}},
m
=
function
(
a
,
c
,
d
,
f
){
var
h
,
k
,
l
,
m
,
n
,
s
,
u
=
[],
v
=
typeof
d
;
if
(
f
=
f
||
a
,
"undefined"
===
v
||
"function"
===
v
){
for
(
c
=!
c
.
length
&&
d
.
length
?[
"require"
,
"exports"
,
"module"
]:
c
,
n
=
0
;
n
<
c
.
length
;
n
+=
1
)
if
(
m
=
o
(
c
[
n
],
f
),
k
=
m
.
f
,
"require"
===
k
)
u
[
n
]
=
p
.
require
(
a
);
else
if
(
"exports"
===
k
)
u
[
n
]
=
p
.
exports
(
a
),
s
=!
0
;
else
if
(
"module"
===
k
)
h
=
u
[
n
]
=
p
.
module
(
a
);
else
if
(
e
(
q
,
k
)
||
e
(
r
,
k
)
||
e
(
t
,
k
))
u
[
n
]
=
j
(
k
);
else
{
if
(
!
m
.
p
)
throw
new
Error
(
a
+
" missing "
+
k
);
m
.
p
.
load
(
m
.
n
,
g
(
f
,
!
0
),
i
(
k
),{}),
u
[
n
]
=
q
[
k
]}
l
=
d
?
d
.
apply
(
q
[
a
],
u
):
void
0
,
a
&&
(
h
&&
h
.
exports
!==
b
&&
h
.
exports
!==
q
[
a
]?
q
[
a
]
=
h
.
exports
:
l
===
b
&&
s
||
(
q
[
a
]
=
l
))}
else
a
&&
(
q
[
a
]
=
d
)},
a
=
c
=
n
=
function
(
a
,
c
,
d
,
e
,
f
){
if
(
"string"
==
typeof
a
)
return
p
[
a
]?
p
[
a
](
c
):
j
(
o
(
a
,
c
).
f
);
if
(
!
a
.
splice
){
if
(
s
=
a
,
s
.
deps
&&
n
(
s
.
deps
,
s
.
callback
),
!
c
)
return
;
c
.
splice
?(
a
=
c
,
c
=
d
,
d
=
null
):
a
=
b
}
return
c
=
c
||
function
(){},
"function"
==
typeof
d
&&
(
d
=
e
,
e
=
f
),
e
?
m
(
b
,
a
,
c
,
d
):
setTimeout
(
function
(){
m
(
b
,
a
,
c
,
d
)},
4
),
n
},
n
.
config
=
function
(
a
){
return
n
(
a
)},
a
.
_defined
=
q
,
d
=
function
(
a
,
b
,
c
){
if
(
"string"
!=
typeof
a
)
throw
new
Error
(
"See almond README: incorrect module build, no module name"
);
b
.
splice
||
(
c
=
b
,
b
=
[]),
e
(
q
,
a
)
||
e
(
r
,
a
)
||
(
r
[
a
]
=
[
a
,
b
,
c
])},
d
.
amd
=
{
jQuery
:
!
0
}}(),
b
.
requirejs
=
a
,
b
.
require
=
c
,
b
.
define
=
d
}}(),
b
.
define
(
"almond"
,
function
(){}),
b
.
define
(
"jquery"
,[],
function
(){
var
b
=
a
||
$
;
return
null
==
b
&&
console
&&
console
.
error
&&
console
.
error
(
"Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."
),
b
}),
b
.
define
(
"select2/utils"
,[
"jquery"
],
function
(
a
){
function
b
(
a
){
var
b
=
a
.
prototype
,
c
=
[];
for
(
var
d
in
b
){
var
e
=
b
[
d
];
"function"
==
typeof
e
&&
"constructor"
!==
d
&&
c
.
push
(
d
)}
return
c
}
var
c
=
{};
c
.
Extend
=
function
(
a
,
b
){
function
c
(){
this
.
constructor
=
a
}
var
d
=
{}.
hasOwnProperty
;
for
(
var
e
in
b
)
d
.
call
(
b
,
e
)
&&
(
a
[
e
]
=
b
[
e
]);
return
c
.
prototype
=
b
.
prototype
,
a
.
prototype
=
new
c
,
a
.
__super__
=
b
.
prototype
,
a
},
c
.
Decorate
=
function
(
a
,
c
){
function
d
(){
var
b
=
Array
.
prototype
.
unshift
,
d
=
c
.
prototype
.
constructor
.
length
,
e
=
a
.
prototype
.
constructor
;
d
>
0
&&
(
b
.
call
(
arguments
,
a
.
prototype
.
constructor
),
e
=
c
.
prototype
.
constructor
),
e
.
apply
(
this
,
arguments
)}
function
e
(){
this
.
constructor
=
d
}
var
f
=
b
(
c
),
g
=
b
(
a
);
c
.
displayName
=
a
.
displayName
,
d
.
prototype
=
new
e
;
for
(
var
h
=
0
;
h
<
g
.
length
;
h
++
){
var
i
=
g
[
h
];
d
.
prototype
[
i
]
=
a
.
prototype
[
i
]}
for
(
var
j
=
(
function
(
a
){
var
b
=
function
(){};
a
in
d
.
prototype
&&
(
b
=
d
.
prototype
[
a
]);
var
e
=
c
.
prototype
[
a
];
return
function
(){
var
a
=
Array
.
prototype
.
unshift
;
return
a
.
call
(
arguments
,
b
),
e
.
apply
(
this
,
arguments
)}}),
k
=
0
;
k
<
f
.
length
;
k
++
){
var
l
=
f
[
k
];
d
.
prototype
[
l
]
=
j
(
l
)}
return
d
};
var
d
=
function
(){
this
.
listeners
=
{}};
return
d
.
prototype
.
on
=
function
(
a
,
b
){
this
.
listeners
=
this
.
listeners
||
{},
a
in
this
.
listeners
?
this
.
listeners
[
a
].
push
(
b
):
this
.
listeners
[
a
]
=
[
b
]},
d
.
prototype
.
trigger
=
function
(
a
){
var
b
=
Array
.
prototype
.
slice
;
this
.
listeners
=
this
.
listeners
||
{},
a
in
this
.
listeners
&&
this
.
invoke
(
this
.
listeners
[
a
],
b
.
call
(
arguments
,
1
)),
"*"
in
this
.
listeners
&&
this
.
invoke
(
this
.
listeners
[
"*"
],
arguments
)},
d
.
prototype
.
invoke
=
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
a
.
length
;
d
>
c
;
c
++
)
a
[
c
].
apply
(
this
,
b
)},
c
.
Observable
=
d
,
c
.
generateChars
=
function
(
a
){
for
(
var
b
=
""
,
c
=
0
;
a
>
c
;
c
++
){
var
d
=
Math
.
floor
(
36
*
Math
.
random
());
b
+=
d
.
toString
(
36
)}
return
b
},
c
.
bind
=
function
(
a
,
b
){
return
function
(){
a
.
apply
(
b
,
arguments
)}},
c
.
_convertData
=
function
(
a
){
for
(
var
b
in
a
){
var
c
=
b
.
split
(
"-"
),
d
=
a
;
if
(
1
!==
c
.
length
){
for
(
var
e
=
0
;
e
<
c
.
length
;
e
++
){
var
f
=
c
[
e
];
f
=
f
.
substring
(
0
,
1
).
toLowerCase
()
+
f
.
substring
(
1
),
f
in
d
||
(
d
[
f
]
=
{}),
e
==
c
.
length
-
1
&&
(
d
[
f
]
=
a
[
b
]),
d
=
d
[
f
]}
delete
a
[
b
]}}
return
a
},
c
.
hasScroll
=
function
(
b
,
c
){
var
d
=
a
(
c
),
e
=
c
.
style
.
overflowX
,
f
=
c
.
style
.
overflowY
;
return
e
!==
f
||
"hidden"
!==
f
&&
"visible"
!==
f
?
"scroll"
===
e
||
"scroll"
===
f
?
!
0
:
d
.
innerHeight
()
<
c
.
scrollHeight
||
d
.
innerWidth
()
<
c
.
scrollWidth
:
!
1
},
c
.
escapeMarkup
=
function
(
a
){
var
b
=
{
"
\
\"
:"
&
#
92
;
","
&
":"
&
amp
;
","
<
":"
&
lt
;
","
>
":"
&
gt
;
",'"
':""","'
":"
&
#
39
;
","
/
":"
&
#
47
;
"};return"
string
"!=typeof a?a:String(a).replace(/[&<>"
'
\
/
\\
]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
<
ul
class
=
"select2-results__options"
role
=
"tree"
><
/ul>'
)
;return this.options.get
(
"multiple"
)
&&b.attr
(
"aria-multiselectable","true"
)
,this.$results=b,b},c.prototype.clear=function
()
{this.$results.empty
()
},c.prototype.displayMessage=function
(
b
)
{var c=this.options.get
(
"escapeMarkup"
)
;this.clear
()
,this.hideLoading
()
;var d=a
(
'<li role="treeitem" aria-live="assertive" class="select2-results__option"></
li
>
'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")});var f=e.filter("[aria-selected=true]");f.length>0?f.first().trigger("mouseenter"):e.first().trigger("mouseenter")})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&d.setClasses()}),b.on("unselect",function(){b.isOpen()&&d.setClasses()}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('
<
span
class
=
"select2-selection"
role
=
"combobox"
aria
-
haspopup
=
"true"
aria
-
expanded
=
"false"
><
/span>'
)
;return this._tabindex=0,null!=this.$element.data
(
"old-tabindex"
)?
this._tabindex=this.$element.data
(
"old-tabindex"
)
:null!=this.$element.attr
(
"tabindex"
)
&&
(
this._tabindex=this.$element.attr
(
"tabindex"
))
,b.attr
(
"title",this.$element.attr
(
"title"
))
,b.attr
(
"tabindex",this._tabindex
)
,this.$selection=b,b},d.prototype.bind=function
(
a,b
)
{var d=this,e=
(
a.id+"-container",a.id+"-results"
)
;this.container=a,this.$selection.on
(
"focus",function
(
a
)
{d.trigger
(
"focus",a
)
}
)
,this.$selection.on
(
"blur",function
(
a
)
{d._handleBlur
(
a
)
}
)
,this.$selection.on
(
"keydown",function
(
a
)
{d.trigger
(
"keypress",a
)
,a.which===c.SPACE&&a.preventDefault
()
}
)
,a.on
(
"results:focus",function
(
a
)
{d.$selection.attr
(
"aria-activedescendant",a.data._resultId
)
}
)
,a.on
(
"selection:update",function
(
a
)
{d.update
(
a.data
)
}
)
,a.on
(
"open",function
()
{d.$selection.attr
(
"aria-expanded","true"
)
,d.$selection.attr
(
"aria-owns",e
)
,d._attachCloseHandler
(
a
)
}
)
,a.on
(
"close",function
()
{d.$selection.attr
(
"aria-expanded","false"
)
,d.$selection.removeAttr
(
"aria-activedescendant"
)
,d.$selection.removeAttr
(
"aria-owns"
)
,d.$selection.focus
()
,d._detachCloseHandler
(
a
)
}
)
,a.on
(
"enable",function
()
{d.$selection.attr
(
"tabindex",d._tabindex
)
}
)
,a.on
(
"disable",function
()
{d.$selection.attr
(
"tabindex","-1"
)
}
)
},d.prototype._handleBlur=function
(
b
)
{var c=this;window.setTimeout
(
function
()
{document.activeElement==c.$selection
[
0
]
||a.contains
(
c.$selection
[
0
]
,document.activeElement
)
||c.trigger
(
"blur",b
)
},1
)
},d.prototype._attachCloseHandler=function
(
b
)
{a
(
document.body
)
.on
(
"mousedown.select2."+b.id,function
(
b
)
{var c=a
(
b.target
)
,d=c.closest
(
".select2"
)
,e=a
(
".select2.select2-container--open"
)
;e.each
(
function
()
{var b=a
(
this
)
;if
(
this!=d
[
0
])
{var c=b.data
(
"element"
)
;c.select2
(
"close"
)
}}
)
}
)
},d.prototype._detachCloseHandler=function
(
b
)
{a
(
document.body
)
.off
(
"mousedown.select2."+b.id
)
},d.prototype.position=function
(
a,b
)
{var c=b.find
(
".selection"
)
;c.append
(
a
)
},d.prototype.destroy=function
()
{this._detachCloseHandler
(
this.container
)
},d.prototype.update=function
(
a
)
{throw new Error
(
"The `update` method must be defined in child classes."
)
},d}
)
,b.define
(
"select2/
selection
/
single
",["
jquery
","
.
/
base
","
..
/
utils
","
..
/
keys
"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("
select2
-
selection
--
single
"),a.html('<span class="
select2
-
selection__rendered
"></span><span class="
select2
-
selection__arrow
" role="
presentation
"><b role="
presentation
"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"
-
container
";this.$selection.find("
.
select2
-
selection__rendered
").attr("
id
",d),this.$selection.attr("
aria
-
labelledby
",d),this.$selection.on("
mousedown
",function(a){1===a.which&&c.trigger("
toggle
",{originalEvent:a})}),this.$selection.on("
focus
",function(a){}),this.$selection.on("
blur
",function(a){}),a.on("
selection
:
update
",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find("
.
select2
-
selection__rendered
").empty()},e.prototype.display=function(a,b){var c=this.options.get("
templateSelection
"),d=this.options.get("
escapeMarkup
");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("
<
span
><
/span>"
)
},e.prototype.update=function
(
a
)
{if
(
0===a.length
)
return void this.clear
()
;var b=a
[
0
]
,c=this.$selection.find
(
".select2-selection__rendered"
)
,d=this.display
(
b,c
)
;c.empty
()
.append
(
d
)
,c.prop
(
"title",b.title||b.text
)
},e}
)
,b.define
(
"select2/
selection
/
multiple
",["
jquery
","
.
/
base
","
..
/
utils
"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("
select2
-
selection
--
multiple
"),a.html('<ul class="
select2
-
selection__rendered
"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("
click
",function(a){e.trigger("
toggle
",{originalEvent:a})}),this.$selection.on("
click
","
.
select2
-
selection__choice__remove
",function(b){if(!e.options.get("
disabled
")){var c=a(this),d=c.parent(),f=d.data("
data
");e.trigger("
unselect
",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find("
.
select2
-
selection__rendered
").empty()},d.prototype.display=function(a,b){var c=this.options.get("
templateSelection
"),d=this.options.get("
escapeMarkup
");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="
select2
-
selection__choice
"><span class="
select2
-
selection__choice__remove
" role="
presentation
">×</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("
title
",e.title||e.text),f.data("
data
",e),b.push(f)}var h=this.$selection.find("
.
select2
-
selection__rendered
");c.appendMany(h,b)}},d}),b.define("
select2
/
selection
/
placeholder
",["
..
/
utils
"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("
placeholder
")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"
string
"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("
select2
-
selection__placeholder
").removeClass("
select2
-
selection__choice
"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find("
.
select2
-
selection__rendered
").append(e)},b}),b.define("
select2
/
selection
/
allowClear
",["
jquery
","
..
/
keys
"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("
debug
")&&window.console&&console.error&&console.error("
Select2
:
The
`allowClear`
option
should
be
used
in
combination
with
the
`placeholder`
option
.
"),this.$selection.on("
mousedown
","
.
select2
-
selection__clear
",function(a){d._handleClear(a)}),b.on("
keypress
",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("
disabled
")){var c=this.$selection.find("
.
select2
-
selection__clear
");if(0!==c.length){b.stopPropagation();for(var d=c.data("
data
"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("
unselect
",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("
change
"),this.trigger("
toggle
",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find("
.
select2
-
selection__placeholder
").length>0||0===c.length)){var d=a('<span class="
select2
-
selection__clear
">×</span>');d.data("
data
",c),this.$selection.find("
.
select2
-
selection__rendered
").prepend(d)}},c}),b.define("
select2
/
selection
/
search
",["
jquery
","
..
/
utils
","
..
/
keys
"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="
select2
-
search
select2
-
search
--
inline
"><input class="
select2
-
search__field
" type="
search
" tabindex="
-
1
" autocomplete="
off
" autocorrect="
off
" autocapitalize="
off
" spellcheck="
false
" role="
textbox
" aria-autocomplete="
list
" /></li>');this.$searchContainer=c,this.$search=c.find("
input
");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("
open
",function(){e.$search.trigger("
focus
")}),b.on("
close
",function(){e.$search.val(""),e.$search.removeAttr("
aria
-
activedescendant
"),e.$search.trigger("
focus
")}),b.on("
enable
",function(){e.$search.prop("
disabled
",!1),e._transferTabIndex()}),b.on("
disable
",function(){e.$search.prop("
disabled
",!0)}),b.on("
focus
",function(a){e.$search.trigger("
focus
")}),b.on("
results
:
focus
",function(a){e.$search.attr("
aria
-
activedescendant
",a.id)}),this.$selection.on("
focusin
","
.
select2
-
search
--
inline
",function(a){e.trigger("
focus
",a)}),this.$selection.on("
focusout
","
.
select2
-
search
--
inline
",function(a){e._handleBlur(a)}),this.$selection.on("
keydown
","
.
select2
-
search
--
inline
",function(a){a.stopPropagation(),e.trigger("
keypress
",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev("
.
select2
-
selection__choice
");if(d.length>0){var f=d.data("
data
");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("
input
.
searchcheck
","
.
select2
-
search
--
inline
",function(a){return g?void e.$selection.off("
input
.
search
input
.
searchcheck
"):void e.$selection.off("
keyup
.
search
")}),this.$selection.on("
keyup
.
search
input
.
search
","
.
select2
-
search
--
inline
",function(a){if(g&&"
input
"===a.type)return void e.$selection.off("
input
.
search
input
.
searchcheck
");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("
tabindex
",this.$selection.attr("
tabindex
")),this.$selection.attr("
tabindex
","
-
1
")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("
placeholder
",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("
placeholder
",""),a.call(this,b),this.$selection.find("
.
select2
-
selection__rendered
").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("
query
",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("
unselect
",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("
width
","
25
px
");var a="";if(""!==this.$search.attr("
placeholder
"))a=this.$selection.find("
.
select2
-
selection__rendered
").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"
em
"}this.$search.css("
width
",a)},d}),b.define("
select2
/
selection
/
eventRelay
",["
jquery
"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["
open
","
opening
","
close
","
closing
","
select
","
selecting
","
unselect
","
unselecting
"],g=["
opening
","
closing
","
selecting
","
unselecting
"];b.call(this,c,d),c.on("
*
",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("
select2
:
"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("
select2
/
translation
",["
jquery
","
require
"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("
select2
/
diacritics
",[],function(){var a={"
Ⓐ
":"
A
","
A
":"
A
","
À
":"
A
","
Á
":"
A
","
Â
":"
A
","
Ầ
":"
A
","
Ấ
":"
A
","
Ẫ
":"
A
","
Ẩ
":"
A
","
Ã
":"
A
","
Ā
":"
A
","
Ă
":"
A
","
Ằ
":"
A
","
Ắ
":"
A
","
Ẵ
":"
A
","
Ẳ
":"
A
","
Ȧ
":"
A
","
Ǡ
":"
A
","
Ä
":"
A
","
Ǟ
":"
A
","
Ả
":"
A
","
Å
":"
A
","
Ǻ
":"
A
","
Ǎ
":"
A
","
Ȁ
":"
A
","
Ȃ
":"
A
","
Ạ
":"
A
","
Ậ
":"
A
","
Ặ
":"
A
","
Ḁ
":"
A
","
Ą
":"
A
","
Ⱥ
":"
A
","
Ɐ
":"
A
","
Ꜳ
":"
AA
","
Æ
":"
AE
","
Ǽ
":"
AE
","
Ǣ
":"
AE
","
Ꜵ
":"
AO
","
Ꜷ
":"
AU
","
Ꜹ
":"
AV
","
Ꜻ
":"
AV
","
Ꜽ
":"
AY
","
Ⓑ
":"
B
","
B
":"
B
","
Ḃ
":"
B
","
Ḅ
":"
B
","
Ḇ
":"
B
","
Ƀ
":"
B
","
Ƃ
":"
B
","
Ɓ
":"
B
","
Ⓒ
":"
C
","
C
":"
C
","
Ć
":"
C
","
Ĉ
":"
C
","
Ċ
":"
C
","
Č
":"
C
","
Ç
":"
C
","
Ḉ
":"
C
","
Ƈ
":"
C
","
Ȼ
":"
C
","
Ꜿ
":"
C
","
Ⓓ
":"
D
","
D
":"
D
","
Ḋ
":"
D
","
Ď
":"
D
","
Ḍ
":"
D
","
Ḑ
":"
D
","
Ḓ
":"
D
","
Ḏ
":"
D
","
Đ
":"
D
","
Ƌ
":"
D
","
Ɗ
":"
D
","
Ɖ
":"
D
","
Ꝺ
":"
D
","
DZ
":"
DZ
","
DŽ
":"
DZ
","
Dz
":"
Dz
","
Dž
":"
Dz
","
Ⓔ
":"
E
","
E
":"
E
","
È
":"
E
","
É
":"
E
","
Ê
":"
E
","
Ề
":"
E
","
Ế
":"
E
","
Ễ
":"
E
","
Ể
":"
E
","
Ẽ
":"
E
","
Ē
":"
E
","
Ḕ
":"
E
","
Ḗ
":"
E
","
Ĕ
":"
E
","
Ė
":"
E
","
Ë
":"
E
","
Ẻ
":"
E
","
Ě
":"
E
","
Ȅ
":"
E
","
Ȇ
":"
E
","
Ẹ
":"
E
","
Ệ
":"
E
","
Ȩ
":"
E
","
Ḝ
":"
E
","
Ę
":"
E
","
Ḙ
":"
E
","
Ḛ
":"
E
","
Ɛ
":"
E
","
Ǝ
":"
E
","
Ⓕ
":"
F
","
F
":"
F
","
Ḟ
":"
F
","
Ƒ
":"
F
","
Ꝼ
":"
F
","
Ⓖ
":"
G
","
G
":"
G
","
Ǵ
":"
G
","
Ĝ
":"
G
","
Ḡ
":"
G
","
Ğ
":"
G
","
Ġ
":"
G
","
Ǧ
":"
G
","
Ģ
":"
G
","
Ǥ
":"
G
","
Ɠ
":"
G
","
Ꞡ
":"
G
","
Ᵹ
":"
G
","
Ꝿ
":"
G
","
Ⓗ
":"
H
","
H
":"
H
","
Ĥ
":"
H
","
Ḣ
":"
H
","
Ḧ
":"
H
","
Ȟ
":"
H
","
Ḥ
":"
H
","
Ḩ
":"
H
","
Ḫ
":"
H
","
Ħ
":"
H
","
Ⱨ
":"
H
","
Ⱶ
":"
H
","
Ɥ
":"
H
","
Ⓘ
":"
I
","
I
":"
I
","
Ì
":"
I
","
Í
":"
I
","
Î
":"
I
","
Ĩ
":"
I
","
Ī
":"
I
","
Ĭ
":"
I
","
İ
":"
I
","
Ï
":"
I
","
Ḯ
":"
I
","
Ỉ
":"
I
","
Ǐ
":"
I
","
Ȉ
":"
I
","
Ȋ
":"
I
","
Ị
":"
I
","
Į
":"
I
","
Ḭ
":"
I
","
Ɨ
":"
I
","
Ⓙ
":"
J
","
J
":"
J
","
Ĵ
":"
J
","
Ɉ
":"
J
","
Ⓚ
":"
K
","
K
":"
K
","
Ḱ
":"
K
","
Ǩ
":"
K
","
Ḳ
":"
K
","
Ķ
":"
K
","
Ḵ
":"
K
","
Ƙ
":"
K
","
Ⱪ
":"
K
","
Ꝁ
":"
K
","
Ꝃ
":"
K
","
Ꝅ
":"
K
","
Ꞣ
":"
K
","
Ⓛ
":"
L
","
L
":"
L
","
Ŀ
":"
L
","
Ĺ
":"
L
","
Ľ
":"
L
","
Ḷ
":"
L
","
Ḹ
":"
L
","
Ļ
":"
L
","
Ḽ
":"
L
","
Ḻ
":"
L
","
Ł
":"
L
","
Ƚ
":"
L
","
Ɫ
":"
L
","
Ⱡ
":"
L
","
Ꝉ
":"
L
","
Ꝇ
":"
L
","
Ꞁ
":"
L
","
LJ
":"
LJ
","
Lj
":"
Lj
","
Ⓜ
":"
M
","
M
":"
M
","
Ḿ
":"
M
","
Ṁ
":"
M
","
Ṃ
":"
M
","
Ɱ
":"
M
","
Ɯ
":"
M
","
Ⓝ
":"
N
","
N
":"
N
","
Ǹ
":"
N
","
Ń
":"
N
","
Ñ
":"
N
","
Ṅ
":"
N
","
Ň
":"
N
","
Ṇ
":"
N
","
Ņ
":"
N
","
Ṋ
":"
N
","
Ṉ
":"
N
","
Ƞ
":"
N
","
Ɲ
":"
N
","
Ꞑ
":"
N
","
Ꞥ
":"
N
","
NJ
":"
NJ
","
Nj
":"
Nj
","
Ⓞ
":"
O
","
O
":"
O
","
Ò
":"
O
","
Ó
":"
O
","
Ô
":"
O
","
Ồ
":"
O
","
Ố
":"
O
","
Ỗ
":"
O
","
Ổ
":"
O
","
Õ
":"
O
","
Ṍ
":"
O
","
Ȭ
":"
O
","
Ṏ
":"
O
","
Ō
":"
O
","
Ṑ
":"
O
","
Ṓ
":"
O
","
Ŏ
":"
O
","
Ȯ
":"
O
","
Ȱ
":"
O
","
Ö
":"
O
","
Ȫ
":"
O
","
Ỏ
":"
O
","
Ő
":"
O
","
Ǒ
":"
O
","
Ȍ
":"
O
","
Ȏ
":"
O
","
Ơ
":"
O
","
Ờ
":"
O
","
Ớ
":"
O
","
Ỡ
":"
O
","
Ở
":"
O
","
Ợ
":"
O
","
Ọ
":"
O
","
Ộ
":"
O
","
Ǫ
":"
O
","
Ǭ
":"
O
","
Ø
":"
O
","
Ǿ
":"
O
","
Ɔ
":"
O
","
Ɵ
":"
O
","
Ꝋ
":"
O
","
Ꝍ
":"
O
","
Ƣ
":"
OI
","
Ꝏ
":"
OO
","
Ȣ
":"
OU
","
Ⓟ
":"
P
","
P
":"
P
","
Ṕ
":"
P
","
Ṗ
":"
P
","
Ƥ
":"
P
","
Ᵽ
":"
P
","
Ꝑ
":"
P
","
Ꝓ
":"
P
","
Ꝕ
":"
P
","
Ⓠ
":"
Q
","
Q
":"
Q
","
Ꝗ
":"
Q
","
Ꝙ
":"
Q
","
Ɋ
":"
Q
","
Ⓡ
":"
R
","
R
":"
R
","
Ŕ
":"
R
","
Ṙ
":"
R
","
Ř
":"
R
","
Ȑ
":"
R
","
Ȓ
":"
R
","
Ṛ
":"
R
","
Ṝ
":"
R
","
Ŗ
":"
R
","
Ṟ
":"
R
","
Ɍ
":"
R
","
Ɽ
":"
R
","
Ꝛ
":"
R
","
Ꞧ
":"
R
","
Ꞃ
":"
R
","
Ⓢ
":"
S
","
S
":"
S
","
ẞ
":"
S
","
Ś
":"
S
","
Ṥ
":"
S
","
Ŝ
":"
S
","
Ṡ
":"
S
","
Š
":"
S
","
Ṧ
":"
S
","
Ṣ
":"
S
","
Ṩ
":"
S
","
Ș
":"
S
","
Ş
":"
S
","
Ȿ
":"
S
","
Ꞩ
":"
S
","
Ꞅ
":"
S
","
Ⓣ
":"
T
","
T
":"
T
","
Ṫ
":"
T
","
Ť
":"
T
","
Ṭ
":"
T
","
Ț
":"
T
","
Ţ
":"
T
","
Ṱ
":"
T
","
Ṯ
":"
T
","
Ŧ
":"
T
","
Ƭ
":"
T
","
Ʈ
":"
T
","
Ⱦ
":"
T
","
Ꞇ
":"
T
","
Ꜩ
":"
TZ
","
Ⓤ
":"
U
","
U
":"
U
","
Ù
":"
U
","
Ú
":"
U
","
Û
":"
U
","
Ũ
":"
U
","
Ṹ
":"
U
","
Ū
":"
U
","
Ṻ
":"
U
","
Ŭ
":"
U
","
Ü
":"
U
","
Ǜ
":"
U
","
Ǘ
":"
U
","
Ǖ
":"
U
","
Ǚ
":"
U
","
Ủ
":"
U
","
Ů
":"
U
","
Ű
":"
U
","
Ǔ
":"
U
","
Ȕ
":"
U
","
Ȗ
":"
U
","
Ư
":"
U
","
Ừ
":"
U
","
Ứ
":"
U
","
Ữ
":"
U
","
Ử
":"
U
","
Ự
":"
U
","
Ụ
":"
U
","
Ṳ
":"
U
","
Ų
":"
U
","
Ṷ
":"
U
","
Ṵ
":"
U
","
Ʉ
":"
U
","
Ⓥ
":"
V
","
V
":"
V
","
Ṽ
":"
V
","
Ṿ
":"
V
","
Ʋ
":"
V
","
Ꝟ
":"
V
","
Ʌ
":"
V
","
Ꝡ
":"
VY
","
Ⓦ
":"
W
","
W
":"
W
","
Ẁ
":"
W
","
Ẃ
":"
W
","
Ŵ
":"
W
","
Ẇ
":"
W
","
Ẅ
":"
W
","
Ẉ
":"
W
","
Ⱳ
":"
W
","
Ⓧ
":"
X
","
X
":"
X
","
Ẋ
":"
X
","
Ẍ
":"
X
","
Ⓨ
":"
Y
","
Y
":"
Y
","
Ỳ
":"
Y
","
Ý
":"
Y
","
Ŷ
":"
Y
","
Ỹ
":"
Y
","
Ȳ
":"
Y
","
Ẏ
":"
Y
","
Ÿ
":"
Y
","
Ỷ
":"
Y
","
Ỵ
":"
Y
","
Ƴ
":"
Y
","
Ɏ
":"
Y
","
Ỿ
":"
Y
","
Ⓩ
":"
Z
","
Z
":"
Z
","
Ź
":"
Z
","
Ẑ
":"
Z
","
Ż
":"
Z
","
Ž
":"
Z
","
Ẓ
":"
Z
","
Ẕ
":"
Z
","
Ƶ
":"
Z
","
Ȥ
":"
Z
","
Ɀ
":"
Z
","
Ⱬ
":"
Z
","
Ꝣ
":"
Z
","
ⓐ
":"
a
","
a
":"
a
","
ẚ
":"
a
","
à
":"
a
","
á
":"
a
","
â
":"
a
","
ầ
":"
a
","
ấ
":"
a
","
ẫ
":"
a
","
ẩ
":"
a
","
ã
":"
a
","
ā
":"
a
","
ă
":"
a
","
ằ
":"
a
","
ắ
":"
a
","
ẵ
":"
a
","
ẳ
":"
a
","
ȧ
":"
a
","
ǡ
":"
a
","
ä
":"
a
","
ǟ
":"
a
","
ả
":"
a
","
å
":"
a
","
ǻ
":"
a
","
ǎ
":"
a
","
ȁ
":"
a
","
ȃ
":"
a
","
ạ
":"
a
","
ậ
":"
a
","
ặ
":"
a
","
ḁ
":"
a
","
ą
":"
a
","
ⱥ
":"
a
","
ɐ
":"
a
","
ꜳ
":"
aa
","
æ
":"
ae
","
ǽ
":"
ae
","
ǣ
":"
ae
","
ꜵ
":"
ao
","
ꜷ
":"
au
","
ꜹ
":"
av
","
ꜻ
":"
av
","
ꜽ
":"
ay
","
ⓑ
":"
b
","
b
":"
b
","
ḃ
":"
b
","
ḅ
":"
b
","
ḇ
":"
b
","
ƀ
":"
b
","
ƃ
":"
b
","
ɓ
":"
b
","
ⓒ
":"
c
","
c
":"
c
","
ć
":"
c
","
ĉ
":"
c
","
ċ
":"
c
","
č
":"
c
","
ç
":"
c
","
ḉ
":"
c
","
ƈ
":"
c
","
ȼ
":"
c
","
ꜿ
":"
c
","
ↄ
":"
c
","
ⓓ
":"
d
","
d
":"
d
","
ḋ
":"
d
","
ď
":"
d
","
ḍ
":"
d
","
ḑ
":"
d
","
ḓ
":"
d
","
ḏ
":"
d
","
đ
":"
d
","
ƌ
":"
d
","
ɖ
":"
d
","
ɗ
":"
d
","
ꝺ
":"
d
","
dz
":"
dz
","
dž
":"
dz
","
ⓔ
":"
e
","
e
":"
e
","
è
":"
e
","
é
":"
e
","
ê
":"
e
","
ề
":"
e
","
ế
":"
e
","
ễ
":"
e
","
ể
":"
e
","
ẽ
":"
e
","
ē
":"
e
","
ḕ
":"
e
","
ḗ
":"
e
","
ĕ
":"
e
","
ė
":"
e
","
ë
":"
e
","
ẻ
":"
e
","
ě
":"
e
","
ȅ
":"
e
","
ȇ
":"
e
","
ẹ
":"
e
","
ệ
":"
e
","
ȩ
":"
e
","
ḝ
":"
e
","
ę
":"
e
","
ḙ
":"
e
","
ḛ
":"
e
","
ɇ
":"
e
","
ɛ
":"
e
","
ǝ
":"
e
","
ⓕ
":"
f
","
f
":"
f
","
ḟ
":"
f
","
ƒ
":"
f
","
ꝼ
":"
f
","
ⓖ
":"
g
","
g
":"
g
","
ǵ
":"
g
","
ĝ
":"
g
","
ḡ
":"
g
","
ğ
":"
g
","
ġ
":"
g
","
ǧ
":"
g
","
ģ
":"
g
","
ǥ
":"
g
","
ɠ
":"
g
","
ꞡ
":"
g
","
ᵹ
":"
g
","
ꝿ
":"
g
","
ⓗ
":"
h
","
h
":"
h
","
ĥ
":"
h
","
ḣ
":"
h
","
ḧ
":"
h
","
ȟ
":"
h
","
ḥ
":"
h
","
ḩ
":"
h
","
ḫ
":"
h
","
ẖ
":"
h
","
ħ
":"
h
","
ⱨ
":"
h
","
ⱶ
":"
h
","
ɥ
":"
h
","
ƕ
":"
hv
","
ⓘ
":"
i
","
i
":"
i
","
ì
":"
i
","
í
":"
i
","
î
":"
i
","
ĩ
":"
i
","
ī
":"
i
","
ĭ
":"
i
","
ï
":"
i
","
ḯ
":"
i
","
ỉ
":"
i
","
ǐ
":"
i
","
ȉ
":"
i
","
ȋ
":"
i
","
ị
":"
i
","
į
":"
i
","
ḭ
":"
i
","
ɨ
":"
i
","
ı
":"
i
","
ⓙ
":"
j
","
j
":"
j
","
ĵ
":"
j
","
ǰ
":"
j
","
ɉ
":"
j
","
ⓚ
":"
k
","
k
":"
k
","
ḱ
":"
k
","
ǩ
":"
k
","
ḳ
":"
k
","
ķ
":"
k
","
ḵ
":"
k
","
ƙ
":"
k
","
ⱪ
":"
k
","
ꝁ
":"
k
","
ꝃ
":"
k
","
ꝅ
":"
k
","
ꞣ
":"
k
","
ⓛ
":"
l
","
l
":"
l
","
ŀ
":"
l
","
ĺ
":"
l
","
ľ
":"
l
","
ḷ
":"
l
","
ḹ
":"
l
","
ļ
":"
l
","
ḽ
":"
l
","
ḻ
":"
l
","
ſ
":"
l
","
ł
":"
l
","
ƚ
":"
l
","
ɫ
":"
l
","
ⱡ
":"
l
","
ꝉ
":"
l
","
ꞁ
":"
l
","
ꝇ
":"
l
","
lj
":"
lj
","
ⓜ
":"
m
","
m
":"
m
","
ḿ
":"
m
","
ṁ
":"
m
","
ṃ
":"
m
","
ɱ
":"
m
","
ɯ
":"
m
","
ⓝ
":"
n
","
n
":"
n
","
ǹ
":"
n
","
ń
":"
n
","
ñ
":"
n
","
ṅ
":"
n
","
ň
":"
n
","
ṇ
":"
n
","
ņ
":"
n
","
ṋ
":"
n
","
ṉ
":"
n
","
ƞ
":"
n
","
ɲ
":"
n
","
ʼn
":"
n
","
ꞑ
":"
n
","
ꞥ
":"
n
","
nj
":"
nj
","
ⓞ
":"
o
","
o
":"
o
","
ò
":"
o
","
ó
":"
o
","
ô
":"
o
","
ồ
":"
o
","
ố
":"
o
","
ỗ
":"
o
","
ổ
":"
o
","
õ
":"
o
","
ṍ
":"
o
","
ȭ
":"
o
","
ṏ
":"
o
","
ō
":"
o
","
ṑ
":"
o
","
ṓ
":"
o
","
ŏ
":"
o
","
ȯ
":"
o
","
ȱ
":"
o
","
ö
":"
o
","
ȫ
":"
o
","
ỏ
":"
o
","
ő
":"
o
","
ǒ
":"
o
","
ȍ
":"
o
","
ȏ
":"
o
","
ơ
":"
o
","
ờ
":"
o
","
ớ
":"
o
","
ỡ
":"
o
","
ở
":"
o
","
ợ
":"
o
","
ọ
":"
o
","
ộ
":"
o
","
ǫ
":"
o
","
ǭ
":"
o
","
ø
":"
o
","
ǿ
":"
o
","
ɔ
":"
o
","
ꝋ
":"
o
","
ꝍ
":"
o
","
ɵ
":"
o
","
ƣ
":"
oi
","
ȣ
":"
ou
","
ꝏ
":"
oo
","
ⓟ
":"
p
","
p
":"
p
","
ṕ
":"
p
","
ṗ
":"
p
","
ƥ
":"
p
","
ᵽ
":"
p
","
ꝑ
":"
p
","
ꝓ
":"
p
","
ꝕ
":"
p
","
ⓠ
":"
q
","
q
":"
q
","
ɋ
":"
q
","
ꝗ
":"
q
","
ꝙ
":"
q
","
ⓡ
":"
r
","
r
":"
r
","
ŕ
":"
r
","
ṙ
":"
r
","
ř
":"
r
","
ȑ
":"
r
","
ȓ
":"
r
","
ṛ
":"
r
","
ṝ
":"
r
","
ŗ
":"
r
","
ṟ
":"
r
","
ɍ
":"
r
","
ɽ
":"
r
","
ꝛ
":"
r
","
ꞧ
":"
r
","
ꞃ
":"
r
","
ⓢ
":"
s
","
s
":"
s
","
ß
":"
s
","
ś
":"
s
","
ṥ
":"
s
","
ŝ
":"
s
","
ṡ
":"
s
","
š
":"
s
","
ṧ
":"
s
","
ṣ
":"
s
","
ṩ
":"
s
","
ș
":"
s
","
ş
":"
s
","
ȿ
":"
s
","
ꞩ
":"
s
","
ꞅ
":"
s
","
ẛ
":"
s
","
ⓣ
":"
t
","
t
":"
t
","
ṫ
":"
t
","
ẗ
":"
t
","
ť
":"
t
","
ṭ
":"
t
","
ț
":"
t
","
ţ
":"
t
","
ṱ
":"
t
","
ṯ
":"
t
","
ŧ
":"
t
","
ƭ
":"
t
","
ʈ
":"
t
","
ⱦ
":"
t
","
ꞇ
":"
t
","
ꜩ
":"
tz
","
ⓤ
":"
u
","
u
":"
u
","
ù
":"
u
","
ú
":"
u
","
û
":"
u
","
ũ
":"
u
","
ṹ
":"
u
","
ū
":"
u
","
ṻ
":"
u
","
ŭ
":"
u
","
ü
":"
u
","
ǜ
":"
u
","
ǘ
":"
u
","
ǖ
":"
u
","
ǚ
":"
u
","
ủ
":"
u
","
ů
":"
u
","
ű
":"
u
","
ǔ
":"
u
","
ȕ
":"
u
","
ȗ
":"
u
","
ư
":"
u
","
ừ
":"
u
","
ứ
":"
u
","
ữ
":"
u
","
ử
":"
u
","
ự
":"
u
","
ụ
":"
u
","
ṳ
":"
u
","
ų
":"
u
","
ṷ
":"
u
","
ṵ
":"
u
","
ʉ
":"
u
","
ⓥ
":"
v
","
v
":"
v
","
ṽ
":"
v
","
ṿ
":"
v
","
ʋ
":"
v
","
ꝟ
":"
v
","
ʌ
":"
v
","
ꝡ
":"
vy
","
ⓦ
":"
w
","
w
":"
w
","
ẁ
":"
w
","
ẃ
":"
w
","
ŵ
":"
w
","
ẇ
":"
w
","
ẅ
":"
w
","
ẘ
":"
w
","
ẉ
":"
w
","
ⱳ
":"
w
","
ⓧ
":"
x
","
x
":"
x
","
ẋ
":"
x
","
ẍ
":"
x
","
ⓨ
":"
y
","
y
":"
y
","
ỳ
":"
y
","
ý
":"
y
","
ŷ
":"
y
","
ỹ
":"
y
","
ȳ
":"
y
","
ẏ
":"
y
","
ÿ
":"
y
","
ỷ
":"
y
","
ẙ
":"
y
","
ỵ
":"
y
","
ƴ
":"
y
","
ɏ
":"
y
","
ỿ
":"
y
","
ⓩ
":"
z
","
z
":"
z
","
ź
":"
z
","
ẑ
":"
z
","
ż
":"
z
","
ž
":"
z
","
ẓ
":"
z
","
ẕ
":"
z
","
ƶ
":"
z
","
ȥ
":"
z
","
ɀ
":"
z
","
ⱬ
":"
z
","
ꝣ
":"
z
","
Ά
":"
Α
","
Έ
":"
Ε
","
Ή
":"
Η
","
Ί
":"
Ι
","
Ϊ
":"
Ι
","
Ό
":"
Ο
","
Ύ
":"
Υ
","
Ϋ
":"
Υ
","
Ώ
":"
Ω
","
ά
":"
α
","
έ
":"
ε
","
ή
":"
η
","
ί
":"
ι
","
ϊ
":"
ι
","
ΐ
":"
ι
","
ό
":"
ο
","
ύ
":"
υ
","
ϋ
":"
υ
","
ΰ
":"
υ
","
ω
":"
ω
","
ς
":"
σ
"};return a}),b.define("
select2
/
data
/
base
",["
..
/
utils
"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("
The
`current`
method
must
be
defined
in
child
classes
.
")},b.prototype.query=function(a,b){throw new Error("
The
`query`
method
must
be
defined
in
child
classes
.
")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"
-
result
-
";return d+=a.generateChars(4),d+=null!=c.id?"
-
"+c.id.toString():"
-
"+a.generateChars(4)},b}),b.define("
select2
/
data
/
select
",["
.
/
base
","
..
/
utils
","
jquery
"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find("
:
selected
").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("
option
"))return a.element.selected=!0,void this.$element.trigger("
change
");if(this.$element.prop("
multiple
"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("
change
")});else{var d=a.id;this.$element.val(d),this.$element.trigger("
change
")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("
multiple
"))return a.selected=!1,
c(a.element).is("
option
")?(a.element.selected=!1,void this.$element.trigger("
change
")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("
change
")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("
select
",function(a){c.select(a.data)}),a.on("
unselect
",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("
*
").each(function(){c.removeData(this,"
data
")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("
option
")||b.is("
optgroup
")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("
optgroup
"),b.label=a.text):(b=document.createElement("
option
"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"
data
",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"
data
"),null!=b)return b;if(a.is("
option
"))b={id:a.val(),text:a.text(),disabled:a.prop("
disabled
"),selected:a.prop("
selected
"),title:a.prop("
title
")};else if(a.is("
optgroup
")){b={text:a.prop("
label
"),children:[],title:a.prop("
title
")};for(var d=a.children("
option
"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"
data
",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("
matcher
");return c(a,b)},d}),b.define("
select2
/
data
/
array
",["
.
/
select
","
..
/
utils
","
jquery
"],function(a,b,c){function d(a,b){var c=b.get("
data
")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("
option
").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("
option
"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("
select2
/
data
/
ajax
",["
.
/
array
","
..
/
utils
","
jquery
"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("
ajax
")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("
debug
")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("
Select2
:
The
AJAX
results
did
not
return
an
array
in
the
`results`
key
of
the
response
.
")),b(f)},function(){e.trigger("
results
:
message
",{message:"
errorLoading
"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"
GET
"},this.ajaxOptions);"
function
"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"
function
"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("
select2
/
data
/
tags
",["
jquery
"],function(a){function b(b,c,d){var e=d.get("
tags
"),f=d.get("
createTag
");void 0!==f&&(this.createTag=f);var g=d.get("
insertTag
");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("
data
-
select2
-
tag
",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("
option
[
data
-
select2
-
tag
]
"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("
select2
/
data
/
tokenizer
",["
jquery
"],function(a){function b(a,b,c){var d=c.get("
tokenizer
");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find("
.
select2
-
search__field
")},b.prototype.query=function(a,b,c){function d(a){e.trigger("
select
",{data:a})}var e=this;b.term=b.term||"";var f=this.tokenizer(b,this.options,d);f.term!==b.term&&(this.$search.length&&(this.$search.val(f.term),this.$search.focus()),b.term=f.term),a.call(this,b,c)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("
tokenSeparators
")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("
select2
/
data
/
minimumInputLength
",[],function(){function a(a,b,c){this.minimumInputLength=c.get("
minimumInputLength
"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("
results
:
message
",{message:"
inputTooShort
",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("
select2
/
data
/
maximumInputLength
",[],function(){function a(a,b,c){this.maximumInputLength=c.get("
maximumInputLength
"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("
results
:
message
",{message:"
inputTooLong
",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("
select2
/
data
/
maximumSelectionLength
",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("
maximumSelectionLength
"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("
results
:
message
",{message:"
maximumSelected
",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("
select2
/
dropdown
",["
jquery
","
.
/
utils
"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="
select2
-
dropdown
"><span class="
select2
-
results
"></span></span>');return b.attr("
dir
",this.options.get("
dir
")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("
select2
/
dropdown
/
search
",["
jquery
","
..
/
utils
"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="
select2
-
search
select2
-
search
--
dropdown
"><input class="
select2
-
search__field
" type="
search
" tabindex="
-
1
" autocomplete="
off
" autocorrect="
off
" autocapitalize="
off
" spellcheck="
false
" role="
textbox
" /></span>');return this.$searchContainer=d,this.$search=d.find("
input
"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("
keydown
",function(a){e.trigger("
keypress
",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("
input
",function(b){a(this).off("
keyup
")}),this.$search.on("
keyup
input
",function(a){e.handleSearch(a)}),c.on("
open
",function(){e.$search.attr("
tabindex
",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("
close
",function(){e.$search.attr("
tabindex
",-1),e.$search.val("")}),c.on("
results
:
all
",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("
select2
-
search
--
hide
"):e.$searchContainer.addClass("
select2
-
search
--
hide
")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("
query
",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("
select2
/
dropdown
/
hidePlaceholder
",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("
placeholder
")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"
string
"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("
select2
/
dropdown
/
infiniteScroll
",["
jquery
"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("
query
",function(a){e.lastParams=a,e.loading=!0}),c.on("
query
:
append
",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("
scroll
",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("
query
:
append
",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="
select2
-
results__option
select2
-
results__option
--
load
-
more
"role="
treeitem
" aria-disabled="
true
"></li>'),c=this.options.get("
translations
").get("
loadingMore
");return b.html(c(this.lastParams)),b},b}),b.define("
select2
/
dropdown
/
attachBody
",["
jquery
","
..
/
utils
"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("
dropdownParent
")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("
open
",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("
results
:
all
",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("
results
:
append
",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("
close
",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("
mousedown
",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("
class
",c.attr("
class
")),b.removeClass("
select2
"),b.addClass("
select2
-
container
--
open
"),b.css({position:"
absolute
",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("
<
span
><
/span>"
)
,d=b.call
(
this
)
;return c.append
(
d
)
,this.$dropdownContainer=c,c},c.prototype._hideDropdown=function
(
a
)
{this.$dropdownContainer.detach
()
},c.prototype._attachPositioningHandler=function
(
c,d
)
{var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents
()
.filter
(
b.hasScroll
)
;i.each
(
function
()
{a
(
this
)
.data
(
"select2-scroll-position",{x:a
(
this
)
.scrollLeft
()
,y:a
(
this
)
.scrollTop
()
}
)
}
)
,i.on
(
f,function
(
b
)
{var c=a
(
this
)
.data
(
"select2-scroll-position"
)
;a
(
this
)
.scrollTop
(
c.y
)
}
)
,a
(
window
)
.on
(
f+" "+g+" "+h,function
(
a
)
{e._positionDropdown
()
,e._resizeDropdown
()
}
)
},c.prototype._detachPositioningHandler=function
(
c,d
)
{var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents
()
.filter
(
b.hasScroll
)
;h.off
(
e
)
,a
(
window
)
.off
(
e+" "+f+" "+g
)
},c.prototype._positionDropdown=function
()
{var b=a
(
window
)
,c=this.$dropdown.hasClass
(
"select2-dropdown--above"
)
,d=this.$dropdown.hasClass
(
"select2-dropdown--below"
)
,e=null,f=this.$container.offset
()
;f.bottom=f.top+this.$container.outerHeight
(
!1
)
;var g={height:this.$container.outerHeight
(
!1
)
};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight
(
!1
)
},i={top:b.scrollTop
()
,bottom:b.scrollTop
()
+b.height
()
},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css
(
"position"
)
&&
(
m=m.offsetParent
())
;var n=m.offset
()
;l.top-=n.top,l.left-=n.left,c||d||
(
e="below"
)
,k||!j||c
?
!j&&k&&c&&
(
e="below"
)
:e="above",
(
"above"==e||c&&"below"!==e
)
&&
(
l.top=g.top-h.height
)
,null!=e&&
(
this.$dropdown.removeClass
(
"select2-dropdown--below select2-dropdown--above"
)
.addClass
(
"select2-dropdown--"+e
)
,this.$container.removeClass
(
"select2-container--below select2-container--above"
)
.addClass
(
"select2-container--"+e
))
,this.$dropdownContainer.css
(
l
)
},c.prototype._resizeDropdown=function
()
{var a={width:this.$container.outerWidth
(
!1
)
+"px"};this.options.get
(
"dropdownAutoWidth"
)
&&
(
a.minWidth=a.width,a.width="auto"
)
,this.$dropdown.css
(
a
)
},c.prototype._showDropdown=function
(
a
)
{this.$dropdownContainer.appendTo
(
this.$dropdownParent
)
,this._positionDropdown
()
,this._resizeDropdown
()
},c}
)
,b.define
(
"select2/
dropdown
/
minimumResultsForSearch
",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("
minimumResultsForSearch
"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("
select2
/
dropdown
/
selectOnClose
",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("
close
",function(){d._handleSelectOnClose()})},a.prototype._handleSelectOnClose=function(){var a=this.getHighlightedResults();if(!(a.length<1)){var b=a.data("
data
");null!=b.element&&b.element.selected||null==b.element&&b.selected||this.trigger("
select
",{data:b})}},a}),b.define("
select2
/
dropdown
/
closeOnSelect
",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("
select
",function(a){d._selectTriggered(a)}),b.on("
unselect
",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("
close
",{})},a}),b.define("
select2
/
i18n
/
en
",[],function(){return{errorLoading:function(){return"
The
results
could
not
be
loaded
.
"},inputTooLong:function(a){var b=a.input.length-a.maximum,c="
Please
delete
"+b+"
character
";return 1!=b&&(c+="
s
"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="
Please
enter
"+b+"
or
more
characters
";return c},loadingMore:function(){return"
Loading
more
results
…
"},maximumSelected:function(a){var b="
You
can
only
select
"+a.maximum+"
item
";return 1!=a.maximum&&(b+="
s
"),b},noResults:function(){return"
No
results
found
"},searching:function(){return"
Searching
…
"}}}),b.define("
select2
/
defaults
",["
jquery
","
require
","
.
/
results
","
.
/
selection
/
single
","
.
/
selection
/
multiple
","
.
/
selection
/
placeholder
","
.
/
selection
/
allowClear
","
.
/
selection
/
search
","
.
/
selection
/
eventRelay
","
.
/
utils
","
.
/
translation
","
.
/
diacritics
","
.
/
data
/
select
","
.
/
data
/
array
","
.
/
data
/
ajax
","
.
/
data
/
tags
","
.
/
data
/
tokenizer
","
.
/
data
/
minimumInputLength
","
.
/
data
/
maximumInputLength
","
.
/
data
/
maximumSelectionLength
","
.
/
dropdown
","
.
/
dropdown
/
search
","
.
/
dropdown
/
hidePlaceholder
","
.
/
dropdown
/
infiniteScroll
","
.
/
dropdown
/
attachBody
","
.
/
dropdown
/
minimumResultsForSearch
","
.
/
dropdown
/
selectOnClose
","
.
/
dropdown
/
closeOnSelect
","
.
/
i18n
/
en
"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"
compat
/
query
");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"
compat
/
initSelection
");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"
compat
/
dropdownCss
");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"
compat
/
containerCss
");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("
string
"==typeof l.language)if(l.language.indexOf("
-
")>0){var H=l.language.split("
-
"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("
en
");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "
'+M+'
" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"
en
"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^
\
u0000-
\
u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"
.
/
",amdLanguageBase:"
.
/
i18n
/
",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"
default
",width:"
resolve
"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("
select2
/
options
",["
require
","
jquery
","
.
/
defaults
","
.
/
utils
"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("
input
")){var f=a(this.get("
amdBase
")+"
compat
/
inputData
");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["
select2
"];null==this.options.multiple&&(this.options.multiple=a.prop("
multiple
")),null==this.options.disabled&&(this.options.disabled=a.prop("
disabled
")),null==this.options.language&&(a.prop("
lang
")?this.options.language=a.prop("
lang
").toLowerCase():a.closest("
[
lang
]
").prop("
lang
")&&(this.options.language=a.closest("
[
lang
]
").prop("
lang
"))),null==this.options.dir&&(a.prop("
dir
")?this.options.dir=a.prop("
dir
"):a.closest("
[
dir
]
").prop("
dir
")?this.options.dir=a.closest("
[
dir
]
").prop("
dir
"):this.options.dir="
ltr
"),a.prop("
disabled
",this.options.disabled),a.prop("
multiple
",this.options.multiple),a.data("
select2Tags
")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="
true
"` attributes and will be removed in future versions of Select2.'),a.data("
data
",a.data("
select2Tags
")),a.data("
tags
",!0)),a.data("
ajaxUrl
")&&(this.options.debug&&window.console&&console.warn&&console.warn("
Select2
:
The
`data-ajax-url`
attribute
has
been
changed
to
`data-ajax--url`
and
support
for
the
old
attribute
will
be
removed
in
future
versions
of
Select2
.
"),a.attr("
ajax
--
url
",a.data("
ajaxUrl
")),a.data("
ajax
--
url
",a.data("
ajaxUrl
")));var e={};e=b.fn.jquery&&"
1
.
"==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("
select2
/
core
",["
jquery
","
.
/
options
","
.
/
utils
","
.
/
keys
"],function(a,b,c,d){var e=function(a,c){null!=a.data("
select2
")&&a.data("
select2
").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("
tabindex
")||0;a.data("
old
-
tabindex
",d),a.attr("
tabindex
","
-
1
");var f=this.options.get("
dataAdapter
");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("
selectionAdapter
");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("
dropdownAdapter
");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("
resultsAdapter
");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("
selection
:
update
",{data:a})}),a.addClass("
select2
-
hidden
-
accessible
"),a.attr("
aria
-
hidden
","
true
"),this._syncAttributes(),a.data("
select2
",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("
id
")?a.attr("
id
"):null!=a.attr("
name
")?a.attr("
name
")+"
-
"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|
\
.|
\
[|
\
]|,)/g,""),b="
select2
-
"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("
width
"));null!=b&&a.css("
width
",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*
\
.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("
resolve
"==b){var d=this._resolveWidth(a,"
style
");return null!=d?d:this._resolveWidth(a,"
element
")}if("
element
"==b){var e=a.outerWidth(!1);return 0>=e?"
auto
":e+"
px
"}if("
style
"==b){var f=a.attr("
style
");if("
string
"!=typeof f)return null;for(var g=f.split("
;
"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/
\
s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("
change
.
select2
",function(){b.dataAdapter.current(function(a){b.trigger("
selection
:
update
",{data:a})})}),this._sync=c.bind(this._syncAttributes,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("
onpropertychange
",this._sync);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._sync)}),this._observer.observe(this.$element[0],{attributes:!0,subtree:!1})):this.$element[0].addEventListener&&this.$element[0].addEventListener("
DOMAttrModified
",b._sync,!1)},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("
*
",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["
toggle
","
focus
"];this.selection.on("
toggle
",function(){b.toggleDropdown()}),this.selection.on("
focus
",function(a){b.focus(a)}),this.selection.on("
*
",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("
*
",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("
*
",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("
open
",function(){a.$container.addClass("
select2
-
container
--
open
")}),this.on("
close
",function(){a.$container.removeClass("
select2
-
container
--
open
")}),this.on("
enable
",function(){a.$container.removeClass("
select2
-
container
--
disabled
")}),this.on("
disable
",function(){a.$container.addClass("
select2
-
container
--
disabled
")}),this.on("
blur
",function(){a.$container.removeClass("
select2
-
container
--
focus
")}),this.on("
query
",function(b){a.isOpen()||a.trigger("
open
",{}),this.dataAdapter.query(b,function(c){a.trigger("
results
:
all
",{data:c,query:b})})}),this.on("
query
:
append
",function(b){this.dataAdapter.query(b,function(c){a.trigger("
results
:
append
",{data:c,query:b})})}),this.on("
keypress
",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("
results
:
select
",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("
results
:
toggle
",{}),b.preventDefault()):c===d.UP?(a.trigger("
results
:
previous
",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("
results
:
next
",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("
disabled
",this.$element.prop("
disabled
")),this.options.get("
disabled
")?(this.isOpen()&&this.close(),this.trigger("
disable
",{})):this.trigger("
enable
",{})},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"
opening
",close:"
closing
",select:"
selecting
",unselect:"
unselecting
"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("
disabled
")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("
query
",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("
close
",{})},e.prototype.isOpen=function(){return this.$container.hasClass("
select2
-
container
--
open
")},e.prototype.hasFocus=function(){return this.$container.hasClass("
select2
-
container
--
focus
")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("
select2
-
container
--
focus
"),this.trigger("
focus
",{}))},e.prototype.enable=function(a){this.options.get("
debug
")&&window.console&&console.warn&&console.warn('Select2: The `select2("
enable
")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("
disabled
") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("
disabled
",b)},e.prototype.data=function(){this.options.get("
debug
")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("
data
")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("
debug
")&&window.console&&console.warn&&console.warn('Select2: The `select2("
val
")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("
change
")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("
onpropertychange
",this._sync),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&this.$element[0].removeEventListener("
DOMAttrModified
",this._sync,!1),this._sync=null,this.$element.off("
.
select2
"),this.$element.attr("
tabindex
",this.$element.data("
old
-
tabindex
")),this.$element.removeClass("
select2
-
hidden
-
accessible
"),this.$element.attr("
aria
-
hidden
","
false
"),this.$element.removeData("
select2
"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="
select2
select2
-
container
"><span class="
selection
"></span><span class="
dropdown
-
wrapper
" aria-hidden="
true
"></span></span>');return b.attr("
dir
",this.options.get("
dir
")),this.$container=b,this.$container.addClass("
select2
-
container
--
"+this.options.get("
theme
")),b.data("
element
",this.$element),b},e}),b.define("
jquery
-
mousewheel
",["
jquery
"],function(a){return a}),b.define("
jquery
.
select2
",["
jquery
","
jquery
-
mousewheel
","
.
/
select2
/
core
","
.
/
select2
/
defaults
"],function(a,b,c,d){if(null==a.fn.select2){var e=["
open
","
close
","
destroy
"];a.fn.select2=function(b){if(b=b||{},"
object
"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("
string
"==typeof b){var d;return this.each(function(){var c=a(this).data("
select2
");null==c&&window.console&&console.error&&console.error("
The
select2
(
'"+b+"'
)
method
was
called
on
an
element
that
is
not
using
Select2
.
");var e=Array.prototype.slice.call(arguments,1);d=c[b].apply(c,e)}),a.inArray(b,e)>-1?this:d}throw new Error("
Invalid
arguments
for
Select2
:
"+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("
jquery
.
select2
");return a.fn.select2.amd=b,c});
apollo-portal/src/main/resources/static/views/common/footer.html
View file @
f60ee3e2
...
...
@@ -2,6 +2,7 @@
<hr>
<p
class=
"text-center"
>
<span
class=
"glyphicon glyphicon-copyright-mark"
aria-hidden=
"true"
></span>
携程 框架研发部
<br>
<a
href=
"http://conf.ctripcorp.com/display/FRAM/Apollo"
target=
"_blank"
>
wiki
</a>
</p>
</div>
...
...
apollo-portal/src/test/java/com/ctrip/apollo/portal/AppServiceTest.java
View file @
f60ee3e2
...
...
@@ -71,9 +71,9 @@ public class AppServiceTest {
// appDTO.setOwnerEmail("qq@qq.com");
// appDTO.setOwnerName("zz");
//
// when(appService.
save
(appDTO)).thenReturn(appDTO);
// when(appService.
createApp
(appDTO)).thenReturn(appDTO);
//
// AppDTO createApp = appService.
save
(appDTO);
// AppDTO createApp = appService.
createApp
(appDTO);
//
// assertEquals(appId, createApp.getAppId());
// assertEquals(appName, createApp.getName());
...
...
apollo-portal/src/test/java/com/ctrip/apollo/portal/ServiceExceptionTest.java
View file @
f60ee3e2
...
...
@@ -60,7 +60,7 @@ public class ServiceExceptionTest extends AbstractPortalTest {
HttpStatusCodeException
adminException
=
new
HttpServerErrorException
(
HttpStatus
.
INTERNAL_SERVER_ERROR
,
"admin server error"
,
new
Gson
().
toJson
(
errorAttributes
).
getBytes
(),
Charset
.
defaultCharset
());
when
(
appAPI
.
save
(
any
(
Env
.
class
),
any
(
AppDTO
.
class
))).
thenThrow
(
adminException
);
when
(
appAPI
.
createApp
(
any
(
Env
.
class
),
any
(
AppDTO
.
class
))).
thenThrow
(
adminException
);
AppDTO
dto
=
generateSampleDTOData
();
try
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment