mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
Compare commits
86 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbcd79e49f | ||
|
|
4dabf47822 | ||
|
|
db258d4ecc | ||
|
|
8b237db690 | ||
|
|
416350c004 | ||
|
|
8d63377e78 | ||
|
|
377176df05 | ||
|
|
95da0078b3 | ||
|
|
6392b87afc | ||
|
|
ba04d2adfe | ||
|
|
517ce1a726 | ||
|
|
36492cbff5 | ||
|
|
4b46aa08ac | ||
|
|
1a9a80c0da | ||
|
|
32a30019a7 | ||
|
|
bb72131354 | ||
|
|
3a8d72cab4 | ||
|
|
f5f7a8e63b | ||
|
|
570c4f3a1f | ||
|
|
172164b74b | ||
|
|
49835ae234 | ||
|
|
c4f1e910f8 | ||
|
|
3a621b61c6 | ||
|
|
c28f0d6788 | ||
|
|
2db9224ffc | ||
|
|
043b1df585 | ||
|
|
0626200787 | ||
|
|
b7ee61a8df | ||
|
|
6e1cdaf50e | ||
|
|
e770f802e7 | ||
|
|
8e4cf77fcb | ||
|
|
bc3bd42ce3 | ||
|
|
f73e0ba307 | ||
|
|
5703b5e8d4 | ||
|
|
cecbb2cf72 | ||
|
|
8638e4751d | ||
|
|
3b69e3b029 | ||
|
|
dced21c8e4 | ||
|
|
dab26af294 | ||
|
|
65f118e561 | ||
|
|
67f533b9f6 | ||
|
|
93573bcdb7 | ||
|
|
2263801c55 | ||
|
|
10c34d0440 | ||
|
|
4430ef3847 | ||
|
|
8e331b908d | ||
|
|
dbc6fb58e0 | ||
|
|
db298ab684 | ||
|
|
170a6095e6 | ||
|
|
6dd1bf3281 | ||
|
|
b1500cebfd | ||
|
|
6202bdbc28 | ||
|
|
39bfb61b95 | ||
|
|
fa79524ed4 | ||
|
|
ab5b70e52b | ||
|
|
4f8cd53b83 | ||
|
|
afb6221e5e | ||
|
|
f78aedc30d | ||
|
|
80ff2c8ff7 | ||
|
|
579a77dfc9 | ||
|
|
f902d967a6 | ||
|
|
0899e0b0bf | ||
|
|
65d6f8616b | ||
|
|
5c27f0834c | ||
|
|
a5f7b56bf2 | ||
|
|
63ec92038c | ||
|
|
464ac36ddb | ||
|
|
840bc2ef7a | ||
|
|
e248504528 | ||
|
|
f4f3d9ca48 | ||
|
|
e727ee414b | ||
|
|
1e9295b386 | ||
|
|
b980cdc2c2 | ||
|
|
fbe722facd | ||
|
|
1897d8e0c0 | ||
|
|
3745a152aa | ||
|
|
a7731acb08 | ||
|
|
16dd5deed4 | ||
|
|
c9f70650a0 | ||
|
|
eaa84253df | ||
|
|
45abcd7385 | ||
|
|
8a633aa648 | ||
|
|
05e092062d | ||
|
|
e83602a05c | ||
|
|
abf8666e24 | ||
|
|
af1ccc6669 |
103
pom.xml
103
pom.xml
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<groupId>com.commafeed</groupId>
|
<groupId>com.commafeed</groupId>
|
||||||
<artifactId>commafeed</artifactId>
|
<artifactId>commafeed</artifactId>
|
||||||
<version>1.4.0</version>
|
<version>1.5.0-SNAPSHOT</version>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>CommaFeed</name>
|
<name>CommaFeed</name>
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.projectlombok</groupId>
|
<groupId>org.projectlombok</groupId>
|
||||||
<artifactId>lombok</artifactId>
|
<artifactId>lombok</artifactId>
|
||||||
<version>1.12.4</version>
|
<version>1.12.6</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-core</artifactId>
|
<artifactId>liquibase-core</artifactId>
|
||||||
<version>3.0.7</version>
|
<version>3.1.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -314,7 +314,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
<artifactId>httpclient</artifactId>
|
<artifactId>httpclient</artifactId>
|
||||||
<version>4.3.2</version>
|
<version>4.3.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jsoup</groupId>
|
<groupId>org.jsoup</groupId>
|
||||||
@@ -325,12 +325,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>2.3.1</version>
|
<version>2.3.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
<version>1.7.6</version>
|
<version>1.7.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>log4j</groupId>
|
<groupId>log4j</groupId>
|
||||||
@@ -341,28 +341,28 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.wicket</groupId>
|
<groupId>org.apache.wicket</groupId>
|
||||||
<artifactId>wicket-core</artifactId>
|
<artifactId>wicket-core</artifactId>
|
||||||
<version>6.13.0</version>
|
<version>6.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.wicket</groupId>
|
<groupId>org.apache.wicket</groupId>
|
||||||
<artifactId>wicket-auth-roles</artifactId>
|
<artifactId>wicket-auth-roles</artifactId>
|
||||||
<version>6.13.0</version>
|
<version>6.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.wicket</groupId>
|
<groupId>org.apache.wicket</groupId>
|
||||||
<artifactId>wicket-extensions</artifactId>
|
<artifactId>wicket-extensions</artifactId>
|
||||||
<version>6.13.0</version>
|
<version>6.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.wicket</groupId>
|
<groupId>org.apache.wicket</groupId>
|
||||||
<artifactId>wicket-cdi</artifactId>
|
<artifactId>wicket-cdi</artifactId>
|
||||||
<version>6.13.0</version>
|
<version>6.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ro.isdc.wro4j</groupId>
|
<groupId>ro.isdc.wro4j</groupId>
|
||||||
<artifactId>wro4j-extensions</artifactId>
|
<artifactId>wro4j-extensions</artifactId>
|
||||||
<version>1.6.3</version>
|
<version>1.7.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -380,12 +380,83 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.codahale.metrics</groupId>
|
<groupId>com.codahale.metrics</groupId>
|
||||||
<artifactId>metrics-core</artifactId>
|
<artifactId>metrics-core</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.codahale.metrics</groupId>
|
<groupId>com.codahale.metrics</groupId>
|
||||||
<artifactId>metrics-json</artifactId>
|
<artifactId>metrics-json</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>lodash</artifactId>
|
||||||
|
<version>2.4.1-3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>jquery</artifactId>
|
||||||
|
<version>1.11.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>bootstrap</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>jquery-mousewheel</artifactId>
|
||||||
|
<version>3.1.9</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>angularjs</artifactId>
|
||||||
|
<version>1.2.16</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>angular-ui-router</artifactId>
|
||||||
|
<version>0.2.8-2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>angular-ui-utils</artifactId>
|
||||||
|
<version>0.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>ui-select2</artifactId>
|
||||||
|
<version>0.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>angular-ui-bootstrap</artifactId>
|
||||||
|
<version>0.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>mousetrap</artifactId>
|
||||||
|
<version>1.4.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>momentjs</artifactId>
|
||||||
|
<version>2.6.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>ng-grid</artifactId>
|
||||||
|
<version>2.0.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>device.js</artifactId>
|
||||||
|
<version>139f208</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.webjars</groupId>
|
||||||
|
<artifactId>ngInfiniteScroll</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -407,7 +478,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>ro.isdc.wro4j</groupId>
|
<groupId>ro.isdc.wro4j</groupId>
|
||||||
<artifactId>wro4j-maven-plugin</artifactId>
|
<artifactId>wro4j-maven-plugin</artifactId>
|
||||||
<version>1.6.3</version>
|
<version>1.7.5</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>js</id>
|
<id>js</id>
|
||||||
@@ -417,7 +488,7 @@
|
|||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<targetGroups>app</targetGroups>
|
<targetGroups>app</targetGroups>
|
||||||
<options>indent,devel,noarg,quotmark,laxcomma,laxbreak</options>
|
<options>devel,noarg,quotmark,laxcomma,laxbreak</options>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
<execution>
|
<execution>
|
||||||
@@ -554,7 +625,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>ro.isdc.wro4j</groupId>
|
<groupId>ro.isdc.wro4j</groupId>
|
||||||
<artifactId>wro4j-maven-plugin</artifactId>
|
<artifactId>wro4j-maven-plugin</artifactId>
|
||||||
<version>1.7.2</version>
|
<version>1.7.5</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<goals>
|
<goals>
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import java.io.IOException;
|
|||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
import java.security.cert.CertificateException;
|
import java.security.cert.CertificateException;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import javax.net.ssl.KeyManager;
|
import javax.net.ssl.KeyManager;
|
||||||
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.SSLContext;
|
||||||
@@ -15,9 +18,13 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.http.Consts;
|
import org.apache.http.Consts;
|
||||||
import org.apache.http.Header;
|
import org.apache.http.Header;
|
||||||
|
import org.apache.http.HeaderElement;
|
||||||
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpEntity;
|
||||||
|
import org.apache.http.HttpException;
|
||||||
import org.apache.http.HttpHeaders;
|
import org.apache.http.HttpHeaders;
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
|
import org.apache.http.HttpResponse;
|
||||||
|
import org.apache.http.HttpResponseInterceptor;
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
import org.apache.http.client.ClientProtocolException;
|
import org.apache.http.client.ClientProtocolException;
|
||||||
import org.apache.http.client.HttpResponseException;
|
import org.apache.http.client.HttpResponseException;
|
||||||
@@ -29,9 +36,11 @@ import org.apache.http.client.methods.HttpUriRequest;
|
|||||||
import org.apache.http.client.protocol.HttpClientContext;
|
import org.apache.http.client.protocol.HttpClientContext;
|
||||||
import org.apache.http.config.ConnectionConfig;
|
import org.apache.http.config.ConnectionConfig;
|
||||||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
||||||
|
import org.apache.http.entity.HttpEntityWrapper;
|
||||||
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
import org.apache.http.impl.client.HttpClientBuilder;
|
import org.apache.http.impl.client.HttpClientBuilder;
|
||||||
import org.apache.http.impl.client.HttpClients;
|
import org.apache.http.impl.client.HttpClients;
|
||||||
|
import org.apache.http.protocol.HttpContext;
|
||||||
import org.apache.http.util.EntityUtils;
|
import org.apache.http.util.EntityUtils;
|
||||||
import org.apache.wicket.util.io.IOUtils;
|
import org.apache.wicket.util.io.IOUtils;
|
||||||
|
|
||||||
@@ -47,6 +56,32 @@ public class HttpGetter {
|
|||||||
private static final String PRAGMA_NO_CACHE = "No-cache";
|
private static final String PRAGMA_NO_CACHE = "No-cache";
|
||||||
private static final String CACHE_CONTROL_NO_CACHE = "no-cache";
|
private static final String CACHE_CONTROL_NO_CACHE = "no-cache";
|
||||||
|
|
||||||
|
private static final List<String> ALLOWED_CONTENT_ENCODINGS = Arrays.asList("gzip", "x-gzip", "deflate", "identity");
|
||||||
|
private static final HttpResponseInterceptor REMOVE_INCORRECT_CONTENT_ENCODING = new HttpResponseInterceptor() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(HttpResponse response, HttpContext context) throws HttpException, IOException {
|
||||||
|
HttpEntity entity = response.getEntity();
|
||||||
|
if (entity != null && entity.getContentLength() != 0) {
|
||||||
|
Header header = entity.getContentEncoding();
|
||||||
|
if (header != null) {
|
||||||
|
HeaderElement[] codecs = header.getElements();
|
||||||
|
for (final HeaderElement codec : codecs) {
|
||||||
|
String codecName = codec.getName().toLowerCase(Locale.US);
|
||||||
|
if (!ALLOWED_CONTENT_ENCODINGS.contains(codecName)) {
|
||||||
|
response.setEntity(new HttpEntityWrapper(entity) {
|
||||||
|
@Override
|
||||||
|
public Header getContentEncoding() {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private static SSLContext SSL_CONTEXT = null;
|
private static SSLContext SSL_CONTEXT = null;
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
@@ -84,7 +119,7 @@ public class HttpGetter {
|
|||||||
CloseableHttpResponse response = null;
|
CloseableHttpResponse response = null;
|
||||||
try {
|
try {
|
||||||
HttpGet httpget = new HttpGet(url);
|
HttpGet httpget = new HttpGet(url);
|
||||||
HttpClientContext context = HttpClientContext.create();
|
HttpClientContext context = HttpClientContext.create();
|
||||||
|
|
||||||
httpget.addHeader(HttpHeaders.ACCEPT_LANGUAGE, ACCEPT_LANGUAGE);
|
httpget.addHeader(HttpHeaders.ACCEPT_LANGUAGE, ACCEPT_LANGUAGE);
|
||||||
httpget.addHeader(HttpHeaders.PRAGMA, PRAGMA_NO_CACHE);
|
httpget.addHeader(HttpHeaders.PRAGMA, PRAGMA_NO_CACHE);
|
||||||
@@ -194,6 +229,7 @@ public class HttpGetter {
|
|||||||
public static CloseableHttpClient newClient(int timeout) {
|
public static CloseableHttpClient newClient(int timeout) {
|
||||||
HttpClientBuilder builder = HttpClients.custom();
|
HttpClientBuilder builder = HttpClients.custom();
|
||||||
builder.useSystemProperties();
|
builder.useSystemProperties();
|
||||||
|
builder.addInterceptorFirst(REMOVE_INCORRECT_CONTENT_ENCODING);
|
||||||
builder.disableAutomaticRetries();
|
builder.disableAutomaticRetries();
|
||||||
|
|
||||||
builder.setSslcontext(SSL_CONTEXT);
|
builder.setSslcontext(SSL_CONTEXT);
|
||||||
@@ -206,7 +242,7 @@ public class HttpGetter {
|
|||||||
configBuilder.setConnectionRequestTimeout(timeout);
|
configBuilder.setConnectionRequestTimeout(timeout);
|
||||||
builder.setDefaultRequestConfig(configBuilder.build());
|
builder.setDefaultRequestConfig(configBuilder.build());
|
||||||
|
|
||||||
builder.setDefaultConnectionConfig(ConnectionConfig.custom().setCharset(Consts.UTF_8).build());
|
builder.setDefaultConnectionConfig(ConnectionConfig.custom().setCharset(Consts.ISO_8859_1).build());
|
||||||
|
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class ScheduledTasks {
|
|||||||
*/
|
*/
|
||||||
@Schedule(hour = "*", persistent = false)
|
@Schedule(hour = "*", persistent = false)
|
||||||
private void cleanFeedsAndContents() {
|
private void cleanFeedsAndContents() {
|
||||||
cleaner.cleanEntriesForFeedsWithoutSubscriptions();
|
cleaner.cleanEntriesWithoutSubscriptions();
|
||||||
cleaner.cleanFeedsWithoutSubscriptions();
|
cleaner.cleanFeedsWithoutSubscriptions();
|
||||||
cleaner.cleanContentsWithoutEntries();
|
cleaner.cleanContentsWithoutEntries();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,19 @@ import java.util.List;
|
|||||||
import javax.ejb.Stateless;
|
import javax.ejb.Stateless;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import javax.persistence.criteria.Join;
|
||||||
|
import javax.persistence.criteria.JoinType;
|
||||||
import javax.persistence.criteria.Predicate;
|
import javax.persistence.criteria.Predicate;
|
||||||
import javax.persistence.criteria.Root;
|
import javax.persistence.criteria.Root;
|
||||||
|
import javax.persistence.criteria.SetJoin;
|
||||||
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
|
||||||
import com.commafeed.backend.model.Feed;
|
import com.commafeed.backend.model.Feed;
|
||||||
import com.commafeed.backend.model.FeedEntry;
|
import com.commafeed.backend.model.FeedEntry;
|
||||||
import com.commafeed.backend.model.FeedEntry_;
|
import com.commafeed.backend.model.FeedEntry_;
|
||||||
|
import com.commafeed.backend.model.FeedSubscription;
|
||||||
|
import com.commafeed.backend.model.FeedSubscription_;
|
||||||
import com.commafeed.backend.model.Feed_;
|
import com.commafeed.backend.model.Feed_;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
@@ -37,6 +42,19 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
|||||||
return Iterables.getFirst(list, null);
|
return Iterables.getFirst(list, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FeedEntry> findWithoutSubscriptions(int max) {
|
||||||
|
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
||||||
|
Root<FeedEntry> root = query.from(getType());
|
||||||
|
|
||||||
|
Join<FeedEntry, Feed> feedJoin = root.join(FeedEntry_.feed);
|
||||||
|
SetJoin<Feed, FeedSubscription> subJoin = feedJoin.join(Feed_.subscriptions, JoinType.LEFT);
|
||||||
|
query.where(builder.isNull(subJoin.get(FeedSubscription_.id)));
|
||||||
|
TypedQuery<FeedEntry> q = em.createQuery(query);
|
||||||
|
q.setMaxResults(max);
|
||||||
|
|
||||||
|
return q.getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
public int delete(Feed feed, int max) {
|
public int delete(Feed feed, int max) {
|
||||||
|
|
||||||
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public class FeedParser {
|
|||||||
if (xmlString == null) {
|
if (xmlString == null) {
|
||||||
throw new FeedException("Input string is null for url " + feedUrl);
|
throw new FeedException("Input string is null for url " + feedUrl);
|
||||||
}
|
}
|
||||||
|
xmlString = FeedUtils.replaceHtmlEntitiesWithNumericEntities(xmlString);
|
||||||
InputSource source = new InputSource(new StringReader(xmlString));
|
InputSource source = new InputSource(new StringReader(xmlString));
|
||||||
SyndFeed rss = new SyndFeedInput().build(source);
|
SyndFeed rss = new SyndFeedInput().build(source);
|
||||||
handleForeignMarkup(rss);
|
handleForeignMarkup(rss);
|
||||||
@@ -66,10 +67,6 @@ public class FeedParser {
|
|||||||
feed.setLink(rss.getLink());
|
feed.setLink(rss.getLink());
|
||||||
List<SyndEntry> items = rss.getEntries();
|
List<SyndEntry> items = rss.getEntries();
|
||||||
|
|
||||||
if (items.isEmpty()) {
|
|
||||||
throw new FeedException("No items in the feed.");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (SyndEntry item : items) {
|
for (SyndEntry item : items) {
|
||||||
FeedEntry entry = new FeedEntry();
|
FeedEntry entry = new FeedEntry();
|
||||||
|
|
||||||
@@ -82,8 +79,13 @@ public class FeedParser {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
entry.setGuid(FeedUtils.truncate(guid, 2048));
|
entry.setGuid(FeedUtils.truncate(guid, 2048));
|
||||||
entry.setUrl(FeedUtils.truncate(FeedUtils.toAbsoluteUrl(item.getLink(), feed.getLink(), feed.getUrlAfterRedirect()), 2048));
|
|
||||||
entry.setUpdated(validateDate(getEntryUpdateDate(item), true));
|
entry.setUpdated(validateDate(getEntryUpdateDate(item), true));
|
||||||
|
entry.setUrl(FeedUtils.truncate(FeedUtils.toAbsoluteUrl(item.getLink(), feed.getLink(), feed.getUrlAfterRedirect()), 2048));
|
||||||
|
|
||||||
|
// if link is empty but guid is used as url
|
||||||
|
if (StringUtils.isBlank(entry.getUrl()) && StringUtils.startsWith(entry.getGuid(), "http")) {
|
||||||
|
entry.setUrl(entry.getGuid());
|
||||||
|
}
|
||||||
|
|
||||||
FeedEntryContent content = new FeedEntryContent();
|
FeedEntryContent content = new FeedEntryContent();
|
||||||
content.setContent(getContent(item));
|
content.setContent(getContent(item));
|
||||||
|
|||||||
@@ -100,17 +100,16 @@ public class FeedRefreshTaskGiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
try {
|
|
||||||
// sleeping for a little while, let everything settle
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
log.error("interrupted while sleeping");
|
|
||||||
}
|
|
||||||
log.info("starting feed refresh task giver");
|
log.info("starting feed refresh task giver");
|
||||||
|
|
||||||
executor.execute(new Runnable() {
|
executor.execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
try {
|
||||||
|
// sleeping for a little while, let everything settle
|
||||||
|
Thread.sleep(60000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
log.error("interrupted while sleeping");
|
||||||
|
}
|
||||||
while (!executor.isShutdown()) {
|
while (!executor.isShutdown()) {
|
||||||
try {
|
try {
|
||||||
FeedRefreshContext context = take();
|
FeedRefreshContext context = take();
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public class FeedUtils {
|
|||||||
private static final List<String> ALLOWED_IMG_CSS_RULES = Arrays.asList("display", "width", "height");
|
private static final List<String> ALLOWED_IMG_CSS_RULES = Arrays.asList("display", "width", "height");
|
||||||
private static final char[] FORBIDDEN_CSS_RULE_CHARACTERS = new char[] { '(', ')' };
|
private static final char[] FORBIDDEN_CSS_RULE_CHARACTERS = new char[] { '(', ')' };
|
||||||
|
|
||||||
|
private static final Whitelist WHITELIST = buildWhiteList();
|
||||||
|
|
||||||
public static String truncate(String string, int length) {
|
public static String truncate(String string, int length) {
|
||||||
if (string != null) {
|
if (string != null) {
|
||||||
string = string.substring(0, Math.min(length, string.length()));
|
string = string.substring(0, Math.min(length, string.length()));
|
||||||
@@ -60,6 +62,39 @@ public class FeedUtils {
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static synchronized Whitelist buildWhiteList() {
|
||||||
|
Whitelist whitelist = new Whitelist();
|
||||||
|
whitelist.addTags("a", "b", "blockquote", "br", "caption", "cite", "code", "col", "colgroup", "dd", "div", "dl", "dt", "em", "h1",
|
||||||
|
"h2", "h3", "h4", "h5", "h6", "i", "iframe", "img", "li", "ol", "p", "pre", "q", "small", "strike", "strong", "sub", "sup",
|
||||||
|
"table", "tbody", "td", "tfoot", "th", "thead", "tr", "u", "ul");
|
||||||
|
|
||||||
|
whitelist.addAttributes("div", "dir");
|
||||||
|
whitelist.addAttributes("pre", "dir");
|
||||||
|
whitelist.addAttributes("code", "dir");
|
||||||
|
whitelist.addAttributes("table", "dir");
|
||||||
|
whitelist.addAttributes("p", "dir");
|
||||||
|
whitelist.addAttributes("a", "href", "title");
|
||||||
|
whitelist.addAttributes("blockquote", "cite");
|
||||||
|
whitelist.addAttributes("col", "span", "width");
|
||||||
|
whitelist.addAttributes("colgroup", "span", "width");
|
||||||
|
whitelist.addAttributes("iframe", "src", "height", "width", "allowfullscreen", "frameborder", "style");
|
||||||
|
whitelist.addAttributes("img", "align", "alt", "height", "src", "title", "width", "style");
|
||||||
|
whitelist.addAttributes("ol", "start", "type");
|
||||||
|
whitelist.addAttributes("q", "cite");
|
||||||
|
whitelist.addAttributes("table", "border", "bordercolor", "summary", "width");
|
||||||
|
whitelist.addAttributes("td", "border", "bordercolor", "abbr", "axis", "colspan", "rowspan", "width");
|
||||||
|
whitelist.addAttributes("th", "border", "bordercolor", "abbr", "axis", "colspan", "rowspan", "scope", "width");
|
||||||
|
whitelist.addAttributes("ul", "type");
|
||||||
|
|
||||||
|
whitelist.addProtocols("a", "href", "ftp", "http", "https", "mailto");
|
||||||
|
whitelist.addProtocols("blockquote", "cite", "http", "https");
|
||||||
|
whitelist.addProtocols("img", "src", "http", "https");
|
||||||
|
whitelist.addProtocols("q", "cite", "http", "https");
|
||||||
|
|
||||||
|
whitelist.addEnforcedAttribute("a", "target", "_blank");
|
||||||
|
return whitelist;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detect feed encoding by using the declared encoding in the xml processing instruction and by detecting the characters used in the
|
* Detect feed encoding by using the declared encoding in the xml processing instruction and by detecting the characters used in the
|
||||||
* feed
|
* feed
|
||||||
@@ -95,6 +130,14 @@ public class FeedUtils {
|
|||||||
return encoding;
|
return encoding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String replaceHtmlEntitiesWithNumericEntities(String source){
|
||||||
|
String result = source;
|
||||||
|
for(String entity : HtmlEntities.NUMERIC_MAPPING.keySet()){
|
||||||
|
result = result.replace(entity, HtmlEntities.NUMERIC_MAPPING.get(entity));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalize the url. The resulting url is not meant to be fetched but rather used as a mean to identify a feed and avoid duplicates
|
* Normalize the url. The resulting url is not meant to be fetched but rather used as a mean to identify a feed and avoid duplicates
|
||||||
*/
|
*/
|
||||||
@@ -155,38 +198,9 @@ public class FeedUtils {
|
|||||||
public static String handleContent(String content, String baseUri, boolean keepTextOnly) {
|
public static String handleContent(String content, String baseUri, boolean keepTextOnly) {
|
||||||
if (StringUtils.isNotBlank(content)) {
|
if (StringUtils.isNotBlank(content)) {
|
||||||
baseUri = StringUtils.trimToEmpty(baseUri);
|
baseUri = StringUtils.trimToEmpty(baseUri);
|
||||||
Whitelist whitelist = new Whitelist();
|
|
||||||
whitelist.addTags("a", "b", "blockquote", "br", "caption", "cite", "code", "col", "colgroup", "dd", "div", "dl", "dt", "em",
|
|
||||||
"h1", "h2", "h3", "h4", "h5", "h6", "i", "iframe", "img", "li", "ol", "p", "pre", "q", "small", "strike", "strong",
|
|
||||||
"sub", "sup", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "u", "ul");
|
|
||||||
|
|
||||||
whitelist.addAttributes("div", "dir");
|
|
||||||
whitelist.addAttributes("pre", "dir");
|
|
||||||
whitelist.addAttributes("code", "dir");
|
|
||||||
whitelist.addAttributes("table", "dir");
|
|
||||||
whitelist.addAttributes("p", "dir");
|
|
||||||
whitelist.addAttributes("a", "href", "title");
|
|
||||||
whitelist.addAttributes("blockquote", "cite");
|
|
||||||
whitelist.addAttributes("col", "span", "width");
|
|
||||||
whitelist.addAttributes("colgroup", "span", "width");
|
|
||||||
whitelist.addAttributes("iframe", "src", "height", "width", "allowfullscreen", "frameborder", "style");
|
|
||||||
whitelist.addAttributes("img", "align", "alt", "height", "src", "title", "width", "style");
|
|
||||||
whitelist.addAttributes("ol", "start", "type");
|
|
||||||
whitelist.addAttributes("q", "cite");
|
|
||||||
whitelist.addAttributes("table", "border", "bordercolor", "summary", "width");
|
|
||||||
whitelist.addAttributes("td", "border", "bordercolor", "abbr", "axis", "colspan", "rowspan", "width");
|
|
||||||
whitelist.addAttributes("th", "border", "bordercolor", "abbr", "axis", "colspan", "rowspan", "scope", "width");
|
|
||||||
whitelist.addAttributes("ul", "type");
|
|
||||||
|
|
||||||
whitelist.addProtocols("a", "href", "ftp", "http", "https", "mailto");
|
|
||||||
whitelist.addProtocols("blockquote", "cite", "http", "https");
|
|
||||||
whitelist.addProtocols("img", "src", "http", "https");
|
|
||||||
whitelist.addProtocols("q", "cite", "http", "https");
|
|
||||||
|
|
||||||
whitelist.addEnforcedAttribute("a", "target", "_blank");
|
|
||||||
|
|
||||||
Document dirty = Jsoup.parseBodyFragment(content, baseUri);
|
Document dirty = Jsoup.parseBodyFragment(content, baseUri);
|
||||||
Cleaner cleaner = new Cleaner(whitelist);
|
Cleaner cleaner = new Cleaner(WHITELIST);
|
||||||
Document clean = cleaner.clean(dirty);
|
Document clean = cleaner.clean(dirty);
|
||||||
|
|
||||||
for (Element e : clean.select("iframe[style]")) {
|
for (Element e : clean.select("iframe[style]")) {
|
||||||
|
|||||||
266
src/main/java/com/commafeed/backend/feeds/HtmlEntities.java
Normal file
266
src/main/java/com/commafeed/backend/feeds/HtmlEntities.java
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
package com.commafeed.backend.feeds;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.google.gwt.thirdparty.guava.common.collect.Maps;
|
||||||
|
|
||||||
|
public class HtmlEntities {
|
||||||
|
public static final Map<String, String> NUMERIC_MAPPING = Collections.unmodifiableMap(loadMap());
|
||||||
|
|
||||||
|
private static synchronized Map<String, String> loadMap() {
|
||||||
|
Map<String, String> map = Maps.newLinkedHashMap();
|
||||||
|
map.put("Á", "Á");
|
||||||
|
map.put("á", "á");
|
||||||
|
map.put("Â", "Â");
|
||||||
|
map.put("â", "â");
|
||||||
|
map.put("´", "´");
|
||||||
|
map.put("Æ", "Æ");
|
||||||
|
map.put("æ", "æ");
|
||||||
|
map.put("À", "À");
|
||||||
|
map.put("à", "à");
|
||||||
|
map.put("ℵ", "ℵ");
|
||||||
|
map.put("Α", "Α");
|
||||||
|
map.put("α", "α");
|
||||||
|
map.put("&", "&");
|
||||||
|
map.put("∧", "∧");
|
||||||
|
map.put("∠", "∠");
|
||||||
|
map.put("Å", "Å");
|
||||||
|
map.put("å", "å");
|
||||||
|
map.put("≈", "≈");
|
||||||
|
map.put("Ã", "Ã");
|
||||||
|
map.put("ã", "ã");
|
||||||
|
map.put("Ä", "Ä");
|
||||||
|
map.put("ä", "ä");
|
||||||
|
map.put("„", "„");
|
||||||
|
map.put("Β", "Β");
|
||||||
|
map.put("β", "β");
|
||||||
|
map.put("¦", "¦");
|
||||||
|
map.put("•", "•");
|
||||||
|
map.put("∩", "∩");
|
||||||
|
map.put("Ç", "Ç");
|
||||||
|
map.put("ç", "ç");
|
||||||
|
map.put("¸", "¸");
|
||||||
|
map.put("¢", "¢");
|
||||||
|
map.put("Χ", "Χ");
|
||||||
|
map.put("χ", "χ");
|
||||||
|
map.put("ˆ", "ˆ");
|
||||||
|
map.put("♣", "♣");
|
||||||
|
map.put("≅", "≅");
|
||||||
|
map.put("©", "©");
|
||||||
|
map.put("↵", "↵");
|
||||||
|
map.put("∪", "∪");
|
||||||
|
map.put("¤", "¤");
|
||||||
|
map.put("†", "†");
|
||||||
|
map.put("‡", "‡");
|
||||||
|
map.put("↓", "↓");
|
||||||
|
map.put("⇓", "⇓");
|
||||||
|
map.put("°", "°");
|
||||||
|
map.put("Δ", "Δ");
|
||||||
|
map.put("δ", "δ");
|
||||||
|
map.put("♦", "♦");
|
||||||
|
map.put("÷", "÷");
|
||||||
|
map.put("É", "É");
|
||||||
|
map.put("é", "é");
|
||||||
|
map.put("Ê", "Ê");
|
||||||
|
map.put("ê", "ê");
|
||||||
|
map.put("È", "È");
|
||||||
|
map.put("è", "è");
|
||||||
|
map.put("∅", "∅");
|
||||||
|
map.put(" ", " ");
|
||||||
|
map.put(" ", " ");
|
||||||
|
map.put("Ε", "Ε");
|
||||||
|
map.put("ε", "ε");
|
||||||
|
map.put("≡", "≡");
|
||||||
|
map.put("Η", "Η");
|
||||||
|
map.put("η", "η");
|
||||||
|
map.put("Ð", "Ð");
|
||||||
|
map.put("ð", "ð");
|
||||||
|
map.put("Ë", "Ë");
|
||||||
|
map.put("ë", "ë");
|
||||||
|
map.put("€", "€");
|
||||||
|
map.put("∃", "∃");
|
||||||
|
map.put("ƒ", "ƒ");
|
||||||
|
map.put("∀", "∀");
|
||||||
|
map.put("½", "½");
|
||||||
|
map.put("¼", "¼");
|
||||||
|
map.put("¾", "¾");
|
||||||
|
map.put("⁄", "⁄");
|
||||||
|
map.put("Γ", "Γ");
|
||||||
|
map.put("γ", "γ");
|
||||||
|
map.put("≥", "≥");
|
||||||
|
map.put("↔", "↔");
|
||||||
|
map.put("⇔", "⇔");
|
||||||
|
map.put("♥", "♥");
|
||||||
|
map.put("…", "…");
|
||||||
|
map.put("Í", "Í");
|
||||||
|
map.put("í", "í");
|
||||||
|
map.put("Î", "Î");
|
||||||
|
map.put("î", "î");
|
||||||
|
map.put("¡", "¡");
|
||||||
|
map.put("Ì", "Ì");
|
||||||
|
map.put("ì", "ì");
|
||||||
|
map.put("ℑ", "ℑ");
|
||||||
|
map.put("∞", "∞");
|
||||||
|
map.put("∫", "∫");
|
||||||
|
map.put("Ι", "Ι");
|
||||||
|
map.put("ι", "ι");
|
||||||
|
map.put("¿", "¿");
|
||||||
|
map.put("∈", "∈");
|
||||||
|
map.put("Ï", "Ï");
|
||||||
|
map.put("ï", "ï");
|
||||||
|
map.put("Κ", "Κ");
|
||||||
|
map.put("κ", "κ");
|
||||||
|
map.put("Λ", "Λ");
|
||||||
|
map.put("λ", "λ");
|
||||||
|
map.put("⟨", "〈");
|
||||||
|
map.put("«", "«");
|
||||||
|
map.put("←", "←");
|
||||||
|
map.put("⇐", "⇐");
|
||||||
|
map.put("⌈", "⌈");
|
||||||
|
map.put("“", "“");
|
||||||
|
map.put("≤", "≤");
|
||||||
|
map.put("⌊", "⌊");
|
||||||
|
map.put("∗", "∗");
|
||||||
|
map.put("◊", "◊");
|
||||||
|
map.put("‎", "‎");
|
||||||
|
map.put("‹", "‹");
|
||||||
|
map.put("‘", "‘");
|
||||||
|
map.put("¯", "¯");
|
||||||
|
map.put("—", "—");
|
||||||
|
map.put("µ", "µ");
|
||||||
|
map.put("·", "·");
|
||||||
|
map.put("−", "−");
|
||||||
|
map.put("Μ", "Μ");
|
||||||
|
map.put("μ", "μ");
|
||||||
|
map.put("∇", "∇");
|
||||||
|
map.put(" ", " ");
|
||||||
|
map.put("–", "–");
|
||||||
|
map.put("≠", "≠");
|
||||||
|
map.put("∋", "∋");
|
||||||
|
map.put("¬", "¬");
|
||||||
|
map.put("∉", "∉");
|
||||||
|
map.put("⊄", "⊄");
|
||||||
|
map.put("Ñ", "Ñ");
|
||||||
|
map.put("ñ", "ñ");
|
||||||
|
map.put("Ν", "Ν");
|
||||||
|
map.put("ν", "ν");
|
||||||
|
map.put("Ó", "Ó");
|
||||||
|
map.put("ó", "ó");
|
||||||
|
map.put("Ô", "Ô");
|
||||||
|
map.put("ô", "ô");
|
||||||
|
map.put("Œ", "Œ");
|
||||||
|
map.put("œ", "œ");
|
||||||
|
map.put("Ò", "Ò");
|
||||||
|
map.put("ò", "ò");
|
||||||
|
map.put("‾", "‾");
|
||||||
|
map.put("Ω", "Ω");
|
||||||
|
map.put("ω", "ω");
|
||||||
|
map.put("Ο", "Ο");
|
||||||
|
map.put("ο", "ο");
|
||||||
|
map.put("⊕", "⊕");
|
||||||
|
map.put("∨", "∨");
|
||||||
|
map.put("ª", "ª");
|
||||||
|
map.put("º", "º");
|
||||||
|
map.put("Ø", "Ø");
|
||||||
|
map.put("ø", "ø");
|
||||||
|
map.put("Õ", "Õ");
|
||||||
|
map.put("õ", "õ");
|
||||||
|
map.put("⊗", "⊗");
|
||||||
|
map.put("Ö", "Ö");
|
||||||
|
map.put("ö", "ö");
|
||||||
|
map.put("¶", "¶");
|
||||||
|
map.put("∂", "∂");
|
||||||
|
map.put("‰", "‰");
|
||||||
|
map.put("⊥", "⊥");
|
||||||
|
map.put("Φ", "Φ");
|
||||||
|
map.put("φ", "φ");
|
||||||
|
map.put("Π", "Π");
|
||||||
|
map.put("π", "π");
|
||||||
|
map.put("ϖ", "ϖ");
|
||||||
|
map.put("±", "±");
|
||||||
|
map.put("£", "£");
|
||||||
|
map.put("′", "′");
|
||||||
|
map.put("″", "″");
|
||||||
|
map.put("∏", "∏");
|
||||||
|
map.put("∝", "∝");
|
||||||
|
map.put("Ψ", "Ψ");
|
||||||
|
map.put("ψ", "ψ");
|
||||||
|
map.put(""", """);
|
||||||
|
map.put("√", "√");
|
||||||
|
map.put("⟩", "〉");
|
||||||
|
map.put("»", "»");
|
||||||
|
map.put("→", "→");
|
||||||
|
map.put("⇒", "⇒");
|
||||||
|
map.put("⌉", "⌉");
|
||||||
|
map.put("”", "”");
|
||||||
|
map.put("ℜ", "ℜ");
|
||||||
|
map.put("®", "®");
|
||||||
|
map.put("⌋", "⌋");
|
||||||
|
map.put("Ρ", "Ρ");
|
||||||
|
map.put("ρ", "ρ");
|
||||||
|
map.put("‏", "‏");
|
||||||
|
map.put("›", "›");
|
||||||
|
map.put("’", "’");
|
||||||
|
map.put("‚", "‚");
|
||||||
|
map.put("Š", "Š");
|
||||||
|
map.put("š", "š");
|
||||||
|
map.put("⋅", "⋅");
|
||||||
|
map.put("§", "§");
|
||||||
|
map.put("­", "­");
|
||||||
|
map.put("Σ", "Σ");
|
||||||
|
map.put("σ", "σ");
|
||||||
|
map.put("ς", "ς");
|
||||||
|
map.put("∼", "∼");
|
||||||
|
map.put("♠", "♠");
|
||||||
|
map.put("⊂", "⊂");
|
||||||
|
map.put("⊆", "⊆");
|
||||||
|
map.put("∑", "∑");
|
||||||
|
map.put("¹", "¹");
|
||||||
|
map.put("²", "²");
|
||||||
|
map.put("³", "³");
|
||||||
|
map.put("⊃", "⊃");
|
||||||
|
map.put("⊇", "⊇");
|
||||||
|
map.put("ß", "ß");
|
||||||
|
map.put("Τ", "Τ");
|
||||||
|
map.put("τ", "τ");
|
||||||
|
map.put("∴", "∴");
|
||||||
|
map.put("Θ", "Θ");
|
||||||
|
map.put("θ", "θ");
|
||||||
|
map.put("ϑ", "ϑ");
|
||||||
|
map.put(" ", " ");
|
||||||
|
map.put("Þ", "Þ");
|
||||||
|
map.put("þ", "þ");
|
||||||
|
map.put("˜", "˜");
|
||||||
|
map.put("×", "×");
|
||||||
|
map.put("™", "™");
|
||||||
|
map.put("Ú", "Ú");
|
||||||
|
map.put("ú", "ú");
|
||||||
|
map.put("↑", "↑");
|
||||||
|
map.put("⇑", "⇑");
|
||||||
|
map.put("Û", "Û");
|
||||||
|
map.put("û", "û");
|
||||||
|
map.put("Ù", "Ù");
|
||||||
|
map.put("ù", "ù");
|
||||||
|
map.put("¨", "¨");
|
||||||
|
map.put("ϒ", "ϒ");
|
||||||
|
map.put("Υ", "Υ");
|
||||||
|
map.put("υ", "υ");
|
||||||
|
map.put("Ü", "Ü");
|
||||||
|
map.put("ü", "ü");
|
||||||
|
map.put("℘", "℘");
|
||||||
|
map.put("Ξ", "Ξ");
|
||||||
|
map.put("ξ", "ξ");
|
||||||
|
map.put("Ý", "Ý");
|
||||||
|
map.put("ý", "ý");
|
||||||
|
map.put("¥", "¥");
|
||||||
|
map.put("ÿ", "ÿ");
|
||||||
|
map.put("Ÿ", "Ÿ");
|
||||||
|
map.put("Ζ", "Ζ");
|
||||||
|
map.put("ζ", "ζ");
|
||||||
|
map.put("‍", "‍");
|
||||||
|
map.put("‌", "‌");
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -59,7 +59,6 @@ public class UserSettings extends AbstractModel {
|
|||||||
|
|
||||||
private boolean showRead;
|
private boolean showRead;
|
||||||
private boolean scrollMarks;
|
private boolean scrollMarks;
|
||||||
private boolean socialButtons;
|
|
||||||
|
|
||||||
@Column(length = 32)
|
@Column(length = 32)
|
||||||
private String theme;
|
private String theme;
|
||||||
@@ -71,4 +70,15 @@ public class UserSettings extends AbstractModel {
|
|||||||
@Column(name = "scroll_speed")
|
@Column(name = "scroll_speed")
|
||||||
private int scrollSpeed;
|
private int scrollSpeed;
|
||||||
|
|
||||||
|
private boolean email;
|
||||||
|
private boolean gmail;
|
||||||
|
private boolean facebook;
|
||||||
|
private boolean twitter;
|
||||||
|
private boolean googleplus;
|
||||||
|
private boolean tumblr;
|
||||||
|
private boolean pocket;
|
||||||
|
private boolean instapaper;
|
||||||
|
private boolean buffer;
|
||||||
|
private boolean readability;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,9 +34,14 @@ public class OPMLExporter {
|
|||||||
List<FeedCategory> categories = feedCategoryDAO.findAll(user);
|
List<FeedCategory> categories = feedCategoryDAO.findAll(user);
|
||||||
List<FeedSubscription> subscriptions = feedSubscriptionDAO.findAll(user);
|
List<FeedSubscription> subscriptions = feedSubscriptionDAO.findAll(user);
|
||||||
|
|
||||||
|
// export root categories
|
||||||
for (FeedCategory cat : categories) {
|
for (FeedCategory cat : categories) {
|
||||||
opml.getOutlines().add(buildCategoryOutline(cat, subscriptions));
|
if (cat.getParent() == null) {
|
||||||
|
opml.getOutlines().add(buildCategoryOutline(cat, subscriptions));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// export root subscriptions
|
||||||
for (FeedSubscription sub : subscriptions) {
|
for (FeedSubscription sub : subscriptions) {
|
||||||
if (sub.getCategory() == null) {
|
if (sub.getCategory() == null) {
|
||||||
opml.getOutlines().add(buildSubscriptionOutline(sub));
|
opml.getOutlines().add(buildSubscriptionOutline(sub));
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.commafeed.backend.dao.FeedEntryDAO;
|
|||||||
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
||||||
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
||||||
import com.commafeed.backend.model.Feed;
|
import com.commafeed.backend.model.Feed;
|
||||||
|
import com.commafeed.backend.model.FeedEntry;
|
||||||
import com.commafeed.backend.model.FeedEntryStatus;
|
import com.commafeed.backend.model.FeedEntryStatus;
|
||||||
import com.commafeed.backend.model.FeedSubscription;
|
import com.commafeed.backend.model.FeedSubscription;
|
||||||
|
|
||||||
@@ -46,20 +47,17 @@ public class DatabaseCleaningService {
|
|||||||
@Inject
|
@Inject
|
||||||
ApplicationSettingsService applicationSettingsService;
|
ApplicationSettingsService applicationSettingsService;
|
||||||
|
|
||||||
public long cleanEntriesForFeedsWithoutSubscriptions() {
|
public long cleanEntriesWithoutSubscriptions() {
|
||||||
log.info("cleaning entries for feeds without subscriptions");
|
log.info("cleaning entries without subscriptions");
|
||||||
long total = 0;
|
long total = 0;
|
||||||
int deleted = 0;
|
int deleted = 0;
|
||||||
do {
|
do {
|
||||||
deleted = 0;
|
List<FeedEntry> entries = feedEntryDAO.findWithoutSubscriptions(BATCH_SIZE);
|
||||||
List<Feed> feeds = feedDAO.findWithoutSubscriptions(1);
|
deleted = feedEntryDAO.delete(entries);
|
||||||
for (Feed feed : feeds) {
|
total += deleted;
|
||||||
deleted += feedEntryDAO.delete(feed, BATCH_SIZE);
|
log.info("removed {} entries without subscriptions", total);
|
||||||
total += deleted;
|
|
||||||
log.info("removed {} entries for feeds without subscriptions", total);
|
|
||||||
}
|
|
||||||
} while (deleted != 0);
|
} while (deleted != 0);
|
||||||
log.info("cleanup done: {} entries for feeds without subscriptions deleted", total);
|
log.info("cleanup done: {} entries without subscriptions deleted", total);
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,7 +66,8 @@ public class DatabaseCleaningService {
|
|||||||
long total = 0;
|
long total = 0;
|
||||||
int deleted = 0;
|
int deleted = 0;
|
||||||
do {
|
do {
|
||||||
deleted = feedDAO.delete(feedDAO.findWithoutSubscriptions(1));
|
List<Feed> feeds = feedDAO.findWithoutSubscriptions(BATCH_SIZE);
|
||||||
|
deleted = feedDAO.delete(feeds);
|
||||||
total += deleted;
|
total += deleted;
|
||||||
log.info("removed {} feeds without subscriptions", total);
|
log.info("removed {} feeds without subscriptions", total);
|
||||||
} while (deleted != 0);
|
} while (deleted != 0);
|
||||||
|
|||||||
@@ -41,4 +41,7 @@ public class Entries implements Serializable {
|
|||||||
@ApiProperty("list of entries")
|
@ApiProperty("list of entries")
|
||||||
private List<Entry> entries = Lists.newArrayList();
|
private List<Entry> entries = Lists.newArrayList();
|
||||||
|
|
||||||
|
@ApiProperty("if true, the unread flag was ignored in the request, all entries are returned regardless of their read status")
|
||||||
|
private boolean ignoredReadStatus;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,9 +27,6 @@ public class Settings implements Serializable {
|
|||||||
@ApiProperty(value = "user wants category and feeds with no unread entries shown", required = true)
|
@ApiProperty(value = "user wants category and feeds with no unread entries shown", required = true)
|
||||||
private boolean showRead;
|
private boolean showRead;
|
||||||
|
|
||||||
@ApiProperty(value = "user wants social buttons (facebook, twitter, ...) shown", required = true)
|
|
||||||
private boolean socialButtons;
|
|
||||||
|
|
||||||
@ApiProperty(value = "In expanded view, scroll through entries mark them as read", required = true)
|
@ApiProperty(value = "In expanded view, scroll through entries mark them as read", required = true)
|
||||||
private boolean scrollMarks;
|
private boolean scrollMarks;
|
||||||
|
|
||||||
@@ -42,4 +39,15 @@ public class Settings implements Serializable {
|
|||||||
@ApiProperty(value = "user's preferred scroll speed when navigating between entries")
|
@ApiProperty(value = "user's preferred scroll speed when navigating between entries")
|
||||||
private int scrollSpeed;
|
private int scrollSpeed;
|
||||||
|
|
||||||
|
private boolean email;
|
||||||
|
private boolean gmail;
|
||||||
|
private boolean facebook;
|
||||||
|
private boolean twitter;
|
||||||
|
private boolean googleplus;
|
||||||
|
private boolean tumblr;
|
||||||
|
private boolean pocket;
|
||||||
|
private boolean instapaper;
|
||||||
|
private boolean buffer;
|
||||||
|
private boolean readability;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.commafeed.frontend.resources;
|
||||||
|
|
||||||
|
import ro.isdc.wro.model.resource.processor.impl.css.CssUrlRewritingProcessor;
|
||||||
|
|
||||||
|
public class CustomCssUrlRewritingProcessor extends CssUrlRewritingProcessor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ignore webjar image replacements since they won't be available at runtime anyway
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected String replaceImageUrl(String cssUri, String imageUrl) {
|
||||||
|
if (cssUri.startsWith("webjar:")) {
|
||||||
|
return imageUrl;
|
||||||
|
}
|
||||||
|
return super.replaceImageUrl(cssUri, imageUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ public class WroAdditionalProvider implements ProcessorProvider {
|
|||||||
map.put("sassOnlyProcessor", new SassOnlyProcessor());
|
map.put("sassOnlyProcessor", new SassOnlyProcessor());
|
||||||
map.put("sassImport", new SassImportProcessor());
|
map.put("sassImport", new SassImportProcessor());
|
||||||
map.put("timestamp", new TimestampProcessor());
|
map.put("timestamp", new TimestampProcessor());
|
||||||
|
map.put("cssUrlRewriting", new CustomCssUrlRewritingProcessor());
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public class WroManagerFactory extends ConfigurableWroManagerFactory {
|
|||||||
map.put("sassOnlyProcessor", new SassOnlyProcessor());
|
map.put("sassOnlyProcessor", new SassOnlyProcessor());
|
||||||
map.put("sassImport", new SassImportProcessor());
|
map.put("sassImport", new SassImportProcessor());
|
||||||
map.put("timestamp", new TimestampProcessor());
|
map.put("timestamp", new TimestampProcessor());
|
||||||
|
map.put("cssUrlRewriting", new CustomCssUrlRewritingProcessor());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,15 +2,12 @@ package com.commafeed.frontend.rest.resources;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.ws.rs.DefaultValue;
|
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.POST;
|
import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.QueryParam;
|
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import javax.ws.rs.core.Response.Status;
|
import javax.ws.rs.core.Response.Status;
|
||||||
|
|
||||||
@@ -227,9 +224,18 @@ public class AdminREST extends AbstractREST {
|
|||||||
return Response.ok(metrics).build();
|
return Response.ok(metrics).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Path("/cleanup/entries")
|
||||||
|
@GET
|
||||||
|
@ApiOperation(value = "Entries cleanup", notes = "Delete entries without subscriptions")
|
||||||
|
public Response cleanupEntries() {
|
||||||
|
Map<String, Long> map = Maps.newHashMap();
|
||||||
|
map.put("entries_without_subscriptions", cleaner.cleanEntriesWithoutSubscriptions());
|
||||||
|
return Response.ok(map).build();
|
||||||
|
}
|
||||||
|
|
||||||
@Path("/cleanup/feeds")
|
@Path("/cleanup/feeds")
|
||||||
@GET
|
@GET
|
||||||
@ApiOperation(value = "Feeds cleanup", notes = "Delete feeds without subscriptions and entries without feeds")
|
@ApiOperation(value = "Feeds cleanup", notes = "Delete feeds without subscriptions")
|
||||||
public Response cleanupFeeds() {
|
public Response cleanupFeeds() {
|
||||||
Map<String, Long> map = Maps.newHashMap();
|
Map<String, Long> map = Maps.newHashMap();
|
||||||
map.put("feeds_without_subscriptions", cleaner.cleanFeedsWithoutSubscriptions());
|
map.put("feeds_without_subscriptions", cleaner.cleanFeedsWithoutSubscriptions());
|
||||||
@@ -245,12 +251,4 @@ public class AdminREST extends AbstractREST {
|
|||||||
return Response.ok(map).build();
|
return Response.ok(map).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Path("/cleanup/entries")
|
|
||||||
@GET
|
|
||||||
@ApiOperation(value = "Entries cleanup", notes = "Delete entries older than given date")
|
|
||||||
public Response cleanupEntries(@QueryParam("days") @DefaultValue("30") int days) {
|
|
||||||
Map<String, Long> map = Maps.newHashMap();
|
|
||||||
map.put("old_entries", cleaner.cleanEntriesOlderThan(days, TimeUnit.DAYS));
|
|
||||||
return Response.ok(map).build();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,6 +183,7 @@ public class CategoryREST extends AbstractREST {
|
|||||||
}
|
}
|
||||||
|
|
||||||
entries.setTimestamp(System.currentTimeMillis());
|
entries.setTimestamp(System.currentTimeMillis());
|
||||||
|
entries.setIgnoredReadStatus(STARRED.equals(id) || keywords != null || tag != null);
|
||||||
FeedUtils.removeUnwantedFromSearch(entries.getEntries(), keywords);
|
FeedUtils.removeUnwantedFromSearch(entries.getEntries(), keywords);
|
||||||
return Response.ok(entries).build();
|
return Response.ok(entries).build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ public class FeedREST extends AbstractREST {
|
|||||||
}
|
}
|
||||||
|
|
||||||
entries.setTimestamp(System.currentTimeMillis());
|
entries.setTimestamp(System.currentTimeMillis());
|
||||||
|
entries.setIgnoredReadStatus(keywords != null);
|
||||||
FeedUtils.removeUnwantedFromSearch(entries.getEntries(), keywords);
|
FeedUtils.removeUnwantedFromSearch(entries.getEntries(), keywords);
|
||||||
return Response.ok(entries).build();
|
return Response.ok(entries).build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,18 @@ public class UserREST extends AbstractREST {
|
|||||||
s.setReadingOrder(settings.getReadingOrder().name());
|
s.setReadingOrder(settings.getReadingOrder().name());
|
||||||
s.setViewMode(settings.getViewMode().name());
|
s.setViewMode(settings.getViewMode().name());
|
||||||
s.setShowRead(settings.isShowRead());
|
s.setShowRead(settings.isShowRead());
|
||||||
s.setSocialButtons(settings.isSocialButtons());
|
|
||||||
|
s.setEmail(settings.isEmail());
|
||||||
|
s.setGmail(settings.isGmail());
|
||||||
|
s.setFacebook(settings.isFacebook());
|
||||||
|
s.setTwitter(settings.isTwitter());
|
||||||
|
s.setGoogleplus(settings.isGoogleplus());
|
||||||
|
s.setTumblr(settings.isTumblr());
|
||||||
|
s.setPocket(settings.isPocket());
|
||||||
|
s.setInstapaper(settings.isInstapaper());
|
||||||
|
s.setBuffer(settings.isBuffer());
|
||||||
|
s.setReadability(settings.isReadability());
|
||||||
|
|
||||||
s.setScrollMarks(settings.isScrollMarks());
|
s.setScrollMarks(settings.isScrollMarks());
|
||||||
s.setTheme(settings.getTheme());
|
s.setTheme(settings.getTheme());
|
||||||
s.setCustomCss(settings.getCustomCss());
|
s.setCustomCss(settings.getCustomCss());
|
||||||
@@ -86,7 +97,18 @@ public class UserREST extends AbstractREST {
|
|||||||
s.setViewMode(ViewMode.title.name());
|
s.setViewMode(ViewMode.title.name());
|
||||||
s.setShowRead(true);
|
s.setShowRead(true);
|
||||||
s.setTheme("default");
|
s.setTheme("default");
|
||||||
s.setSocialButtons(true);
|
|
||||||
|
s.setEmail(true);
|
||||||
|
s.setGmail(true);
|
||||||
|
s.setFacebook(true);
|
||||||
|
s.setTwitter(true);
|
||||||
|
s.setGoogleplus(true);
|
||||||
|
s.setTumblr(true);
|
||||||
|
s.setPocket(true);
|
||||||
|
s.setInstapaper(true);
|
||||||
|
s.setBuffer(true);
|
||||||
|
s.setReadability(true);
|
||||||
|
|
||||||
s.setScrollMarks(true);
|
s.setScrollMarks(true);
|
||||||
s.setLanguage("en");
|
s.setLanguage("en");
|
||||||
s.setScrollSpeed(400);
|
s.setScrollSpeed(400);
|
||||||
@@ -116,9 +138,20 @@ public class UserREST extends AbstractREST {
|
|||||||
s.setScrollMarks(settings.isScrollMarks());
|
s.setScrollMarks(settings.isScrollMarks());
|
||||||
s.setTheme(settings.getTheme());
|
s.setTheme(settings.getTheme());
|
||||||
s.setCustomCss(settings.getCustomCss());
|
s.setCustomCss(settings.getCustomCss());
|
||||||
s.setSocialButtons(settings.isSocialButtons());
|
|
||||||
s.setLanguage(settings.getLanguage());
|
s.setLanguage(settings.getLanguage());
|
||||||
s.setScrollSpeed(settings.getScrollSpeed());
|
s.setScrollSpeed(settings.getScrollSpeed());
|
||||||
|
|
||||||
|
s.setEmail(settings.isEmail());
|
||||||
|
s.setGmail(settings.isGmail());
|
||||||
|
s.setFacebook(settings.isFacebook());
|
||||||
|
s.setTwitter(settings.isTwitter());
|
||||||
|
s.setGoogleplus(settings.isGoogleplus());
|
||||||
|
s.setTumblr(settings.isTumblr());
|
||||||
|
s.setPocket(settings.isPocket());
|
||||||
|
s.setInstapaper(settings.isInstapaper());
|
||||||
|
s.setBuffer(settings.isBuffer());
|
||||||
|
s.setReadability(settings.isReadability());
|
||||||
|
|
||||||
userSettingsDAO.saveOrUpdate(s);
|
userSettingsDAO.saveOrUpdate(s);
|
||||||
return Response.ok().build();
|
return Response.ok().build();
|
||||||
|
|
||||||
|
|||||||
53
src/main/resources/changelogs/db.changelog-1.5.xml
Normal file
53
src/main/resources/changelogs/db.changelog-1.5.xml
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
|
|
||||||
|
<changeSet id="add-detailed-social-options" author="athou">
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="email" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="gmail" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="facebook" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="twitter" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="googleplus" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="tumblr" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="pocket" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="instapaper" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="buffer" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
<addColumn tableName="USERSETTINGS">
|
||||||
|
<column name="readability" type="BIT"></column>
|
||||||
|
</addColumn>
|
||||||
|
|
||||||
|
<dropColumn tableName="USERSETTINGS" columnName="socialButtons" />
|
||||||
|
|
||||||
|
<update tableName="USERSETTINGS">
|
||||||
|
<column name="email" valueBoolean="true"></column>
|
||||||
|
<column name="gmail" valueBoolean="true"></column>
|
||||||
|
<column name="facebook" valueBoolean="true"></column>
|
||||||
|
<column name="twitter" valueBoolean="true"></column>
|
||||||
|
<column name="googleplus" valueBoolean="true"></column>
|
||||||
|
<column name="tumblr" valueBoolean="true"></column>
|
||||||
|
<column name="pocket" valueBoolean="true"></column>
|
||||||
|
<column name="instapaper" valueBoolean="true"></column>
|
||||||
|
<column name="buffer" valueBoolean="true"></column>
|
||||||
|
<column name="readability" valueBoolean="true"></column>
|
||||||
|
</update>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
</databaseChangeLog>
|
||||||
@@ -8,5 +8,6 @@
|
|||||||
<include file="changelogs/db.changelog-1.2.xml" />
|
<include file="changelogs/db.changelog-1.2.xml" />
|
||||||
<include file="changelogs/db.changelog-1.3.xml" />
|
<include file="changelogs/db.changelog-1.3.xml" />
|
||||||
<include file="changelogs/db.changelog-1.4.xml" />
|
<include file="changelogs/db.changelog-1.4.xml" />
|
||||||
|
<include file="changelogs/db.changelog-1.5.xml" />
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
156
src/main/resources/i18n/ca.properties
Normal file
156
src/main/resources/i18n/ca.properties
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
global.save=Desa
|
||||||
|
global.cancel=Cancel·la
|
||||||
|
global.delete=Esborra
|
||||||
|
global.required=Requerit
|
||||||
|
global.download=Descarrega
|
||||||
|
global.link=Enllaç
|
||||||
|
global.bookmark=Adreça d'interès
|
||||||
|
global.close=Tancar
|
||||||
|
global.tags=Etiquetes
|
||||||
|
|
||||||
|
tree.subscribe=Subscriure
|
||||||
|
tree.import=Importa
|
||||||
|
tree.new_category=Nova categoria
|
||||||
|
tree.all=Tot
|
||||||
|
tree.starred=Destacats
|
||||||
|
|
||||||
|
subscribe.feed_url=URL del canal
|
||||||
|
subscribe.feed_name=Nom del canal
|
||||||
|
subscribe.category=Categoria
|
||||||
|
|
||||||
|
import.google_reader_prefix=Importaré els canals del teu
|
||||||
|
import.google_reader_suffix= compte.
|
||||||
|
import.google_download=O be, carrega el teu fitxer subscriptions.xml.
|
||||||
|
import.google_download_link=Descarrega'l d'aquí.
|
||||||
|
import.xml_file=Fitxer OPML
|
||||||
|
|
||||||
|
new_category.name=Nom
|
||||||
|
new_category.parent=Arrel
|
||||||
|
|
||||||
|
toolbar.unread=Per llegir
|
||||||
|
toolbar.all=Tots
|
||||||
|
toolbar.previous_entry=Entrada prèvia
|
||||||
|
toolbar.next_entry=Entrada següent
|
||||||
|
toolbar.refresh=Actualitzar
|
||||||
|
toolbar.refresh_all=Força l'actualització de tots els canals
|
||||||
|
toolbar.sort_by_asc_desc=Ordenar per data asc/desc
|
||||||
|
toolbar.titles_only=Només títols
|
||||||
|
toolbar.expanded_view=Vista ampliada
|
||||||
|
toolbar.mark_all_as_read=Marcar tots llegits
|
||||||
|
toolbar.mark_all_older_12_hours=Ítems més vells de 12 hores
|
||||||
|
toolbar.mark_all_older_day=Ítems més vells d'un dia
|
||||||
|
toolbar.mark_all_older_week=Ítems més vells d'una setmana
|
||||||
|
toolbar.mark_all_older_two_weeks=Ítems més vells de dues setmanes
|
||||||
|
toolbar.settings=Configuració
|
||||||
|
toolbar.profile=Perfil
|
||||||
|
toolbar.admin=Admin
|
||||||
|
toolbar.about=Quant a
|
||||||
|
toolbar.logout=Desconnecta't
|
||||||
|
toolbar.donate=Donació
|
||||||
|
|
||||||
|
view.entry_source=de
|
||||||
|
view.entry_author=per
|
||||||
|
view.error_while_loading_feed=Error carregant el canal
|
||||||
|
view.keep_unread=Conserva com a no llegit
|
||||||
|
view.no_unread_items=no té ítems sense llegir.
|
||||||
|
view.mark_up_to_here=Marcar com a llegit fins aquí
|
||||||
|
view.search_for=cercant:
|
||||||
|
view.no_search_results=No hi ha coincidències per les paraules clau sol·licitades
|
||||||
|
|
||||||
|
feedsearch.hint=Introdueix una subscripció...
|
||||||
|
feedsearch.help=Utilitza la tecla de retorn per seleccionar i les tecles de cursor per navegar.
|
||||||
|
feedsearch.result_prefix=Les teves subscripcions:
|
||||||
|
|
||||||
|
settings.general=General
|
||||||
|
settings.general.language=Idioma
|
||||||
|
settings.general.language.contribute=Contribueix amb traduccions
|
||||||
|
settings.general.show_unread=Mostrar canals i categories amb entrades sense llegir
|
||||||
|
settings.general.social_buttons=Mostrar botons per compartir en xarxes socials
|
||||||
|
settings.general.scroll_marks=A la vista ampliada si et desplaces per les entrades les marques com a llegides
|
||||||
|
settings.appearance=Aparença
|
||||||
|
settings.scroll_speed=Velocitat de desplaçament quan navegues entre entrades (en mil·lisegons)
|
||||||
|
settings.scroll_speed.help=Fixa a 0 per desactivar
|
||||||
|
settings.theme=Tema
|
||||||
|
settings.submit_your_theme=Envia un tema
|
||||||
|
settings.custom_css=CSS personalitzat
|
||||||
|
|
||||||
|
details.feed_details=Detalls del canal
|
||||||
|
details.url=URL
|
||||||
|
details.website=Lloc web
|
||||||
|
details.name=Nom
|
||||||
|
details.category=Categoria
|
||||||
|
details.position=Posició
|
||||||
|
details.last_refresh=Darrera actualització
|
||||||
|
details.message=Darrer missatge d'actualització
|
||||||
|
details.next_refresh=Propera actualització
|
||||||
|
details.queued_for_refresh=A la cua d'actualització
|
||||||
|
details.feed_url=URL del canal
|
||||||
|
details.generate_api_key_first=Abans cal que generis una clau API en el teu perfil.
|
||||||
|
details.unsubscribe=Cancel·la la subscripció
|
||||||
|
details.unsubscribe_confirmation=Segur que vols cancel·lar la subscripció del canal?
|
||||||
|
details.delete_category_confirmation=Segur que vols esborrar la categoria?
|
||||||
|
details.category_details=Detalls de la categoria
|
||||||
|
details.tag_details=Detalls de l'etiqueta
|
||||||
|
details.parent_category=Categoria arrel
|
||||||
|
|
||||||
|
profile.user_name=Nom d'usuari
|
||||||
|
profile.email=Adreça electrònica
|
||||||
|
profile.change_password=Canvia la contrasenya
|
||||||
|
profile.confirm_password=Confirma la contrasenya
|
||||||
|
profile.minimum_6_chars=Mínim de 6 caracters
|
||||||
|
profile.passwords_do_not_match=Les contrasenyes no coincideixen
|
||||||
|
profile.api_key=Clau API
|
||||||
|
profile.api_key_not_generated=Encara no s'ha generat
|
||||||
|
profile.generate_new_api_key=Genera una nova clau API
|
||||||
|
profile.generate_new_api_key_info=El canvi de contrasenya generarà una nova clau API
|
||||||
|
profile.opml_export=Exporta OPML
|
||||||
|
profile.delete_account=Esborra el compte
|
||||||
|
profile.delete_account_confirmation=Vols esborrar el teu compte? No ho podràs desfer!
|
||||||
|
|
||||||
|
about.rest_api=REST API
|
||||||
|
about.keyboard_shortcuts=Dreceres de teclat
|
||||||
|
about.version=Versió de CommaFeed
|
||||||
|
about.line1_prefix=CommaFeed és un projecte de codi font obert. El codi font és hostatjat a
|
||||||
|
about.line1_suffix=.
|
||||||
|
about.line2_prefix=Si trobes un problema, si us plau informa'n a la pàgina de problemes del
|
||||||
|
about.line2_suffix=\ projecte.
|
||||||
|
about.line3=Si t'agrada el projecte, pensa en fer un donatiu per recolzar el desenvolupador i per ajudar amb les despeses de l'hostatge del lloc web.
|
||||||
|
about.line4=I pels que preferiu bitcoin, aquí teniu l'adreça
|
||||||
|
about.goodies=Afegitons
|
||||||
|
about.goodies.android_app=App Android
|
||||||
|
about.goodies.subscribe_url=URL de subscripció
|
||||||
|
about.goodies.chrome_extension=Extensió del Chrome
|
||||||
|
about.goodies.firefox_extension=Extensió del Firefox
|
||||||
|
about.goodies.opera_extension=Extensió de l'Opera
|
||||||
|
about.goodies.subscribe_bookmarklet=Afegeix bookmarklet de subscripció (clica)
|
||||||
|
about.goodies.subscribe_bookmarklet_asc=Primer els vells
|
||||||
|
about.goodies.subscribe_bookmarklet_desc=Primer els nous
|
||||||
|
about.goodies.next_unread_bookmarklet=Bookmarklet del proper ítem sense llegir (arrosega a la barra d'adreces d'interès)
|
||||||
|
about.translation=Traducció
|
||||||
|
about.translation.message=Necessitem la teva ajuda per traduir CommaFeed.
|
||||||
|
about.translation.link=Informació per contribuir amb traduccions.
|
||||||
|
about.announcements=Anuncis
|
||||||
|
about.rest_api.line1=CommaFeed funciona amb JAX-RS i AngularJS. Per tant, té disponible una API REST.
|
||||||
|
about.rest_api.link_to_documentation=Enllaç a la documentació.
|
||||||
|
|
||||||
|
about.shortcuts.mouse_middleclick=Clic amb el botó del mig
|
||||||
|
about.shortcuts.open_next_entry=obrir entrada següent
|
||||||
|
about.shortcuts.open_previous_entry=obrir entrada prèvia
|
||||||
|
about.shortcuts.spacebar=espai/majúscula+espai
|
||||||
|
about.shortcuts.move_page_down_up=mou la pàgina avall/amunt
|
||||||
|
about.shortcuts.focus_next_entry=fixa el focus en l'entrada següent entrada sense obrir-la
|
||||||
|
about.shortcuts.focus_previous_entry=fixa el focus en l'entrada prèvia sense obrir-la
|
||||||
|
about.shortcuts.open_next_feed=obrir canal o categoria següent
|
||||||
|
about.shortcuts.open_previous_feed=obrir canal o categoria prèvia
|
||||||
|
about.shortcuts.open_close_current_entry=obre/tanca entrada actual
|
||||||
|
about.shortcuts.open_current_entry_in_new_window=obrir entrada actual en una finestra nova
|
||||||
|
about.shortcuts.open_current_entry_in_new_window_background=obrir entrada actual en una finestra nova en segon pla
|
||||||
|
about.shortcuts.star_unstar=destacar/treure destacat a l'entrada actual
|
||||||
|
about.shortcuts.mark_current_entry=marcar com a llegida/no llegida l'entrada actual
|
||||||
|
about.shortcuts.mark_all_as_read=marcar totes les entrades com a llegides
|
||||||
|
about.shortcuts.open_in_new_tab_mark_as_read=obrir entrada en una pestanya nova i marcar com a llegida
|
||||||
|
about.shortcuts.fullscreen=commutar el mode de pantalla completa
|
||||||
|
about.shortcuts.font_size=incrementar/reduir la mida de la font de l'entrada actual
|
||||||
|
about.shortcuts.go_to_all=anar a la vista de Tot
|
||||||
|
about.shortcuts.go_to_starred=anar a la vista de Destacats
|
||||||
|
about.shortcuts.feed_search=navegar a una subscripció introduint-ne el nom
|
||||||
@@ -6,7 +6,7 @@ global.download=Herunterladen
|
|||||||
global.link=Link
|
global.link=Link
|
||||||
global.bookmark=Lesezeichen
|
global.bookmark=Lesezeichen
|
||||||
global.close=Schließen
|
global.close=Schließen
|
||||||
global.tags=Tags ####### Needs translation
|
global.tags=Tags
|
||||||
|
|
||||||
tree.subscribe=Abonnieren
|
tree.subscribe=Abonnieren
|
||||||
tree.import=Importieren
|
tree.import=Importieren
|
||||||
@@ -68,8 +68,8 @@ settings.general.show_unread=Zeige Feeds und Kategorien mit ungelesenen Einträg
|
|||||||
settings.general.social_buttons=Zeige Buttons zum Teilen von Inhalten über soziale Netzwerke
|
settings.general.social_buttons=Zeige Buttons zum Teilen von Inhalten über soziale Netzwerke
|
||||||
settings.general.scroll_marks=In der ausgedehnten Ansicht werden Artikel beim Scrollen als gelesen markiert
|
settings.general.scroll_marks=In der ausgedehnten Ansicht werden Artikel beim Scrollen als gelesen markiert
|
||||||
settings.appearance=Aussehen
|
settings.appearance=Aussehen
|
||||||
settings.scroll_speed=Scrolling speed when navigating between entries (in milliseconds) ####### Needs translation
|
settings.scroll_speed=Geschwindigkeit beim scrollen zwischen Einträgen (in Millisekunden)
|
||||||
settings.scroll_speed.help=set to 0 to disable ####### Needs translation
|
settings.scroll_speed.help=setze auf 0 zum deaktivieren
|
||||||
settings.theme=Theme
|
settings.theme=Theme
|
||||||
settings.submit_your_theme=Füg dein Theme hinzu
|
settings.submit_your_theme=Füg dein Theme hinzu
|
||||||
settings.custom_css=Eigenes CSS
|
settings.custom_css=Eigenes CSS
|
||||||
@@ -87,10 +87,10 @@ details.queued_for_refresh=Wartet auf Aktualisierung
|
|||||||
details.feed_url=Feed Adresse
|
details.feed_url=Feed Adresse
|
||||||
details.generate_api_key_first=Generiere zuerst einen API Schlüssel in deinem Profil.
|
details.generate_api_key_first=Generiere zuerst einen API Schlüssel in deinem Profil.
|
||||||
details.unsubscribe=Kündigen
|
details.unsubscribe=Kündigen
|
||||||
details.unsubscribe_confirmation=Are you sure you want to unsubscribe from this feed? ####### Needs translation
|
details.unsubscribe_confirmation=Bist du sicher das du diesen Feed kündigen möchtest?
|
||||||
details.delete_category_confirmation=Are you sure you want to delete this category? ####### Needs translation
|
details.delete_category_confirmation=Bist du sicher das du diese Kategorie löschen möchtest?
|
||||||
details.category_details=Kategoriedetails
|
details.category_details=Kategoriedetails
|
||||||
details.tag_details=Tag details ####### Needs translation
|
details.tag_details=Tag Details
|
||||||
details.parent_category=Übergeordnete Kategorie
|
details.parent_category=Übergeordnete Kategorie
|
||||||
|
|
||||||
profile.user_name=Benutzername
|
profile.user_name=Benutzername
|
||||||
@@ -104,8 +104,8 @@ profile.api_key_not_generated=Noch nicht generiert
|
|||||||
profile.generate_new_api_key=Generiere einen neuen API key
|
profile.generate_new_api_key=Generiere einen neuen API key
|
||||||
profile.generate_new_api_key_info=Das Ändern des Passwortes erzeugt einen neuen API Schlüssel
|
profile.generate_new_api_key_info=Das Ändern des Passwortes erzeugt einen neuen API Schlüssel
|
||||||
profile.opml_export=OPML exportieren
|
profile.opml_export=OPML exportieren
|
||||||
profile.delete_account=Lösche den Account
|
profile.delete_account=Account löschen
|
||||||
profile.delete_account_confirmation=Delete your acount? There's no turning back! ####### Needs translation
|
profile.delete_account_confirmation=Deinen Account löschen? Es gibt kein Zurück!
|
||||||
|
|
||||||
about.rest_api=REST API
|
about.rest_api=REST API
|
||||||
about.keyboard_shortcuts=Tastatur Kurzbefehle
|
about.keyboard_shortcuts=Tastatur Kurzbefehle
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
ar=العربية
|
ar=العربية
|
||||||
|
ca=Català
|
||||||
en=English
|
en=English
|
||||||
es=Español
|
es=Español
|
||||||
de=Deutsch
|
de=Deutsch
|
||||||
|
|||||||
@@ -2,31 +2,51 @@
|
|||||||
<groups xmlns="http://www.isdc.ro/wro">
|
<groups xmlns="http://www.isdc.ro/wro">
|
||||||
|
|
||||||
<group name="lib">
|
<group name="lib">
|
||||||
<js minimize="false">/vendor/jquery/*.js</js>
|
<js minimize="false">webjar:lodash.min.js</js>
|
||||||
<js minimize="false">/vendor/select2/*.js</js>
|
|
||||||
<js minimize="false">/vendor/lodash/*.js</js>
|
|
||||||
<js minimize="false">/vendor/jqueryui/*.js</js>
|
|
||||||
<js minimize="false">/vendor/jquery-mousewheel/*.js</js>
|
|
||||||
<js minimize="false">/vendor/bootstrap/*.js</js>
|
|
||||||
<js minimize="false">/vendor/angularjs/*.js</js>
|
|
||||||
<js minimize="false">/vendor/ui-utils/*.js</js>
|
|
||||||
<js minimize="false">/vendor/ui-select2/*.js</js>
|
|
||||||
<js minimize="false">/vendor/ui-bootstrap/*.js</js>
|
|
||||||
<js minimize="false">/vendor/ui-router/*.js</js>
|
|
||||||
<js minimize="false">/vendor/mousetrap/*.js</js>
|
|
||||||
<js minimize="false">/vendor/nggrid/*.js</js>
|
|
||||||
<js minimize="false">/vendor/nginfinitescroll/*.js</js>
|
|
||||||
<js minimize="false">/vendor/spinjs/*.js</js>
|
|
||||||
<js minimize="false">/vendor/momentjs/*.js</js>
|
|
||||||
<js minimize="false">/vendor/devicejs/*.js</js>
|
|
||||||
|
|
||||||
|
<js minimize="false">webjar:jquery/1.11.0/jquery.min.js</js>
|
||||||
|
<js>webjar:jquery.mousewheel.js</js>
|
||||||
|
|
||||||
|
<js minimize="false">/vendor/jqueryui/*.js</js>
|
||||||
<css minimize="false">/vendor/jqueryui/*.css</css>
|
<css minimize="false">/vendor/jqueryui/*.css</css>
|
||||||
<css minimize="false">/vendor/select2/*.css</css>
|
|
||||||
<css minimize="false">/vendor/bootstrap/*.css</css>
|
<js minimize="false">webjar:bootstrap.min.js</js>
|
||||||
|
<css minimize="false">webjar:bootstrap.min.css</css>
|
||||||
|
|
||||||
<css minimize="false">/vendor/fontawesome/css/*.css</css>
|
<css minimize="false">/vendor/fontawesome/css/*.css</css>
|
||||||
<css minimize="false">/vendor/zocial/*.css</css>
|
|
||||||
<css minimize="false">/vendor/readabilicons/css/*.css</css>
|
<js minimize="false">/vendor/select2/*.js</js>
|
||||||
<css minimize="false">/vendor/nggrid/*.css</css>
|
<css>/vendor/select2/*.css</css>
|
||||||
|
|
||||||
|
<js minimize="false">webjar:mousetrap.min.js</js>
|
||||||
|
|
||||||
|
<js minimize="false">webjar:device.min.js</js>
|
||||||
|
|
||||||
|
<js minimize="false">webjar:moment.min.js</js>
|
||||||
|
<js minimize="false">webjar:langs.min.js</js>
|
||||||
|
|
||||||
|
<js minimize="false">webjar:angular.min.js</js>
|
||||||
|
<js minimize="false">webjar:angular-resource.min.js</js>
|
||||||
|
<js minimize="false">webjar:angular-route.min.js</js>
|
||||||
|
<js minimize="false">webjar:angular-sanitize.min.js</js>
|
||||||
|
<js minimize="false">webjar:angular-touch.min.js</js>
|
||||||
|
<js minimize="false">webjar:angular-animate.min.js</js>
|
||||||
|
|
||||||
|
<js minimize="false">webjar:angular-ui-router.min.js</js>
|
||||||
|
<js minimize="false">webjar:ui-utils.min.js</js>
|
||||||
|
<js>webjar:ui-select2.js</js>
|
||||||
|
<js minimize="false">webjar:ui-bootstrap-tpls.min.js</js>
|
||||||
|
<js minimize="false">webjar:ng-infinite-scroll.min.js</js>
|
||||||
|
|
||||||
|
<js minimize="false">webjar:ng-grid.min.js</js>
|
||||||
|
<css minimize="false">webjar:ng-grid.min.css</css>
|
||||||
|
|
||||||
|
<js>/vendor/angular-loading-bar/loading-bar.0.4.0.min.js</js>
|
||||||
|
<css minimize="false">/vendor/angular-loading-bar/loading-bar.min.css</css>
|
||||||
|
|
||||||
|
<css>/vendor/zocial/*.css</css>
|
||||||
|
|
||||||
|
<css>/vendor/readabilicons/css/*.css</css>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<group name="app">
|
<group name="app">
|
||||||
|
|||||||
@@ -52,9 +52,11 @@ module.controller('SubscribeCtrl', ['$scope', '$location', 'FeedService', 'Categ
|
|||||||
$scope.state = 'ok';
|
$scope.state = 'ok';
|
||||||
$scope.sub.title = data.title;
|
$scope.sub.title = data.title;
|
||||||
$scope.sub.url = data.url;
|
$scope.sub.url = data.url;
|
||||||
|
$scope.stacktrace = null;
|
||||||
}, function(data) {
|
}, function(data) {
|
||||||
$scope.state = 'failed';
|
$scope.state = 'failed';
|
||||||
$scope.sub.title = 'Loading failed. Invalid feed?';
|
$scope.sub.title = 'Loading failed. Invalid feed?';
|
||||||
|
$scope.stacktrace = data.data;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -194,7 +196,7 @@ module.controller('CategoryTreeCtrl', [
|
|||||||
$scope.$watch(rootUnreadCount, function(value) {
|
$scope.$watch(rootUnreadCount, function(value) {
|
||||||
var label = 'CommaFeed';
|
var label = 'CommaFeed';
|
||||||
if (value > 0) {
|
if (value > 0) {
|
||||||
label = value + ' - ' + label;
|
label = '(' + value + ') ' + label;
|
||||||
}
|
}
|
||||||
$window.document.title = label;
|
$window.document.title = label;
|
||||||
});
|
});
|
||||||
@@ -428,7 +430,6 @@ module.controller('TagDetailsCtrl', ['$scope', '$state', '$stateParams', 'FeedSe
|
|||||||
|
|
||||||
module.controller('ToolbarCtrl', [
|
module.controller('ToolbarCtrl', [
|
||||||
'$scope',
|
'$scope',
|
||||||
'$http',
|
|
||||||
'$state',
|
'$state',
|
||||||
'$stateParams',
|
'$stateParams',
|
||||||
'$route',
|
'$route',
|
||||||
@@ -440,24 +441,15 @@ module.controller('ToolbarCtrl', [
|
|||||||
'ServerService',
|
'ServerService',
|
||||||
'FeedService',
|
'FeedService',
|
||||||
'MobileService',
|
'MobileService',
|
||||||
function($scope, $http, $state, $stateParams, $route, $location, SettingsService, EntryService, ProfileService, AnalyticsService,
|
function($scope, $state, $stateParams, $route, $location, SettingsService, EntryService, ProfileService, AnalyticsService,
|
||||||
ServerService, FeedService, MobileService) {
|
ServerService, FeedService, MobileService) {
|
||||||
|
|
||||||
function totalActiveAjaxRequests() {
|
|
||||||
return ($http.pendingRequests.length + $.active);
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.keywords = $location.search().q;
|
$scope.keywords = $location.search().q;
|
||||||
$scope.session = ProfileService.get();
|
$scope.session = ProfileService.get();
|
||||||
$scope.ServerService = ServerService.get();
|
$scope.ServerService = ServerService.get();
|
||||||
$scope.settingsService = SettingsService;
|
$scope.settingsService = SettingsService;
|
||||||
$scope.MobileService = MobileService;
|
$scope.MobileService = MobileService;
|
||||||
|
|
||||||
$scope.loading = true;
|
|
||||||
$scope.$watch(totalActiveAjaxRequests, function() {
|
|
||||||
$scope.loading = (totalActiveAjaxRequests() !== 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
$scope.$watch('settingsService.settings.readingMode', function(newValue, oldValue) {
|
$scope.$watch('settingsService.settings.readingMode', function(newValue, oldValue) {
|
||||||
if (newValue && oldValue && newValue != oldValue) {
|
if (newValue && oldValue && newValue != oldValue) {
|
||||||
SettingsService.save();
|
SettingsService.save();
|
||||||
@@ -680,8 +672,9 @@ module.controller('FeedListCtrl', [
|
|||||||
'FeedService',
|
'FeedService',
|
||||||
'CategoryService',
|
'CategoryService',
|
||||||
'AnalyticsService',
|
'AnalyticsService',
|
||||||
|
'MobileService',
|
||||||
function($scope, $stateParams, $http, $route, $state, $window, $timeout, $location, EntryService, SettingsService, FeedService,
|
function($scope, $stateParams, $http, $route, $state, $window, $timeout, $location, EntryService, SettingsService, FeedService,
|
||||||
CategoryService, AnalyticsService) {
|
CategoryService, AnalyticsService, MobileService) {
|
||||||
|
|
||||||
$window = angular.element($window);
|
$window = angular.element($window);
|
||||||
AnalyticsService.track();
|
AnalyticsService.track();
|
||||||
@@ -696,9 +689,11 @@ module.controller('FeedListCtrl', [
|
|||||||
$scope.errorCount = 0;
|
$scope.errorCount = 0;
|
||||||
$scope.timestamp = 0;
|
$scope.timestamp = 0;
|
||||||
$scope.entries = [];
|
$scope.entries = [];
|
||||||
|
$scope.ignored_read_status = false;
|
||||||
$scope.font_size = 0;
|
$scope.font_size = 0;
|
||||||
|
|
||||||
$scope.settingsService = SettingsService;
|
$scope.settingsService = SettingsService;
|
||||||
|
$scope.MobileService = MobileService;
|
||||||
$scope.$watch('settingsService.settings.readingMode', function(newValue, oldValue) {
|
$scope.$watch('settingsService.settings.readingMode', function(newValue, oldValue) {
|
||||||
if (newValue && oldValue && newValue != oldValue) {
|
if (newValue && oldValue && newValue != oldValue) {
|
||||||
$scope.$emit('emitReload');
|
$scope.$emit('emitReload');
|
||||||
@@ -729,8 +724,7 @@ module.controller('FeedListCtrl', [
|
|||||||
|
|
||||||
var limit = $scope.limit;
|
var limit = $scope.limit;
|
||||||
|
|
||||||
var read_shown = SettingsService.settings.readingMode === 'all' || $scope.selectedType === 'tag'
|
var read_shown = SettingsService.settings.readingMode === 'all' || $scope.ignored_read_status;
|
||||||
|| ($scope.selectedType === 'category' && $scope.selectedId === 'starred');
|
|
||||||
var offset = read_shown ? $scope.entries.length : _.where($scope.entries, {
|
var offset = read_shown ? $scope.entries.length : _.where($scope.entries, {
|
||||||
read : false
|
read : false
|
||||||
}).length;
|
}).length;
|
||||||
@@ -761,6 +755,7 @@ module.controller('FeedListCtrl', [
|
|||||||
$scope.busy = false;
|
$scope.busy = false;
|
||||||
$scope.hasMore = data.hasMore;
|
$scope.hasMore = data.hasMore;
|
||||||
$scope.feedLink = data.feedLink;
|
$scope.feedLink = data.feedLink;
|
||||||
|
$scope.ignored_read_status = data.ignoredReadStatus;
|
||||||
};
|
};
|
||||||
|
|
||||||
var data = {
|
var data = {
|
||||||
@@ -1367,7 +1362,7 @@ module.controller('SettingsCtrl', ['$scope', '$location', 'SettingsService', 'An
|
|||||||
|
|
||||||
$scope.ServerService = ServerService.get();
|
$scope.ServerService = ServerService.get();
|
||||||
|
|
||||||
$scope.themes = ['default', 'ebraminio', 'MRACHINI', 'svetla'];
|
$scope.themes = ['default', 'bootstrap', 'dark', 'ebraminio', 'MRACHINI', 'svetla', 'third'];
|
||||||
|
|
||||||
$scope.settingsService = SettingsService;
|
$scope.settingsService = SettingsService;
|
||||||
$scope.$watch('settingsService.settings', function(value) {
|
$scope.$watch('settingsService.settings', function(value) {
|
||||||
|
|||||||
@@ -66,11 +66,14 @@ module.directive('tags', function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
$scope.$watch('entry.tags', function(newValue, oldValue) {
|
$scope.$watch('entry.tags', function(newValue, oldValue) {
|
||||||
if (newValue && oldValue && newValue != oldValue) {
|
if (oldValue && newValue != oldValue) {
|
||||||
var data = {
|
var data = {
|
||||||
entryId : $scope.entry.id,
|
entryId : $scope.entry.id,
|
||||||
tags : newValue
|
tags : []
|
||||||
};
|
};
|
||||||
|
if (newValue) {
|
||||||
|
data.tags = newValue.split(',');
|
||||||
|
}
|
||||||
EntryService.tag(data);
|
EntryService.tag(data);
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
@@ -270,46 +273,6 @@ module.directive('category', [function() {
|
|||||||
};
|
};
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
/**
|
|
||||||
* Reusable spinner component
|
|
||||||
*/
|
|
||||||
module.directive('spinner', function() {
|
|
||||||
return {
|
|
||||||
scope : {
|
|
||||||
shown : '='
|
|
||||||
},
|
|
||||||
restrict : 'A',
|
|
||||||
link : function($scope, element) {
|
|
||||||
element.addClass('spinner');
|
|
||||||
var opts = {
|
|
||||||
lines : 11, // The number of lines to draw
|
|
||||||
length : 5, // The length of each line
|
|
||||||
width : 3, // The line thickness
|
|
||||||
radius : 8, // The radius of the inner circle
|
|
||||||
corners : 1, // Corner roundness (0..1)
|
|
||||||
rotate : 0, // The rotation offset
|
|
||||||
color : '#000', // #rgb or #rrggbb
|
|
||||||
speed : 1.3, // Rounds per second
|
|
||||||
trail : 60, // Afterglow percentage
|
|
||||||
shadow : false, // Whether to render a shadow
|
|
||||||
hwaccel : true, // Whether to use hardware acceleration
|
|
||||||
zIndex : 2e9, // The z-index (defaults to 2000000000)
|
|
||||||
top : 'auto', // Top position relative to parent in px
|
|
||||||
left : 'auto' // Left position relative to parent in px
|
|
||||||
};
|
|
||||||
var spinner = new Spinner(opts);
|
|
||||||
$scope.$watch('shown', function(shown) {
|
|
||||||
if (shown) {
|
|
||||||
spinner.spin();
|
|
||||||
element.append(spinner.el);
|
|
||||||
} else {
|
|
||||||
spinner.stop();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
module.directive('draggable', function() {
|
module.directive('draggable', function() {
|
||||||
return {
|
return {
|
||||||
restrict : 'A',
|
restrict : 'A',
|
||||||
|
|||||||
@@ -39,6 +39,26 @@ module.filter('iframeHttpsRewrite', function() {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* inserts title or alt-text after images, if any
|
||||||
|
*/
|
||||||
|
module.filter('appendImageTitles', function() {
|
||||||
|
return function(html) {
|
||||||
|
var result = html;
|
||||||
|
var wrapper = $('<div></div>').html(html);
|
||||||
|
$('img', wrapper).each(function(i, elem) {
|
||||||
|
var e = $(elem);
|
||||||
|
var title = e.attr('title') || e.attr('alt');
|
||||||
|
if (title) {
|
||||||
|
var text = $('<span style="font-style: italic;"></span>').text(title);
|
||||||
|
e.after(text);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
result = wrapper.html();
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* escapes the url
|
* escapes the url
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
var app = angular.module('commafeed', ['ngRoute', 'ngTouch', 'ui.utils', 'ui.bootstrap', 'ui.router', 'ui.select2', 'commafeed.directives',
|
var app = angular.module('commafeed', ['ngRoute', 'ngTouch', 'ngAnimate', 'ui.utils', 'ui.bootstrap', 'ui.router', 'ui.select2',
|
||||||
'commafeed.controllers', 'commafeed.services', 'commafeed.filters', 'ngSanitize', 'infinite-scroll', 'ngGrid']);
|
'commafeed.directives', 'commafeed.controllers', 'commafeed.services', 'commafeed.filters', 'ngSanitize', 'infinite-scroll',
|
||||||
|
'ngGrid', 'chieffancypants.loadingBar']);
|
||||||
|
|
||||||
app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProvider', '$compileProvider',
|
app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProvider', '$compileProvider', 'cfpLoadingBarProvider',
|
||||||
function($routeProvider, $stateProvider, $urlRouterProvider, $httpProvider, $compileProvider) {
|
function($routeProvider, $stateProvider, $urlRouterProvider, $httpProvider, $compileProvider, cfpLoadingBarProvider) {
|
||||||
|
|
||||||
|
cfpLoadingBarProvider.includeSpinner = false;
|
||||||
|
|
||||||
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|javascript):/);
|
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|javascript):/);
|
||||||
var interceptor = ['$rootScope', '$q', function(scope, $q) {
|
var interceptor = ['$rootScope', '$q', function(scope, $q) {
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ module.factory('CategoryService', ['$resource', '$http', function($resource, $ht
|
|||||||
var actions = {
|
var actions = {
|
||||||
get : {
|
get : {
|
||||||
method : 'GET',
|
method : 'GET',
|
||||||
|
ignoreLoadingBar: true,
|
||||||
params : {
|
params : {
|
||||||
_method : 'get'
|
_method : 'get'
|
||||||
}
|
}
|
||||||
@@ -255,6 +256,7 @@ module.factory('EntryService', ['$resource', '$http', function($resource, $http)
|
|||||||
},
|
},
|
||||||
mark : {
|
mark : {
|
||||||
method : 'POST',
|
method : 'POST',
|
||||||
|
ignoreLoadingBar: true,
|
||||||
params : {
|
params : {
|
||||||
_method : 'mark'
|
_method : 'mark'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,14 @@
|
|||||||
@import "components/entry-list";
|
@import "components/entry-list";
|
||||||
@import "components/subscription-list";
|
@import "components/subscription-list";
|
||||||
@import "components/help";
|
@import "components/help";
|
||||||
|
@import "components/loading-bar";
|
||||||
|
|
||||||
@import "mobile/mobile";
|
@import "mobile/mobile";
|
||||||
|
|
||||||
@import "themes/test";
|
@import "themes/test";
|
||||||
|
@import "themes/bootstrap";
|
||||||
@import "themes/ebraminio";
|
@import "themes/ebraminio";
|
||||||
@import "themes/MRACHINI";
|
@import "themes/MRACHINI";
|
||||||
@import "themes/svetla";
|
@import "themes/svetla";
|
||||||
|
@import "themes/dark";
|
||||||
|
@import "themes/third";
|
||||||
|
|||||||
@@ -169,6 +169,11 @@
|
|||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#feed-accordion .entry-buttons .keep-unread label {
|
||||||
|
display: inline;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
#feed-accordion .share-buttons a {
|
#feed-accordion .share-buttons a {
|
||||||
color: #333333;
|
color: #333333;
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
|
|||||||
12
src/main/webapp/sass/components/_loading-bar.scss
Normal file
12
src/main/webapp/sass/components/_loading-bar.scss
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#loading-bar .bar {
|
||||||
|
background: #2c3e50;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loading-bar .peg {
|
||||||
|
box-shadow: 0 0 10px #2c3e50, 0 0 5px #2c3e50;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loading-bar-spinner .spinner-icon {
|
||||||
|
border-top-color: #2c3e50;
|
||||||
|
border-left-color: #2c3e50;
|
||||||
|
}
|
||||||
@@ -18,6 +18,10 @@ body .modal-backdrop {
|
|||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
.pointer {
|
.pointer {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|||||||
348
src/main/webapp/sass/themes/_bootstrap.scss
Normal file
348
src/main/webapp/sass/themes/_bootstrap.scss
Normal file
@@ -0,0 +1,348 @@
|
|||||||
|
#theme-bootstrap{
|
||||||
|
/*!
|
||||||
|
* Bootstrap v3.1.1 (http://getbootstrap.com)
|
||||||
|
* Copyright 2011-2014 Twitter, Inc.
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
.btn-default,
|
||||||
|
.btn-primary,
|
||||||
|
.btn-success,
|
||||||
|
.btn-info,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-danger {
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-default.active,
|
||||||
|
.btn-primary.active,
|
||||||
|
.btn-success.active,
|
||||||
|
.btn-info.active,
|
||||||
|
.btn-warning.active,
|
||||||
|
.btn-danger.active {
|
||||||
|
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||||
|
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||||
|
}
|
||||||
|
.btn:active,
|
||||||
|
.btn.active {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-default {
|
||||||
|
text-shadow: 0 1px 0 #fff;
|
||||||
|
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #dbdbdb;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
.btn-default:hover,
|
||||||
|
.btn-default:focus {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-default.active {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
border-color: #dbdbdb;
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #2b669a;
|
||||||
|
}
|
||||||
|
.btn-primary:hover,
|
||||||
|
.btn-primary:focus {
|
||||||
|
background-color: #2d6ca2;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-primary.active {
|
||||||
|
background-color: #2d6ca2;
|
||||||
|
border-color: #2b669a;
|
||||||
|
}
|
||||||
|
.btn-success {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #3e8f3e;
|
||||||
|
}
|
||||||
|
.btn-success:hover,
|
||||||
|
.btn-success:focus {
|
||||||
|
background-color: #419641;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-success.active {
|
||||||
|
background-color: #419641;
|
||||||
|
border-color: #3e8f3e;
|
||||||
|
}
|
||||||
|
.btn-info {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #28a4c9;
|
||||||
|
}
|
||||||
|
.btn-info:hover,
|
||||||
|
.btn-info:focus {
|
||||||
|
background-color: #2aabd2;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-info.active {
|
||||||
|
background-color: #2aabd2;
|
||||||
|
border-color: #28a4c9;
|
||||||
|
}
|
||||||
|
.btn-warning {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #e38d13;
|
||||||
|
}
|
||||||
|
.btn-warning:hover,
|
||||||
|
.btn-warning:focus {
|
||||||
|
background-color: #eb9316;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-warning.active {
|
||||||
|
background-color: #eb9316;
|
||||||
|
border-color: #e38d13;
|
||||||
|
}
|
||||||
|
.btn-danger {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #b92c28;
|
||||||
|
}
|
||||||
|
.btn-danger:hover,
|
||||||
|
.btn-danger:focus {
|
||||||
|
background-color: #c12e2a;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-danger.active {
|
||||||
|
background-color: #c12e2a;
|
||||||
|
border-color: #b92c28;
|
||||||
|
}
|
||||||
|
.thumbnail,
|
||||||
|
.img-thumbnail {
|
||||||
|
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||||
|
}
|
||||||
|
.dropdown-menu > li > a:hover,
|
||||||
|
.dropdown-menu > li > a:focus {
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.dropdown-menu > .active > a,
|
||||||
|
.dropdown-menu > .active > a:hover,
|
||||||
|
.dropdown-menu > .active > a:focus {
|
||||||
|
background-color: #357ebd;
|
||||||
|
background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.navbar-default {
|
||||||
|
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||||
|
}
|
||||||
|
.navbar-default .navbar-nav > .active > a {
|
||||||
|
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||||
|
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||||
|
}
|
||||||
|
.navbar-brand,
|
||||||
|
.navbar-nav > li > a {
|
||||||
|
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
|
||||||
|
}
|
||||||
|
.navbar-inverse {
|
||||||
|
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.navbar-inverse .navbar-nav > .active > a {
|
||||||
|
background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #222 0%, #282828 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||||
|
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||||
|
}
|
||||||
|
.navbar-inverse .navbar-brand,
|
||||||
|
.navbar-inverse .navbar-nav > li > a {
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
|
||||||
|
}
|
||||||
|
.navbar-static-top,
|
||||||
|
.navbar-fixed-top,
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.alert {
|
||||||
|
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||||
|
}
|
||||||
|
.alert-success {
|
||||||
|
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #b2dba1;
|
||||||
|
}
|
||||||
|
.alert-info {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #9acfea;
|
||||||
|
}
|
||||||
|
.alert-warning {
|
||||||
|
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #f5e79e;
|
||||||
|
}
|
||||||
|
.alert-danger {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #dca7a7;
|
||||||
|
}
|
||||||
|
.progress {
|
||||||
|
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar {
|
||||||
|
background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-success {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-info {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-warning {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-danger {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.list-group {
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||||
|
}
|
||||||
|
.list-group-item.active,
|
||||||
|
.list-group-item.active:hover,
|
||||||
|
.list-group-item.active:focus {
|
||||||
|
text-shadow: 0 -1px 0 #3071a9;
|
||||||
|
background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #3278b3;
|
||||||
|
}
|
||||||
|
.panel {
|
||||||
|
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||||
|
}
|
||||||
|
.panel-default > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-primary > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-success > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-info > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-warning > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-danger > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.well {
|
||||||
|
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #dcdcdc;
|
||||||
|
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||||
|
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||||
|
}
|
||||||
|
}
|
||||||
276
src/main/webapp/sass/themes/_dark.scss
Normal file
276
src/main/webapp/sass/themes/_dark.scss
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
#theme-dark {
|
||||||
|
|
||||||
|
* {
|
||||||
|
outline: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.btn-default,
|
||||||
|
.btn-primary,
|
||||||
|
.btn-success,
|
||||||
|
.btn-info,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-danger {
|
||||||
|
background: none;
|
||||||
|
text-shadow: none;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-default.active,
|
||||||
|
.btn-primary.active,
|
||||||
|
.btn-success.active,
|
||||||
|
.btn-info.active,
|
||||||
|
.btn-warning.active,
|
||||||
|
.btn-danger.active {
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
-ms-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
-o-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
background: #e0e0e0;
|
||||||
|
}
|
||||||
|
.btn-default {
|
||||||
|
background: #c7cbcc;
|
||||||
|
}
|
||||||
|
.btn:hover {
|
||||||
|
background: #e0e0e0;
|
||||||
|
}
|
||||||
|
.dropdown-menu {
|
||||||
|
background: #c7cbcc;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-ms-border-radius: 4px;
|
||||||
|
-o-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: none;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
.dropdown-menu a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.dropdown-menu .divider {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.btn-primary:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-primary:active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-primary:active:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:active:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
-webkit-transition: all 400ms linear;
|
||||||
|
-moz-transition: all 400ms linear;
|
||||||
|
-ms-transition: all 400ms linear;
|
||||||
|
-o-transition: all 400ms linear;
|
||||||
|
transition: all 400ms linear;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords'] {
|
||||||
|
-webkit-transition: all 400ms linear;
|
||||||
|
-moz-transition: all 400ms linear;
|
||||||
|
-ms-transition: all 400ms linear;
|
||||||
|
-o-transition: all 400ms linear;
|
||||||
|
transition: all 400ms linear;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords']:focus {
|
||||||
|
background: #c7cbcc;
|
||||||
|
}
|
||||||
|
a[ng-click^='tab'] {
|
||||||
|
-webkit-transition: all 390ms linear;
|
||||||
|
-moz-transition: all 390ms linear;
|
||||||
|
-ms-transition: all 390ms linear;
|
||||||
|
-o-transition: all 390ms linear;
|
||||||
|
transition: all 390ms linear;
|
||||||
|
}
|
||||||
|
a[ng-click^='tab']:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.css-treeview li {
|
||||||
|
-webkit-transition: all 150ms linear;
|
||||||
|
-moz-transition: all 150ms linear;
|
||||||
|
-ms-transition: all 150ms linear;
|
||||||
|
-o-transition: all 150ms linear;
|
||||||
|
transition: all 150ms linear;
|
||||||
|
}
|
||||||
|
#uvTab {
|
||||||
|
-webkit-transition: all 260ms linear;
|
||||||
|
-moz-transition: all 260ms linear;
|
||||||
|
-ms-transition: all 260ms linear;
|
||||||
|
-o-transition: all 260ms linear;
|
||||||
|
transition: all 260ms linear;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background: #788587;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
body a {
|
||||||
|
color: #e0e0e0;
|
||||||
|
}
|
||||||
|
body h3 {
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
.toolbar {
|
||||||
|
background: #788587;
|
||||||
|
}
|
||||||
|
.page-header {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.entrylist-header {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.entrylist-header h3,
|
||||||
|
.entrylist-header a {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread .entry-heading {
|
||||||
|
background: #c9c9c9;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread:nth-of-type(2n) .entry-heading {
|
||||||
|
background: #ddd;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread .entry-heading:hover,
|
||||||
|
#feed-accordion .unread:nth-of-type(2n):hover {
|
||||||
|
background: #ebebeb;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-heading-link {
|
||||||
|
color: #383838;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-heading-link:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body {
|
||||||
|
background: #c7cbcc;
|
||||||
|
padding: 15px 0 0 15px;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a:not([popup]) {
|
||||||
|
color: #2c4967;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a:not([popup]):visited {
|
||||||
|
color: #8d8e8e;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body .entry-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body img {
|
||||||
|
-webkit-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
-moz-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
-ms-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
-o-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
#feed-accordion .highlight-search {
|
||||||
|
background: inherit;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-buttons {
|
||||||
|
background: #a68589;
|
||||||
|
margin-left: -15px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
-moz-box-shadow: none;
|
||||||
|
-ms-box-shadow: none;
|
||||||
|
-o-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link {
|
||||||
|
color: #a68589;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords'] {
|
||||||
|
border: none;
|
||||||
|
height: 32px;
|
||||||
|
background: #9ba8aa;
|
||||||
|
}
|
||||||
|
.css-treeview .selected {
|
||||||
|
color: #905158 !important;
|
||||||
|
}
|
||||||
|
.css-treeview .unread-counter {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.css-treeview li .tree-item:hover {
|
||||||
|
background: #ebebeb;
|
||||||
|
}
|
||||||
|
.css-treeview a {
|
||||||
|
color: #383838;
|
||||||
|
}
|
||||||
|
.css-treeview a:hover {
|
||||||
|
font-size: 1.02em;
|
||||||
|
}
|
||||||
|
#uvTab {
|
||||||
|
margin-bottom: -23px;
|
||||||
|
}
|
||||||
|
#uvTab:hover {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
/*dangerous stuff*/
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name {
|
||||||
|
float: right;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 150px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link .entry-name {
|
||||||
|
margin-left: 40px;
|
||||||
|
color: #a68589;
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#toolbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.sidebar-nav-fixed>.btn-group {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.entryList {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name {
|
||||||
|
float: left;
|
||||||
|
width: 50px;
|
||||||
|
font-size: 0;
|
||||||
|
position: initial;
|
||||||
|
display: block;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-right: initial;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name .star {
|
||||||
|
font-size: 14px;
|
||||||
|
font-size: initial;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name img {
|
||||||
|
margin-top: -14px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name:after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link .entry-name {
|
||||||
|
margin-left: 55px;
|
||||||
|
color: #a68589;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,110 +1,378 @@
|
|||||||
#theme-svetla {
|
#theme-svetla {
|
||||||
/*bg color*/
|
|
||||||
body, div.form-actions, .toolbar, .entrylist-header ng-scope {
|
|
||||||
background: #AFB8BE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-actions, div.page-header {
|
* {
|
||||||
border: none;
|
outline: 0;
|
||||||
}
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
:focus {
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
::-moz-focus-inner {
|
||||||
|
border: 0 !important;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.btn-default,
|
||||||
|
.btn-primary,
|
||||||
|
.btn-success,
|
||||||
|
.btn-info,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-danger {
|
||||||
|
background: none;
|
||||||
|
text-shadow: none;
|
||||||
|
color: #788587;
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-default.active,
|
||||||
|
.btn-primary.active,
|
||||||
|
.btn-success.active,
|
||||||
|
.btn-info.active,
|
||||||
|
.btn-warning.active,
|
||||||
|
.btn-danger.active {
|
||||||
|
-webkit-box-shadow: 0 -5px 5px 0 rgba(238,232,213,0.2) inset , 0 5px 5px 0 rgba(238,232,213,0.2) inset;
|
||||||
|
-moz-box-shadow: 0 -5px 5px 0 rgba(238,232,213,0.2) inset , 0 5px 5px 0 rgba(238,232,213,0.2) inset;
|
||||||
|
-ms-box-shadow: 0 -5px 5px 0 rgba(238,232,213,0.2) inset , 0 5px 5px 0 rgba(238,232,213,0.2) inset;
|
||||||
|
-o-box-shadow: 0 -5px 5px 0 rgba(238,232,213,0.2) inset , 0 5px 5px 0 rgba(238,232,213,0.2) inset;
|
||||||
|
box-shadow: 0 -5px 5px 0 rgba(238,232,213,0.2) inset , 0 5px 5px 0 rgba(238,232,213,0.2) inset;
|
||||||
|
background: rgba(238,232,213,0.3);
|
||||||
|
color: #788587;
|
||||||
|
}
|
||||||
|
.btn-default {
|
||||||
|
background: #eee8d5;
|
||||||
|
}
|
||||||
|
.btn:hover {
|
||||||
|
background: #c4bea6;
|
||||||
|
}
|
||||||
|
.dropdown-menu {
|
||||||
|
background: #c7cbcc;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
-ms-border-radius: 3px;
|
||||||
|
-o-border-radius: 3px;
|
||||||
|
border-radius: 3px;
|
||||||
|
border: none;
|
||||||
|
color: #424345;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
-moz-box-shadow: none;
|
||||||
|
-ms-box-shadow: none;
|
||||||
|
-o-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.dropdown-menu a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.dropdown-menu .divider {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.btn-primary:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-primary:active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-primary:active:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:active:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
-webkit-transition: all 400ms linear;
|
||||||
|
-moz-transition: all 400ms linear;
|
||||||
|
-ms-transition: all 400ms linear;
|
||||||
|
-o-transition: all 400ms linear;
|
||||||
|
transition: all 400ms linear;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords'] {
|
||||||
|
-webkit-transition: all 400ms linear;
|
||||||
|
-moz-transition: all 400ms linear;
|
||||||
|
-ms-transition: all 400ms linear;
|
||||||
|
-o-transition: all 400ms linear;
|
||||||
|
transition: all 400ms linear;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords']:focus {
|
||||||
|
background: #c7cbcc;
|
||||||
|
}
|
||||||
|
a[ng-click^='tab'] {
|
||||||
|
-webkit-transition: all 390ms linear;
|
||||||
|
-moz-transition: all 390ms linear;
|
||||||
|
-ms-transition: all 390ms linear;
|
||||||
|
-o-transition: all 390ms linear;
|
||||||
|
transition: all 390ms linear;
|
||||||
|
}
|
||||||
|
a[ng-click^='tab']:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.css-treeview li {
|
||||||
|
-webkit-transition: all 150ms linear;
|
||||||
|
-moz-transition: all 150ms linear;
|
||||||
|
-ms-transition: all 150ms linear;
|
||||||
|
-o-transition: all 150ms linear;
|
||||||
|
transition: all 150ms linear;
|
||||||
|
}
|
||||||
|
#uvTab {
|
||||||
|
-webkit-transition: all 260ms linear;
|
||||||
|
-moz-transition: all 260ms linear;
|
||||||
|
-ms-transition: all 260ms linear;
|
||||||
|
-o-transition: all 260ms linear;
|
||||||
|
transition: all 260ms linear;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background: #fdf6e3;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
body a {
|
||||||
|
color: #788587;
|
||||||
|
}
|
||||||
|
.toolbar {
|
||||||
|
background: #fdf6e3;
|
||||||
|
}
|
||||||
|
.page-header {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.entrylist-header {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.entrylist-header h3,
|
||||||
|
.entrylist-header a {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-heading {
|
||||||
|
background: #edeae6;
|
||||||
|
background: -webkit-moz-linear-gradient(rgba(238,232,213,0.7), #fdf6e3);
|
||||||
|
background: -moz-linear-gradient(rgba(238,232,213,0.7), #fdf6e3);
|
||||||
|
background: -ms-moz-linear-gradient(rgba(238,232,213,0.7), #fdf6e3);
|
||||||
|
background: linear-gradient(rgba(238,232,213,0.7), #fdf6e3);
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-heading-link {
|
||||||
|
color: #786b47 !important;
|
||||||
|
font-style: italic !important;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread .entry-heading {
|
||||||
|
background: #fdf6e3;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread .entry-heading .entry-heading-link {
|
||||||
|
color: #404141 !important;
|
||||||
|
font-style: normal !important;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread:nth-of-type(2n) .entry-heading {
|
||||||
|
background: rgba(238,232,213,0.7);
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body {
|
||||||
|
background: #eee8d5;
|
||||||
|
padding: 2px 0 0 15px;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a.nolink.pointer {
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a:not([popup]) {
|
||||||
|
color: #6c6759;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a:not([popup]):visited {
|
||||||
|
color: #8d8e8e;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body .entry-title {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body .entry-title .entry-subtitle {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body .entry-title .entry-subtitle [class^='entry-author'] {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body .entry-title .entry-subtitle .entry-source {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body .entry-title a {
|
||||||
|
color: #a7a083;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body img {
|
||||||
|
-webkit-box-shadow: 0 0 2px 0 rgba(0,0,0,0.1);
|
||||||
|
-moz-box-shadow: 0 0 2px 0 rgba(0,0,0,0.1);
|
||||||
|
-ms-box-shadow: 0 0 2px 0 rgba(0,0,0,0.1);
|
||||||
|
-o-box-shadow: 0 0 2px 0 rgba(0,0,0,0.1);
|
||||||
|
box-shadow: 0 0 2px 0 rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
#feed-accordion .highlight-search {
|
||||||
|
background: inherit;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-buttons {
|
||||||
|
background: #a68589;
|
||||||
|
margin-left: -15px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
-moz-box-shadow: none;
|
||||||
|
-ms-box-shadow: none;
|
||||||
|
-o-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords'] {
|
||||||
|
border: none;
|
||||||
|
height: 32px;
|
||||||
|
-webkit-box-shadow: 0 0 2px 1px #eee8d5 inset;
|
||||||
|
-moz-box-shadow: 0 0 2px 1px #eee8d5 inset;
|
||||||
|
-ms-box-shadow: 0 0 2px 1px #eee8d5 inset;
|
||||||
|
-o-box-shadow: 0 0 2px 1px #eee8d5 inset;
|
||||||
|
box-shadow: 0 0 2px 1px #eee8d5 inset;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords']:focus {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.css-treeview .selected {
|
||||||
|
color: #a68589 !important;
|
||||||
|
}
|
||||||
|
.css-treeview .unread-counter {
|
||||||
|
color: #93a1a1;
|
||||||
|
}
|
||||||
|
.css-treeview li .tree-item:hover {
|
||||||
|
background: #ebebeb;
|
||||||
|
}
|
||||||
|
.css-treeview a {
|
||||||
|
color: #93a1a1;
|
||||||
|
}
|
||||||
|
.css-treeview a:hover {
|
||||||
|
font-size: 1.02em;
|
||||||
|
}
|
||||||
|
#uvTab {
|
||||||
|
margin-bottom: -23px;
|
||||||
|
}
|
||||||
|
#uvTab:hover {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
/* stuff */
|
||||||
|
#feed-accordion .entry-external-link {
|
||||||
|
position: absolute;
|
||||||
|
right: auto;
|
||||||
|
margin-left: 15px;
|
||||||
|
color: #c4bea6;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry .entry-heading-link>.feed-name {
|
||||||
|
font-size: 0;
|
||||||
|
width: 50px;
|
||||||
|
margin-left: 35px;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry .entry-heading-link>.feed-name .star {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry .entry-heading-link .entry-name {
|
||||||
|
margin-left: 100px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name {
|
||||||
|
font-size: 1em;
|
||||||
|
width: auto;
|
||||||
|
float: right;
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 150px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name img {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link .entry-name {
|
||||||
|
margin-left: 40px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-body .entry-body-content {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-body .entry-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#toolbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.sidebar-nav-fixed>.btn-group {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.entryList {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name {
|
||||||
|
float: left;
|
||||||
|
width: 50px;
|
||||||
|
font-size: 0;
|
||||||
|
position: initial;
|
||||||
|
display: block;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-right: initial;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name .star {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name img {
|
||||||
|
margin-top: -10px;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link>.feed-name:after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry .entry-heading-link .entry-name {
|
||||||
|
margin-left: 55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#feed-accordion:not(.expanded) .current .entry-heading {
|
||||||
|
background: #eee8d5;
|
||||||
|
}
|
||||||
|
#feed-accordion:not(.expanded) .current .entry-heading .entry-heading-link {
|
||||||
|
color: #a7a083 !important;
|
||||||
|
font-style: normal !important;
|
||||||
|
}
|
||||||
|
#feed-accordion:not(.expanded) .current .entry-heading .entry-heading-link .feed-name {
|
||||||
|
width: auto !important;
|
||||||
|
font-size: 1em !important;
|
||||||
|
font-style: normal;
|
||||||
|
color: #a7a083;
|
||||||
|
}
|
||||||
|
#feed-accordion:not(.expanded) .current .entry-heading .entry-heading-link .feed-name img {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
#feed-accordion:not(.expanded) .current .entry-heading .entry-heading-link .entry-name {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .current .entry-heading {
|
||||||
|
background: #eee8d5;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .current .entry-heading .entry-heading-link {
|
||||||
|
color: #a7a083 !important;
|
||||||
|
font-style: normal !important;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .current .entry-heading .entry-heading-link .feed-name {
|
||||||
|
font-style: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .current .entry-heading .entry-heading-link .entry-name {
|
||||||
|
color: inherit !important;
|
||||||
|
}
|
||||||
|
.nav-pills li.active a {
|
||||||
|
color: #424345 !important;
|
||||||
|
}
|
||||||
|
blockquote {
|
||||||
|
border-left: solid 5px #c4bea6 !important;
|
||||||
|
}
|
||||||
|
a[href^='http://da.feedsportal.com'] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
br {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
pre, #feed-accordion .unread .entry-heading {
|
}
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*feeds tree*/
|
|
||||||
.css-treeview li .tree-item:hover {
|
|
||||||
}
|
|
||||||
|
|
||||||
/*feeds list*/
|
|
||||||
|
|
||||||
#feed-accordion .entry-buttons { /*share panel*/
|
|
||||||
background: transparent;
|
|
||||||
border:none;
|
|
||||||
/* ---> border: 1px solid black; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#feed-accordion .entry {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* read feed bg */
|
|
||||||
#feed-accordion .entry-heading {
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-menu.pull-right li.divider {
|
|
||||||
height: 0px;
|
|
||||||
background: transparent;
|
|
||||||
border-bottom: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-menu {
|
|
||||||
background: #E6E6E6;
|
|
||||||
border-radius: 0px 0px 4px 4px;
|
|
||||||
box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
|
||||||
.btn, .btn.dropdown-toggle {
|
|
||||||
background: #CFC7BE;
|
|
||||||
border: 1px solid #A7B5BE;
|
|
||||||
border-radius: 0px;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn.dropdown-toggle {
|
|
||||||
/*background: #eae7e3;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn.active {
|
|
||||||
box-shadow: none;/*!*/
|
|
||||||
}
|
|
||||||
|
|
||||||
button.btn.dropdown-toggle:hover {
|
|
||||||
background: #e6e6e6;
|
|
||||||
}
|
|
||||||
span.hidden-phone.hidden-tablet.ng-binding {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.entrylist-header ng-scope {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entrylist-header {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entry-buttons.form-horizontal {
|
|
||||||
border-color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************/
|
|
||||||
li.pointer a {
|
|
||||||
border-radius: 0px;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
li.pointer a:hover {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
background: #E6E6E6;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:focus {
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #323639;
|
|
||||||
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.75);
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#feed-accordion.expanded .entry {
|
|
||||||
box-shadow: none;
|
|
||||||
border-color: #CFC7BE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
262
src/main/webapp/sass/themes/_third.scss
Normal file
262
src/main/webapp/sass/themes/_third.scss
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
#theme-third {
|
||||||
|
|
||||||
|
* {
|
||||||
|
outline: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.btn-default,
|
||||||
|
.btn-primary,
|
||||||
|
.btn-success,
|
||||||
|
.btn-info,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-danger {
|
||||||
|
background: none;
|
||||||
|
text-shadow: none;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-default.active,
|
||||||
|
.btn-primary.active,
|
||||||
|
.btn-success.active,
|
||||||
|
.btn-info.active,
|
||||||
|
.btn-warning.active,
|
||||||
|
.btn-danger.active {
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
-ms-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
-o-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255,255,255,0.15) 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
background: #e0e0e0;
|
||||||
|
}
|
||||||
|
.btn-default {
|
||||||
|
background: #6e797c;
|
||||||
|
}
|
||||||
|
.btn:hover {
|
||||||
|
background: #e0e0e0;
|
||||||
|
}
|
||||||
|
.dropdown-menu {
|
||||||
|
background: #c7cbcc;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-ms-border-radius: 4px;
|
||||||
|
-o-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: none;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
.dropdown-menu a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.dropdown-menu .divider {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.btn-primary:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-primary:active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-primary:active:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn-default:active:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
-webkit-transition: all 400ms linear;
|
||||||
|
-moz-transition: all 400ms linear;
|
||||||
|
-ms-transition: all 400ms linear;
|
||||||
|
-o-transition: all 400ms linear;
|
||||||
|
transition: all 400ms linear;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords'] {
|
||||||
|
-webkit-transition: all 400ms linear;
|
||||||
|
-moz-transition: all 400ms linear;
|
||||||
|
-ms-transition: all 400ms linear;
|
||||||
|
-o-transition: all 400ms linear;
|
||||||
|
transition: all 400ms linear;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords']:focus {
|
||||||
|
background: #c7cbcc;
|
||||||
|
}
|
||||||
|
a[ng-click^='tab'] {
|
||||||
|
-webkit-transition: all 390ms linear;
|
||||||
|
-moz-transition: all 390ms linear;
|
||||||
|
-ms-transition: all 390ms linear;
|
||||||
|
-o-transition: all 390ms linear;
|
||||||
|
transition: all 390ms linear;
|
||||||
|
}
|
||||||
|
a[ng-click^='tab']:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.css-treeview li {
|
||||||
|
-webkit-transition: all 150ms linear;
|
||||||
|
-moz-transition: all 150ms linear;
|
||||||
|
-ms-transition: all 150ms linear;
|
||||||
|
-o-transition: all 150ms linear;
|
||||||
|
transition: all 150ms linear;
|
||||||
|
}
|
||||||
|
#uvTab {
|
||||||
|
-webkit-transition: all 260ms linear;
|
||||||
|
-moz-transition: all 260ms linear;
|
||||||
|
-ms-transition: all 260ms linear;
|
||||||
|
-o-transition: all 260ms linear;
|
||||||
|
transition: all 260ms linear;
|
||||||
|
}
|
||||||
|
#toolbar {
|
||||||
|
-webkit-transition: all 280ms linear;
|
||||||
|
-moz-transition: all 280ms linear;
|
||||||
|
-ms-transition: all 280ms linear;
|
||||||
|
-o-transition: all 280ms linear;
|
||||||
|
transition: all 280ms linear;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background: #788587;
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
body a {
|
||||||
|
color: #e0e0e0;
|
||||||
|
}
|
||||||
|
body h3 {
|
||||||
|
color: #424345;
|
||||||
|
}
|
||||||
|
.toolbar {
|
||||||
|
background: #788587;
|
||||||
|
margin-top: -45px;
|
||||||
|
}
|
||||||
|
.toolbar:after {
|
||||||
|
display: block;
|
||||||
|
content: '...toolbar';
|
||||||
|
background: rgba(0,0,0,0.07);
|
||||||
|
}
|
||||||
|
.toolbar:hover {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.toolbar:hover:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.page-header {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.entrylist-header {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.entrylist-header h3,
|
||||||
|
.entrylist-header a {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.entryList {
|
||||||
|
padding-top: 18px;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread .entry-heading {
|
||||||
|
background: #c9c9c9;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread:nth-of-type(2n) .entry-heading {
|
||||||
|
background: #ddd;
|
||||||
|
}
|
||||||
|
#feed-accordion .unread .entry-heading:hover,
|
||||||
|
#feed-accordion .unread:nth-of-type(2n):hover {
|
||||||
|
background: #ebebeb;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-heading-link {
|
||||||
|
color: #5a6069 !important;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-heading-link:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body {
|
||||||
|
background: #c7cbcc;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a:not([popup]) {
|
||||||
|
color: #a68589;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body a:not([popup]):visited {
|
||||||
|
color: #8d8e8e;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-body img {
|
||||||
|
-webkit-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
-moz-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
-ms-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
-o-box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
box-shadow: 0 0 2px 0 rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
#feed-accordion .highlight-search {
|
||||||
|
background: inherit;
|
||||||
|
}
|
||||||
|
#feed-accordion .entry-buttons {
|
||||||
|
background: #a68589;
|
||||||
|
margin-left: -15px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#feed-accordion.expanded .entry {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
-moz-box-shadow: none;
|
||||||
|
-ms-box-shadow: none;
|
||||||
|
-o-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
input[ng-model='keywords'] {
|
||||||
|
border: none;
|
||||||
|
height: 32px;
|
||||||
|
background: #9ba8aa;
|
||||||
|
}
|
||||||
|
.css-treeview .selected {
|
||||||
|
color: #2c4967;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.css-treeview .unread-counter {
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
.css-treeview li .tree-item:hover {
|
||||||
|
background: #ebebeb;
|
||||||
|
}
|
||||||
|
.css-treeview a {
|
||||||
|
color: #5a6069;
|
||||||
|
}
|
||||||
|
.css-treeview a:hover {
|
||||||
|
font-size: 1.02em;
|
||||||
|
}
|
||||||
|
.css-treeview a:hover img {
|
||||||
|
-webkit-border-radius: 1px;
|
||||||
|
-moz-border-radius: 1px;
|
||||||
|
-ms-border-radius: 1px;
|
||||||
|
-o-border-radius: 1px;
|
||||||
|
border-radius: 1px;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.css-treeview img {
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-ms-border-radius: 4px;
|
||||||
|
-o-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
#uvTab {
|
||||||
|
margin-bottom: -23px;
|
||||||
|
}
|
||||||
|
#uvTab:hover {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -131,7 +131,6 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div spinner shown="loading"></div>
|
|
||||||
<span ng-if="!MobileService.mobile" ng-bind-html="ServerService.announcement | trustHtml"></span>
|
<span ng-if="!MobileService.mobile" ng-bind-html="ServerService.announcement | trustHtml"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -34,4 +34,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<pre ng-if="state == 'failed'">{{stacktrace}}</pre>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,7 +56,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="entry-body-content">
|
<div class="entry-body-content">
|
||||||
<div ng-bind-html="entry.content | iframeHttpsRewrite| highlight:keywords | trustHtml"></div>
|
<div ng-if="!MobileService.mobile" ng-bind-html="entry.content | iframeHttpsRewrite| highlight:keywords | trustHtml"></div>
|
||||||
|
<div ng-if="MobileService.mobile" ng-bind-html="entry.content | iframeHttpsRewrite| highlight:keywords | appendImageTitles | trustHtml"></div>
|
||||||
|
|
||||||
<div class="entry-enclosure" ng-if="entry.enclosureType">
|
<div class="entry-enclosure" ng-if="entry.enclosureType">
|
||||||
<video controls ng-if="entry.enclosureType && entry.enclosureType.indexOf('video') == 0">
|
<video controls ng-if="entry.enclosureType && entry.enclosureType.indexOf('video') == 0">
|
||||||
<source ng-src="{{entry.enclosureUrl | trustUrl}}" type="{{entry.enclosureType}}" />
|
<source ng-src="{{entry.enclosureUrl | trustUrl}}" type="{{entry.enclosureType}}" />
|
||||||
@@ -74,40 +76,49 @@
|
|||||||
<div class="form-group star" ng-mouseup="star(entry, !entry.starred, $event)">
|
<div class="form-group star" ng-mouseup="star(entry, !entry.starred, $event)">
|
||||||
<i ng-class="{'icon-star icon-star-yellow': entry.starred, 'icon-star-empty': !entry.starred}" class="pointer"></i>
|
<i ng-class="{'icon-star icon-star-yellow': entry.starred, 'icon-star-empty': !entry.starred}" class="pointer"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
<div class="checkbox-inline keep-unread">
|
||||||
<label ng-if="entry.markable">
|
<label ng-if="entry.markable" class="pointer">
|
||||||
<input type="checkbox" ng-checked="!entry.read" ng-click="mark(entry, !entry.read)" class="mousetrap"></input>
|
<input type="checkbox" ng-checked="!entry.read" ng-click="mark(entry, !entry.read)" class="mousetrap"></input>
|
||||||
${view.keep_unread}
|
${view.keep_unread}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span class="share-buttons" ng-if="settingsService.settings.socialButtons">
|
<span class="share-buttons">
|
||||||
<a href="mailto:?subject={{entry.title|escape}}&body={{entry.url|escape}}" title="E-mail" popup>
|
<a href="mailto:?subject={{entry.title|escape}}&body={{entry.url|escape}}" title="E-mail" popup ng-if="settingsService.settings.email">
|
||||||
<i class="icon-envelope"></i>
|
<i class="icon-envelope"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://mail.google.com/mail/?view=cm&fs=1&tf=1&source=mailto&su={{entry.title|escape}}&body={{entry.url|escape}}"
|
<a href="https://mail.google.com/mail/?view=cm&fs=1&tf=1&source=mailto&su={{entry.title|escape}}&body={{entry.url|escape}}"
|
||||||
title="Gmail" popup>
|
title="Gmail" popup ng-if="settingsService.settings.gmail">
|
||||||
<i class="icon-gmail"></i>
|
<i class="icon-gmail"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="http://www.facebook.com/sharer.php?u=={{entry.url|escape}}" title="Facebook" popup>
|
<a href="http://www.facebook.com/sharer.php?u=={{entry.url|escape}}" title="Facebook" popup ng-if="settingsService.settings.facebook">
|
||||||
<i class="icon-facebook"></i>
|
<i class="icon-facebook"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="http://twitter.com/share?text={{entry.title|escape}}&url={{entry.url|escape}}" title="Twitter" popup>
|
<a href="http://twitter.com/share?text={{entry.title|escape}}&url={{entry.url|escape}}" title="Twitter" popup
|
||||||
|
ng-if="settingsService.settings.twitter">
|
||||||
<i class="icon-twitter"></i>
|
<i class="icon-twitter"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://plus.google.com/share?url={{entry.url|escape}}" title="Google+" popup>
|
<a href="https://plus.google.com/share?url={{entry.url|escape}}" title="Google+" popup ng-if="settingsService.settings.googleplus">
|
||||||
<i class="icon-google-plus"></i>
|
<i class="icon-google-plus"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://getpocket.com/save?url={{entry.url|escape}}&title={{entry.title|escape}}" title="Pocket" popup>
|
<a href="http://www.tumblr.com/share/link?url={{entry.url|escape}}&name={{entry.title|escape}}" title="Tumblr" popup
|
||||||
|
ng-if="settingsService.settings.tumblr">
|
||||||
|
<i class="icon-tumblr"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://getpocket.com/save?url={{entry.url|escape}}&title={{entry.title|escape}}" title="Pocket" popup
|
||||||
|
ng-if="settingsService.settings.pocket">
|
||||||
<i class="icon-pocket"></i>
|
<i class="icon-pocket"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.instapaper.com/hello2?url={{entry.url|escape}}&title={{entry.title|escape}}" title="Instapaper" popup>
|
<a href="https://www.instapaper.com/hello2?url={{entry.url|escape}}&title={{entry.title|escape}}" title="Instapaper" popup
|
||||||
|
ng-if="settingsService.settings.instapaper">
|
||||||
<i class="icon-instapaper"></i>
|
<i class="icon-instapaper"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://bufferapp.com/add?url={{entry.url|escape}}&text={{entry.title|escape}}" title="Buffer" popup>
|
<a href="https://bufferapp.com/add?url={{entry.url|escape}}&text={{entry.title|escape}}" title="Buffer" popup
|
||||||
|
ng-if="settingsService.settings.buffer">
|
||||||
<i class="icon-buffer"></i>
|
<i class="icon-buffer"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="http://www.readability.com/save?url={{entry.url|escape}}" title="Readability" popup>
|
<a href="http://www.readability.com/save?url={{entry.url|escape}}" title="Readability" popup
|
||||||
|
ng-if="settingsService.settings.readability">
|
||||||
<i class="icon-couch"></i>
|
<i class="icon-couch"></i>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -34,18 +34,85 @@
|
|||||||
${settings.general.show_unread}
|
${settings.general.show_unread}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="checkbox">
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" name="socialButtons" ng-model="settings.socialButtons" />
|
|
||||||
${settings.general.social_buttons}
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" name="scrollMarks" ng-model="settings.scrollMarks" />
|
<input type="checkbox" name="scrollMarks" ng-model="settings.scrollMarks" />
|
||||||
${settings.general.scroll_marks}
|
${settings.general.scroll_marks}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4>${settings.general.social_buttons}</h4>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="email" ng-model="settings.email" />
|
||||||
|
<i class="icon-envelope"></i>
|
||||||
|
E-Mail
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="gmail" ng-model="settings.gmail" />
|
||||||
|
<i class="icon-gmail"></i>
|
||||||
|
GMail
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="facebook" ng-model="settings.facebook" />
|
||||||
|
<i class="icon-facebook"></i>
|
||||||
|
Facebook
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="twitter" ng-model="settings.twitter" />
|
||||||
|
<i class="icon-twitter"></i>
|
||||||
|
Twitter
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="googleplus" ng-model="settings.googleplus" />
|
||||||
|
<i class="icon-google-plus"></i>
|
||||||
|
Google+
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="tumblr" ng-model="settings.tumblr" />
|
||||||
|
<i class="icon-tumblr"></i>
|
||||||
|
Tumblr
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="pocket" ng-model="settings.pocket" />
|
||||||
|
<i class="icon-pocket"></i>
|
||||||
|
Pocket
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="instapaper" ng-model="settings.instapaper" />
|
||||||
|
<i class="icon-instapaper"></i>
|
||||||
|
Instapaper
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="buffer" ng-model="settings.buffer" />
|
||||||
|
<i class="icon-buffer"></i>
|
||||||
|
Buffer
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="readability" ng-model="settings.readability" />
|
||||||
|
<i class="icon-couch"></i>
|
||||||
|
Readability
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" ng-class="{active: tab == 'css'}">
|
<div class="tab-pane" ng-class="{active: tab == 'css'}">
|
||||||
|
|||||||
300
src/main/webapp/vendor/angular-loading-bar/loading-bar.0.4.0.min.js
vendored
Normal file
300
src/main/webapp/vendor/angular-loading-bar/loading-bar.0.4.0.min.js
vendored
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
/*!
|
||||||
|
* angular-loading-bar v0.4.0
|
||||||
|
* https://chieffancypants.github.io/angular-loading-bar
|
||||||
|
* Copyright (c) 2014 Wes Cruver
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* angular-loading-bar
|
||||||
|
*
|
||||||
|
* intercepts XHR requests and creates a loading bar.
|
||||||
|
* Based on the excellent nprogress work by rstacruz (more info in readme)
|
||||||
|
*
|
||||||
|
* (c) 2013 Wes Cruver
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Alias the loading bar so it can be included using a simpler
|
||||||
|
// (and maybe more professional) module name:
|
||||||
|
angular.module('angular-loading-bar', ['chieffancypants.loadingBar']);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* loadingBarInterceptor service
|
||||||
|
*
|
||||||
|
* Registers itself as an Angular interceptor and listens for XHR requests.
|
||||||
|
*/
|
||||||
|
angular.module('chieffancypants.loadingBar', [])
|
||||||
|
.config(['$httpProvider', function ($httpProvider) {
|
||||||
|
|
||||||
|
var interceptor = ['$q', '$cacheFactory', '$timeout', '$rootScope', 'cfpLoadingBar', function ($q, $cacheFactory, $timeout, $rootScope, cfpLoadingBar) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The total number of requests made
|
||||||
|
*/
|
||||||
|
var reqsTotal = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of requests completed (either successfully or not)
|
||||||
|
*/
|
||||||
|
var reqsCompleted = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The amount of time spent fetching before showing the loading bar
|
||||||
|
*/
|
||||||
|
var latencyThreshold = cfpLoadingBar.latencyThreshold;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* $timeout handle for latencyThreshold
|
||||||
|
*/
|
||||||
|
var startTimeout;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* calls cfpLoadingBar.complete() which removes the
|
||||||
|
* loading bar from the DOM.
|
||||||
|
*/
|
||||||
|
function setComplete() {
|
||||||
|
$timeout.cancel(startTimeout);
|
||||||
|
cfpLoadingBar.complete();
|
||||||
|
reqsCompleted = 0;
|
||||||
|
reqsTotal = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the response has already been cached
|
||||||
|
* @param {Object} config the config option from the request
|
||||||
|
* @return {Boolean} retrns true if cached, otherwise false
|
||||||
|
*/
|
||||||
|
function isCached(config) {
|
||||||
|
var cache;
|
||||||
|
var defaults = $httpProvider.defaults;
|
||||||
|
|
||||||
|
if (config.method !== 'GET' || config.cache === false) {
|
||||||
|
config.cached = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.cache === true && defaults.cache === undefined) {
|
||||||
|
cache = $cacheFactory.get('$http');
|
||||||
|
} else if (defaults.cache !== undefined) {
|
||||||
|
cache = defaults.cache;
|
||||||
|
} else {
|
||||||
|
cache = config.cache;
|
||||||
|
}
|
||||||
|
|
||||||
|
var cached = cache !== undefined ?
|
||||||
|
cache.get(config.url) !== undefined : false;
|
||||||
|
|
||||||
|
if (config.cached !== undefined && cached !== config.cached) {
|
||||||
|
return config.cached;
|
||||||
|
}
|
||||||
|
config.cached = cached;
|
||||||
|
return cached;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
'request': function(config) {
|
||||||
|
// Check to make sure this request hasn't already been cached and that
|
||||||
|
// the requester didn't explicitly ask us to ignore this request:
|
||||||
|
if (!config.ignoreLoadingBar && !isCached(config)) {
|
||||||
|
$rootScope.$broadcast('cfpLoadingBar:loading', {url: config.url});
|
||||||
|
if (reqsTotal === 0) {
|
||||||
|
startTimeout = $timeout(function() {
|
||||||
|
cfpLoadingBar.start();
|
||||||
|
}, latencyThreshold);
|
||||||
|
}
|
||||||
|
reqsTotal++;
|
||||||
|
cfpLoadingBar.set(reqsCompleted / reqsTotal);
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
|
||||||
|
'response': function(response) {
|
||||||
|
if (response.config && !isCached(response.config)) {
|
||||||
|
reqsCompleted++;
|
||||||
|
$rootScope.$broadcast('cfpLoadingBar:loaded', {url: response.config.url});
|
||||||
|
if (reqsCompleted >= reqsTotal) {
|
||||||
|
setComplete();
|
||||||
|
} else {
|
||||||
|
cfpLoadingBar.set(reqsCompleted / reqsTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
},
|
||||||
|
|
||||||
|
'responseError': function(rejection) {
|
||||||
|
if (!isCached(rejection.config)) {
|
||||||
|
reqsCompleted++;
|
||||||
|
$rootScope.$broadcast('cfpLoadingBar:loaded', {url: rejection.config.url});
|
||||||
|
if (reqsCompleted >= reqsTotal) {
|
||||||
|
setComplete();
|
||||||
|
} else {
|
||||||
|
cfpLoadingBar.set(reqsCompleted / reqsTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $q.reject(rejection);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
|
||||||
|
$httpProvider.interceptors.push(interceptor);
|
||||||
|
}])
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loading Bar
|
||||||
|
*
|
||||||
|
* This service handles adding and removing the actual element in the DOM.
|
||||||
|
* Generally, best practices for DOM manipulation is to take place in a
|
||||||
|
* directive, but because the element itself is injected in the DOM only upon
|
||||||
|
* XHR requests, and it's likely needed on every view, the best option is to
|
||||||
|
* use a service.
|
||||||
|
*/
|
||||||
|
.provider('cfpLoadingBar', function() {
|
||||||
|
|
||||||
|
this.includeSpinner = true;
|
||||||
|
this.includeBar = true;
|
||||||
|
this.latencyThreshold = 100;
|
||||||
|
this.startSize = 0.02;
|
||||||
|
this.parentSelector = 'body';
|
||||||
|
|
||||||
|
this.$get = ['$document', '$timeout', '$animate', '$rootScope', function ($document, $timeout, $animate, $rootScope) {
|
||||||
|
|
||||||
|
var $parentSelector = this.parentSelector,
|
||||||
|
$parent = $document.find($parentSelector),
|
||||||
|
loadingBarContainer = angular.element('<div id="loading-bar"><div class="bar"><div class="peg"></div></div></div>'),
|
||||||
|
loadingBar = loadingBarContainer.find('div').eq(0),
|
||||||
|
spinner = angular.element('<div id="loading-bar-spinner"><div class="spinner-icon"></div></div>');
|
||||||
|
|
||||||
|
var incTimeout,
|
||||||
|
completeTimeout,
|
||||||
|
started = false,
|
||||||
|
status = 0;
|
||||||
|
|
||||||
|
var includeSpinner = this.includeSpinner;
|
||||||
|
var includeBar = this.includeBar;
|
||||||
|
var startSize = this.startSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts the loading bar element into the dom, and sets it to 2%
|
||||||
|
*/
|
||||||
|
function _start() {
|
||||||
|
$timeout.cancel(completeTimeout);
|
||||||
|
|
||||||
|
// do not continually broadcast the started event:
|
||||||
|
if (started) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rootScope.$broadcast('cfpLoadingBar:started');
|
||||||
|
started = true;
|
||||||
|
|
||||||
|
if (includeBar) {
|
||||||
|
$animate.enter(loadingBarContainer, $parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (includeSpinner) {
|
||||||
|
$animate.enter(spinner, $parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
_set(startSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the loading bar's width to a certain percent.
|
||||||
|
*
|
||||||
|
* @param n any value between 0 and 1
|
||||||
|
*/
|
||||||
|
function _set(n) {
|
||||||
|
if (!started) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var pct = (n * 100) + '%';
|
||||||
|
loadingBar.css('width', pct);
|
||||||
|
status = n;
|
||||||
|
|
||||||
|
// increment loadingbar to give the illusion that there is always
|
||||||
|
// progress but make sure to cancel the previous timeouts so we don't
|
||||||
|
// have multiple incs running at the same time.
|
||||||
|
$timeout.cancel(incTimeout);
|
||||||
|
incTimeout = $timeout(function() {
|
||||||
|
_inc();
|
||||||
|
}, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increments the loading bar by a random amount
|
||||||
|
* but slows down as it progresses
|
||||||
|
*/
|
||||||
|
function _inc() {
|
||||||
|
if (_status() >= 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rnd = 0;
|
||||||
|
|
||||||
|
// TODO: do this mathmatically instead of through conditions
|
||||||
|
|
||||||
|
var stat = _status();
|
||||||
|
if (stat >= 0 && stat < 0.25) {
|
||||||
|
// Start out between 3 - 6% increments
|
||||||
|
rnd = (Math.random() * (5 - 3 + 1) + 3) / 100;
|
||||||
|
} else if (stat >= 0.25 && stat < 0.65) {
|
||||||
|
// increment between 0 - 3%
|
||||||
|
rnd = (Math.random() * 3) / 100;
|
||||||
|
} else if (stat >= 0.65 && stat < 0.9) {
|
||||||
|
// increment between 0 - 2%
|
||||||
|
rnd = (Math.random() * 2) / 100;
|
||||||
|
} else if (stat >= 0.9 && stat < 0.99) {
|
||||||
|
// finally, increment it .5 %
|
||||||
|
rnd = 0.005;
|
||||||
|
} else {
|
||||||
|
// after 99%, don't increment:
|
||||||
|
rnd = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var pct = _status() + rnd;
|
||||||
|
_set(pct);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _status() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _complete() {
|
||||||
|
$rootScope.$broadcast('cfpLoadingBar:completed');
|
||||||
|
_set(1);
|
||||||
|
|
||||||
|
// Attempt to aggregate any start/complete calls within 500ms:
|
||||||
|
completeTimeout = $timeout(function() {
|
||||||
|
$animate.leave(loadingBarContainer, function() {
|
||||||
|
status = 0;
|
||||||
|
started = false;
|
||||||
|
});
|
||||||
|
$animate.leave(spinner);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
start : _start,
|
||||||
|
set : _set,
|
||||||
|
status : _status,
|
||||||
|
inc : _inc,
|
||||||
|
complete : _complete,
|
||||||
|
includeSpinner : this.includeSpinner,
|
||||||
|
latencyThreshold : this.latencyThreshold,
|
||||||
|
parentSelector : this.parentSelector,
|
||||||
|
startSize : this.startSize
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}]; //
|
||||||
|
}); // wtf javascript. srsly
|
||||||
|
})(); //
|
||||||
8
src/main/webapp/vendor/angular-loading-bar/loading-bar.min.css
vendored
Normal file
8
src/main/webapp/vendor/angular-loading-bar/loading-bar.min.css
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/*!
|
||||||
|
* angular-loading-bar v0.4.0
|
||||||
|
* https://chieffancypants.github.io/angular-loading-bar
|
||||||
|
* Copyright (c) 2014 Wes Cruver
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:2000;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:2000;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:loading-bar-spinner 400ms linear infinite;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}}
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
/*
|
|
||||||
AngularJS v1.2.3
|
|
||||||
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
||||||
License: MIT
|
|
||||||
*/
|
|
||||||
(function(X,O,r){'use strict';function A(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.3/"+(b?b+"/":"")+a;for(c=1;c<arguments.length;c++)a=a+(1==c?"?":"&")+"p"+(c-1)+"="+encodeURIComponent("function"==typeof arguments[c]?arguments[c].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[c]?"undefined":"string"!=typeof arguments[c]?JSON.stringify(arguments[c]):arguments[c]);return Error(a)}}function pb(b){if(null==b||ya(b))return!1;var a=
|
|
||||||
b.length;return 1===b.nodeType&&a?!0:w(b)||K(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function q(b,a,c){var d;if(b)if(I(b))for(d in b)"prototype"!=d&&("length"!=d&&"name"!=d&&b.hasOwnProperty(d))&&a.call(c,b[d],d);else if(b.forEach&&b.forEach!==q)b.forEach(a,c);else if(pb(b))for(d=0;d<b.length;d++)a.call(c,b[d],d);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d);return b}function Ob(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()}function Mc(b,a,c){for(var d=Ob(b),
|
|
||||||
e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function Pb(b){return function(a,c){b(c,a)}}function Za(){for(var b=ja.length,a;b;){b--;a=ja[b].charCodeAt(0);if(57==a)return ja[b]="A",ja.join("");if(90==a)ja[b]="0";else return ja[b]=String.fromCharCode(a+1),ja.join("")}ja.unshift("0");return ja.join("")}function Qb(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function F(b){var a=b.$$hashKey;q(arguments,function(a){a!==b&&q(a,function(a,c){b[c]=a})});Qb(b,a);return b}function S(b){return parseInt(b,
|
|
||||||
10)}function Rb(b,a){return F(new (F(function(){},{prototype:b})),a)}function v(){}function za(b){return b}function ba(b){return function(){return b}}function C(b){return"undefined"==typeof b}function B(b){return"undefined"!=typeof b}function V(b){return null!=b&&"object"==typeof b}function w(b){return"string"==typeof b}function qb(b){return"number"==typeof b}function Ka(b){return"[object Date]"==$a.apply(b)}function K(b){return"[object Array]"==$a.apply(b)}function I(b){return"function"==typeof b}
|
|
||||||
function ab(b){return"[object RegExp]"==$a.apply(b)}function ya(b){return b&&b.document&&b.location&&b.alert&&b.setInterval}function Nc(b){return b&&(b.nodeName||b.on&&b.find)}function Oc(b,a,c){var d=[];q(b,function(b,g,f){d.push(a.call(c,b,g,f))});return d}function bb(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0;c<b.length;c++)if(a===b[c])return c;return-1}function La(b,a){var c=bb(b,a);0<=c&&b.splice(c,1);return a}function ga(b,a){if(ya(b)||b&&b.$evalAsync&&b.$watch)throw Ma("cpws");if(a){if(b===
|
|
||||||
a)throw Ma("cpi");if(K(b))for(var c=a.length=0;c<b.length;c++)a.push(ga(b[c]));else{c=a.$$hashKey;q(a,function(b,c){delete a[c]});for(var d in b)a[d]=ga(b[d]);Qb(a,c)}}else(a=b)&&(K(b)?a=ga(b,[]):Ka(b)?a=new Date(b.getTime()):ab(b)?a=RegExp(b.source):V(b)&&(a=ga(b,{})));return a}function Pc(b,a){a=a||{};for(var c in b)b.hasOwnProperty(c)&&"$$"!==c.substr(0,2)&&(a[c]=b[c]);return a}function Aa(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&
|
|
||||||
"object"==c)if(K(b)){if(!K(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!Aa(b[d],a[d]))return!1;return!0}}else{if(Ka(b))return Ka(a)&&b.getTime()==a.getTime();if(ab(b)&&ab(a))return b.toString()==a.toString();if(b&&b.$evalAsync&&b.$watch||a&&a.$evalAsync&&a.$watch||ya(b)||ya(a)||K(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!I(b[d])){if(!Aa(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==r&&!I(a[d]))return!1;return!0}return!1}function Sb(){return O.securityPolicy&&
|
|
||||||
O.securityPolicy.isActive||O.querySelector&&!(!O.querySelector("[ng-csp]")&&!O.querySelector("[data-ng-csp]"))}function rb(b,a){var c=2<arguments.length?ta.call(arguments,2):[];return!I(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,c.concat(ta.call(arguments,0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Qc(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)?c=r:ya(a)?c="$WINDOW":a&&O===a?c="$DOCUMENT":a&&(a.$evalAsync&&
|
|
||||||
a.$watch)&&(c="$SCOPE");return c}function oa(b,a){return"undefined"===typeof b?r:JSON.stringify(b,Qc,a?" ":null)}function Tb(b){return w(b)?JSON.parse(b):b}function Na(b){b&&0!==b.length?(b=t(""+b),b=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)):b=!1;return b}function ha(b){b=x(b).clone();try{b.html("")}catch(a){}var c=x("<div>").append(b).html();try{return 3===b[0].nodeType?t(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+t(b)})}catch(d){return t(c)}}function Ub(b){try{return decodeURIComponent(b)}catch(a){}}
|
|
||||||
function Vb(b){var a={},c,d;q((b||"").split("&"),function(b){b&&(c=b.split("="),d=Ub(c[0]),B(d)&&(b=B(c[1])?Ub(c[1]):!0,a[d]?K(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Wb(b){var a=[];q(b,function(b,d){K(b)?q(b,function(b){a.push(ua(d,!0)+(!0===b?"":"="+ua(b,!0)))}):a.push(ua(d,!0)+(!0===b?"":"="+ua(b,!0)))});return a.length?a.join("&"):""}function sb(b){return ua(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ua(b,a){return encodeURIComponent(b).replace(/%40/gi,
|
|
||||||
"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Rc(b,a){function c(a){a&&d.push(a)}var d=[b],e,g,f=["ng:app","ng-app","x-ng-app","data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;q(f,function(a){f[a]=!0;c(O.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(q(b.querySelectorAll("."+a),c),q(b.querySelectorAll("."+a+"\\:"),c),q(b.querySelectorAll("["+a+"]"),c))});q(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,g=
|
|
||||||
(b[2]||"").replace(/\s+/g,",")):q(a.attributes,function(b){!e&&f[b.name]&&(e=a,g=b.value)})}});e&&a(e,g?[g]:[])}function Xb(b,a){var c=function(){b=x(b);if(b.injector()){var c=b[0]===O?"document":ha(b);throw Ma("btstrpd",c);}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=Yb(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;
|
|
||||||
if(X&&!d.test(X.name))return c();X.name=X.name.replace(d,"");cb.resumeBootstrap=function(b){q(b,function(b){a.push(b)});c()}}function db(b,a){a=a||"_";return b.replace(Sc,function(b,d){return(d?a:"")+b.toLowerCase()})}function tb(b,a,c){if(!b)throw Ma("areq",a||"?",c||"required");return b}function Oa(b,a,c){c&&K(b)&&(b=b[b.length-1]);tb(I(b),a,"not a function, got "+(b&&"object"==typeof b?b.constructor.name||"Object":typeof b));return b}function va(b,a){if("hasOwnProperty"===b)throw Ma("badname",
|
|
||||||
a);}function ub(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,g=a.length,f=0;f<g;f++)d=a[f],b&&(b=(e=b)[d]);return!c&&I(b)?rb(e,b):b}function vb(b){if(b.startNode===b.endNode)return x(b.startNode);var a=b.startNode,c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b.endNode);return x(c)}function Tc(b){var a=A("$injector"),c=A("ng");b=b.angular||(b.angular={});b.$$minErr=b.$$minErr||A;return b.module||(b.module=function(){var b={};return function(e,g,f){if("hasOwnProperty"===e)throw c("badname",
|
|
||||||
"module");g&&b.hasOwnProperty(e)&&(b[e]=null);return b[e]||(b[e]=function(){function b(a,d,e){return function(){c[e||"push"]([a,d,arguments]);return n}}if(!g)throw a("nomod",e);var c=[],d=[],l=b("$injector","invoke"),n={_invokeQueue:c,_runBlocks:d,requires:g,name:e,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:b("$provide","value"),constant:b("$provide","constant","unshift"),animation:b("$animateProvider","register"),filter:b("$filterProvider",
|
|
||||||
"register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),config:l,run:function(a){d.push(a);return this}};f&&l(f);return n}())}}())}function Pa(b){return b.replace(Uc,function(a,b,d,e){return e?d.toUpperCase():d}).replace(Vc,"Moz$1")}function wb(b,a,c,d){function e(b){var e=c&&b?[this.filter(b)]:[this],m=a,k,l,n,p,s,D;if(!d||null!=b)for(;e.length;)for(k=e.shift(),l=0,n=k.length;l<n;l++)for(p=x(k[l]),m?p.triggerHandler("$destroy"):m=!m,s=0,p=(D=p.children()).length;s<
|
|
||||||
p;s++)e.push(Ba(D[s]));return g.apply(this,arguments)}var g=Ba.fn[b],g=g.$original||g;e.$original=g;Ba.fn[b]=e}function L(b){if(b instanceof L)return b;if(!(this instanceof L)){if(w(b)&&"<"!=b.charAt(0))throw xb("nosel");return new L(b)}if(w(b)){var a=O.createElement("div");a.innerHTML="<div> </div>"+b;a.removeChild(a.firstChild);yb(this,a.childNodes);x(O.createDocumentFragment()).append(this)}else yb(this,b)}function zb(b){return b.cloneNode(!0)}function Qa(b){Zb(b);var a=0;for(b=b.childNodes||
|
|
||||||
[];a<b.length;a++)Qa(b[a])}function $b(b,a,c,d){if(B(d))throw xb("offargs");var e=ka(b,"events");ka(b,"handle")&&(C(a)?q(e,function(a,c){Ab(b,c,a);delete e[c]}):q(a.split(" "),function(a){C(c)?(Ab(b,a,e[a]),delete e[a]):La(e[a]||[],c)}))}function Zb(b,a){var c=b[eb],d=Ra[c];d&&(a?delete Ra[c].data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),$b(b)),delete Ra[c],b[eb]=r))}function ka(b,a,c){var d=b[eb],d=Ra[d||-1];if(B(c))d||(b[eb]=d=++Wc,d=Ra[d]={}),d[a]=c;else return d&&d[a]}function ac(b,
|
|
||||||
a,c){var d=ka(b,"data"),e=B(c),g=!e&&B(a),f=g&&!V(a);d||f||ka(b,"data",d={});if(e)d[a]=c;else if(g){if(f)return d&&d[a];F(d,a)}else return d}function Bb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Cb(b,a){a&&b.setAttribute&&q(a.split(" "),function(a){b.setAttribute("class",$((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+$(a)+" "," ")))})}function Db(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||
|
|
||||||
"")+" ").replace(/[\n\t]/g," ");q(a.split(" "),function(a){a=$(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",$(c))}}function yb(b,a){if(a){a=a.nodeName||!B(a.length)||ya(a)?[a]:a;for(var c=0;c<a.length;c++)b.push(a[c])}}function bc(b,a){return fb(b,"$"+(a||"ngController")+"Controller")}function fb(b,a,c){b=x(b);9==b[0].nodeType&&(b=b.find("html"));for(a=K(a)?a:[a];b.length;){for(var d=0,e=a.length;d<e;d++)if((c=b.data(a[d]))!==r)return c;b=b.parent()}}function cc(b,a){var c=gb[a.toLowerCase()];
|
|
||||||
return c&&dc[b.nodeName]&&c}function Xc(b,a){var c=function(c,e){c.preventDefault||(c.preventDefault=function(){c.returnValue=!1});c.stopPropagation||(c.stopPropagation=function(){c.cancelBubble=!0});c.target||(c.target=c.srcElement||O);if(C(c.defaultPrevented)){var g=c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;g.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented||!1===c.returnValue};q(a[e||c.type],function(a){a.call(b,c)});8>=M?(c.preventDefault=
|
|
||||||
null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ca(b){var a=typeof b,c;"object"==a&&null!==b?"function"==typeof(c=b.$$hashKey)?c=b.$$hashKey():c===r&&(c=b.$$hashKey=Za()):c=b;return a+":"+c}function Sa(b){q(b,this.put,this)}function ec(b){var a,c;"function"==typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(Yc,""),c=c.match(Zc),q(c[1].split($c),function(b){b.replace(ad,function(b,
|
|
||||||
c,d){a.push(d)})})),b.$inject=a):K(b)?(c=b.length-1,Oa(b[c],"fn"),a=b.slice(0,c)):Oa(b,"fn",!0);return a}function Yb(b){function a(a){return function(b,c){if(V(b))q(b,Pb(a));else return a(b,c)}}function c(a,b){va(a,"service");if(I(b)||K(b))b=n.instantiate(b);if(!b.$get)throw Ta("pget",a);return l[a+h]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,h,g;q(a,function(a){if(!k.get(a)){k.put(a,!0);try{if(w(a))for(c=Ua(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,
|
|
||||||
h=0,g=d.length;h<g;h++){var f=d[h],m=n.get(f[0]);m[f[1]].apply(m,f[2])}else I(a)?b.push(n.invoke(a)):K(a)?b.push(n.invoke(a)):Oa(a,"module")}catch(l){throw K(a)&&(a=a[a.length-1]),l.message&&(l.stack&&-1==l.stack.indexOf(l.message))&&(l=l.message+"\n"+l.stack),Ta("modulerr",a,l.stack||l.message||l);}}});return b}function g(a,b){function c(d){if(a.hasOwnProperty(d)){if(a[d]===f)throw Ta("cdep",m.join(" <- "));return a[d]}try{return m.unshift(d),a[d]=f,a[d]=b(d)}finally{m.shift()}}function d(a,b,e){var h=
|
|
||||||
[],g=ec(a),f,k,m;k=0;for(f=g.length;k<f;k++){m=g[k];if("string"!==typeof m)throw Ta("itkn",m);h.push(e&&e.hasOwnProperty(m)?e[m]:c(m))}a.$inject||(a=a[f]);switch(b?-1:h.length){case 0:return a();case 1:return a(h[0]);case 2:return a(h[0],h[1]);case 3:return a(h[0],h[1],h[2]);case 4:return a(h[0],h[1],h[2],h[3]);case 5:return a(h[0],h[1],h[2],h[3],h[4]);case 6:return a(h[0],h[1],h[2],h[3],h[4],h[5]);case 7:return a(h[0],h[1],h[2],h[3],h[4],h[5],h[6]);case 8:return a(h[0],h[1],h[2],h[3],h[4],h[5],h[6],
|
|
||||||
h[7]);case 9:return a(h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],h[8]);case 10:return a(h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],h[8],h[9]);default:return a.apply(b,h)}}return{invoke:d,instantiate:function(a,b){var c=function(){},e;c.prototype=(K(a)?a[a.length-1]:a).prototype;c=new c;e=d(a,c,b);return V(e)||I(e)?e:c},get:c,annotate:ec,has:function(b){return l.hasOwnProperty(b+h)||a.hasOwnProperty(b)}}}var f={},h="Provider",m=[],k=new Sa,l={$provide:{provider:a(c),factory:a(d),service:a(function(a,b){return d(a,
|
|
||||||
["$injector",function(a){return a.instantiate(b)}])}),value:a(function(a,b){return d(a,ba(b))}),constant:a(function(a,b){va(a,"constant");l[a]=b;p[a]=b}),decorator:function(a,b){var c=n.get(a+h),d=c.$get;c.$get=function(){var a=s.invoke(d,c);return s.invoke(b,null,{$delegate:a})}}}},n=l.$injector=g(l,function(){throw Ta("unpr",m.join(" <- "));}),p={},s=p.$injector=g(p,function(a){a=n.get(a+h);return s.invoke(a.$get,a)});q(e(b),function(a){s.invoke(a||v)});return s}function bd(){var b=!0;this.disableAutoScrolling=
|
|
||||||
function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;q(a,function(a){b||"a"!==t(a.nodeName)||(b=a)});return b}function g(){var b=c.hash(),d;b?(d=f.getElementById(b))?d.scrollIntoView():(d=e(f.getElementsByName(b)))?d.scrollIntoView():"top"===b&&a.scrollTo(0,0):a.scrollTo(0,0)}var f=a.document;b&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(g)});return g}]}function cd(b,a,c,d){function e(a){try{a.apply(null,ta.call(arguments,1))}finally{if(D--,
|
|
||||||
0===D)for(;u.length;)try{u.pop()()}catch(b){c.error(b)}}}function g(a,b){(function la(){q(Q,function(a){a()});z=b(la,a)})()}function f(){y=null;Y!=h.url()&&(Y=h.url(),q(aa,function(a){a(h.url())}))}var h=this,m=a[0],k=b.location,l=b.history,n=b.setTimeout,p=b.clearTimeout,s={};h.isMock=!1;var D=0,u=[];h.$$completeOutstandingRequest=e;h.$$incOutstandingRequestCount=function(){D++};h.notifyWhenNoOutstandingRequests=function(a){q(Q,function(a){a()});0===D?a():u.push(a)};var Q=[],z;h.addPollFn=function(a){C(z)&&
|
|
||||||
g(100,n);Q.push(a);return a};var Y=k.href,H=a.find("base"),y=null;h.url=function(a,c){k!==b.location&&(k=b.location);if(a){if(Y!=a)return Y=a,d.history?c?l.replaceState(null,"",a):(l.pushState(null,"",a),H.attr("href",H.attr("href"))):(y=a,c?k.replace(a):k.href=a),h}else return y||k.href.replace(/%27/g,"'")};var aa=[],R=!1;h.onUrlChange=function(a){if(!R){if(d.history)x(b).on("popstate",f);if(d.hashchange)x(b).on("hashchange",f);else h.addPollFn(f);R=!0}aa.push(a);return a};h.baseHref=function(){var a=
|
|
||||||
H.attr("href");return a?a.replace(/^https?\:\/\/[^\/]*/,""):""};var E={},Z="",da=h.baseHref();h.cookies=function(a,b){var d,e,h,g;if(a)b===r?m.cookie=escape(a)+"=;path="+da+";expires=Thu, 01 Jan 1970 00:00:00 GMT":w(b)&&(d=(m.cookie=escape(a)+"="+escape(b)+";path="+da).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(m.cookie!==Z)for(Z=m.cookie,d=Z.split("; "),E={},h=0;h<d.length;h++)e=d[h],g=e.indexOf("="),0<g&&(a=unescape(e.substring(0,
|
|
||||||
g)),E[a]===r&&(E[a]=unescape(e.substring(g+1))));return E}};h.defer=function(a,b){var c;D++;c=n(function(){delete s[c];e(a)},b||0);s[c]=!0;return c};h.defer.cancel=function(a){return s[a]?(delete s[a],p(a),e(v),!0):!1}}function dd(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new cd(b,d,a,c)}]}function ed(){this.$get=function(){function b(b,d){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,g(a.n,a.p),g(a,n),n=a,n.n=null)}function g(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in
|
|
||||||
a)throw A("$cacheFactory")("iid",b);var f=0,h=F({},d,{id:b}),m={},k=d&&d.capacity||Number.MAX_VALUE,l={},n=null,p=null;return a[b]={put:function(a,b){var c=l[a]||(l[a]={key:a});e(c);if(!C(b))return a in m||f++,m[a]=b,f>k&&this.remove(p.key),b},get:function(a){var b=l[a];if(b)return e(b),m[a]},remove:function(a){var b=l[a];b&&(b==n&&(n=b.p),b==p&&(p=b.n),g(b.n,b.p),delete l[a],delete m[a],f--)},removeAll:function(){m={};f=0;l={};n=p=null},destroy:function(){l=h=m=null;delete a[b]},info:function(){return F({},
|
|
||||||
h,{size:f})}}}var a={};b.info=function(){var b={};q(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function fd(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function gc(b,a){var c={},d="Directive",e=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,g=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,f=/^(on[a-z]+|formaction)$/;this.directive=function m(a,e){va(a,"directive");w(a)?(tb(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",
|
|
||||||
function(b,d){var e=[];q(c[a],function(c,g){try{var f=b.invoke(c);I(f)?f={compile:ba(f)}:!f.compile&&f.link&&(f.compile=ba(f.link));f.priority=f.priority||0;f.index=g;f.name=f.name||a;f.require=f.require||f.controller&&f.name;f.restrict=f.restrict||"A";e.push(f)}catch(m){d(m)}});return e}])),c[a].push(e)):q(a,Pb(m));return this};this.aHrefSanitizationWhitelist=function(b){return B(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return B(b)?
|
|
||||||
(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,l,n,p,s,D,u,Q,z,Y,H){function y(a,b,c,d,e){a instanceof x||(a=x(a));q(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=x(b).wrap("<span></span>").parent()[0])});var g=R(a,b,a,c,d,e);return function(b,c,d){tb(b,"scope");var e=c?Da.clone.call(a):
|
|
||||||
a;q(d,function(a,b){e.data("$"+b+"Controller",a)});d=0;for(var f=e.length;d<f;d++){var k=e[d];1!=k.nodeType&&9!=k.nodeType||e.eq(d).data("$scope",b)}aa(e,"ng-scope");c&&c(e,b);g&&g(b,e,e);return e}}function aa(a,b){try{a.addClass(b)}catch(c){}}function R(a,b,c,d,e,g){function f(a,c,d,e){var g,m,l,n,p,s,D,ca=[];p=0;for(s=c.length;p<s;p++)ca.push(c[p]);D=p=0;for(s=k.length;p<s;D++)m=ca[D],c=k[p++],g=k[p++],l=x(m),c?(c.scope?(n=a.$new(),l.data("$scope",n),aa(l,"ng-scope")):n=a,(l=c.transclude)||!e&&
|
|
||||||
b?c(g,n,m,d,E(a,l||b)):c(g,n,m,r,e)):g&&g(a,m.childNodes,r,e)}for(var k=[],m,l,n,p=0;p<a.length;p++)l=new Eb,m=Z(a[p],[],l,0===p?d:r,e),m=(g=m.length?N(m,a[p],l,b,c,null,[],[],g):null)&&g.terminal||!a[p].childNodes||!a[p].childNodes.length?null:R(a[p].childNodes,g?g.transclude:b),k.push(g),k.push(m),n=n||g||m,g=null;return n?f:null}function E(a,b){return function(c,d,e){var g=!1;c||(c=a.$new(),g=c.$$transcluded=!0);d=b(c,d,e);if(g)d.on("$destroy",rb(c,c.$destroy));return d}}function Z(a,b,c,d,f){var k=
|
|
||||||
c.$attr,m;switch(a.nodeType){case 1:la(b,ma(Ea(a).toLowerCase()),"E",d,f);var l,n,p;m=a.attributes;for(var s=0,D=m&&m.length;s<D;s++){var y=!1,u=!1;l=m[s];if(!M||8<=M||l.specified){n=l.name;p=ma(n);Fa.test(p)&&(n=db(p.substr(6),"-"));var Y=p.replace(/(Start|End)$/,"");p===Y+"Start"&&(y=n,u=n.substr(0,n.length-5)+"end",n=n.substr(0,n.length-6));p=ma(n.toLowerCase());k[p]=n;c[p]=l=$(M&&"href"==n?decodeURIComponent(a.getAttribute(n,2)):l.value);cc(a,p)&&(c[p]=!0);L(a,b,l,p);la(b,p,"A",d,f,y,u)}}a=a.className;
|
|
||||||
if(w(a)&&""!==a)for(;m=g.exec(a);)p=ma(m[2]),la(b,p,"C",d,f)&&(c[p]=$(m[3])),a=a.substr(m.index+m[0].length);break;case 3:t(b,a.nodeValue);break;case 8:try{if(m=e.exec(a.nodeValue))p=ma(m[1]),la(b,p,"M",d,f)&&(c[p]=$(m[2]))}catch(q){}}b.sort(v);return b}function da(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ia("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return x(d)}function P(a,b,
|
|
||||||
c){return function(d,e,g,f,k){e=da(e[0],b,c);return a(d,e,g,f,k)}}function N(a,c,d,e,g,f,m,n,p){function u(a,b,c,d){if(a){c&&(a=P(a,c,d));a.require=G.require;if(E===G||G.$$isolateScope)a=U(a,{isolateScope:!0});m.push(a)}if(b){c&&(b=P(b,c,d));b.require=G.require;if(E===G||G.$$isolateScope)b=U(b,{isolateScope:!0});n.push(b)}}function Y(a,b,c){var d,e="data",g=!1;if(w(a)){for(;"^"==(d=a.charAt(0))||"?"==d;)a=a.substr(1),"^"==d&&(e="inheritedData"),g=g||"?"==d;d=null;c&&"data"===e&&(d=c[a]);d=d||b[e]("$"+
|
|
||||||
a+"Controller");if(!d&&!g)throw ia("ctreq",a,ea);}else K(a)&&(d=[],q(a,function(a){d.push(Y(a,b,c))}));return d}function Q(a,e,g,f,p){function y(a,b){var c;2>arguments.length&&(b=a,a=r);Ga&&(c=P);return p(a,b,c)}var u,ca,H,R,da,J,P={},Z;u=c===g?d:Pc(d,new Eb(x(g),d.$attr));ca=u.$$element;if(E){var T=/^\s*([@=&])(\??)\s*(\w*)\s*$/;f=x(g);J=e.$new(!0);N&&N===E.$$originalDirective?f.data("$isolateScope",J):f.data("$isolateScopeNoTemplate",J);aa(f,"ng-isolate-scope");q(E.scope,function(a,c){var d=a.match(T)||
|
|
||||||
[],g=d[3]||c,f="?"==d[2],d=d[1],m,l,n;J.$$isolateBindings[c]=d+g;switch(d){case "@":u.$observe(g,function(a){J[c]=a});u.$$observers[g].$$scope=e;u[g]&&(J[c]=b(u[g])(e));break;case "=":if(f&&!u[g])break;l=s(u[g]);n=l.assign||function(){m=J[c]=l(e);throw ia("nonassign",u[g],E.name);};m=J[c]=l(e);J.$watch(function(){var a=l(e);a!==J[c]&&(a!==m?m=J[c]=a:n(e,a=m=J[c]));return a});break;case "&":l=s(u[g]);J[c]=function(a){return l(e,a)};break;default:throw ia("iscp",E.name,c,a);}})}Z=p&&y;z&&q(z,function(a){var b=
|
|
||||||
{$scope:a===E||a.$$isolateScope?J:e,$element:ca,$attrs:u,$transclude:Z},c;da=a.controller;"@"==da&&(da=u[a.name]);c=D(da,b);P[a.name]=c;Ga||ca.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});f=0;for(H=m.length;f<H;f++)try{R=m[f],R(R.isolateScope?J:e,ca,u,R.require&&Y(R.require,ca,P),Z)}catch(t){l(t,ha(ca))}f=e;E&&(E.template||null===E.templateUrl)&&(f=J);a&&a(f,g.childNodes,r,p);for(f=n.length-1;0<=f;f--)try{R=n[f],R(R.isolateScope?J:e,ca,u,R.require&&Y(R.require,ca,
|
|
||||||
P),Z)}catch(v){l(v,ha(ca))}}p=p||{};var H=-Number.MAX_VALUE,R,z=p.controllerDirectives,E=p.newIsolateScopeDirective,N=p.templateDirective;p=p.nonTlbTranscludeDirective;for(var la=!1,Ga=!1,v=d.$$element=x(c),G,ea,t,F=e,A,L=0,M=a.length;L<M;L++){G=a[L];var Va=G.$$start,Fa=G.$$end;Va&&(v=da(c,Va,Fa));t=r;if(H>G.priority)break;if(t=G.scope)R=R||G,G.templateUrl||(C("new/isolated scope",E,G,v),V(t)&&(E=G));ea=G.name;!G.templateUrl&&G.controller&&(t=G.controller,z=z||{},C("'"+ea+"' controller",z[ea],G,v),
|
|
||||||
z[ea]=G);if(t=G.transclude)la=!0,G.$$tlb||(C("transclusion",p,G,v),p=G),"element"==t?(Ga=!0,H=G.priority,t=da(c,Va,Fa),v=d.$$element=x(O.createComment(" "+ea+": "+d[ea]+" ")),c=v[0],S(g,x(ta.call(t,0)),c),F=y(t,e,H,f&&f.name,{nonTlbTranscludeDirective:p})):(t=x(zb(c)).contents(),v.html(""),F=y(t,e));if(G.template)if(C("template",N,G,v),N=G,t=I(G.template)?G.template(v,d):G.template,t=hc(t),G.replace){f=G;t=x("<div>"+$(t)+"</div>").contents();c=t[0];if(1!=t.length||1!==c.nodeType)throw ia("tplrt",
|
|
||||||
ea,"");S(g,v,c);M={$attr:{}};t=Z(c,[],M);var W=a.splice(L+1,a.length-(L+1));E&&T(t);a=a.concat(t).concat(W);fc(d,M);M=a.length}else v.html(t);if(G.templateUrl)C("template",N,G,v),N=G,G.replace&&(f=G),Q=B(a.splice(L,a.length-L),v,d,g,F,m,n,{controllerDirectives:z,newIsolateScopeDirective:E,templateDirective:N,nonTlbTranscludeDirective:p}),M=a.length;else if(G.compile)try{A=G.compile(v,d,F),I(A)?u(null,A,Va,Fa):A&&u(A.pre,A.post,Va,Fa)}catch(X){l(X,ha(v))}G.terminal&&(Q.terminal=!0,H=Math.max(H,G.priority))}Q.scope=
|
|
||||||
R&&!0===R.scope;Q.transclude=la&&F;return Q}function T(a){for(var b=0,c=a.length;b<c;b++)a[b]=Rb(a[b],{$$isolateScope:!0})}function la(b,e,g,f,k,n,p){if(e===k)return null;k=null;if(c.hasOwnProperty(e)){var s;e=a.get(e+d);for(var D=0,u=e.length;D<u;D++)try{s=e[D],(f===r||f>s.priority)&&-1!=s.restrict.indexOf(g)&&(n&&(s=Rb(s,{$$start:n,$$end:p})),b.push(s),k=s)}catch(y){l(y)}}return k}function fc(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?
|
|
||||||
";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,g){"class"==g?(aa(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==g?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==g.charAt(0)||a.hasOwnProperty(g)||(a[g]=b,d[g]=c[g])})}function B(a,b,c,d,e,g,f,m){var k=[],l,s,D=b[0],u=a.shift(),y=F({},u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),Y=I(u.templateUrl)?u.templateUrl(b,c):u.templateUrl;b.html("");n.get(z.getTrustedResourceUrl(Y),
|
|
||||||
{cache:p}).success(function(n){var p,Q;n=hc(n);if(u.replace){n=x("<div>"+$(n)+"</div>").contents();p=n[0];if(1!=n.length||1!==p.nodeType)throw ia("tplrt",u.name,Y);n={$attr:{}};S(d,b,p);var H=Z(p,[],n);V(u.scope)&&T(H);a=H.concat(a);fc(c,n)}else p=D,b.html(n);a.unshift(y);l=N(a,p,c,e,b,u,g,f,m);q(d,function(a,c){a==p&&(d[c]=b[0])});for(s=R(b[0].childNodes,e);k.length;){n=k.shift();Q=k.shift();var aa=k.shift(),z=k.shift(),H=b[0];Q!==D&&(H=zb(p),S(aa,x(Q),H));Q=l.transclude?E(n,l.transclude):z;l(s,
|
|
||||||
n,H,d,Q)}k=null}).error(function(a,b,c,d){throw ia("tpload",d.url);});return function(a,b,c,d,e){k?(k.push(b),k.push(c),k.push(d),k.push(e)):l(s,b,c,d,e)}}function v(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function C(a,b,c,d){if(b)throw ia("multidir",b.name,c.name,a,ha(d));}function t(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:ba(function(a,b){var c=b.parent(),e=c.data("$binding")||[];e.push(d);aa(c.data("$binding",e),"ng-binding");
|
|
||||||
a.$watch(d,function(a){b[0].nodeValue=a})})})}function A(a,b){if("srcdoc"==b)return z.HTML;var c=Ea(a);if("xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b))return z.RESOURCE_URL}function L(a,c,d,e){var g=b(d,!0);if(g){if("multiple"===e&&"SELECT"===Ea(a))throw ia("selmulti",ha(a));c.push({priority:100,compile:function(){return{pre:function(c,d,m){d=m.$$observers||(m.$$observers={});if(f.test(e))throw ia("nodomevents");if(g=b(m[e],!0,A(a,e)))m[e]=g(c),(d[e]||(d[e]=[])).$$inter=
|
|
||||||
!0,(m.$$observers&&m.$$observers[e].$$scope||c).$watch(g,function(a,b){"class"===e&&a!=b?m.$updateClass(a,b):m.$set(e,a)})}}}})}}function S(a,b,c){var d=b[0],e=b.length,g=d.parentNode,f,m;if(a)for(f=0,m=a.length;f<m;f++)if(a[f]==d){a[f++]=c;m=f+e-1;for(var k=a.length;f<k;f++,m++)m<k?a[f]=a[m]:delete a[f];a.length-=e-1;break}g&&g.replaceChild(c,d);a=O.createDocumentFragment();a.appendChild(d);c[x.expando]=d[x.expando];d=1;for(e=b.length;d<e;d++)g=b[d],x(g).remove(),a.appendChild(g),delete b[d];b[0]=
|
|
||||||
c;b.length=1}function U(a,b){return F(function(){return a.apply(null,arguments)},a,b)}var Eb=function(a,b){this.$$element=a;this.$attr=b||{}};Eb.prototype={$normalize:ma,$addClass:function(a){a&&0<a.length&&Y.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&Y.removeClass(this.$$element,a)},$updateClass:function(a,b){this.$removeClass(ic(b,a));this.$addClass(ic(a,b))},$set:function(a,b,c,d){var e=cc(this.$$element[0],a);e&&(this.$$element.prop(a,b),d=e);this[a]=b;d?this.$attr[a]=
|
|
||||||
d:(d=this.$attr[a])||(this.$attr[a]=d=db(a,"-"));e=Ea(this.$$element);if("A"===e&&"href"===a||"IMG"===e&&"src"===a)this[a]=b=H(b,"src"===a);!1!==c&&(null===b||b===r?this.$$element.removeAttr(d):this.$$element.attr(d,b));(c=this.$$observers)&&q(c[a],function(a){try{a(b)}catch(c){l(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);u.$evalAsync(function(){e.$$inter||b(c[a])});return b}};var ea=b.startSymbol(),Ga=b.endSymbol(),hc="{{"==ea||"}}"==
|
|
||||||
Ga?za:function(a){return a.replace(/\{\{/g,ea).replace(/}}/g,Ga)},Fa=/^ngAttr[A-Z]/;return y}]}function ma(b){return Pa(b.replace(gd,""))}function ic(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),g=0;a:for(;g<d.length;g++){for(var f=d[g],h=0;h<e.length;h++)if(f==e[h])continue a;c+=(0<c.length?" ":"")+f}return c}function hd(){var b={},a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,d){va(a,"controller");V(a)?F(b,a):b[a]=d};this.$get=["$injector","$window",function(c,d){return function(e,g){var f,
|
|
||||||
h,m;w(e)&&(f=e.match(a),h=f[1],m=f[3],e=b.hasOwnProperty(h)?b[h]:ub(g.$scope,h,!0)||ub(d,h,!0),Oa(e,h,!0));f=c.instantiate(e,g);if(m){if(!g||"object"!=typeof g.$scope)throw A("$controller")("noscp",h||e.name,m);g.$scope[m]=f}return f}}]}function id(){this.$get=["$window",function(b){return x(b.document)}]}function jd(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function jc(b){var a={},c,d,e;if(!b)return a;q(b.split("\n"),function(b){e=b.indexOf(":");c=t($(b.substr(0,
|
|
||||||
e)));d=$(b.substr(e+1));c&&(a[c]=a[c]?a[c]+(", "+d):d)});return a}function kc(b){var a=V(b)?b:r;return function(c){a||(a=jc(b));return c?a[t(c)]||null:a}}function lc(b,a,c){if(I(c))return c(b,a);q(c,function(c){b=c(b,a)});return b}function kd(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},e=this.defaults={transformResponse:[function(d){w(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=Tb(d)));return d}],transformRequest:[function(a){return V(a)&&
|
|
||||||
"[object File]"!==$a.apply(a)?oa(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:d,put:d,patch:d},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},g=this.interceptors=[],f=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,d,n,p){function s(a){function c(a){var b=F({},a,{data:lc(a.data,a.headers,d.transformResponse)});return 200<=a.status&&300>a.status?b:n.reject(b)}var d={transformRequest:e.transformRequest,
|
|
||||||
transformResponse:e.transformResponse},g=function(a){function b(a){var c;q(a,function(b,d){I(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=F({},a.headers),g,f,c=F({},c.common,c[t(a.method)]);b(c);b(d);a:for(g in c){a=t(g);for(f in d)if(t(f)===a)continue a;d[g]=c[g]}return d}(a);F(d,a);d.headers=g;d.method=Ha(d.method);(a=Fb(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:r)&&(g[d.xsrfHeaderName||e.xsrfHeaderName]=a);var h=[function(a){g=a.headers;var b=lc(a.data,kc(g),a.transformRequest);
|
|
||||||
C(a.data)&&q(g,function(a,b){"content-type"===t(b)&&delete g[b]});C(a.withCredentials)&&!C(e.withCredentials)&&(a.withCredentials=e.withCredentials);return D(a,b,g).then(c,c)},r],f=n.when(d);for(q(z,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&h.push(a.response,a.responseError)});h.length;){a=h.shift();var k=h.shift(),f=f.then(a,k)}f.success=function(a){f.then(function(b){a(b.data,b.status,b.headers,d)});return f};f.error=function(a){f.then(null,
|
|
||||||
function(b){a(b.data,b.status,b.headers,d)});return f};return f}function D(b,c,g){function f(a,b,c){q&&(200<=a&&300>a?q.put(r,[a,b,jc(c)]):q.remove(r));m(b,a,c);d.$$phase||d.$apply()}function m(a,c,d){c=Math.max(c,0);(200<=c&&300>c?p.resolve:p.reject)({data:a,status:c,headers:kc(d),config:b})}function k(){var a=bb(s.pendingRequests,b);-1!==a&&s.pendingRequests.splice(a,1)}var p=n.defer(),D=p.promise,q,z,r=u(b.url,b.params);s.pendingRequests.push(b);D.then(k,k);(b.cache||e.cache)&&(!1!==b.cache&&"GET"==
|
|
||||||
b.method)&&(q=V(b.cache)?b.cache:V(e.cache)?e.cache:Q);if(q)if(z=q.get(r),B(z)){if(z.then)return z.then(k,k),z;K(z)?m(z[1],z[0],ga(z[2])):m(z,200,{})}else q.put(r,D);C(z)&&a(b.method,r,c,f,g,b.timeout,b.withCredentials,b.responseType);return D}function u(a,b){if(!b)return a;var c=[];Mc(b,function(a,b){null===a||C(a)||(K(a)||(a=[a]),q(a,function(a){V(a)&&(a=oa(a));c.push(ua(b)+"="+ua(a))}))});return a+(-1==a.indexOf("?")?"?":"&")+c.join("&")}var Q=c("$http"),z=[];q(g,function(a){z.unshift(w(a)?p.get(a):
|
|
||||||
p.invoke(a))});q(f,function(a,b){var c=w(a)?p.get(a):p.invoke(a);z.splice(b,0,{response:function(a){return c(n.when(a))},responseError:function(a){return c(n.reject(a))}})});s.pendingRequests=[];(function(a){q(arguments,function(a){s[a]=function(b,c){return s(F(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){s[a]=function(b,c,d){return s(F(d||{},{method:a,url:b,data:c}))}})})("post","put");s.defaults=e;return s}]}function ld(){this.$get=["$browser",
|
|
||||||
"$window","$document",function(b,a,c){return md(b,nd,b.defer,a.angular.callbacks,c[0])}]}function md(b,a,c,d,e){function g(a,b){var c=e.createElement("script"),d=function(){c.onreadystatechange=c.onload=c.onerror=null;e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;M&&8>=M?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&&d()}:c.onload=c.onerror=function(){d()};e.body.appendChild(c);return d}var f=-1;return function(e,m,k,l,n,p,s,D){function u(){z=f;H&&H();y&&y.abort()}
|
|
||||||
function Q(a,d,e,g){var f=wa(m).protocol;aa&&c.cancel(aa);H=y=null;d="file"==f&&0===d?e?200:404:d;a(1223==d?204:d,e,g);b.$$completeOutstandingRequest(v)}var z;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==t(e)){var r="_"+(d.counter++).toString(36);d[r]=function(a){d[r].data=a};var H=g(m.replace("JSON_CALLBACK","angular.callbacks."+r),function(){d[r].data?Q(l,200,d[r].data):Q(l,z||-2);delete d[r]})}else{var y=new a;y.open(e,m,!0);q(n,function(a,b){B(a)&&y.setRequestHeader(b,a)});y.onreadystatechange=
|
|
||||||
function(){if(4==y.readyState){var a=null,b=null;z!==f&&(a=y.getAllResponseHeaders(),b=y.responseType?y.response:y.responseText);Q(l,z||y.status,b,a)}};s&&(y.withCredentials=!0);D&&(y.responseType=D);y.send(k||null)}if(0<p)var aa=c(u,p);else p&&p.then&&p.then(u)}}function od(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function g(g,k,l){for(var n,p,s=0,D=[],u=
|
|
||||||
g.length,q=!1,z=[];s<u;)-1!=(n=g.indexOf(b,s))&&-1!=(p=g.indexOf(a,n+f))?(s!=n&&D.push(g.substring(s,n)),D.push(s=c(q=g.substring(n+f,p))),s.exp=q,s=p+h,q=!0):(s!=u&&D.push(g.substring(s)),s=u);(u=D.length)||(D.push(""),u=1);if(l&&1<D.length)throw mc("noconcat",g);if(!k||q)return z.length=u,s=function(a){try{for(var b=0,c=u,f;b<c;b++)"function"==typeof(f=D[b])&&(f=f(a),f=l?e.getTrusted(l,f):e.valueOf(f),null===f||C(f)?f="":"string"!=typeof f&&(f=oa(f))),z[b]=f;return z.join("")}catch(h){a=mc("interr",
|
|
||||||
g,h.toString()),d(a)}},s.exp=g,s.parts=D,s}var f=b.length,h=a.length;g.startSymbol=function(){return b};g.endSymbol=function(){return a};return g}]}function pd(){this.$get=["$rootScope","$window","$q",function(b,a,c){function d(d,f,h,m){var k=a.setInterval,l=a.clearInterval,n=c.defer(),p=n.promise,s=0,D=B(m)&&!m;h=B(h)?h:0;p.then(null,null,d);p.$$intervalId=k(function(){n.notify(s++);0<h&&s>=h&&(n.resolve(s),l(p.$$intervalId),delete e[p.$$intervalId]);D||b.$apply()},f);e[p.$$intervalId]=n;return p}
|
|
||||||
var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1};return d}]}function qd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),
|
|
||||||
SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function nc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=
|
|
||||||
sb(b[a]);return b.join("/")}function oc(b,a,c){b=wa(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=S(b.port)||rd[b.protocol]||null}function pc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=wa(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=Vb(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function na(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Wa(b){var a=
|
|
||||||
b.indexOf("#");return-1==a?b:b.substr(0,a)}function Gb(b){return b.substr(0,Wa(b).lastIndexOf("/")+1)}function qc(b,a){this.$$html5=!0;a=a||"";var c=Gb(b);oc(b,this,b);this.$$parse=function(a){var e=na(c,a);if(!w(e))throw Hb("ipthprfx",a,c);pc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Wb(this.$$search),b=this.$$hash?"#"+sb(this.$$hash):"";this.$$url=nc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;
|
|
||||||
if((e=na(b,d))!==r)return d=e,(e=na(a,e))!==r?c+(na("/",e)||e):b+d;if((e=na(c,d))!==r)return c+e;if(c==d+"/")return c}}function Ib(b,a){var c=Gb(b);oc(b,this,b);this.$$parse=function(d){var e=na(b,d)||na(c,d),e="#"==e.charAt(0)?na(a,e):this.$$html5?e:"";if(!w(e))throw Hb("ihshprfx",d,a);pc(e,this,b);d=this.$$path;var g=/^\/?.*?:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));g.exec(e)||(d=(e=g.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Wb(this.$$search),e=this.$$hash?
|
|
||||||
"#"+sb(this.$$hash):"";this.$$url=nc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Wa(b)==Wa(a))return a}}function rc(b,a){this.$$html5=!0;Ib.apply(this,arguments);var c=Gb(b);this.$$rewrite=function(d){var e;if(b==Wa(d))return d;if(e=na(c,d))return b+a+e;if(c===d+"/")return c}}function hb(b){return function(){return this[b]}}function sc(b,a){return function(c){if(C(c))return this[b];this[b]=a(c);this.$$compose();return this}}function sd(){var b=
|
|
||||||
"",a=!1;this.hashPrefix=function(a){return B(a)?(b=a,this):b};this.html5Mode=function(b){return B(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,g){function f(a){c.$broadcast("$locationChangeSuccess",h.absUrl(),a)}var h,m=d.baseHref(),k=d.url();a?(m=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(m||"/"),e=e.history?qc:rc):(m=Wa(k),e=Ib);h=new e(m,"#"+b);h.$$parse(h.$$rewrite(k));g.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=
|
|
||||||
x(a.target);"a"!==t(b[0].nodeName);)if(b[0]===g[0]||!(b=b.parent())[0])return;var e=b.prop("href"),f=h.$$rewrite(e);e&&(!b.attr("target")&&f&&!a.isDefaultPrevented())&&(a.preventDefault(),f!=d.url()&&(h.$$parse(f),c.$apply(),X.angular["ff-684208-preventDefault"]=!0))}});h.absUrl()!=k&&d.url(h.absUrl(),!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$broadcast("$locationChangeStart",a,h.absUrl()).defaultPrevented?d.url(h.absUrl()):(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);f(b)}),c.$$phase||
|
|
||||||
c.$digest()))});var l=0;c.$watch(function(){var a=d.url(),b=h.$$replace;l&&a==h.absUrl()||(l++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),b),f(a))}));h.$$replace=!1;return l});return h}]}function td(){var b=!0,a=this;this.debugEnabled=function(a){return B(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:
|
|
||||||
a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||v;return e.apply?function(){var a=[];q(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function pa(b,a){if("constructor"===b)throw xa("isecfld",a);return b}function Xa(b,a){if(b&&b.constructor===
|
|
||||||
b)throw xa("isecfn",a);if(b&&b.document&&b.location&&b.alert&&b.setInterval)throw xa("isecwindow",a);if(b&&(b.nodeName||b.on&&b.find))throw xa("isecdom",a);return b}function ib(b,a,c,d,e){e=e||{};a=a.split(".");for(var g,f=0;1<a.length;f++){g=pa(a.shift(),d);var h=b[g];h||(h={},b[g]=h);b=h;b.then&&e.unwrapPromises&&(qa(d),"$$v"in b||function(a){a.then(function(b){a.$$v=b})}(b),b.$$v===r&&(b.$$v={}),b=b.$$v)}g=pa(a.shift(),d);return b[g]=c}function tc(b,a,c,d,e,g,f){pa(b,g);pa(a,g);pa(c,g);pa(d,g);
|
|
||||||
pa(e,g);return f.unwrapPromises?function(f,m){var k=m&&m.hasOwnProperty(b)?m:f,l;if(null===k||k===r)return k;(k=k[b])&&k.then&&(qa(g),"$$v"in k||(l=k,l.$$v=r,l.then(function(a){l.$$v=a})),k=k.$$v);if(!a||null===k||k===r)return k;(k=k[a])&&k.then&&(qa(g),"$$v"in k||(l=k,l.$$v=r,l.then(function(a){l.$$v=a})),k=k.$$v);if(!c||null===k||k===r)return k;(k=k[c])&&k.then&&(qa(g),"$$v"in k||(l=k,l.$$v=r,l.then(function(a){l.$$v=a})),k=k.$$v);if(!d||null===k||k===r)return k;(k=k[d])&&k.then&&(qa(g),"$$v"in
|
|
||||||
k||(l=k,l.$$v=r,l.then(function(a){l.$$v=a})),k=k.$$v);if(!e||null===k||k===r)return k;(k=k[e])&&k.then&&(qa(g),"$$v"in k||(l=k,l.$$v=r,l.then(function(a){l.$$v=a})),k=k.$$v);return k}:function(f,g){var k=g&&g.hasOwnProperty(b)?g:f;if(null===k||k===r)return k;k=k[b];if(!a||null===k||k===r)return k;k=k[a];if(!c||null===k||k===r)return k;k=k[c];if(!d||null===k||k===r)return k;k=k[d];return e&&null!==k&&k!==r?k=k[e]:k}}function uc(b,a,c){if(Jb.hasOwnProperty(b))return Jb[b];var d=b.split("."),e=d.length,
|
|
||||||
g;if(a.csp)g=6>e?tc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,g){var f=0,h;do h=tc(d[f++],d[f++],d[f++],d[f++],d[f++],c,a)(b,g),g=r,b=h;while(f<e);return h};else{var f="var l, fn, p;\n";q(d,function(b,d){pa(b,c);f+="if(s === null || s === undefined) return s;\nl=s;\ns="+(d?"s":'((k&&k.hasOwnProperty("'+b+'"))?k:s)')+'["'+b+'"];\n'+(a.unwrapPromises?'if (s && s.then) {\n pw("'+c.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n':
|
|
||||||
"")});var f=f+"return s;",h=new Function("s","k","pw",f);h.toString=function(){return f};g=function(a,b){return h(a,b,qa)}}"hasOwnProperty"!==b&&(Jb[b]=g);return g}function ud(){var b={},a={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0};this.unwrapPromises=function(b){return B(b)?(a.unwrapPromises=!!b,this):a.unwrapPromises};this.logPromiseWarnings=function(b){return B(b)?(a.logPromiseWarnings=b,this):a.logPromiseWarnings};this.$get=["$filter","$sniffer","$log",function(c,d,e){a.csp=d.csp;qa=function(b){a.logPromiseWarnings&&
|
|
||||||
!vc.hasOwnProperty(b)&&(vc[b]=!0,e.warn("[$parse] Promise found in the expression `"+b+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))};return function(d){var e;switch(typeof d){case "string":if(b.hasOwnProperty(d))return b[d];e=new Kb(a);e=(new Ya(e,c,a)).parse(d,!1);"hasOwnProperty"!==d&&(b[d]=e);return e;case "function":return d;default:return v}}}]}function vd(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return wd(function(a){b.$evalAsync(a)},a)}]}
|
|
||||||
function wd(b,a){function c(a){return a}function d(a){return f(a)}var e=function(){var h=[],m,k;return k={resolve:function(a){if(h){var c=h;h=r;m=g(a);c.length&&b(function(){for(var a,b=0,d=c.length;b<d;b++)a=c[b],m.then(a[0],a[1],a[2])})}},reject:function(a){k.resolve(f(a))},notify:function(a){if(h){var c=h;h.length&&b(function(){for(var b,d=0,e=c.length;d<e;d++)b=c[d],b[2](a)})}},promise:{then:function(b,f,g){var k=e(),D=function(d){try{k.resolve((I(b)?b:c)(d))}catch(e){k.reject(e),a(e)}},u=function(b){try{k.resolve((I(f)?
|
|
||||||
f:d)(b))}catch(c){k.reject(c),a(c)}},q=function(b){try{k.notify((I(g)?g:c)(b))}catch(d){a(d)}};h?h.push([D,u,q]):m.then(D,u,q);return k.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,c){var d=e();c?d.resolve(a):d.reject(a);return d.promise}function d(e,f){var g=null;try{g=(a||c)()}catch(h){return b(h,!1)}return g&&I(g.then)?g.then(function(){return b(e,f)},function(a){return b(a,!1)}):b(e,f)}return this.then(function(a){return d(a,!0)},function(a){return d(a,
|
|
||||||
!1)})}}}},g=function(a){return a&&I(a.then)?a:{then:function(c){var d=e();b(function(){d.resolve(c(a))});return d.promise}}},f=function(c){return{then:function(f,g){var l=e();b(function(){try{l.resolve((I(g)?g:d)(c))}catch(b){l.reject(b),a(b)}});return l.promise}}};return{defer:e,reject:f,when:function(h,m,k,l){var n=e(),p,s=function(b){try{return(I(m)?m:c)(b)}catch(d){return a(d),f(d)}},D=function(b){try{return(I(k)?k:d)(b)}catch(c){return a(c),f(c)}},u=function(b){try{return(I(l)?l:c)(b)}catch(d){a(d)}};
|
|
||||||
b(function(){g(h).then(function(a){p||(p=!0,n.resolve(g(a).then(s,D,u)))},function(a){p||(p=!0,n.resolve(D(a)))},function(a){p||n.notify(u(a))})});return n.promise},all:function(a){var b=e(),c=0,d=K(a)?[]:{};q(a,function(a,e){c++;g(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise}}}function xd(){var b=10,a=A("$rootScope");this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=
|
|
||||||
["$injector","$exceptionHandler","$parse","$browser",function(c,d,e,g){function f(){this.$id=Za();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;this.$$destroyed=!1;this.$$asyncQueue=[];this.$$postDigestQueue=[];this.$$listeners={};this.$$isolateBindings={}}function h(b){if(l.$$phase)throw a("inprog",l.$$phase);l.$$phase=b}function m(a,b){var c=e(a);Oa(c,b);return c}function k(){}f.prototype={constructor:f,
|
|
||||||
$new:function(a){a?(a=new f,a.$root=this.$root,a.$$asyncQueue=this.$$asyncQueue,a.$$postDigestQueue=this.$$postDigestQueue):(a=function(){},a.prototype=this,a=new a,a.$id=Za());a["this"]=a;a.$$listeners={};a.$parent=this;a.$$watchers=a.$$nextSibling=a.$$childHead=a.$$childTail=null;a.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,c){var d=m(a,"watch"),e=this.$$watchers,f={fn:b,last:k,
|
|
||||||
get:d,exp:a,eq:!!c};if(!I(b)){var g=m(b||v,"listener");f.fn=function(a,b,c){g(c)}}if("string"==typeof a&&d.constant){var h=f.fn;f.fn=function(a,b,c){h.call(this,a,b,c);La(e,f)}}e||(e=this.$$watchers=[]);e.unshift(f);return function(){La(e,f)}},$watchCollection:function(a,b){var c=this,d,f,g=0,h=e(a),k=[],m={},l=0;return this.$watch(function(){f=h(c);var a,b;if(V(f))if(pb(f))for(d!==k&&(d=k,l=d.length=0,g++),a=f.length,l!==a&&(g++,d.length=l=a),b=0;b<a;b++)d[b]!==f[b]&&(g++,d[b]=f[b]);else{d!==m&&
|
|
||||||
(d=m={},l=0,g++);a=0;for(b in f)f.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==f[b]&&(g++,d[b]=f[b]):(l++,d[b]=f[b],g++));if(l>a)for(b in g++,d)d.hasOwnProperty(b)&&!f.hasOwnProperty(b)&&(l--,delete d[b])}else d!==f&&(d=f,g++);return g},function(){b(f,d,c)})},$digest:function(){var c,e,f,g,m=this.$$asyncQueue,q=this.$$postDigestQueue,r,t,H=b,y,v=[],x,E,Z;h("$digest");do{t=!1;for(y=this;m.length;)try{Z=m.shift(),Z.scope.$eval(Z.expression)}catch(B){d(B)}do{if(g=y.$$watchers)for(r=g.length;r--;)try{(c=
|
|
||||||
g[r])&&((e=c.get(y))!==(f=c.last)&&!(c.eq?Aa(e,f):"number"==typeof e&&"number"==typeof f&&isNaN(e)&&isNaN(f)))&&(t=!0,c.last=c.eq?ga(e):e,c.fn(e,f===k?e:f,y),5>H&&(x=4-H,v[x]||(v[x]=[]),E=I(c.exp)?"fn: "+(c.exp.name||c.exp.toString()):c.exp,E+="; newVal: "+oa(e)+"; oldVal: "+oa(f),v[x].push(E)))}catch(P){d(P)}if(!(g=y.$$childHead||y!==this&&y.$$nextSibling))for(;y!==this&&!(g=y.$$nextSibling);)y=y.$parent}while(y=g);if(t&&!H--)throw l.$$phase=null,a("infdig",b,oa(v));}while(t||m.length);for(l.$$phase=
|
|
||||||
null;q.length;)try{q.shift()()}catch(N){d(N)}},$destroy:function(){if(l!=this&&!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=
|
|
||||||
null}},$eval:function(a,b){return e(a)(this,b)},$evalAsync:function(a){l.$$phase||l.$$asyncQueue.length||g.defer(function(){l.$$asyncQueue.length&&l.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return h("$apply"),this.$eval(a)}catch(b){d(b)}finally{l.$$phase=null;try{l.$digest()}catch(c){throw d(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);return function(){c[bb(c,
|
|
||||||
b)]=null}},$emit:function(a,b){var c=[],e,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=[h].concat(ta.call(arguments,1)),m,l;do{e=f.$$listeners[a]||c;h.currentScope=f;m=0;for(l=e.length;m<l;m++)if(e[m])try{e[m].apply(null,k)}catch(q){d(q)}else e.splice(m,1),m--,l--;if(g)break;f=f.$parent}while(f);return h},$broadcast:function(a,b){var c=this,e=this,f={name:a,targetScope:this,preventDefault:function(){f.defaultPrevented=
|
|
||||||
!0},defaultPrevented:!1},g=[f].concat(ta.call(arguments,1)),h,k;do{c=e;f.currentScope=c;e=c.$$listeners[a]||[];h=0;for(k=e.length;h<k;h++)if(e[h])try{e[h].apply(null,g)}catch(m){d(m)}else e.splice(h,1),h--,k--;if(!(e=c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(e=c.$$nextSibling);)c=c.$parent}while(c=e);return f}};var l=new f;return l}]}function yd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*(https?|ftp|file):|data:image\//;this.aHrefSanitizationWhitelist=function(a){return B(a)?
|
|
||||||
(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return B(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,g;if(!M||8<=M)if(g=wa(c).href,""!==g&&!g.match(e))return"unsafe:"+g;return c}}}function zd(b){if("self"===b)return b;if(w(b)){if(-1<b.indexOf("***"))throw ra("iwcard",b);b=b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08").replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return RegExp("^"+b+"$")}if(ab(b))return RegExp("^"+b.source+"$");
|
|
||||||
throw ra("imatcher");}function wc(b){var a=[];B(b)&&q(b,function(b){a.push(zd(b))});return a}function Ad(){this.SCE_CONTEXTS=fa;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=wc(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=wc(b));return a};this.$get=["$injector",function(c){function d(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};
|
|
||||||
b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var e=function(a){throw ra("unsafe");};c.has("$sanitize")&&(e=c.get("$sanitize"));var g=d(),f={};f[fa.HTML]=d(g);f[fa.CSS]=d(g);f[fa.URL]=d(g);f[fa.JS]=d(g);f[fa.RESOURCE_URL]=d(f[fa.URL]);return{trustAs:function(a,b){var c=f.hasOwnProperty(a)?f[a]:null;if(!c)throw ra("icontext",a,b);if(null===b||b===r||""===b)return b;if("string"!==typeof b)throw ra("itype",a);return new c(b)},getTrusted:function(c,d){if(null===
|
|
||||||
d||d===r||""===d)return d;var g=f.hasOwnProperty(c)?f[c]:null;if(g&&d instanceof g)return d.$$unwrapTrustedValue();if(c===fa.RESOURCE_URL){var g=wa(d.toString()),l,n,p=!1;l=0;for(n=b.length;l<n;l++)if("self"===b[l]?Fb(g):b[l].exec(g.href)){p=!0;break}if(p)for(l=0,n=a.length;l<n;l++)if("self"===a[l]?Fb(g):a[l].exec(g.href)){p=!1;break}if(p)return d;throw ra("insecurl",d.toString());}if(c===fa.HTML)return e(d);throw ra("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}
|
|
||||||
function Bd(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sniffer","$sceDelegate",function(a,c,d){if(b&&c.msie&&8>c.msieDocumentMode)throw ra("iequirks");var e=ga(fa);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=za);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var g=e.parseAs,
|
|
||||||
f=e.getTrusted,h=e.trustAs;q(fa,function(a,b){var c=t(b);e[Pa("parse_as_"+c)]=function(b){return g(a,b)};e[Pa("get_trusted_"+c)]=function(b){return f(a,b)};e[Pa("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function Cd(){this.$get=["$window","$document",function(b,a){var c={},d=S((/android (\d+)/.exec(t((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),g=a[0]||{},f=g.documentMode,h,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=g.body&&g.body.style,l=!1,n=!1;if(k){for(var p in k)if(l=
|
|
||||||
m.exec(p)){h=l[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in k&&"webkit");l=!!("transition"in k||h+"Transition"in k);n=!!("animation"in k||h+"Animation"in k);!d||l&&n||(l=w(g.body.style.webkitTransition),n=w(g.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!f||7<f),hasEvent:function(a){if("input"==a&&9==M)return!1;if(C(c[a])){var b=g.createElement("div");c[a]="on"+a in b}return c[a]},csp:Sb(),vendorPrefix:h,
|
|
||||||
transitions:l,animations:n,msie:M,msieDocumentMode:f}}]}function Dd(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,h,m){var k=c.defer(),l=k.promise,n=B(m)&&!m;h=a.defer(function(){try{k.resolve(e())}catch(a){k.reject(a),d(a)}finally{delete g[l.$$timeoutId]}n||b.$apply()},h);l.$$timeoutId=h;g[h]=k;return l}var g={};e.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):
|
|
||||||
!1};return e}]}function wa(b,a){var c=b;M&&(U.setAttribute("href",c),c=U.href);U.setAttribute("href",c);return{href:U.href,protocol:U.protocol?U.protocol.replace(/:$/,""):"",host:U.host,search:U.search?U.search.replace(/^\?/,""):"",hash:U.hash?U.hash.replace(/^#/,""):"",hostname:U.hostname,port:U.port,pathname:"/"===U.pathname.charAt(0)?U.pathname:"/"+U.pathname}}function Fb(b){b=w(b)?wa(b):b;return b.protocol===xc.protocol&&b.host===xc.host}function Ed(){this.$get=ba(X)}function yc(b){function a(d,
|
|
||||||
e){if(V(d)){var g={};q(d,function(b,c){g[c]=a(c,b)});return g}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",zc);a("date",Ac);a("filter",Fd);a("json",Gd);a("limitTo",Hd);a("lowercase",Id);a("number",Bc);a("orderBy",Cc);a("uppercase",Jd)}function Fd(){return function(b,a,c){if(!K(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;return!0};"function"!==d&&
|
|
||||||
(c="boolean"===d&&c?function(a,b){return cb.equals(a,b)}:function(a,b){b=(""+b).toLowerCase();return-1<(""+a).toLowerCase().indexOf(b)});var g=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!g(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return c(a,b);case "object":switch(typeof b){case "object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&g(a[d],b))return!0}return!1;case "array":for(d=0;d<a.length;d++)if(g(a[d],b))return!0;return!1;default:return!1}};
|
|
||||||
switch(typeof a){case "boolean":case "number":case "string":a={$:a};case "object":for(var f in a)"$"==f?function(){if(a[f]){var b=f;e.push(function(c){return g(c,a[b])})}}():function(){if("undefined"!=typeof a[f]){var b=f;e.push(function(c){return g(ub(c,b),a[b])})}}();break;case "function":e.push(a);break;default:return b}for(var d=[],h=0;h<b.length;h++){var m=b[h];e.check(m)&&d.push(m)}return d}}function zc(b){var a=b.NUMBER_FORMATS;return function(b,d){C(d)&&(d=a.CURRENCY_SYM);return Dc(b,a.PATTERNS[1],
|
|
||||||
a.GROUP_SEP,a.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function Bc(b){var a=b.NUMBER_FORMATS;return function(b,d){return Dc(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Dc(b,a,c,d,e){if(isNaN(b)||!isFinite(b))return"";var g=0>b;b=Math.abs(b);var f=b+"",h="",m=[],k=!1;if(-1!==f.indexOf("e")){var l=f.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&&l[3]>e+1?f="0":(h=f,k=!0)}if(k)0<e&&(-1<b&&1>b)&&(h=b.toFixed(e));else{f=(f.split(Ec)[1]||"").length;C(e)&&(e=Math.min(Math.max(a.minFrac,f),a.maxFrac));
|
|
||||||
f=Math.pow(10,e);b=Math.round(b*f)/f;b=(""+b).split(Ec);f=b[0];b=b[1]||"";var l=0,n=a.lgSize,p=a.gSize;if(f.length>=n+p)for(l=f.length-n,k=0;k<l;k++)0===(l-k)%p&&0!==k&&(h+=c),h+=f.charAt(k);for(k=l;k<f.length;k++)0===(f.length-k)%n&&0!==k&&(h+=c),h+=f.charAt(k);for(;b.length<e;)b+="0";e&&"0"!==e&&(h+=d+b.substr(0,e))}m.push(g?a.negPre:a.posPre);m.push(h);m.push(g?a.negSuf:a.posSuf);return m.join("")}function Lb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-
|
|
||||||
a));return d+b}function W(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Lb(e,a,d)}}function jb(b,a){return function(c,d){var e=c["get"+b](),g=Ha(a?"SHORT"+b:b);return d[g][e]}}function Ac(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var g=0,f=0,h=b[8]?a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(g=S(b[9]+b[10]),f=S(b[9]+b[11]));h.call(a,S(b[1]),S(b[2])-1,S(b[3]));g=S(b[4]||0)-g;f=S(b[5]||0)-f;h=S(b[6]||0);b=Math.round(1E3*
|
|
||||||
parseFloat("0."+(b[7]||0)));m.call(a,g,f,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var g="",f=[],h,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;w(c)&&(c=Kd.test(c)?S(c):a(c));qb(c)&&(c=new Date(c));if(!Ka(c))return c;for(;e;)(m=Ld.exec(e))?(f=f.concat(ta.call(m,1)),e=f.pop()):(f.push(e),e=null);q(f,function(a){h=Md[a];g+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}
|
|
||||||
function Gd(){return function(b){return oa(b,!0)}}function Hd(){return function(b,a){if(!K(b)&&!w(b))return b;a=S(a);if(w(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0<a?(d=0,e=a):(d=b.length+a,e=b.length);for(;d<e;d++)c.push(b[d]);return c}}function Cc(b){return function(a,c,d){function e(a,b){return Na(b)?function(b,c){return a(c,b)}:a}if(!K(a)||!c)return a;c=K(c)?c:[c];c=Oc(c,function(a){var c=!1,d=a||za;if(w(a)){if("+"==a.charAt(0)||
|
|
||||||
"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);d=b(a)}return e(function(a,b){var c;c=d(a);var e=d(b),f=typeof c,g=typeof e;f==g?("string"==f&&(c=c.toLowerCase(),e=e.toLowerCase()),c=c===e?0:c<e?-1:1):c=f<g?-1:1;return c},c)});for(var g=[],f=0;f<a.length;f++)g.push(a[f]);return g.sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function sa(b){I(b)&&(b={link:b});b.restrict=b.restrict||"AC";return ba(b)}function Fc(b,a){function c(a,c){c=c?"-"+db(c,
|
|
||||||
"-"):"";b.removeClass((a?kb:lb)+c).addClass((a?lb:kb)+c)}var d=this,e=b.parent().controller("form")||mb,g=0,f=d.$error={},h=[];d.$name=a.name||a.ngForm;d.$dirty=!1;d.$pristine=!0;d.$valid=!0;d.$invalid=!1;e.$addControl(d);b.addClass(Ia);c(!0);d.$addControl=function(a){va(a.$name,"input");h.push(a);a.$name&&(d[a.$name]=a)};d.$removeControl=function(a){a.$name&&d[a.$name]===a&&delete d[a.$name];q(f,function(b,c){d.$setValidity(c,!0,a)});La(h,a)};d.$setValidity=function(a,b,h){var n=f[a];if(b)n&&(La(n,
|
|
||||||
h),n.length||(g--,g||(c(b),d.$valid=!0,d.$invalid=!1),f[a]=!1,c(!0,a),e.$setValidity(a,!0,d)));else{g||c(b);if(n){if(-1!=bb(n,h))return}else f[a]=n=[],g++,c(!1,a),e.$setValidity(a,!1,d);n.push(h);d.$valid=!1;d.$invalid=!0}};d.$setDirty=function(){b.removeClass(Ia).addClass(nb);d.$dirty=!0;d.$pristine=!1;e.$setDirty()};d.$setPristine=function(){b.removeClass(nb).addClass(Ia);d.$dirty=!1;d.$pristine=!0;q(h,function(a){a.$setPristine()})}}function ob(b,a,c,d,e,g){var f=!1;a.on("compositionstart",function(){f=
|
|
||||||
!0});a.on("compositionend",function(){f=!1});var h=function(){if(!f){var e=a.val();Na(c.ngTrim||"T")&&(e=$(e));d.$viewValue!==e&&b.$apply(function(){d.$setViewValue(e)})}};if(e.hasEvent("input"))a.on("input",h);else{var m,k=function(){m||(m=g.defer(function(){h();m=null}))};a.on("keydown",function(a){a=a.keyCode;91===a||(15<a&&19>a||37<=a&&40>=a)||k()});if(e.hasEvent("paste"))a.on("paste cut",k)}a.on("change",h);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var l=c.ngPattern,
|
|
||||||
n=function(a,b){if(d.$isEmpty(b)||a.test(b))return d.$setValidity("pattern",!0),b;d.$setValidity("pattern",!1);return r};l&&((e=l.match(/^\/(.*)\/([gim]*)$/))?(l=RegExp(e[1],e[2]),e=function(a){return n(l,a)}):e=function(c){var d=b.$eval(l);if(!d||!d.test)throw A("ngPattern")("noregexp",l,d,ha(a));return n(d,c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var p=S(c.ngMinlength);e=function(a){if(!d.$isEmpty(a)&&a.length<p)return d.$setValidity("minlength",!1),r;d.$setValidity("minlength",
|
|
||||||
!0);return a};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var s=S(c.ngMaxlength);e=function(a){if(!d.$isEmpty(a)&&a.length>s)return d.$setValidity("maxlength",!1),r;d.$setValidity("maxlength",!0);return a};d.$parsers.push(e);d.$formatters.push(e)}}function Mb(b,a){b="ngClass"+b;return function(){return{restrict:"AC",link:function(c,d,e){function g(b){if(!0===a||c.$index%2===a){var d=f(b||"");h?Aa(b,h)||e.$updateClass(d,f(h)):e.$addClass(d)}h=ga(b)}function f(a){if(K(a))return a.join(" ");
|
|
||||||
if(V(a)){var b=[];q(a,function(a,c){a&&b.push(c)});return b.join(" ")}return a}var h;c.$watch(e[b],g,!0);e.$observe("class",function(a){g(c.$eval(e[b]))});"ngClass"!==b&&c.$watch("$index",function(d,g){var h=d&1;if(h!==g&1){var n=f(c.$eval(e[b]));h===a?e.$addClass(n):e.$removeClass(n)}})}}}}var t=function(b){return w(b)?b.toLowerCase():b},Ha=function(b){return w(b)?b.toUpperCase():b},M,x,Ba,ta=[].slice,Nd=[].push,$a=Object.prototype.toString,Ma=A("ng"),cb=X.angular||(X.angular={}),Ua,Ea,ja=["0","0",
|
|
||||||
"0"];M=S((/msie (\d+)/.exec(t(navigator.userAgent))||[])[1]);isNaN(M)&&(M=S((/trident\/.*; rv:(\d+)/.exec(t(navigator.userAgent))||[])[1]));v.$inject=[];za.$inject=[];var $=function(){return String.prototype.trim?function(b){return w(b)?b.trim():b}:function(b){return w(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ea=9>M?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ha(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};
|
|
||||||
var Sc=/[A-Z]/g,Od={full:"1.2.3",major:1,minor:2,dot:3,codeName:"unicorn-zapper"},Ra=L.cache={},eb=L.expando="ng-"+(new Date).getTime(),Wc=1,Gc=X.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},Ab=X.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)},Uc=/([\:\-\_]+(.))/g,Vc=/^moz([A-Z])/,xb=A("jqLite"),Da=L.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;
|
|
||||||
"complete"===O.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),L(X).on("load",a))},toString:function(){var b=[];q(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?x(this[b]):x(this[this.length+b])},length:0,push:Nd,sort:[].sort,splice:[].splice},gb={};q("multiple selected checked disabled readOnly required open".split(" "),function(b){gb[t(b)]=b});var dc={};q("input select option textarea button form details".split(" "),function(b){dc[Ha(b)]=!0});q({data:ac,
|
|
||||||
inheritedData:fb,scope:function(b){return x(b).data("$scope")||fb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return x(b).data("$isolateScope")||x(b).data("$isolateScopeNoTemplate")},controller:bc,injector:function(b){return fb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Bb,css:function(b,a,c){a=Pa(a);if(B(c))b.style[a]=c;else{var d;8>=M&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=M&&(d=""===d?r:d);return d}},attr:function(b,
|
|
||||||
a,c){var d=t(a);if(gb[d])if(B(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||v).specified?d:r;else if(B(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?r:b},prop:function(b,a,c){if(B(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(C(d))return e?b[e]:"";b[e]=d}var a=[];9>M?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,
|
|
||||||
a){if(C(a)){if("SELECT"===Ea(b)&&b.multiple){var c=[];q(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(C(a))return b.innerHTML;for(var c=0,d=b.childNodes;c<d.length;c++)Qa(d[c]);b.innerHTML=a}},function(b,a){L.prototype[a]=function(a,d){var e,g;if((2==b.length&&b!==Bb&&b!==bc?a:d)===r){if(V(a)){for(e=0;e<this.length;e++)if(b===ac)b(this[e],a);else for(g in a)b(this[e],g,a[g]);return this}e=b.$dv;g=e===r?Math.min(this.length,
|
|
||||||
1):this.length;for(var f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<this.length;e++)b(this[e],a,d);return this}});q({removeData:Zb,dealoc:Qa,on:function a(c,d,e,g){if(B(g))throw xb("onargs");var f=ka(c,"events"),h=ka(c,"handle");f||ka(c,"events",f={});h||ka(c,"handle",h=Xc(c,f));q(d.split(" "),function(d){var g=f[d];if(!g){if("mouseenter"==d||"mouseleave"==d){var l=O.body.contains||O.body.compareDocumentPosition?function(a,c){var d=9===a.nodeType?a.documentElement:a,e=c&&c.parentNode;
|
|
||||||
return a===e||!!(e&&1===e.nodeType&&(d.contains?d.contains(e):a.compareDocumentPosition&&a.compareDocumentPosition(e)&16))}:function(a,c){if(c)for(;c=c.parentNode;)if(c===a)return!0;return!1};f[d]=[];a(c,{mouseleave:"mouseout",mouseenter:"mouseover"}[d],function(a){var c=a.relatedTarget;c&&(c===this||l(this,c))||h(a,d)})}else Gc(c,d,h),f[d]=[];g=f[d]}g.push(e)})},off:$b,replaceWith:function(a,c){var d,e=a.parentNode;Qa(a);q(new L(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);
|
|
||||||
d=c})},children:function(a){var c=[];q(a.childNodes,function(a){1===a.nodeType&&c.push(a)});return c},contents:function(a){return a.childNodes||[]},append:function(a,c){q(new L(c),function(c){1!==a.nodeType&&11!==a.nodeType||a.appendChild(c)})},prepend:function(a,c){if(1===a.nodeType){var d=a.firstChild;q(new L(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=x(c)[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:function(a){Qa(a);var c=a.parentNode;c&&c.removeChild(a)},
|
|
||||||
after:function(a,c){var d=a,e=a.parentNode;q(new L(c),function(a){e.insertBefore(a,d.nextSibling);d=a})},addClass:Db,removeClass:Cb,toggleClass:function(a,c,d){C(d)&&(d=!Bb(a,c));(d?Db:Cb)(a,c)},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;for(a=a.nextSibling;null!=a&&1!==a.nodeType;)a=a.nextSibling;return a},find:function(a,c){return a.getElementsByTagName(c)},clone:zb,triggerHandler:function(a,c,d){c=(ka(a,
|
|
||||||
"events")||{})[c];d=d||[];var e=[{preventDefault:v,stopPropagation:v}];q(c,function(c){c.apply(a,e.concat(d))})}},function(a,c){L.prototype[c]=function(c,e,g){for(var f,h=0;h<this.length;h++)C(f)?(f=a(this[h],c,e,g),B(f)&&(f=x(f))):yb(f,a(this[h],c,e,g));return B(f)?f:this};L.prototype.bind=L.prototype.on;L.prototype.unbind=L.prototype.off});Sa.prototype={put:function(a,c){this[Ca(a)]=c},get:function(a){return this[Ca(a)]},remove:function(a){var c=this[a=Ca(a)];delete this[a];return c}};var Zc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,
|
|
||||||
$c=/,/,ad=/^\s*(_?)(\S+?)\1\s*$/,Yc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ta=A("$injector"),Pd=A("$animate"),Qd=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Pd("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.$get=["$timeout",function(a){return{enter:function(d,e,g,f){g?g.after(d):(e&&e[0]||(e=g.parent()),e.append(d));f&&a(f,0,!1)},leave:function(d,e){d.remove();e&&a(e,0,!1)},move:function(a,c,g,f){this.enter(a,
|
|
||||||
c,g,f)},addClass:function(d,e,g){e=w(e)?e:K(e)?e.join(" "):"";q(d,function(a){Db(a,e)});g&&a(g,0,!1)},removeClass:function(d,e,g){e=w(e)?e:K(e)?e.join(" "):"";q(d,function(a){Cb(a,e)});g&&a(g,0,!1)},enabled:v}}]}],ia=A("$compile");gc.$inject=["$provide","$$sanitizeUriProvider"];var gd=/^(x[\:\-_]|data[\:\-_])/i,nd=X.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(d){}throw A("$httpBackend")("noxhr");
|
|
||||||
},mc=A("$interpolate"),Rd=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,rd={http:80,https:443,ftp:21},Hb=A("$location");rc.prototype=Ib.prototype=qc.prototype={$$html5:!1,$$replace:!1,absUrl:hb("$$absUrl"),url:function(a,c){if(C(a))return this.$$url;var d=Rd.exec(a);d[1]&&this.path(decodeURIComponent(d[1]));(d[2]||d[1])&&this.search(d[3]||"");this.hash(d[5]||"",c);return this},protocol:hb("$$protocol"),host:hb("$$host"),port:hb("$$port"),path:sc("$$path",function(a){return"/"==a.charAt(0)?a:"/"+a}),search:function(a,
|
|
||||||
c){switch(arguments.length){case 0:return this.$$search;case 1:if(w(a))this.$$search=Vb(a);else if(V(a))this.$$search=a;else throw Hb("isrcharg");break;default:C(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:sc("$$hash",za),replace:function(){this.$$replace=!0;return this}};var xa=A("$parse"),vc={},qa,Ja={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:v,"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return B(d)?
|
|
||||||
B(e)?d+e:d:B(e)?e:r},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(B(d)?d:0)-(B(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"^":function(a,c,d,e){return d(a,c)^e(a,c)},"=":v,"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},
|
|
||||||
">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Sd={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Kb=function(a){this.options=a};Kb.prototype={constructor:Kb,lex:function(a){this.text=a;
|
|
||||||
this.index=0;this.ch=r;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index<this.text.length;){this.ch=this.text.charAt(this.index);if(this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent(),this.was("{,")&&("{"===a[0]&&(c=this.tokens[this.tokens.length-1]))&&(c.json=-1===c.text.indexOf("."));else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch,json:this.was(":[,")&&
|
|
||||||
this.is("{[")||this.is("}]:,")}),this.is("{[")&&a.unshift(this.ch),this.is("}]")&&a.shift(),this.index++;else if(this.isWhitespace(this.ch)){this.index++;continue}else{var d=this.ch+this.peek(),e=d+this.peek(2),g=Ja[this.ch],f=Ja[d],h=Ja[e];h?(this.tokens.push({index:this.index,text:e,fn:h}),this.index+=3):f?(this.tokens.push({index:this.index,text:d,fn:f}),this.index+=2):g?(this.tokens.push({index:this.index,text:this.ch,fn:g,json:this.was("[,:")&&this.is("+-")}),this.index+=1):this.throwError("Unexpected next character ",
|
|
||||||
this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},was:function(a){return-1!==a.indexOf(this.lastCh)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===
|
|
||||||
a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=B(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw xa("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=t(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||
|
|
||||||
e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}a*=1;this.tokens.push({index:c,text:a,json:!0,fn:function(){return a}})},readIdent:function(){for(var a=this,c="",d=this.index,e,g,f,h;this.index<this.text.length;){h=this.text.charAt(this.index);if("."===h||this.isIdent(h)||this.isNumber(h))"."===h&&(e=this.index),c+=h;else break;this.index++}if(e)for(g=this.index;g<this.text.length;){h=this.text.charAt(g);if("("===h){f=c.substr(e-d+1);c=c.substr(0,
|
|
||||||
e-d);this.index=g;break}if(this.isWhitespace(h))g++;else break}d={index:d,text:c};if(Ja.hasOwnProperty(c))d.fn=Ja[c],d.json=Ja[c];else{var m=uc(c,this.options,this.text);d.fn=F(function(a,c){return m(a,c)},{assign:function(d,e){return ib(d,c,e,a.text,a.options)}})}this.tokens.push(d);f&&(this.tokens.push({index:e,text:".",json:!1}),this.tokens.push({index:e+1,text:f,json:!1}))},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,g=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),
|
|
||||||
e=e+f;if(g)"u"===f?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=4,d+=String.fromCharCode(parseInt(f,16))):d=(g=Sd[f])?d+g:d+f,g=!1;else if("\\"===f)g=!0;else{if(f===a){this.index++;this.tokens.push({index:c,text:e,string:d,json:!0,fn:function(){return d}});return}d+=f}this.index++}this.throwError("Unterminated quote",c)}};var Ya=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};Ya.ZERO=function(){return 0};
|
|
||||||
Ya.prototype={constructor:Ya,parse:function(a,c){this.text=a;this.json=c;this.tokens=this.lexer.lex(a);c&&(this.assignment=this.logicalOR,this.functionCall=this.fieldAccess=this.objectIndex=this.filterChain=function(){this.throwError("is not valid json",{text:a,index:0})});var d=c?this.primary():this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);d.literal=!!d.literal;d.constant=!!d.constant;return d},primary:function(){var a;if(this.expect("("))a=this.filterChain(),
|
|
||||||
this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var c=this.expect();(a=c.fn)||this.throwError("not a primary expression",c);c.json&&(a.constant=!0,a.literal=!0)}for(var d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw xa("syntax",c.text,a,c.index+1,this.text,
|
|
||||||
this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw xa("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){if(0<this.tokens.length){var g=this.tokens[0],f=g.text;if(f===a||f===c||f===d||f===e||!(a||c||d||e))return g}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.json&&!a.json&&this.throwError("is not valid json",a),this.tokens.shift(),a):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},
|
|
||||||
unaryFn:function(a,c){return F(function(d,e){return a(d,e,c)},{constant:c.constant})},ternaryFn:function(a,c,d){return F(function(e,g){return a(e,g)?c(e,g):d(e,g)},{constant:a.constant&&c.constant&&d.constant})},binaryFn:function(a,c,d){return F(function(e,g){return c(e,g,a,d)},{constant:a.constant&&d.constant})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,d){for(var e,g=
|
|
||||||
0;g<a.length;g++){var f=a[g];f&&(e=f(c,d))}return e}},filterChain:function(){for(var a=this.expression(),c;;)if(c=this.expect("|"))a=this.binaryFn(a,c.fn,this.filter());else return a},filter:function(){for(var a=this.expect(),c=this.$filter(a.text),d=[];;)if(a=this.expect(":"))d.push(this.expression());else{var e=function(a,e,h){h=[h];for(var m=0;m<d.length;m++)h.push(d[m](a,e));return c.apply(a,h)};return function(){return e}}},expression:function(){return this.assignment()},assignment:function(){var a=
|
|
||||||
this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),function(d,g){return a.assign(d,c(d,g),g)}):a},ternary:function(){var a=this.logicalOR(),c,d;if(this.expect("?")){c=this.ternary();if(d=this.expect(":"))return this.ternaryFn(a,c,this.ternary());this.throwError("expected :",d)}else return a},logicalOR:function(){for(var a=this.logicalAND(),c;;)if(c=this.expect("||"))a=this.binaryFn(a,
|
|
||||||
c.fn,this.logicalAND());else return a},logicalAND:function(){var a=this.equality(),c;if(c=this.expect("&&"))a=this.binaryFn(a,c.fn,this.logicalAND());return a},equality:function(){var a=this.relational(),c;if(c=this.expect("==","!=","===","!=="))a=this.binaryFn(a,c.fn,this.equality());return a},relational:function(){var a=this.additive(),c;if(c=this.expect("<",">","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+",
|
|
||||||
"-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(Ya.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=uc(d,this.options,this.text);return F(function(c,d,h){return e(h||
|
|
||||||
a(c,d),d)},{assign:function(e,f,h){return ib(a(e,h),d,f,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return F(function(e,g){var f=a(e,g),h=d(e,g),m;if(!f)return r;(f=Xa(f[h],c.text))&&(f.then&&c.options.unwrapPromises)&&(m=f,"$$v"in f||(m.$$v=r,m.then(function(a){m.$$v=a})),f=f.$$v);return f},{assign:function(e,g,f){var h=d(e,f);return Xa(a(e,f),c.text)[h]=g}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());
|
|
||||||
while(this.expect(","))}this.consume(")");var e=this;return function(g,f){for(var h=[],m=c?c(g,f):g,k=0;k<d.length;k++)h.push(d[k](g,f));k=a(g,f,m)||v;Xa(m,e.text);Xa(k,e.text);h=k.apply?k.apply(m,h):k(h[0],h[1],h[2],h[3],h[4]);return Xa(h,e.text)}},arrayDeclaration:function(){var a=[],c=!0;if("]"!==this.peekToken().text){do{var d=this.expression();a.push(d);d.constant||(c=!1)}while(this.expect(","))}this.consume("]");return F(function(c,d){for(var f=[],h=0;h<a.length;h++)f.push(a[h](c,d));return f},
|
|
||||||
{literal:!0,constant:c})},object:function(){var a=[],c=!0;if("}"!==this.peekToken().text){do{var d=this.expect(),d=d.string||d.text;this.consume(":");var e=this.expression();a.push({key:d,value:e});e.constant||(c=!1)}while(this.expect(","))}this.consume("}");return F(function(c,d){for(var e={},m=0;m<a.length;m++){var k=a[m];e[k.key]=k.value(c,d)}return e},{literal:!0,constant:c})}};var Jb={},ra=A("$sce"),fa={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},U=O.createElement("a"),
|
|
||||||
xc=wa(X.location.href,!0);yc.$inject=["$provide"];zc.$inject=["$locale"];Bc.$inject=["$locale"];var Ec=".",Md={yyyy:W("FullYear",4),yy:W("FullYear",2,0,!0),y:W("FullYear",1),MMMM:jb("Month"),MMM:jb("Month",!0),MM:W("Month",2,1),M:W("Month",1,1),dd:W("Date",2),d:W("Date",1),HH:W("Hours",2),H:W("Hours",1),hh:W("Hours",2,-12),h:W("Hours",1,-12),mm:W("Minutes",2),m:W("Minutes",1),ss:W("Seconds",2),s:W("Seconds",1),sss:W("Milliseconds",3),EEEE:jb("Day"),EEE:jb("Day",!0),a:function(a,c){return 12>a.getHours()?
|
|
||||||
c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Lb(Math[0<a?"floor":"ceil"](a/60),2)+Lb(Math.abs(a%60),2))}},Ld=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Kd=/^\-?\d+$/;Ac.$inject=["$locale"];var Id=ba(t),Jd=ba(Ha);Cc.$inject=["$parse"];var Td=ba({restrict:"E",compile:function(a,c){8>=M&&(c.href||c.name||c.$set("href",""),a.append(O.createComment("IE fix")));return function(a,c){c.on("click",function(a){c.attr("href")||a.preventDefault()})}}}),
|
|
||||||
Nb={};q(gb,function(a,c){if("multiple"!=a){var d=ma("ng-"+c);Nb[d]=function(){return{priority:100,compile:function(){return function(a,g,f){a.$watch(f[d],function(a){f.$set(c,!!a)})}}}}}});q(["src","srcset","href"],function(a){var c=ma("ng-"+a);Nb[c]=function(){return{priority:99,link:function(d,e,g){g.$observe(c,function(c){c&&(g.$set(a,c),M&&e.prop(a,g[a]))})}}}});var mb={$addControl:v,$removeControl:v,$setValidity:v,$setDirty:v,$setPristine:v};Fc.$inject=["$element","$attrs","$scope"];var Hc=function(a){return["$timeout",
|
|
||||||
function(c){return{name:"form",restrict:a?"EAC":"E",controller:Fc,compile:function(){return{pre:function(a,e,g,f){if(!g.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Gc(e[0],"submit",h);e.on("$destroy",function(){c(function(){Ab(e[0],"submit",h)},0,!1)})}var m=e.parent().controller("form"),k=g.name||g.ngForm;k&&ib(a,k,f,k);if(m)e.on("$destroy",function(){m.$removeControl(f);k&&ib(a,k,r,k);F(f,mb)})}}}}}]},Ud=Hc(),Vd=Hc(!0),Wd=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
|
|
||||||
Xd=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/,Yd=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Ic={text:ob,number:function(a,c,d,e,g,f){ob(a,c,d,e,g,f);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Yd.test(a))return e.$setValidity("number",!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return r});e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);if(!e.$isEmpty(a)&&a<c)return e.$setValidity("min",!1),r;e.$setValidity("min",
|
|
||||||
!0);return a},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);if(!e.$isEmpty(a)&&a>c)return e.$setValidity("max",!1),r;e.$setValidity("max",!0);return a},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){if(e.$isEmpty(a)||qb(a))return e.$setValidity("number",!0),a;e.$setValidity("number",!1);return r})},url:function(a,c,d,e,g,f){ob(a,c,d,e,g,f);a=function(a){if(e.$isEmpty(a)||Wd.test(a))return e.$setValidity("url",!0),a;e.$setValidity("url",
|
|
||||||
!1);return r};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,g,f){ob(a,c,d,e,g,f);a=function(a){if(e.$isEmpty(a)||Xd.test(a))return e.$setValidity("email",!0),a;e.$setValidity("email",!1);return r};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){C(d.name)&&c.attr("name",Za());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,
|
|
||||||
c,d,e){var g=d.ngTrueValue,f=d.ngFalseValue;w(g)||(g=!0);w(f)||(f=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==g};e.$formatters.push(function(a){return a===g});e.$parsers.push(function(a){return a?g:f})},hidden:v,button:v,submit:v,reset:v},Jc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",link:function(d,e,g,f){f&&(Ic[t(g.type)]||Ic.text)(d,e,g,f,c,a)}}}],
|
|
||||||
lb="ng-valid",kb="ng-invalid",Ia="ng-pristine",nb="ng-dirty",Zd=["$scope","$exceptionHandler","$attrs","$element","$parse",function(a,c,d,e,g){function f(a,c){c=c?"-"+db(c,"-"):"";e.removeClass((a?kb:lb)+c).addClass((a?lb:kb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=d.name;var h=g(d.ngModel),m=h.assign;if(!m)throw A("ngModel")("nonassign",d.ngModel,ha(e));
|
|
||||||
this.$render=v;this.$isEmpty=function(a){return C(a)||""===a||null===a||a!==a};var k=e.inheritedData("$formController")||mb,l=0,n=this.$error={};e.addClass(Ia);f(!0);this.$setValidity=function(a,c){n[a]!==!c&&(c?(n[a]&&l--,l||(f(!0),this.$valid=!0,this.$invalid=!1)):(f(!1),this.$invalid=!0,this.$valid=!1,l++),n[a]=!c,f(c,a),k.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=!0;e.removeClass(nb).addClass(Ia)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&
|
|
||||||
(this.$dirty=!0,this.$pristine=!1,e.removeClass(Ia).addClass(nb),k.$setDirty());q(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,m(a,d),q(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var p=this;a.$watch(function(){var c=h(a);if(p.$modelValue!==c){var d=p.$formatters,e=d.length;for(p.$modelValue=c;e--;)c=d[e](c);p.$viewValue!==c&&(p.$viewValue=c,p.$render())}})}],$d=function(){return{require:["ngModel","^?form"],controller:Zd,link:function(a,c,d,e){var g=
|
|
||||||
e[0],f=e[1]||mb;f.$addControl(g);a.$on("$destroy",function(){f.$removeControl(g)})}}},ae=ba({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Kc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var g=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(g);e.$parsers.unshift(g);d.$observe("required",function(){g(e.$viewValue)})}}}},
|
|
||||||
be=function(){return{require:"ngModel",link:function(a,c,d,e){var g=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!C(a)){var c=[];a&&q(a.split(g),function(a){a&&c.push($(a))});return c}});e.$formatters.push(function(a){return K(a)?a.join(", "):r});e.$isEmpty=function(a){return!a||!a.length}}}},ce=/^(true|false|\d+)$/,de=function(){return{priority:100,compile:function(a,c){return ce.test(c.ngValue)?function(a,c,g){g.$set("value",a.$eval(g.ngValue))}:function(a,
|
|
||||||
c,g){a.$watch(g.ngValue,function(a){g.$set("value",a)})}}}},ee=sa(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==r?"":a)})}),fe=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],ge=["$sce","$parse",function(a,c){return function(d,e,g){e.addClass("ng-binding").data("$binding",g.ngBindHtml);var f=c(g.ngBindHtml);
|
|
||||||
d.$watch(function(){return(f(d)||"").toString()},function(c){e.html(a.getTrustedHtml(f(d))||"")})}}],he=Mb("",!0),ie=Mb("Odd",0),je=Mb("Even",1),ke=sa({compile:function(a,c){c.$set("ngCloak",r);a.removeClass("ng-cloak")}}),le=[function(){return{scope:!0,controller:"@",priority:500}}],Lc={};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ma("ng-"+a);Lc[c]=["$parse",function(d){return{compile:function(e,
|
|
||||||
g){var f=d(g[c]);return function(c,d,e){d.on(t(a),function(a){c.$apply(function(){f(c,{$event:a})})})}}}}]});var me=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,g,f){var h,m;c.$watch(e.ngIf,function(g){Na(g)?m||(m=c.$new(),f(m,function(c){h={startNode:c[0],endNode:c[c.length++]=O.createComment(" end ngIf: "+e.ngIf+" ")};a.enter(c,d.parent(),d)})):(m&&(m.$destroy(),m=null),h&&(a.leave(vb(h)),h=null))})}}}],ne=["$http","$templateCache",
|
|
||||||
"$anchorScroll","$compile","$animate","$sce",function(a,c,d,e,g,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",compile:function(h,m){var k=m.ngInclude||m.src,l=m.onload||"",n=m.autoscroll;return function(h,m,q,r,t){var z=0,x,H,y=function(){x&&(x.$destroy(),x=null);H&&(g.leave(H),H=null)};h.$watch(f.parseAsResourceUrl(k),function(f){var k=function(){!B(n)||n&&!h.$eval(n)||d()},q=++z;f?(a.get(f,{cache:c}).success(function(a){if(q===z){var c=h.$new(),d=t(c,v);y();x=c;H=d;H.html(a);
|
|
||||||
g.enter(H,null,m,k);e(H.contents())(x);x.$emit("$includeContentLoaded");h.$eval(l)}}).error(function(){q===z&&y()}),h.$emit("$includeContentRequested")):y()})}}}}],oe=sa({compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),pe=sa({terminal:!0,priority:1E3}),qe=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,g,f){var h=f.count,m=f.$attr.when&&g.attr(f.$attr.when),k=f.offset||0,l=e.$eval(m)||{},n={},p=c.startSymbol(),s=c.endSymbol(),r=/^when(Minus)?(.+)$/;
|
|
||||||
q(f,function(a,c){r.test(c)&&(l[t(c.replace("when","").replace("Minus","-"))]=g.attr(f.$attr[c]))});q(l,function(a,e){n[e]=c(a.replace(d,p+h+"-"+k+s))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-k));return n[c](e,g,!0)},function(a){g.text(a)})}}}],re=["$parse","$animate",function(a,c){var d=A("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,g,f,h,m){var k=f.ngRepeat,l=k.match(/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/),
|
|
||||||
n,p,s,r,u,t,v={$id:Ca};if(!l)throw d("iexp",k);f=l[1];h=l[2];(l=l[4])?(n=a(l),p=function(a,c,d){t&&(v[t]=a);v[u]=c;v.$index=d;return n(e,v)}):(s=function(a,c){return Ca(c)},r=function(a){return a});l=f.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",f);u=l[3]||l[1];t=l[2];var B={};e.$watchCollection(h,function(a){var f,h,l=g[0],n,v={},z,P,N,T,C,w,F=[];if(pb(a))C=a,n=p||s;else{n=p||r;C=[];for(N in a)a.hasOwnProperty(N)&&"$"!=N.charAt(0)&&C.push(N);C.sort()}z=C.length;
|
|
||||||
h=F.length=C.length;for(f=0;f<h;f++)if(N=a===C?f:C[f],T=a[N],T=n(N,T,f),va(T,"`track by` id"),B.hasOwnProperty(T))w=B[T],delete B[T],v[T]=w,F[f]=w;else{if(v.hasOwnProperty(T))throw q(F,function(a){a&&a.startNode&&(B[a.id]=a)}),d("dupes",k,T);F[f]={id:T};v[T]=!1}for(N in B)B.hasOwnProperty(N)&&(w=B[N],f=vb(w),c.leave(f),q(f,function(a){a.$$NG_REMOVED=!0}),w.scope.$destroy());f=0;for(h=C.length;f<h;f++){N=a===C?f:C[f];T=a[N];w=F[f];F[f-1]&&(l=F[f-1].endNode);if(w.startNode){P=w.scope;n=l;do n=n.nextSibling;
|
|
||||||
while(n&&n.$$NG_REMOVED);w.startNode!=n&&c.move(vb(w),null,x(l));l=w.endNode}else P=e.$new();P[u]=T;t&&(P[t]=N);P.$index=f;P.$first=0===f;P.$last=f===z-1;P.$middle=!(P.$first||P.$last);P.$odd=!(P.$even=0===(f&1));w.startNode||m(P,function(a){a[a.length++]=O.createComment(" end ngRepeat: "+k+" ");c.enter(a,null,x(l));l=a;w.scope=P;w.startNode=l&&l.endNode?l.endNode:a[0];w.endNode=a[a.length-1];v[w.id]=w})}B=v})}}}],se=["$animate",function(a){return function(c,d,e){c.$watch(e.ngShow,function(c){a[Na(c)?
|
|
||||||
"removeClass":"addClass"](d,"ng-hide")})}}],te=["$animate",function(a){return function(c,d,e){c.$watch(e.ngHide,function(c){a[Na(c)?"addClass":"removeClass"](d,"ng-hide")})}}],ue=sa(function(a,c,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&q(d,function(a,d){c.css(d,"")});a&&c.css(a)},!0)}),ve=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,g){var f,h,m=[];c.$watch(e.ngSwitch||e.on,function(d){for(var l=0,n=m.length;l<
|
|
||||||
n;l++)m[l].$destroy(),a.leave(h[l]);h=[];m=[];if(f=g.cases["!"+d]||g.cases["?"])c.$eval(e.change),q(f,function(d){var e=c.$new();m.push(e);d.transclude(e,function(c){var e=d.element;h.push(c);a.enter(c,e.parent(),e)})})})}}}],we=sa({transclude:"element",priority:800,require:"^ngSwitch",compile:function(a,c){return function(a,e,g,f,h){f.cases["!"+c.ngSwitchWhen]=f.cases["!"+c.ngSwitchWhen]||[];f.cases["!"+c.ngSwitchWhen].push({transclude:h,element:e})}}}),xe=sa({transclude:"element",priority:800,require:"^ngSwitch",
|
|
||||||
link:function(a,c,d,e,g){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:g,element:c})}}),ye=sa({controller:["$element","$transclude",function(a,c){if(!c)throw A("ngTransclude")("orphan",ha(a));this.$transclude=c}],link:function(a,c,d,e){e.$transclude(function(a){c.html("");c.append(a)})}}),ze=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],Ae=A("ngOptions"),Be=ba({terminal:!0}),Ce=["$compile","$parse",
|
|
||||||
function(a,c){var d=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/,e={$setViewValue:v};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var m=this,k={},l=e,n;m.databound=d.ngModel;m.init=function(a,c,d){l=a;n=d};m.addOption=function(c){va(c,'"option value"');k[c]=!0;l.$viewValue==c&&(a.val(c),n.parent()&&n.remove())};
|
|
||||||
m.removeOption=function(a){this.hasOption(a)&&(delete k[a],l.$viewValue==a&&this.renderUnknownOption(a))};m.renderUnknownOption=function(c){c="? "+Ca(c)+" ?";n.val(c);a.prepend(n);a.val(c);n.prop("selected",!0)};m.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){m.renderUnknownOption=v})}],link:function(e,f,h,m){function k(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(y.parent()&&y.remove(),c.val(a),""===a&&z.prop("selected",!0)):C(a)&&z?c.val(""):e.renderUnknownOption(a)};
|
|
||||||
c.on("change",function(){a.$apply(function(){y.parent()&&y.remove();d.$setViewValue(c.val())})})}function l(a,c,d){var e;d.$render=function(){var a=new Sa(d.$viewValue);q(c.find("option"),function(c){c.selected=B(a.get(c.value))})};a.$watch(function(){Aa(e,d.$viewValue)||(e=ga(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];q(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function n(e,f,g){function h(){var a={"":[]},c=[""],d,k,
|
|
||||||
r,t,u;t=g.$modelValue;u=s(e)||[];var z=n?Ob(u):u,C,A,J;A={};r=!1;var E,I;if(v)if(x&&K(t))for(r=new Sa([]),J=0;J<t.length;J++)A[l]=t[J],r.put(x(e,A),t[J]);else r=new Sa(t);for(J=0;C=z.length,J<C;J++){k=J;if(n){k=z[J];if("$"===k.charAt(0))continue;A[n]=k}A[l]=u[k];d=p(e,A)||"";(k=a[d])||(k=a[d]=[],c.push(d));v?d=B(r.remove(x?x(e,A):q(e,A))):(x?(d={},d[l]=t,d=x(e,d)===x(e,A)):d=t===q(e,A),r=r||d);E=m(e,A);E=B(E)?E:"";k.push({id:x?x(e,A):n?z[J]:J,label:E,selected:d})}v||(w||null===t?a[""].unshift({id:"",
|
|
||||||
label:"",selected:!r}):r||a[""].unshift({id:"?",label:"",selected:!0}));A=0;for(z=c.length;A<z;A++){d=c[A];k=a[d];y.length<=A?(t={element:H.clone().attr("label",d),label:k.label},u=[t],y.push(u),f.append(t.element)):(u=y[A],t=u[0],t.label!=d&&t.element.attr("label",t.label=d));E=null;J=0;for(C=k.length;J<C;J++)r=k[J],(d=u[J+1])?(E=d.element,d.label!==r.label&&E.text(d.label=r.label),d.id!==r.id&&E.val(d.id=r.id),E[0].selected!==r.selected&&E.prop("selected",d.selected=r.selected)):(""===r.id&&w?I=
|
|
||||||
w:(I=F.clone()).val(r.id).attr("selected",r.selected).text(r.label),u.push({element:I,label:r.label,id:r.id,selected:r.selected}),E?E.after(I):t.element.append(I),E=I);for(J++;u.length>J;)u.pop().element.remove()}for(;y.length>A;)y.pop()[0].element.remove()}var k;if(!(k=t.match(d)))throw Ae("iexp",t,ha(f));var m=c(k[2]||k[1]),l=k[4]||k[6],n=k[5],p=c(k[3]||""),q=c(k[2]?k[1]:l),s=c(k[7]),x=k[8]?c(k[8]):null,y=[[{element:f,label:""}]];w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.html("");f.on("change",
|
|
||||||
function(){e.$apply(function(){var a,c=s(e)||[],d={},h,k,m,p,t,u,w;if(v)for(k=[],p=0,u=y.length;p<u;p++)for(a=y[p],m=1,t=a.length;m<t;m++){if((h=a[m].element)[0].selected){h=h.val();n&&(d[n]=h);if(x)for(w=0;w<c.length&&(d[l]=c[w],x(e,d)!=h);w++);else d[l]=c[h];k.push(q(e,d))}}else if(h=f.val(),"?"==h)k=r;else if(""===h)k=null;else if(x)for(w=0;w<c.length;w++){if(d[l]=c[w],x(e,d)==h){k=q(e,d);break}}else d[l]=c[h],n&&(d[n]=h),k=q(e,d);g.$setViewValue(k)})});g.$render=h;e.$watch(h)}if(m[1]){var p=m[0],
|
|
||||||
s=m[1],v=h.multiple,t=h.ngOptions,w=!1,z,F=x(O.createElement("option")),H=x(O.createElement("optgroup")),y=F.clone();m=0;for(var A=f.children(),I=A.length;m<I;m++)if(""===A[m].value){z=w=A.eq(m);break}p.init(s,w,y);if(v&&(h.required||h.ngRequired)){var E=function(a){s.$setValidity("required",!h.required||a&&a.length);return a};s.$parsers.push(E);s.$formatters.unshift(E);h.$observe("required",function(){E(s.$viewValue)})}t?n(e,f,s):v?l(e,f,s):k(e,f,s,p)}}}}],De=["$interpolate",function(a){var c={addOption:v,
|
|
||||||
removeOption:v};return{restrict:"E",priority:100,compile:function(d,e){if(C(e.value)){var g=a(d.text(),!0);g||e.$set("value",d.text())}return function(a,d,e){var k=d.parent(),l=k.data("$selectController")||k.parent().data("$selectController");l&&l.databound?d.prop("selected",!1):l=c;g?a.$watch(g,function(a,c){e.$set("value",a);a!==c&&l.removeOption(c);l.addOption(a)}):l.addOption(e.value);d.on("$destroy",function(){l.removeOption(e.value)})}}}}],Ee=ba({restrict:"E",terminal:!0});(Ba=X.jQuery)?(x=
|
|
||||||
Ba,F(Ba.fn,{scope:Da.scope,isolateScope:Da.isolateScope,controller:Da.controller,injector:Da.injector,inheritedData:Da.inheritedData}),wb("remove",!0,!0,!1),wb("empty",!1,!1,!1),wb("html",!1,!1,!0)):x=L;cb.element=x;(function(a){F(a,{bootstrap:Xb,copy:ga,extend:F,equals:Aa,element:x,forEach:q,injector:Yb,noop:v,bind:rb,toJson:oa,fromJson:Tb,identity:za,isUndefined:C,isDefined:B,isString:w,isFunction:I,isObject:V,isNumber:qb,isElement:Nc,isArray:K,version:Od,isDate:Ka,lowercase:t,uppercase:Ha,callbacks:{counter:0},
|
|
||||||
$$minErr:A,$$csp:Sb});Ua=Tc(X);try{Ua("ngLocale")}catch(c){Ua("ngLocale",[]).provider("$locale",qd)}Ua("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:yd});a.provider("$compile",gc).directive({a:Td,input:Jc,textarea:Jc,form:Ud,script:ze,select:Ce,style:Ee,option:De,ngBind:ee,ngBindHtml:ge,ngBindTemplate:fe,ngClass:he,ngClassEven:je,ngClassOdd:ie,ngCloak:ke,ngController:le,ngForm:Vd,ngHide:te,ngIf:me,ngInclude:ne,ngInit:oe,ngNonBindable:pe,ngPluralize:qe,ngRepeat:re,ngShow:se,ngStyle:ue,
|
|
||||||
ngSwitch:ve,ngSwitchWhen:we,ngSwitchDefault:xe,ngOptions:Be,ngTransclude:ye,ngModel:$d,ngList:be,ngChange:ae,required:Kc,ngRequired:Kc,ngValue:de}).directive(Nb).directive(Lc);a.provider({$anchorScroll:bd,$animate:Qd,$browser:dd,$cacheFactory:ed,$controller:hd,$document:id,$exceptionHandler:jd,$filter:yc,$interpolate:od,$interval:pd,$http:kd,$httpBackend:ld,$location:sd,$log:td,$parse:ud,$rootScope:xd,$q:vd,$sce:Bd,$sceDelegate:Ad,$sniffer:Cd,$templateCache:fd,$timeout:Dd,$window:Ed})}])})(cb);x(O).ready(function(){Rc(O,
|
|
||||||
Xb)})})(window,document);!angular.$$csp()&&angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-start{border-spacing:1px 1px;-ms-zoom:1.0001;}.ng-animate-active{border-spacing:0px 0px;-ms-zoom:1;}</style>');
|
|
||||||
//# sourceMappingURL=angular.min.js.map
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
/*
|
|
||||||
AngularJS v1.2.3
|
|
||||||
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
||||||
License: MIT
|
|
||||||
*/
|
|
||||||
(function(H,f,z){'use strict';var u=f.$$minErr("$resource"),A=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;f.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(D,E){function n(f,h){this.template=f;this.defaults=h||{};this.urlParams={}}function v(m,h,k){function r(d,c){var e={};c=w({},h,c);s(c,function(a,c){t(a)&&(a=a());var g;if(a&&a.charAt&&"@"==a.charAt(0)){g=d;var b=a.substr(1);if(null==b||""===b||"hasOwnProperty"===b||!A.test("."+b))throw u("badmember",b);for(var b=b.split("."),f=0,h=
|
|
||||||
b.length;f<h&&g!==z;f++){var q=b[f];g=null!==g?g[q]:z}}else g=a;e[c]=g});return e}function e(b){return b.resource}function b(b){B(b||{},this)}var F=new n(m);k=w({},G,k);s(k,function(d,c){var h=/^(POST|PUT|PATCH)$/i.test(d.method);b[c]=function(a,c,g,m){var p={},k,q,x;switch(arguments.length){case 4:x=m,q=g;case 3:case 2:if(t(c)){if(t(a)){q=a;x=c;break}q=c;x=g}else{p=a;k=c;q=g;break}case 1:t(a)?q=a:h?k=a:p=a;break;case 0:break;default:throw u("badargs",arguments.length);}var n=this instanceof b,l=
|
|
||||||
n?k:d.isArray?[]:new b(k),y={},v=d.interceptor&&d.interceptor.response||e,A=d.interceptor&&d.interceptor.responseError||z;s(d,function(b,a){"params"!=a&&("isArray"!=a&&"interceptor"!=a)&&(y[a]=B(b))});h&&(y.data=k);F.setUrlParams(y,w({},r(k,d.params||{}),p),d.url);p=D(y).then(function(a){var c=a.data,g=l.$promise;if(c){if(f.isArray(c)!==!!d.isArray)throw u("badcfg",d.isArray?"array":"object",f.isArray(c)?"array":"object");d.isArray?(l.length=0,s(c,function(a){l.push(new b(a))})):(B(c,l),l.$promise=
|
|
||||||
g)}l.$resolved=!0;a.resource=l;return a},function(a){l.$resolved=!0;(x||C)(a);return E.reject(a)});p=p.then(function(a){var c=v(a);(q||C)(c,a.headers);return c},A);return n?p:(l.$promise=p,l.$resolved=!1,l)};b.prototype["$"+c]=function(a,d,g){t(a)&&(g=d,d=a,a={});a=b[c].call(this,a,this,d,g);return a.$promise||a}});b.bind=function(b){return v(m,w({},h,b),k)};return b}var G={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},
|
|
||||||
C=f.noop,s=f.forEach,w=f.extend,B=f.copy,t=f.isFunction;n.prototype={setUrlParams:function(m,h,k){var r=this,e=k||r.template,b,n,d=r.urlParams={};s(e.split(/\W/),function(c){if("hasOwnProperty"===c)throw u("badname");!/^\d+$/.test(c)&&(c&&RegExp("(^|[^\\\\]):"+c+"(\\W|$)").test(e))&&(d[c]=!0)});e=e.replace(/\\:/g,":");h=h||{};s(r.urlParams,function(c,d){b=h.hasOwnProperty(d)?h[d]:r.defaults[d];f.isDefined(b)&&null!==b?(n=encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,
|
|
||||||
"$").replace(/%2C/gi,",").replace(/%20/g,"%20").replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),e=e.replace(RegExp(":"+d+"(\\W|$)","g"),n+"$1")):e=e.replace(RegExp("(/?):"+d+"(\\W|$)","g"),function(a,c,b){return"/"==b.charAt(0)?b:c+b})});e=e.replace(/\/+$/,"");e=e.replace(/\/\.(?=\w+($|\?))/,".");m.url=e.replace(/\/\\\./,"/.");s(h,function(b,d){r.urlParams[d]||(m.params=m.params||{},m.params[d]=b)})}};return v}])})(window,window.angular);
|
|
||||||
//# sourceMappingURL=angular-resource.min.js.map
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/*
|
|
||||||
AngularJS v1.2.3
|
|
||||||
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
||||||
License: MIT
|
|
||||||
*/
|
|
||||||
(function(t,c,A){'use strict';function x(r,m,d,b,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(l,z,k,B,w){function v(){g&&(g.$destroy(),g=null);q&&(h.leave(q),q=null)}function u(){var a=r.current&&r.current.locals,e=a&&a.$template;if(e){var y=l.$new(),s=w(y,c.noop);s.html(e);h.enter(s,null,q||z,function(){!c.isDefined(n)||n&&!l.$eval(n)||m()});v();var e=d(s.contents()),f=r.current;g=f.scope=y;q=s;f.controller&&(a.$scope=g,a=b(f.controller,a),f.controllerAs&&
|
|
||||||
(g[f.controllerAs]=a),s.data("$ngControllerController",a),s.children().data("$ngControllerController",a));e(g);g.$emit("$viewContentLoaded");g.$eval(p)}else v()}var g,q,n=k.autoscroll,p=k.onload||"";l.$on("$routeChangeSuccess",u);u()}}}t=c.module("ngRoute",["ng"]).provider("$route",function(){function r(b,h){return c.extend(new (c.extend(function(){},{prototype:b})),h)}function m(b,c){var l=c.caseInsensitiveMatch,d={originalPath:b,regexp:b},k=d.keys=[];b=b.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,
|
|
||||||
function(b,c,h,d){b="?"===d?d:null;d="*"===d?d:null;k.push({name:h,optional:!!b});c=c||"";return""+(b?"":c)+"(?:"+(b?c:"")+(d&&"(.+?)"||"([^/]+)")+(b||"")+")"+(b||"")}).replace(/([\/$\*])/g,"\\$1");d.regexp=RegExp("^"+b+"$",l?"i":"");return d}var d={};this.when=function(b,h){d[b]=c.extend({reloadOnSearch:!0},h,b&&m(b,h));if(b){var l="/"==b[b.length-1]?b.substr(0,b.length-1):b+"/";d[l]=c.extend({redirectTo:b},m(l,h))}return this};this.otherwise=function(b){this.when(null,b);return this};this.$get=
|
|
||||||
["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(b,h,l,m,k,t,w,v){function u(){var a=g(),e=p.current;if(a&&e&&a.$$route===e.$$route&&c.equals(a.pathParams,e.pathParams)&&!a.reloadOnSearch&&!n)e.params=a.params,c.copy(e.params,l),b.$broadcast("$routeUpdate",e);else if(a||e)n=!1,b.$broadcast("$routeChangeStart",a,e),(p.current=a)&&a.redirectTo&&(c.isString(a.redirectTo)?h.path(q(a.redirectTo,a.params)).search(a.params).replace():h.url(a.redirectTo(a.pathParams,
|
|
||||||
h.path(),h.search())).replace()),m.when(a).then(function(){if(a){var b=c.extend({},a.resolve),e,f;c.forEach(b,function(a,e){b[e]=c.isString(a)?k.get(a):k.invoke(a)});c.isDefined(e=a.template)?c.isFunction(e)&&(e=e(a.params)):c.isDefined(f=a.templateUrl)&&(c.isFunction(f)&&(f=f(a.params)),f=v.getTrustedResourceUrl(f),c.isDefined(f)&&(a.loadedTemplateUrl=f,e=t.get(f,{cache:w}).then(function(a){return a.data})));c.isDefined(e)&&(b.$template=e);return m.all(b)}}).then(function(d){a==p.current&&(a&&(a.locals=
|
|
||||||
d,c.copy(a.params,l)),b.$broadcast("$routeChangeSuccess",a,e))},function(c){a==p.current&&b.$broadcast("$routeChangeError",a,e,c)})}function g(){var a,b;c.forEach(d,function(d,l){var f;if(f=!b){var g=h.path();f=d.keys;var m={};if(d.regexp)if(g=d.regexp.exec(g)){for(var k=1,q=g.length;k<q;++k){var n=f[k-1],p="string"==typeof g[k]?decodeURIComponent(g[k]):g[k];n&&p&&(m[n.name]=p)}f=m}else f=null;else f=null;f=a=f}f&&(b=r(d,{params:c.extend({},h.search(),a),pathParams:a}),b.$$route=d)});return b||d[null]&&
|
|
||||||
r(d[null],{params:{},pathParams:{}})}function q(a,b){var d=[];c.forEach((a||"").split(":"),function(a,c){if(0===c)d.push(a);else{var g=a.match(/(\w+)(.*)/),h=g[1];d.push(b[h]);d.push(g[2]||"");delete b[h]}});return d.join("")}var n=!1,p={routes:d,reload:function(){n=!0;b.$evalAsync(u)}};b.$on("$locationChangeSuccess",u);return p}]});t.provider("$routeParams",function(){this.$get=function(){return{}}});t.directive("ngView",x);x.$inject=["$route","$anchorScroll","$compile","$controller","$animate"]})(window,
|
|
||||||
window.angular);
|
|
||||||
//# sourceMappingURL=angular-route.min.js.map
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/*
|
|
||||||
AngularJS v1.2.3
|
|
||||||
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
||||||
License: MIT
|
|
||||||
*/
|
|
||||||
(function(n,h,q){'use strict';function F(a){var e=[];t(e,h.noop).chars(a);return e.join("")}function k(a){var e={};a=a.split(",");var d;for(d=0;d<a.length;d++)e[a[d]]=!0;return e}function G(a,e){function d(a,b,d,g){b=h.lowercase(b);if(u[b])for(;f.last()&&v[f.last()];)c("",f.last());w[b]&&f.last()==b&&c("",b);(g=x[b]||!!g)||f.push(b);var l={};d.replace(H,function(a,b,e,c,m){l[b]=r(e||c||m||"")});e.start&&e.start(b,l,g)}function c(a,b){var c=0,d;if(b=h.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
|
|
||||||
if(0<=c){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}var b,g,f=[],l=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(f.last()&&y[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(I,"$1").replace(J,"$1");e.chars&&e.chars(r(b));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&e.comment(a.substring(4,b)),a=a.substring(b+3),g=!1);else if(z.test(a)){if(b=a.match(z))a=
|
|
||||||
a.replace(b[0],""),g=!1}else if(K.test(a)){if(b=a.match(A))a=a.substring(b[0].length),b[0].replace(A,c),g=!1}else L.test(a)&&(b=a.match(B))&&(a=a.substring(b[0].length),b[0].replace(B,d),g=!1);g&&(b=a.indexOf("<"),g=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(r(g)))}if(a==l)throw M("badparse",a);l=a}c()}function r(a){if(!a)return"";a=/^(\s*)([\s\S]*?)(\s*)$/.exec(a);a[0]="";a[2]&&(s.innerHTML=a[2].replace(/</g,"<"),a[2]=s.innerText||s.textContent);return a.join("")}function C(a){return a.replace(/&/g,
|
|
||||||
"&").replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}function t(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a);!d&&y[a]&&(d=a);d||!0!==D[a]||(c("<"),c(a),h.forEach(g,function(d,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==O[g]||!0===E[g]&&!e(d,k)||(c(" "),c(f),c('="'),c(C(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==D[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||
|
|
||||||
c(C(a))}}}var M=h.$$minErr("$sanitize"),B=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,A=/^<\s*\/\s*([\w:-]+)[^>]*>/,H=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,L=/^</,K=/^<\s*\//,I=/\x3c!--(.*?)--\x3e/g,z=/<!DOCTYPE([^>]*?)>/i,J=/<!\[CDATA\[(.*?)]]\x3e/g,N=/([^\#-~| |!])/g,x=k("area,br,col,hr,img,wbr");n=k("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");q=k("rp,rt");var w=h.extend({},q,n),u=h.extend({},n,k("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),
|
|
||||||
v=h.extend({},q,k("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),y=k("script,style"),D=h.extend({},x,u,v,w),E=k("background,cite,href,longdesc,src,usemap"),O=h.extend({},E,k("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,span,start,summary,target,title,type,valign,value,vspace,width")),
|
|
||||||
s=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(e){var d=[];G(e,t(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var e=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,d=/^mailto:/;return function(c,b){function g(a){a&&m.push(F(a))}function f(a,c){m.push("<a ");h.isDefined(b)&&(m.push('target="'),
|
|
||||||
m.push(b),m.push('" '));m.push('href="');m.push(a);m.push('">');g(c);m.push("</a>")}if(!c)return c;for(var l,k=c,m=[],p,n;l=k.match(e);)p=l[0],l[2]==l[3]&&(p="mailto:"+p),n=l.index,g(k.substr(0,n)),f(p,l[0].replace(d,"")),k=k.substring(n+l[0].length);g(k);return a(m.join(""))}}])})(window,window.angular);
|
|
||||||
//# sourceMappingURL=angular-sanitize.min.js.map
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
/*
|
|
||||||
AngularJS v1.2.3
|
|
||||||
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
||||||
License: MIT
|
|
||||||
*/
|
|
||||||
(function(y,v,z){'use strict';function t(g,a,b){q.directive(g,["$parse","$swipe",function(l,n){var r=75,h=0.3,d=30;return function(p,m,k){function e(e){if(!u)return!1;var c=Math.abs(e.y-u.y);e=(e.x-u.x)*a;return f&&c<r&&0<e&&e>d&&c/e<h}var c=l(k[g]),u,f;n.bind(m,{start:function(e,c){u=e;f=!0},cancel:function(e){f=!1},end:function(a,f){e(a)&&p.$apply(function(){m.triggerHandler(b);c(p,{$event:f})})}})}}])}var q=v.module("ngTouch",[]);q.factory("$swipe",[function(){function g(a){var b=a.touches&&a.touches.length?
|
|
||||||
a.touches:[a];a=a.changedTouches&&a.changedTouches[0]||a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]||b[0].originalEvent||b[0];return{x:a.clientX,y:a.clientY}}return{bind:function(a,b){var l,n,r,h,d=!1;a.on("touchstart mousedown",function(a){r=g(a);d=!0;n=l=0;h=r;b.start&&b.start(r,a)});a.on("touchcancel",function(a){d=!1;b.cancel&&b.cancel(a)});a.on("touchmove mousemove",function(a){if(d&&r){var m=g(a);l+=Math.abs(m.x-h.x);n+=Math.abs(m.y-h.y);h=m;10>l&&10>n||
|
|
||||||
(n>l?(d=!1,b.cancel&&b.cancel(a)):(a.preventDefault(),b.move&&b.move(m,a)))}});a.on("touchend mouseup",function(a){d&&(d=!1,b.end&&b.end(g(a),a))})}}}]);q.config(["$provide",function(g){g.decorator("ngClickDirective",["$delegate",function(a){a.shift();return a}])}]);q.directive("ngClick",["$parse","$timeout","$rootElement",function(g,a,b){function l(a,c,b){for(var f=0;f<a.length;f+=2)if(Math.abs(a[f]-c)<d&&Math.abs(a[f+1]-b)<d)return a.splice(f,f+2),!0;return!1}function n(a){if(!(Date.now()-m>h)){var c=
|
|
||||||
a.touches&&a.touches.length?a.touches:[a],b=c[0].clientX,c=c[0].clientY;1>b&&1>c||l(k,b,c)||(a.stopPropagation(),a.preventDefault(),a.target&&a.target.blur())}}function r(b){b=b.touches&&b.touches.length?b.touches:[b];var c=b[0].clientX,d=b[0].clientY;k.push(c,d);a(function(){for(var a=0;a<k.length;a+=2)if(k[a]==c&&k[a+1]==d){k.splice(a,a+2);break}},h,!1)}var h=2500,d=25,p="ng-click-active",m,k;return function(a,c,d){function f(){q=!1;c.removeClass(p)}var h=g(d.ngClick),q=!1,s,t,w,x;c.on("touchstart",
|
|
||||||
function(a){q=!0;s=a.target?a.target:a.srcElement;3==s.nodeType&&(s=s.parentNode);c.addClass(p);t=Date.now();a=a.touches&&a.touches.length?a.touches:[a];a=a[0].originalEvent||a[0];w=a.clientX;x=a.clientY});c.on("touchmove",function(a){f()});c.on("touchcancel",function(a){f()});c.on("touchend",function(a){var h=Date.now()-t,e=a.changedTouches&&a.changedTouches.length?a.changedTouches:a.touches&&a.touches.length?a.touches:[a],g=e[0].originalEvent||e[0],e=g.clientX,g=g.clientY,p=Math.sqrt(Math.pow(e-
|
|
||||||
w,2)+Math.pow(g-x,2));q&&(750>h&&12>p)&&(k||(b[0].addEventListener("click",n,!0),b[0].addEventListener("touchstart",r,!0),k=[]),m=Date.now(),l(k,e,g),s&&s.blur(),v.isDefined(d.disabled)&&!1!==d.disabled||c.triggerHandler("click",[a]));f()});c.onclick=function(a){};c.on("click",function(b,c){a.$apply(function(){h(a,{$event:c||b})})});c.on("mousedown",function(a){c.addClass(p)});c.on("mousemove mouseup",function(a){c.removeClass(p)})}}]);t("ngSwipeLeft",-1,"swipeleft");t("ngSwipeRight",1,"swiperight")})(window,
|
|
||||||
window.angular);
|
|
||||||
//# sourceMappingURL=angular-touch.min.js.map
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
/*! device.js 0.1.58 fork https://github.com/Athou/device.js */
|
|
||||||
(function(){var a,b,c,d,e,f,g,h,i,j;a=window.device,window.device={},c=window.document.documentElement,j=window.navigator.userAgent.toLowerCase(),device.ios=function(){return device.iphone()||device.ipod()||device.ipad()},device.iphone=function(){return d("iphone")},device.ipod=function(){return d("ipod")},device.ipad=function(){return d("ipad")},device.android=function(){return d("android")},device.androidPhone=function(){return device.android()&&d("mobile")},device.androidTablet=function(){return device.android()&&!d("mobile")},device.blackberry=function(){return d("blackberry")||d("bb10")||d("rim")},device.blackberryPhone=function(){return device.blackberry()&&!d("tablet")},device.blackberryTablet=function(){return device.blackberry()&&d("tablet")},device.windows=function(){return d("windows")},device.windowsPhone=function(){return device.windows()&&d("phone")},device.windowsTablet=function(){return device.windows()&&d("touch")},device.fxos=function(){return(d("(mobile;")||d("(tablet;"))&&d("; rv:")},device.fxosPhone=function(){return device.fxos()&&d("mobile")},device.fxosTablet=function(){return device.fxos()&&d("tablet")},device.meego=function(){return d("meego")},device.mobile=function(){return device.androidPhone()||device.iphone()||device.ipod()||device.windowsPhone()||device.blackberryPhone()||device.fxosPhone()||device.meego()},device.tablet=function(){return device.ipad()||device.androidTablet()||device.blackberryTablet()||device.windowsTablet()||device.fxosTablet()},device.portrait=function(){return 90!==Math.abs(window.orientation)},device.landscape=function(){return 90===Math.abs(window.orientation)},device.noConflict=function(){return window.device=a,this},d=function(a){return-1!==j.indexOf(a)},f=function(a){var b;return b=new RegExp(a,"i"),c.className.match(b)},b=function(a){return f(a)?void 0:c.className+=" "+a},h=function(a){return f(a)?c.className=c.className.replace(a,""):void 0},device.ios()?device.ipad()?b("ios ipad tablet"):device.iphone()?b("ios iphone mobile"):device.ipod()&&b("ios ipod mobile"):device.android()?device.androidTablet()?b("android tablet"):b("android mobile"):device.blackberry()?device.blackberryTablet()?b("blackberry tablet"):b("blackberry mobile"):device.windows()?device.windowsTablet()?b("windows tablet"):device.windowsPhone()?b("windows mobile"):b("desktop"):device.fxos()?device.fxosTablet()?b("fxos tablet"):b("fxos mobile"):device.meego()?b("meego mobile"):b("desktop"),e=function(){return device.landscape()?(h("portrait"),b("landscape")):(h("landscape"),b("portrait"))},i="onorientationchange"in window,g=i?"orientationchange":"resize",window.addEventListener?window.addEventListener(g,e,!1):window.attachEvent?window.attachEvent(g,e):window[g]=e,e()}).call(this);
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
|
|
||||||
* Licensed under the MIT License (LICENSE.txt).
|
|
||||||
*
|
|
||||||
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
|
|
||||||
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
|
|
||||||
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
|
||||||
*
|
|
||||||
* Version: 3.0.6
|
|
||||||
*
|
|
||||||
* Requires: 1.2.2+
|
|
||||||
*/
|
|
||||||
(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery)
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,55 +0,0 @@
|
|||||||
/**
|
|
||||||
* @license
|
|
||||||
* Lo-Dash 2.4.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
|
|
||||||
* Build: `lodash modern -o ./dist/lodash.js`
|
|
||||||
*/
|
|
||||||
;(function(){function n(n,t,e){e=(e||0)-1;for(var r=n?n.length:0;++e<r;)if(n[e]===t)return e;return-1}function t(t,e){var r=typeof e;if(t=t.l,"boolean"==r||null==e)return t[e]?0:-1;"number"!=r&&"string"!=r&&(r="object");var u="number"==r?e:m+e;return t=(t=t[r])&&t[u],"object"==r?t&&-1<n(t,e)?0:-1:t?0:-1}function e(n){var t=this.l,e=typeof n;if("boolean"==e||null==n)t[n]=true;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?n:m+n,t=t[e]||(t[e]={});"object"==e?(t[r]||(t[r]=[])).push(n):t[r]=true
|
|
||||||
}}function r(n){return n.charCodeAt(0)}function u(n,t){for(var e=n.m,r=t.m,u=-1,o=e.length;++u<o;){var i=e[u],a=r[u];if(i!==a){if(i>a||typeof i=="undefined")return 1;if(i<a||typeof a=="undefined")return-1}}return n.n-t.n}function o(n){var t=-1,r=n.length,u=n[0],o=n[r/2|0],i=n[r-1];if(u&&typeof u=="object"&&o&&typeof o=="object"&&i&&typeof i=="object")return false;for(u=f(),u["false"]=u["null"]=u["true"]=u.undefined=false,o=f(),o.k=n,o.l=u,o.push=e;++t<r;)o.push(n[t]);return o}function i(n){return"\\"+U[n]
|
|
||||||
}function a(){return h.pop()||[]}function f(){return g.pop()||{k:null,l:null,m:null,"false":false,n:0,"null":false,number:null,object:null,push:null,string:null,"true":false,undefined:false,o:null}}function l(n){n.length=0,h.length<_&&h.push(n)}function c(n){var t=n.l;t&&c(t),n.k=n.l=n.m=n.object=n.number=n.string=n.o=null,g.length<_&&g.push(n)}function p(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);var r=-1;e=e-t||0;for(var u=Array(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function s(e){function h(n){if(!n||ce.call(n)!=q)return false;
|
|
||||||
var t=n.valueOf,e=typeof t=="function"&&(e=ye(t))&&ye(e);return e?n==e||ye(n)==e:ht(n)}function g(n,t,e){if(!n||!V[typeof n])return n;t=t&&typeof e=="undefined"?t:et(t,e,3);for(var r=-1,u=V[typeof n]&&Te(n),o=u?u.length:0;++r<o&&(e=u[r],false!==t(n[e],e,n)););return n}function _(n,t,e){var r;if(!n||!V[typeof n])return n;t=t&&typeof e=="undefined"?t:et(t,e,3);for(r in n)if(false===t(n[r],r,n))break;return n}function U(n,t,e){var r,u=n,o=u;if(!u)return o;for(var i=arguments,a=0,f=typeof e=="number"?2:i.length;++a<f;)if((u=i[a])&&V[typeof u])for(var l=-1,c=V[typeof u]&&Te(u),p=c?c.length:0;++l<p;)r=c[l],"undefined"==typeof o[r]&&(o[r]=u[r]);
|
|
||||||
return o}function H(n,t,e){var r,u=n,o=u;if(!u)return o;var i=arguments,a=0,f=typeof e=="number"?2:i.length;if(3<f&&"function"==typeof i[f-2])var l=et(i[--f-1],i[f--],2);else 2<f&&"function"==typeof i[f-1]&&(l=i[--f]);for(;++a<f;)if((u=i[a])&&V[typeof u])for(var c=-1,p=V[typeof u]&&Te(u),s=p?p.length:0;++c<s;)r=p[c],o[r]=l?l(o[r],u[r]):u[r];return o}function J(n){var t,e=[];if(!n||!V[typeof n])return e;for(t in n)me.call(n,t)&&e.push(t);return e}function Q(n){return n&&typeof n=="object"&&!$e(n)&&me.call(n,"__wrapped__")?n:new X(n)
|
|
||||||
}function X(n,t){this.__chain__=!!t,this.__wrapped__=n}function Z(n){function t(){if(r){var n=r.slice();be.apply(n,arguments)}if(this instanceof t){var o=tt(e.prototype),n=e.apply(o,n||arguments);return wt(n)?n:o}return e.apply(u,n||arguments)}var e=n[0],r=n[2],u=n[4];return De(t,n),t}function nt(n,t,e,r,u){if(e){var o=e(n);if(typeof o!="undefined")return o}if(!wt(n))return n;var i=ce.call(n);if(!K[i])return n;var f=Re[i];switch(i){case T:case F:return new f(+n);case W:case P:return new f(n);case z:return o=f(n.source,C.exec(n)),o.lastIndex=n.lastIndex,o
|
|
||||||
}if(i=$e(n),t){var c=!r;r||(r=a()),u||(u=a());for(var s=r.length;s--;)if(r[s]==n)return u[s];o=i?f(n.length):{}}else o=i?p(n):H({},n);return i&&(me.call(n,"index")&&(o.index=n.index),me.call(n,"input")&&(o.input=n.input)),t?(r.push(n),u.push(o),(i?St:g)(n,function(n,i){o[i]=nt(n,t,e,r,u)}),c&&(l(r),l(u)),o):o}function tt(n){return wt(n)?je(n):{}}function et(n,t,e){if(typeof n!="function")return Ut;if(typeof t=="undefined"||!("prototype"in n))return n;var r=n.__bindData__;if(typeof r=="undefined"&&(Ae.funcNames&&(r=!n.name),r=r||!Ae.funcDecomp,!r)){var u=ge.call(n);
|
|
||||||
Ae.funcNames||(r=!O.test(u)),r||(r=E.test(u),De(n,r))}if(false===r||true!==r&&1&r[1])return n;switch(e){case 1:return function(e){return n.call(t,e)};case 2:return function(e,r){return n.call(t,e,r)};case 3:return function(e,r,u){return n.call(t,e,r,u)};case 4:return function(e,r,u,o){return n.call(t,e,r,u,o)}}return Mt(n,t)}function rt(n){function t(){var n=f?i:this;if(u){var h=u.slice();be.apply(h,arguments)}return(o||c)&&(h||(h=p(arguments)),o&&be.apply(h,o),c&&h.length<a)?(r|=16,rt([e,s?r:-4&r,h,null,i,a])):(h||(h=arguments),l&&(e=n[v]),this instanceof t?(n=tt(e.prototype),h=e.apply(n,h),wt(h)?h:n):e.apply(n,h))
|
|
||||||
}var e=n[0],r=n[1],u=n[2],o=n[3],i=n[4],a=n[5],f=1&r,l=2&r,c=4&r,s=8&r,v=e;return De(t,n),t}function ut(e,r){var u=-1,i=vt(),a=e?e.length:0,f=a>=b&&i===n,l=[];if(f){var p=o(r);p?(i=t,r=p):f=false}for(;++u<a;)p=e[u],0>i(r,p)&&l.push(p);return f&&c(r),l}function ot(n,t,e,r){r=(r||0)-1;for(var u=n?n.length:0,o=[];++r<u;){var i=n[r];if(i&&typeof i=="object"&&typeof i.length=="number"&&($e(i)||yt(i))){t||(i=ot(i,t,e));var a=-1,f=i.length,l=o.length;for(o.length+=f;++a<f;)o[l++]=i[a]}else e||o.push(i)}return o
|
|
||||||
}function it(n,t,e,r,u,o){if(e){var i=e(n,t);if(typeof i!="undefined")return!!i}if(n===t)return 0!==n||1/n==1/t;if(n===n&&!(n&&V[typeof n]||t&&V[typeof t]))return false;if(null==n||null==t)return n===t;var f=ce.call(n),c=ce.call(t);if(f==D&&(f=q),c==D&&(c=q),f!=c)return false;switch(f){case T:case F:return+n==+t;case W:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case z:case P:return n==oe(t)}if(c=f==$,!c){var p=me.call(n,"__wrapped__"),s=me.call(t,"__wrapped__");if(p||s)return it(p?n.__wrapped__:n,s?t.__wrapped__:t,e,r,u,o);
|
|
||||||
if(f!=q)return false;if(f=n.constructor,p=t.constructor,f!=p&&!(dt(f)&&f instanceof f&&dt(p)&&p instanceof p)&&"constructor"in n&&"constructor"in t)return false}for(p=!u,u||(u=a()),o||(o=a()),f=u.length;f--;)if(u[f]==n)return o[f]==t;var v=0,i=true;if(u.push(n),o.push(t),c){if(f=n.length,v=t.length,i=v==n.length,!i&&!r)return i;for(;v--;)if(c=f,p=t[v],r)for(;c--&&!(i=it(n[c],p,e,r,u,o)););else if(!(i=it(n[v],p,e,r,u,o)))break;return i}return _(t,function(t,a,f){return me.call(f,a)?(v++,i=me.call(n,a)&&it(n[a],t,e,r,u,o)):void 0
|
|
||||||
}),i&&!r&&_(n,function(n,t,e){return me.call(e,t)?i=-1<--v:void 0}),p&&(l(u),l(o)),i}function at(n,t,e,r,u){($e(t)?St:g)(t,function(t,o){var i,a,f=t,l=n[o];if(t&&((a=$e(t))||h(t))){for(f=r.length;f--;)if(i=r[f]==t){l=u[f];break}if(!i){var c;e&&(f=e(l,t),c=typeof f!="undefined")&&(l=f),c||(l=a?$e(l)?l:[]:h(l)?l:{}),r.push(t),u.push(l),c||at(l,t,e,r,u)}}else e&&(f=e(l,t),typeof f=="undefined"&&(f=t)),typeof f!="undefined"&&(l=f);n[o]=l})}function ft(n,t){return n+he(Ee()*(t-n+1))}function lt(e,r,u){var i=-1,f=vt(),p=e?e.length:0,s=[],v=!r&&p>=b&&f===n,h=u||v?a():s;
|
|
||||||
if(v){var g=o(h);g?(f=t,h=g):(v=false,h=u?h:(l(h),s))}for(;++i<p;){var g=e[i],y=u?u(g,i,e):g;(r?!i||h[h.length-1]!==y:0>f(h,y))&&((u||v)&&h.push(y),s.push(g))}return v?(l(h.k),c(h)):u&&l(h),s}function ct(n){return function(t,e,r){var u={};e=Q.createCallback(e,r,3),r=-1;var o=t?t.length:0;if(typeof o=="number")for(;++r<o;){var i=t[r];n(u,i,e(i,r,t),t)}else g(t,function(t,r,o){n(u,t,e(t,r,o),o)});return u}}function pt(n,t,e,r,u,o){var i=1&t,a=4&t,f=16&t,l=32&t;if(!(2&t||dt(n)))throw new ie;f&&!e.length&&(t&=-17,f=e=false),l&&!r.length&&(t&=-33,l=r=false);
|
|
||||||
var c=n&&n.__bindData__;return c&&true!==c?(c=c.slice(),!i||1&c[1]||(c[4]=u),!i&&1&c[1]&&(t|=8),!a||4&c[1]||(c[5]=o),f&&be.apply(c[2]||(c[2]=[]),e),l&&be.apply(c[3]||(c[3]=[]),r),c[1]|=t,pt.apply(null,c)):(1==t||17===t?Z:rt)([n,t,e,r,u,o])}function st(n){return Fe[n]}function vt(){var t=(t=Q.indexOf)===Wt?n:t;return t}function ht(n){var t,e;return n&&ce.call(n)==q&&(t=n.constructor,!dt(t)||t instanceof t)?(_(n,function(n,t){e=t}),typeof e=="undefined"||me.call(n,e)):false}function gt(n){return Be[n]}function yt(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ce.call(n)==D||false
|
|
||||||
}function mt(n,t,e){var r=Te(n),u=r.length;for(t=et(t,e,3);u--&&(e=r[u],false!==t(n[e],e,n)););return n}function bt(n){var t=[];return _(n,function(n,e){dt(n)&&t.push(e)}),t.sort()}function _t(n){for(var t=-1,e=Te(n),r=e.length,u={};++t<r;){var o=e[t];u[n[o]]=o}return u}function dt(n){return typeof n=="function"}function wt(n){return!(!n||!V[typeof n])}function jt(n){return typeof n=="number"||n&&typeof n=="object"&&ce.call(n)==W||false}function kt(n){return typeof n=="string"||n&&typeof n=="object"&&ce.call(n)==P||false
|
|
||||||
}function xt(n){for(var t=-1,e=Te(n),r=e.length,u=Xt(r);++t<r;)u[t]=n[e[t]];return u}function Ct(n,t,e){var r=-1,u=vt(),o=n?n.length:0,i=false;return e=(0>e?Ne(0,o+e):e)||0,$e(n)?i=-1<u(n,t,e):typeof o=="number"?i=-1<(kt(n)?n.indexOf(t,e):u(n,t,e)):g(n,function(n){return++r<e?void 0:!(i=n===t)}),i}function Ot(n,t,e){var r=true;t=Q.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&(r=!!t(n[e],e,n)););else g(n,function(n,e,u){return r=!!t(n,e,u)});return r}function Nt(n,t,e){var r=[];
|
|
||||||
t=Q.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u;){var o=n[e];t(o,e,n)&&r.push(o)}else g(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function It(n,t,e){t=Q.createCallback(t,e,3),e=-1;var r=n?n.length:0;if(typeof r!="number"){var u;return g(n,function(n,e,r){return t(n,e,r)?(u=n,false):void 0}),u}for(;++e<r;){var o=n[e];if(t(o,e,n))return o}}function St(n,t,e){var r=-1,u=n?n.length:0;if(t=t&&typeof e=="undefined"?t:et(t,e,3),typeof u=="number")for(;++r<u&&false!==t(n[r],r,n););else g(n,t);
|
|
||||||
return n}function Et(n,t,e){var r=n?n.length:0;if(t=t&&typeof e=="undefined"?t:et(t,e,3),typeof r=="number")for(;r--&&false!==t(n[r],r,n););else{var u=Te(n),r=u.length;g(n,function(n,e,o){return e=u?u[--r]:--r,t(o[e],e,o)})}return n}function Rt(n,t,e){var r=-1,u=n?n.length:0;if(t=Q.createCallback(t,e,3),typeof u=="number")for(var o=Xt(u);++r<u;)o[r]=t(n[r],r,n);else o=[],g(n,function(n,e,u){o[++r]=t(n,e,u)});return o}function At(n,t,e){var u=-1/0,o=u;if(typeof t!="function"&&e&&e[t]===n&&(t=null),null==t&&$e(n)){e=-1;
|
|
||||||
for(var i=n.length;++e<i;){var a=n[e];a>o&&(o=a)}}else t=null==t&&kt(n)?r:Q.createCallback(t,e,3),St(n,function(n,e,r){e=t(n,e,r),e>u&&(u=e,o=n)});return o}function Dt(n,t,e,r){if(!n)return e;var u=3>arguments.length;t=Q.createCallback(t,r,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(e=n[++o]);++o<i;)e=t(e,n[o],o,n);else g(n,function(n,r,o){e=u?(u=false,n):t(e,n,r,o)});return e}function $t(n,t,e,r){var u=3>arguments.length;return t=Q.createCallback(t,r,4),Et(n,function(n,r,o){e=u?(u=false,n):t(e,n,r,o)
|
|
||||||
}),e}function Tt(n){var t=-1,e=n?n.length:0,r=Xt(typeof e=="number"?e:0);return St(n,function(n){var e=ft(0,++t);r[t]=r[e],r[e]=n}),r}function Ft(n,t,e){var r;t=Q.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&!(r=t(n[e],e,n)););else g(n,function(n,e,u){return!(r=t(n,e,u))});return!!r}function Bt(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;for(t=Q.createCallback(t,e,3);++o<u&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[0]:v;return p(n,0,Ie(Ne(0,r),u))
|
|
||||||
}function Wt(t,e,r){if(typeof r=="number"){var u=t?t.length:0;r=0>r?Ne(0,u+r):r||0}else if(r)return r=zt(t,e),t[r]===e?r:-1;return n(t,e,r)}function qt(n,t,e){if(typeof t!="number"&&null!=t){var r=0,u=-1,o=n?n.length:0;for(t=Q.createCallback(t,e,3);++u<o&&t(n[u],u,n);)r++}else r=null==t||e?1:Ne(0,t);return p(n,r)}function zt(n,t,e,r){var u=0,o=n?n.length:u;for(e=e?Q.createCallback(e,r,1):Ut,t=e(t);u<o;)r=u+o>>>1,e(n[r])<t?u=r+1:o=r;return u}function Pt(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=typeof t!="function"&&r&&r[t]===n?null:t,t=false),null!=e&&(e=Q.createCallback(e,r,3)),lt(n,t,e)
|
|
||||||
}function Kt(){for(var n=1<arguments.length?arguments:arguments[0],t=-1,e=n?At(Le(n,"length")):0,r=Xt(0>e?0:e);++t<e;)r[t]=Le(n,t);return r}function Lt(n,t){var e=-1,r=n?n.length:0,u={};for(t||!r||$e(n[0])||(t=[]);++e<r;){var o=n[e];t?u[o]=t[e]:o&&(u[o[0]]=o[1])}return u}function Mt(n,t){return 2<arguments.length?pt(n,17,p(arguments,2),null,t):pt(n,1,null,null,t)}function Vt(n,t,e){function r(){c&&ve(c),i=c=p=v,(g||h!==t)&&(s=Me(),a=n.apply(l,o),c||i||(o=l=null))}function u(){var e=t-(Me()-f);0<e?c=_e(u,e):(i&&ve(i),e=p,i=c=p=v,e&&(s=Me(),a=n.apply(l,o),c||i||(o=l=null)))
|
|
||||||
}var o,i,a,f,l,c,p,s=0,h=false,g=true;if(!dt(n))throw new ie;if(t=Ne(0,t)||0,true===e)var y=true,g=false;else wt(e)&&(y=e.leading,h="maxWait"in e&&(Ne(t,e.maxWait)||0),g="trailing"in e?e.trailing:g);return function(){if(o=arguments,f=Me(),l=this,p=g&&(c||!y),false===h)var e=y&&!c;else{i||y||(s=f);var v=h-(f-s),m=0>=v;m?(i&&(i=ve(i)),s=f,a=n.apply(l,o)):i||(i=_e(r,v))}return m&&c?c=ve(c):c||t===h||(c=_e(u,t)),e&&(m=true,a=n.apply(l,o)),!m||c||i||(o=l=null),a}}function Ut(n){return n}function Gt(n,t,e){var r=true,u=t&&bt(t);
|
|
||||||
t&&(e||u.length)||(null==e&&(e=t),o=X,t=n,n=Q,u=bt(t)),false===e?r=false:wt(e)&&"chain"in e&&(r=e.chain);var o=n,i=dt(o);St(u,function(e){var u=n[e]=t[e];i&&(o.prototype[e]=function(){var t=this.__chain__,e=this.__wrapped__,i=[e];if(be.apply(i,arguments),i=u.apply(n,i),r||t){if(e===i&&wt(i))return this;i=new o(i),i.__chain__=t}return i})})}function Ht(){}function Jt(n){return function(t){return t[n]}}function Qt(){return this.__wrapped__}e=e?Y.defaults(G.Object(),e,Y.pick(G,A)):G;var Xt=e.Array,Yt=e.Boolean,Zt=e.Date,ne=e.Function,te=e.Math,ee=e.Number,re=e.Object,ue=e.RegExp,oe=e.String,ie=e.TypeError,ae=[],fe=re.prototype,le=e._,ce=fe.toString,pe=ue("^"+oe(ce).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),se=te.ceil,ve=e.clearTimeout,he=te.floor,ge=ne.prototype.toString,ye=pe.test(ye=re.getPrototypeOf)&&ye,me=fe.hasOwnProperty,be=ae.push,_e=e.setTimeout,de=ae.splice,we=function(){try{var n={},t=pe.test(t=re.defineProperty)&&t,e=t(n,n,n)&&t
|
|
||||||
}catch(r){}return e}(),je=pe.test(je=re.create)&&je,ke=pe.test(ke=Xt.isArray)&&ke,xe=e.isFinite,Ce=e.isNaN,Oe=pe.test(Oe=re.keys)&&Oe,Ne=te.max,Ie=te.min,Se=e.parseInt,Ee=te.random,Re={};Re[$]=Xt,Re[T]=Yt,Re[F]=Zt,Re[B]=ne,Re[q]=re,Re[W]=ee,Re[z]=ue,Re[P]=oe,X.prototype=Q.prototype;var Ae=Q.support={};Ae.funcDecomp=!pe.test(e.a)&&E.test(s),Ae.funcNames=typeof ne.name=="string",Q.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:N,variable:"",imports:{_:Q}},je||(tt=function(){function n(){}return function(t){if(wt(t)){n.prototype=t;
|
|
||||||
var r=new n;n.prototype=null}return r||e.Object()}}());var De=we?function(n,t){M.value=t,we(n,"__bindData__",M)}:Ht,$e=ke||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ce.call(n)==$||false},Te=Oe?function(n){return wt(n)?Oe(n):[]}:J,Fe={"&":"&","<":"<",">":">",'"':""","'":"'"},Be=_t(Fe),We=ue("("+Te(Be).join("|")+")","g"),qe=ue("["+Te(Fe).join("")+"]","g"),ze=ct(function(n,t,e){me.call(n,e)?n[e]++:n[e]=1}),Pe=ct(function(n,t,e){(me.call(n,e)?n[e]:n[e]=[]).push(t)
|
|
||||||
}),Ke=ct(function(n,t,e){n[e]=t}),Le=Rt,Me=pe.test(Me=Zt.now)&&Me||function(){return(new Zt).getTime()},Ve=8==Se(d+"08")?Se:function(n,t){return Se(kt(n)?n.replace(I,""):n,t||0)};return Q.after=function(n,t){if(!dt(t))throw new ie;return function(){return 1>--n?t.apply(this,arguments):void 0}},Q.assign=H,Q.at=function(n){for(var t=arguments,e=-1,r=ot(t,true,false,1),t=t[2]&&t[2][t[1]]===n?1:r.length,u=Xt(t);++e<t;)u[e]=n[r[e]];return u},Q.bind=Mt,Q.bindAll=function(n){for(var t=1<arguments.length?ot(arguments,true,false,1):bt(n),e=-1,r=t.length;++e<r;){var u=t[e];
|
|
||||||
n[u]=pt(n[u],1,null,null,n)}return n},Q.bindKey=function(n,t){return 2<arguments.length?pt(t,19,p(arguments,2),null,n):pt(t,3,null,null,n)},Q.chain=function(n){return n=new X(n),n.__chain__=true,n},Q.compact=function(n){for(var t=-1,e=n?n.length:0,r=[];++t<e;){var u=n[t];u&&r.push(u)}return r},Q.compose=function(){for(var n=arguments,t=n.length;t--;)if(!dt(n[t]))throw new ie;return function(){for(var t=arguments,e=n.length;e--;)t=[n[e].apply(this,t)];return t[0]}},Q.constant=function(n){return function(){return n
|
|
||||||
}},Q.countBy=ze,Q.create=function(n,t){var e=tt(n);return t?H(e,t):e},Q.createCallback=function(n,t,e){var r=typeof n;if(null==n||"function"==r)return et(n,t,e);if("object"!=r)return Jt(n);var u=Te(n),o=u[0],i=n[o];return 1!=u.length||i!==i||wt(i)?function(t){for(var e=u.length,r=false;e--&&(r=it(t[u[e]],n[u[e]],null,true)););return r}:function(n){return n=n[o],i===n&&(0!==i||1/i==1/n)}},Q.curry=function(n,t){return t=typeof t=="number"?t:+t||n.length,pt(n,4,null,null,null,t)},Q.debounce=Vt,Q.defaults=U,Q.defer=function(n){if(!dt(n))throw new ie;
|
|
||||||
var t=p(arguments,1);return _e(function(){n.apply(v,t)},1)},Q.delay=function(n,t){if(!dt(n))throw new ie;var e=p(arguments,2);return _e(function(){n.apply(v,e)},t)},Q.difference=function(n){return ut(n,ot(arguments,true,true,1))},Q.filter=Nt,Q.flatten=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=typeof t!="function"&&r&&r[t]===n?null:t,t=false),null!=e&&(n=Rt(n,e,r)),ot(n,t)},Q.forEach=St,Q.forEachRight=Et,Q.forIn=_,Q.forInRight=function(n,t,e){var r=[];_(n,function(n,t){r.push(t,n)});var u=r.length;
|
|
||||||
for(t=et(t,e,3);u--&&false!==t(r[u--],r[u],n););return n},Q.forOwn=g,Q.forOwnRight=mt,Q.functions=bt,Q.groupBy=Pe,Q.indexBy=Ke,Q.initial=function(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u;for(t=Q.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else r=null==t||e?1:t||r;return p(n,0,Ie(Ne(0,u-r),u))},Q.intersection=function(){for(var e=[],r=-1,u=arguments.length,i=a(),f=vt(),p=f===n,s=a();++r<u;){var v=arguments[r];($e(v)||yt(v))&&(e.push(v),i.push(p&&v.length>=b&&o(r?e[r]:s)))
|
|
||||||
}var p=e[0],h=-1,g=p?p.length:0,y=[];n:for(;++h<g;){var m=i[0],v=p[h];if(0>(m?t(m,v):f(s,v))){for(r=u,(m||s).push(v);--r;)if(m=i[r],0>(m?t(m,v):f(e[r],v)))continue n;y.push(v)}}for(;u--;)(m=i[u])&&c(m);return l(i),l(s),y},Q.invert=_t,Q.invoke=function(n,t){var e=p(arguments,2),r=-1,u=typeof t=="function",o=n?n.length:0,i=Xt(typeof o=="number"?o:0);return St(n,function(n){i[++r]=(u?t:n[t]).apply(n,e)}),i},Q.keys=Te,Q.map=Rt,Q.mapValues=function(n,t,e){var r={};return t=Q.createCallback(t,e,3),g(n,function(n,e,u){r[e]=t(n,e,u)
|
|
||||||
}),r},Q.max=At,Q.memoize=function(n,t){function e(){var r=e.cache,u=t?t.apply(this,arguments):m+arguments[0];return me.call(r,u)?r[u]:r[u]=n.apply(this,arguments)}if(!dt(n))throw new ie;return e.cache={},e},Q.merge=function(n){var t=arguments,e=2;if(!wt(n))return n;if("number"!=typeof t[2]&&(e=t.length),3<e&&"function"==typeof t[e-2])var r=et(t[--e-1],t[e--],2);else 2<e&&"function"==typeof t[e-1]&&(r=t[--e]);for(var t=p(arguments,1,e),u=-1,o=a(),i=a();++u<e;)at(n,t[u],r,o,i);return l(o),l(i),n},Q.min=function(n,t,e){var u=1/0,o=u;
|
|
||||||
if(typeof t!="function"&&e&&e[t]===n&&(t=null),null==t&&$e(n)){e=-1;for(var i=n.length;++e<i;){var a=n[e];a<o&&(o=a)}}else t=null==t&&kt(n)?r:Q.createCallback(t,e,3),St(n,function(n,e,r){e=t(n,e,r),e<u&&(u=e,o=n)});return o},Q.omit=function(n,t,e){var r={};if(typeof t!="function"){var u=[];_(n,function(n,t){u.push(t)});for(var u=ut(u,ot(arguments,true,false,1)),o=-1,i=u.length;++o<i;){var a=u[o];r[a]=n[a]}}else t=Q.createCallback(t,e,3),_(n,function(n,e,u){t(n,e,u)||(r[e]=n)});return r},Q.once=function(n){var t,e;
|
|
||||||
if(!dt(n))throw new ie;return function(){return t?e:(t=true,e=n.apply(this,arguments),n=null,e)}},Q.pairs=function(n){for(var t=-1,e=Te(n),r=e.length,u=Xt(r);++t<r;){var o=e[t];u[t]=[o,n[o]]}return u},Q.partial=function(n){return pt(n,16,p(arguments,1))},Q.partialRight=function(n){return pt(n,32,null,p(arguments,1))},Q.pick=function(n,t,e){var r={};if(typeof t!="function")for(var u=-1,o=ot(arguments,true,false,1),i=wt(n)?o.length:0;++u<i;){var a=o[u];a in n&&(r[a]=n[a])}else t=Q.createCallback(t,e,3),_(n,function(n,e,u){t(n,e,u)&&(r[e]=n)
|
|
||||||
});return r},Q.pluck=Le,Q.property=Jt,Q.pull=function(n){for(var t=arguments,e=0,r=t.length,u=n?n.length:0;++e<r;)for(var o=-1,i=t[e];++o<u;)n[o]===i&&(de.call(n,o--,1),u--);return n},Q.range=function(n,t,e){n=+n||0,e=typeof e=="number"?e:+e||1,null==t&&(t=n,n=0);var r=-1;t=Ne(0,se((t-n)/(e||1)));for(var u=Xt(t);++r<t;)u[r]=n,n+=e;return u},Q.reject=function(n,t,e){return t=Q.createCallback(t,e,3),Nt(n,function(n,e,r){return!t(n,e,r)})},Q.remove=function(n,t,e){var r=-1,u=n?n.length:0,o=[];for(t=Q.createCallback(t,e,3);++r<u;)e=n[r],t(e,r,n)&&(o.push(e),de.call(n,r--,1),u--);
|
|
||||||
return o},Q.rest=qt,Q.shuffle=Tt,Q.sortBy=function(n,t,e){var r=-1,o=$e(t),i=n?n.length:0,p=Xt(typeof i=="number"?i:0);for(o||(t=Q.createCallback(t,e,3)),St(n,function(n,e,u){var i=p[++r]=f();o?i.m=Rt(t,function(t){return n[t]}):(i.m=a())[0]=t(n,e,u),i.n=r,i.o=n}),i=p.length,p.sort(u);i--;)n=p[i],p[i]=n.o,o||l(n.m),c(n);return p},Q.tap=function(n,t){return t(n),n},Q.throttle=function(n,t,e){var r=true,u=true;if(!dt(n))throw new ie;return false===e?r=false:wt(e)&&(r="leading"in e?e.leading:r,u="trailing"in e?e.trailing:u),L.leading=r,L.maxWait=t,L.trailing=u,Vt(n,t,L)
|
|
||||||
},Q.times=function(n,t,e){n=-1<(n=+n)?n:0;var r=-1,u=Xt(n);for(t=et(t,e,1);++r<n;)u[r]=t(r);return u},Q.toArray=function(n){return n&&typeof n.length=="number"?p(n):xt(n)},Q.transform=function(n,t,e,r){var u=$e(n);if(null==e)if(u)e=[];else{var o=n&&n.constructor;e=tt(o&&o.prototype)}return t&&(t=Q.createCallback(t,r,4),(u?St:g)(n,function(n,r,u){return t(e,n,r,u)})),e},Q.union=function(){return lt(ot(arguments,true,true))},Q.uniq=Pt,Q.values=xt,Q.where=Nt,Q.without=function(n){return ut(n,p(arguments,1))
|
|
||||||
},Q.wrap=function(n,t){return pt(t,16,[n])},Q.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var e=arguments[n];if($e(e)||yt(e))var r=r?lt(ut(r,e).concat(ut(e,r))):e}return r||[]},Q.zip=Kt,Q.zipObject=Lt,Q.collect=Rt,Q.drop=qt,Q.each=St,Q.eachRight=Et,Q.extend=H,Q.methods=bt,Q.object=Lt,Q.select=Nt,Q.tail=qt,Q.unique=Pt,Q.unzip=Kt,Gt(Q),Q.clone=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=t,t=false),nt(n,t,typeof e=="function"&&et(e,r,1))},Q.cloneDeep=function(n,t,e){return nt(n,true,typeof t=="function"&&et(t,e,1))
|
|
||||||
},Q.contains=Ct,Q.escape=function(n){return null==n?"":oe(n).replace(qe,st)},Q.every=Ot,Q.find=It,Q.findIndex=function(n,t,e){var r=-1,u=n?n.length:0;for(t=Q.createCallback(t,e,3);++r<u;)if(t(n[r],r,n))return r;return-1},Q.findKey=function(n,t,e){var r;return t=Q.createCallback(t,e,3),g(n,function(n,e,u){return t(n,e,u)?(r=e,false):void 0}),r},Q.findLast=function(n,t,e){var r;return t=Q.createCallback(t,e,3),Et(n,function(n,e,u){return t(n,e,u)?(r=n,false):void 0}),r},Q.findLastIndex=function(n,t,e){var r=n?n.length:0;
|
|
||||||
for(t=Q.createCallback(t,e,3);r--;)if(t(n[r],r,n))return r;return-1},Q.findLastKey=function(n,t,e){var r;return t=Q.createCallback(t,e,3),mt(n,function(n,e,u){return t(n,e,u)?(r=e,false):void 0}),r},Q.has=function(n,t){return n?me.call(n,t):false},Q.identity=Ut,Q.indexOf=Wt,Q.isArguments=yt,Q.isArray=$e,Q.isBoolean=function(n){return true===n||false===n||n&&typeof n=="object"&&ce.call(n)==T||false},Q.isDate=function(n){return n&&typeof n=="object"&&ce.call(n)==F||false},Q.isElement=function(n){return n&&1===n.nodeType||false
|
|
||||||
},Q.isEmpty=function(n){var t=true;if(!n)return t;var e=ce.call(n),r=n.length;return e==$||e==P||e==D||e==q&&typeof r=="number"&&dt(n.splice)?!r:(g(n,function(){return t=false}),t)},Q.isEqual=function(n,t,e,r){return it(n,t,typeof e=="function"&&et(e,r,2))},Q.isFinite=function(n){return xe(n)&&!Ce(parseFloat(n))},Q.isFunction=dt,Q.isNaN=function(n){return jt(n)&&n!=+n},Q.isNull=function(n){return null===n},Q.isNumber=jt,Q.isObject=wt,Q.isPlainObject=h,Q.isRegExp=function(n){return n&&typeof n=="object"&&ce.call(n)==z||false
|
|
||||||
},Q.isString=kt,Q.isUndefined=function(n){return typeof n=="undefined"},Q.lastIndexOf=function(n,t,e){var r=n?n.length:0;for(typeof e=="number"&&(r=(0>e?Ne(0,r+e):Ie(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},Q.mixin=Gt,Q.noConflict=function(){return e._=le,this},Q.noop=Ht,Q.now=Me,Q.parseInt=Ve,Q.random=function(n,t,e){var r=null==n,u=null==t;return null==e&&(typeof n=="boolean"&&u?(e=n,n=1):u||typeof t!="boolean"||(e=t,u=true)),r&&u&&(t=1),n=+n||0,u?(t=n,n=0):t=+t||0,e||n%1||t%1?(e=Ee(),Ie(n+e*(t-n+parseFloat("1e-"+((e+"").length-1))),t)):ft(n,t)
|
|
||||||
},Q.reduce=Dt,Q.reduceRight=$t,Q.result=function(n,t){if(n){var e=n[t];return dt(e)?n[t]():e}},Q.runInContext=s,Q.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:Te(n).length},Q.some=Ft,Q.sortedIndex=zt,Q.template=function(n,t,e){var r=Q.templateSettings;n=oe(n||""),e=U({},e,r);var u,o=U({},e.imports,r.imports),r=Te(o),o=xt(o),a=0,f=e.interpolate||S,l="__p+='",f=ue((e.escape||S).source+"|"+f.source+"|"+(f===N?x:S).source+"|"+(e.evaluate||S).source+"|$","g");n.replace(f,function(t,e,r,o,f,c){return r||(r=o),l+=n.slice(a,c).replace(R,i),e&&(l+="'+__e("+e+")+'"),f&&(u=true,l+="';"+f+";\n__p+='"),r&&(l+="'+((__t=("+r+"))==null?'':__t)+'"),a=c+t.length,t
|
|
||||||
}),l+="';",f=e=e.variable,f||(e="obj",l="with("+e+"){"+l+"}"),l=(u?l.replace(w,""):l).replace(j,"$1").replace(k,"$1;"),l="function("+e+"){"+(f?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}";try{var c=ne(r,"return "+l).apply(v,o)}catch(p){throw p.source=l,p}return t?c(t):(c.source=l,c)},Q.unescape=function(n){return null==n?"":oe(n).replace(We,gt)},Q.uniqueId=function(n){var t=++y;return oe(null==n?"":n)+t
|
|
||||||
},Q.all=Ot,Q.any=Ft,Q.detect=It,Q.findWhere=It,Q.foldl=Dt,Q.foldr=$t,Q.include=Ct,Q.inject=Dt,Gt(function(){var n={};return g(Q,function(t,e){Q.prototype[e]||(n[e]=t)}),n}(),false),Q.first=Bt,Q.last=function(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u;for(t=Q.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[u-1]:v;return p(n,Ne(0,u-r))},Q.sample=function(n,t,e){return n&&typeof n.length!="number"&&(n=xt(n)),null==t||e?n?n[ft(0,n.length-1)]:v:(n=Tt(n),n.length=Ie(Ne(0,t),n.length),n)
|
|
||||||
},Q.take=Bt,Q.head=Bt,g(Q,function(n,t){var e="sample"!==t;Q.prototype[t]||(Q.prototype[t]=function(t,r){var u=this.__chain__,o=n(this.__wrapped__,t,r);return u||null!=t&&(!r||e&&typeof t=="function")?new X(o,u):o})}),Q.VERSION="2.4.0",Q.prototype.chain=function(){return this.__chain__=true,this},Q.prototype.toString=function(){return oe(this.__wrapped__)},Q.prototype.value=Qt,Q.prototype.valueOf=Qt,St(["join","pop","shift"],function(n){var t=ae[n];Q.prototype[n]=function(){var n=this.__chain__,e=t.apply(this.__wrapped__,arguments);
|
|
||||||
return n?new X(e,n):e}}),St(["push","reverse","sort","unshift"],function(n){var t=ae[n];Q.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),St(["concat","slice","splice"],function(n){var t=ae[n];Q.prototype[n]=function(){return new X(t.apply(this.__wrapped__,arguments),this.__chain__)}}),Q}var v,h=[],g=[],y=0,m=+new Date+"",b=75,_=40,d=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",w=/\b__p\+='';/g,j=/\b(__p\+=)''\+/g,k=/(__e\(.*?\)|\b__t\))\+'';/g,x=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,C=/\w*$/,O=/^\s*function[ \n\r\t]+\w/,N=/<%=([\s\S]+?)%>/g,I=RegExp("^["+d+"]*0+(?=.$)"),S=/($^)/,E=/\bthis\b/,R=/['\n\r\t\u2028\u2029\\]/g,A="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setTimeout".split(" "),D="[object Arguments]",$="[object Array]",T="[object Boolean]",F="[object Date]",B="[object Function]",W="[object Number]",q="[object Object]",z="[object RegExp]",P="[object String]",K={};
|
|
||||||
K[B]=false,K[D]=K[$]=K[T]=K[F]=K[W]=K[q]=K[z]=K[P]=true;var L={leading:false,maxWait:0,trailing:false},M={configurable:false,enumerable:false,value:null,writable:false},V={"boolean":false,"function":true,object:true,number:false,string:false,undefined:false},U={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},G=V[typeof window]&&window||this,H=V[typeof exports]&&exports&&!exports.nodeType&&exports,J=V[typeof module]&&module&&!module.nodeType&&module,Q=J&&J.exports===H&&H,X=V[typeof global]&&global;!X||X.global!==X&&X.window!==X||(G=X);
|
|
||||||
var Y=s();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(G._=Y, define(function(){return Y})):H&&J?Q?(J.exports=Y)._=Y:H._=Y:G._=Y}).call(this);
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,9 +0,0 @@
|
|||||||
/* mousetrap v1.4.6 craig.is/killing/mice */
|
|
||||||
(function(J,r,f){function s(a,b,d){a.addEventListener?a.addEventListener(b,d,!1):a.attachEvent("on"+b,d)}function A(a){if("keypress"==a.type){var b=String.fromCharCode(a.which);a.shiftKey||(b=b.toLowerCase());return b}return h[a.which]?h[a.which]:B[a.which]?B[a.which]:String.fromCharCode(a.which).toLowerCase()}function t(a){a=a||{};var b=!1,d;for(d in n)a[d]?b=!0:n[d]=0;b||(u=!1)}function C(a,b,d,c,e,v){var g,k,f=[],h=d.type;if(!l[a])return[];"keyup"==h&&w(a)&&(b=[a]);for(g=0;g<l[a].length;++g)if(k=
|
|
||||||
l[a][g],!(!c&&k.seq&&n[k.seq]!=k.level||h!=k.action||("keypress"!=h||d.metaKey||d.ctrlKey)&&b.sort().join(",")!==k.modifiers.sort().join(","))){var m=c&&k.seq==c&&k.level==v;(!c&&k.combo==e||m)&&l[a].splice(g,1);f.push(k)}return f}function K(a){var b=[];a.shiftKey&&b.push("shift");a.altKey&&b.push("alt");a.ctrlKey&&b.push("ctrl");a.metaKey&&b.push("meta");return b}function x(a,b,d,c){m.stopCallback(b,b.target||b.srcElement,d,c)||!1!==a(b,d)||(b.preventDefault?b.preventDefault():b.returnValue=!1,b.stopPropagation?
|
|
||||||
b.stopPropagation():b.cancelBubble=!0)}function y(a){"number"!==typeof a.which&&(a.which=a.keyCode);var b=A(a);b&&("keyup"==a.type&&z===b?z=!1:m.handleKey(b,K(a),a))}function w(a){return"shift"==a||"ctrl"==a||"alt"==a||"meta"==a}function L(a,b,d,c){function e(b){return function(){u=b;++n[a];clearTimeout(D);D=setTimeout(t,1E3)}}function v(b){x(d,b,a);"keyup"!==c&&(z=A(b));setTimeout(t,10)}for(var g=n[a]=0;g<b.length;++g){var f=g+1===b.length?v:e(c||E(b[g+1]).action);F(b[g],f,c,a,g)}}function E(a,b){var d,
|
|
||||||
c,e,f=[];d="+"===a?["+"]:a.split("+");for(e=0;e<d.length;++e)c=d[e],G[c]&&(c=G[c]),b&&"keypress"!=b&&H[c]&&(c=H[c],f.push("shift")),w(c)&&f.push(c);d=c;e=b;if(!e){if(!p){p={};for(var g in h)95<g&&112>g||h.hasOwnProperty(g)&&(p[h[g]]=g)}e=p[d]?"keydown":"keypress"}"keypress"==e&&f.length&&(e="keydown");return{key:c,modifiers:f,action:e}}function F(a,b,d,c,e){q[a+":"+d]=b;a=a.replace(/\s+/g," ");var f=a.split(" ");1<f.length?L(a,f,b,d):(d=E(a,d),l[d.key]=l[d.key]||[],C(d.key,d.modifiers,{type:d.action},
|
|
||||||
c,a,e),l[d.key][c?"unshift":"push"]({callback:b,modifiers:d.modifiers,action:d.action,seq:c,level:e,combo:a}))}var h={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},B={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},H={"~":"`","!":"1",
|
|
||||||
"@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},G={option:"alt",command:"meta","return":"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},p,l={},q={},n={},D,z=!1,I=!1,u=!1;for(f=1;20>f;++f)h[111+f]="f"+f;for(f=0;9>=f;++f)h[f+96]=f;s(r,"keypress",y);s(r,"keydown",y);s(r,"keyup",y);var m={bind:function(a,b,d){a=a instanceof Array?a:[a];for(var c=0;c<a.length;++c)F(a[c],b,d);return this},
|
|
||||||
unbind:function(a,b){return m.bind(a,function(){},b)},trigger:function(a,b){if(q[a+":"+b])q[a+":"+b]({},a);return this},reset:function(){l={};q={};return this},stopCallback:function(a,b){return-1<(" "+b.className+" ").indexOf(" mousetrap ")?!1:"INPUT"==b.tagName||"SELECT"==b.tagName||"TEXTAREA"==b.tagName||b.isContentEditable},handleKey:function(a,b,d){var c=C(a,b,d),e;b={};var f=0,g=!1;for(e=0;e<c.length;++e)c[e].seq&&(f=Math.max(f,c[e].level));for(e=0;e<c.length;++e)c[e].seq?c[e].level==f&&(g=!0,
|
|
||||||
b[c[e].seq]=1,x(c[e].callback,d,c[e].combo,c[e].seq)):g||x(c[e].callback,d,c[e].combo);c="keypress"==d.type&&I;d.type!=u||w(a)||c||t(b);I=g&&"keydown"==d.type}};J.Mousetrap=m;"function"===typeof define&&define.amd&&define(m)})(window,document);
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
|||||||
/* ng-infinite-scroll - v1.0.0 - 2013-02-23 */
|
|
||||||
var mod;mod=angular.module("infinite-scroll",[]),mod.directive("infiniteScroll",["$rootScope","$window","$timeout",function(i,n,e){return{link:function(t,l,o){var r,c,f,a;return n=angular.element(n),f=0,null!=o.infiniteScrollDistance&&t.$watch(o.infiniteScrollDistance,function(i){return f=parseInt(i,10)}),a=!0,r=!1,null!=o.infiniteScrollDisabled&&t.$watch(o.infiniteScrollDisabled,function(i){return a=!i,a&&r?(r=!1,c()):void 0}),c=function(){var e,c,u,d;return d=n.height()+n.scrollTop(),e=l.offset().top+l.height(),c=e-d,u=n.height()*f>=c,u&&a?i.$$phase?t.$eval(o.infiniteScroll):t.$apply(o.infiniteScroll):u?r=!0:void 0},n.on("scroll",c),t.$on("$destroy",function(){return n.off("scroll",c)}),e(function(){return o.infiniteScrollImmediateCheck?t.$eval(o.infiniteScrollImmediateCheck)?c():void 0:c()},0)}}}]);
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
(function(t,e){if(typeof exports=="object")module.exports=e();else if(typeof define=="function"&&define.amd)define(e);else t.Spinner=e()})(this,function(){"use strict";var t=["webkit","Moz","ms","O"],e={},i;function o(t,e){var i=document.createElement(t||"div"),o;for(o in e)i[o]=e[o];return i}function n(t){for(var e=1,i=arguments.length;e<i;e++)t.appendChild(arguments[e]);return t}var r=function(){var t=o("style",{type:"text/css"});n(document.getElementsByTagName("head")[0],t);return t.sheet||t.styleSheet}();function s(t,o,n,s){var a=["opacity",o,~~(t*100),n,s].join("-"),f=.01+n/s*100,l=Math.max(1-(1-t)/o*(100-f),t),u=i.substring(0,i.indexOf("Animation")).toLowerCase(),d=u&&"-"+u+"-"||"";if(!e[a]){r.insertRule("@"+d+"keyframes "+a+"{"+"0%{opacity:"+l+"}"+f+"%{opacity:"+t+"}"+(f+.01)+"%{opacity:1}"+(f+o)%100+"%{opacity:"+t+"}"+"100%{opacity:"+l+"}"+"}",r.cssRules.length);e[a]=1}return a}function a(e,i){var o=e.style,n,r;i=i.charAt(0).toUpperCase()+i.slice(1);for(r=0;r<t.length;r++){n=t[r]+i;if(o[n]!==undefined)return n}if(o[i]!==undefined)return i}function f(t,e){for(var i in e)t.style[a(t,i)||i]=e[i];return t}function l(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var o in i)if(t[o]===undefined)t[o]=i[o]}return t}function u(t){var e={x:t.offsetLeft,y:t.offsetTop};while(t=t.offsetParent)e.x+=t.offsetLeft,e.y+=t.offsetTop;return e}function d(t,e){return typeof t=="string"?t:t[e%t.length]}var p={lines:12,length:7,width:5,radius:10,rotate:0,corners:1,color:"#000",direction:1,speed:1,trail:100,opacity:1/4,fps:20,zIndex:2e9,className:"spinner",top:"auto",left:"auto",position:"relative"};function c(t){if(typeof this=="undefined")return new c(t);this.opts=l(t||{},c.defaults,p)}c.defaults={};l(c.prototype,{spin:function(t){this.stop();var e=this,n=e.opts,r=e.el=f(o(0,{className:n.className}),{position:n.position,width:0,zIndex:n.zIndex}),s=n.radius+n.length+n.width,a,l;if(t){t.insertBefore(r,t.firstChild||null);l=u(t);a=u(r);f(r,{left:(n.left=="auto"?l.x-a.x+(t.offsetWidth>>1):parseInt(n.left,10)+s)+"px",top:(n.top=="auto"?l.y-a.y+(t.offsetHeight>>1):parseInt(n.top,10)+s)+"px"})}r.setAttribute("role","progressbar");e.lines(r,e.opts);if(!i){var d=0,p=(n.lines-1)*(1-n.direction)/2,c,h=n.fps,m=h/n.speed,y=(1-n.opacity)/(m*n.trail/100),g=m/n.lines;(function v(){d++;for(var t=0;t<n.lines;t++){c=Math.max(1-(d+(n.lines-t)*g)%m*y,n.opacity);e.opacity(r,t*n.direction+p,c,n)}e.timeout=e.el&&setTimeout(v,~~(1e3/h))})()}return e},stop:function(){var t=this.el;if(t){clearTimeout(this.timeout);if(t.parentNode)t.parentNode.removeChild(t);this.el=undefined}return this},lines:function(t,e){var r=0,a=(e.lines-1)*(1-e.direction)/2,l;function u(t,i){return f(o(),{position:"absolute",width:e.length+e.width+"px",height:e.width+"px",background:t,boxShadow:i,transformOrigin:"left",transform:"rotate("+~~(360/e.lines*r+e.rotate)+"deg) translate("+e.radius+"px"+",0)",borderRadius:(e.corners*e.width>>1)+"px"})}for(;r<e.lines;r++){l=f(o(),{position:"absolute",top:1+~(e.width/2)+"px",transform:e.hwaccel?"translate3d(0,0,0)":"",opacity:e.opacity,animation:i&&s(e.opacity,e.trail,a+r*e.direction,e.lines)+" "+1/e.speed+"s linear infinite"});if(e.shadow)n(l,f(u("#000","0 0 4px "+"#000"),{top:2+"px"}));n(t,n(l,u(d(e.color,r),"0 0 1px rgba(0,0,0,.1)")))}return t},opacity:function(t,e,i){if(e<t.childNodes.length)t.childNodes[e].style.opacity=i}});function h(){function t(t,e){return o("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',e)}r.addRule(".spin-vml","behavior:url(#default#VML)");c.prototype.lines=function(e,i){var o=i.length+i.width,r=2*o;function s(){return f(t("group",{coordsize:r+" "+r,coordorigin:-o+" "+-o}),{width:r,height:r})}var a=-(i.width+i.length)*2+"px",l=f(s(),{position:"absolute",top:a,left:a}),u;function p(e,r,a){n(l,n(f(s(),{rotation:360/i.lines*e+"deg",left:~~r}),n(f(t("roundrect",{arcsize:i.corners}),{width:o,height:i.width,left:i.radius,top:-i.width>>1,filter:a}),t("fill",{color:d(i.color,e),opacity:i.opacity}),t("stroke",{opacity:0}))))}if(i.shadow)for(u=1;u<=i.lines;u++)p(u,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(u=1;u<=i.lines;u++)p(u);return n(e,l)};c.prototype.opacity=function(t,e,i,o){var n=t.firstChild;o=o.shadow&&o.lines||0;if(n&&e+o<n.childNodes.length){n=n.childNodes[e+o];n=n&&n.firstChild;n=n&&n.firstChild;if(n)n.opacity=i}}}var m=f(o("group"),{behavior:"url(#default#VML)"});if(!a(m,"transform")&&m.adj)h();else i=a(m,"animation");return c});
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
201
src/main/webapp/vendor/ui-select2/select2.js
vendored
201
src/main/webapp/vendor/ui-select2/select2.js
vendored
@@ -1,201 +0,0 @@
|
|||||||
/**
|
|
||||||
* Enhanced Select2 Dropmenus
|
|
||||||
*
|
|
||||||
* @AJAX Mode - When in this mode, your value will be an object (or array of objects) of the data used by Select2
|
|
||||||
* This change is so that you do not have to do an additional query yourself on top of Select2's own query
|
|
||||||
* @params [options] {object} The configuration options passed to $.fn.select2(). Refer to the documentation
|
|
||||||
*/
|
|
||||||
angular.module('ui.select2', []).value('uiSelect2Config', {}).directive('uiSelect2', ['uiSelect2Config', '$timeout', function (uiSelect2Config, $timeout) {
|
|
||||||
var options = {};
|
|
||||||
if (uiSelect2Config) {
|
|
||||||
angular.extend(options, uiSelect2Config);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
require: 'ngModel',
|
|
||||||
compile: function (tElm, tAttrs) {
|
|
||||||
var watch,
|
|
||||||
repeatOption,
|
|
||||||
repeatAttr,
|
|
||||||
isSelect = tElm.is('select'),
|
|
||||||
isMultiple = angular.isDefined(tAttrs.multiple);
|
|
||||||
|
|
||||||
// Enable watching of the options dataset if in use
|
|
||||||
if (tElm.is('select')) {
|
|
||||||
repeatOption = tElm.find('option[ng-repeat], option[data-ng-repeat]');
|
|
||||||
|
|
||||||
if (repeatOption.length) {
|
|
||||||
repeatAttr = repeatOption.attr('ng-repeat') || repeatOption.attr('data-ng-repeat');
|
|
||||||
watch = jQuery.trim(repeatAttr.split('|')[0]).split(' ').pop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return function (scope, elm, attrs, controller) {
|
|
||||||
// instance-specific options
|
|
||||||
var opts = angular.extend({}, options, scope.$eval(attrs.uiSelect2));
|
|
||||||
|
|
||||||
/*
|
|
||||||
Convert from Select2 view-model to Angular view-model.
|
|
||||||
*/
|
|
||||||
var convertToAngularModel = function(select2_data) {
|
|
||||||
var model;
|
|
||||||
if (opts.simple_tags) {
|
|
||||||
model = [];
|
|
||||||
angular.forEach(select2_data, function(value, index) {
|
|
||||||
model.push(value.id);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
model = select2_data;
|
|
||||||
}
|
|
||||||
return model;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
Convert from Angular view-model to Select2 view-model.
|
|
||||||
*/
|
|
||||||
var convertToSelect2Model = function(angular_data) {
|
|
||||||
var model = [];
|
|
||||||
if (!angular_data) {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.simple_tags) {
|
|
||||||
model = [];
|
|
||||||
angular.forEach(
|
|
||||||
angular_data,
|
|
||||||
function(value, index) {
|
|
||||||
model.push({'id': value, 'text': value});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
model = angular_data;
|
|
||||||
}
|
|
||||||
return model;
|
|
||||||
};
|
|
||||||
|
|
||||||
if (isSelect) {
|
|
||||||
// Use <select multiple> instead
|
|
||||||
delete opts.multiple;
|
|
||||||
delete opts.initSelection;
|
|
||||||
} else if (isMultiple) {
|
|
||||||
opts.multiple = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (controller) {
|
|
||||||
// Watch the model for programmatic changes
|
|
||||||
scope.$watch(tAttrs.ngModel, function(current, old) {
|
|
||||||
if (!current) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (current === old) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
controller.$render();
|
|
||||||
}, true);
|
|
||||||
controller.$render = function () {
|
|
||||||
if (isSelect) {
|
|
||||||
elm.select2('val', controller.$viewValue);
|
|
||||||
} else {
|
|
||||||
if (opts.multiple) {
|
|
||||||
elm.select2(
|
|
||||||
'data', convertToSelect2Model(controller.$viewValue));
|
|
||||||
} else {
|
|
||||||
if (angular.isObject(controller.$viewValue)) {
|
|
||||||
elm.select2('data', controller.$viewValue);
|
|
||||||
} else if (!controller.$viewValue) {
|
|
||||||
elm.select2('data', null);
|
|
||||||
} else {
|
|
||||||
elm.select2('val', controller.$viewValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Watch the options dataset for changes
|
|
||||||
if (watch) {
|
|
||||||
scope.$watch(watch, function (newVal, oldVal, scope) {
|
|
||||||
if (!newVal) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Delayed so that the options have time to be rendered
|
|
||||||
$timeout(function () {
|
|
||||||
elm.select2('val', controller.$viewValue);
|
|
||||||
// Refresh angular to remove the superfluous option
|
|
||||||
elm.trigger('change');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update valid and dirty statuses
|
|
||||||
controller.$parsers.push(function (value) {
|
|
||||||
var div = elm.prev();
|
|
||||||
div
|
|
||||||
.toggleClass('ng-invalid', !controller.$valid)
|
|
||||||
.toggleClass('ng-valid', controller.$valid)
|
|
||||||
.toggleClass('ng-invalid-required', !controller.$valid)
|
|
||||||
.toggleClass('ng-valid-required', controller.$valid)
|
|
||||||
.toggleClass('ng-dirty', controller.$dirty)
|
|
||||||
.toggleClass('ng-pristine', controller.$pristine);
|
|
||||||
return value;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!isSelect) {
|
|
||||||
// Set the view and model value and update the angular template manually for the ajax/multiple select2.
|
|
||||||
elm.bind("change", function () {
|
|
||||||
if (scope.$$phase) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
scope.$apply(function () {
|
|
||||||
controller.$setViewValue(
|
|
||||||
convertToAngularModel(elm.select2('data')));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
if (opts.initSelection) {
|
|
||||||
var initSelection = opts.initSelection;
|
|
||||||
opts.initSelection = function (element, callback) {
|
|
||||||
initSelection(element, function (value) {
|
|
||||||
controller.$setViewValue(convertToAngularModel(value));
|
|
||||||
callback(value);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
elm.bind("$destroy", function() {
|
|
||||||
elm.select2("destroy");
|
|
||||||
});
|
|
||||||
|
|
||||||
attrs.$observe('disabled', function (value) {
|
|
||||||
elm.select2('enable', !value);
|
|
||||||
});
|
|
||||||
|
|
||||||
attrs.$observe('readonly', function (value) {
|
|
||||||
elm.select2('readonly', !!value);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (attrs.ngMultiple) {
|
|
||||||
scope.$watch(attrs.ngMultiple, function(newVal) {
|
|
||||||
elm.select2(opts);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize the plugin late so that the injected DOM does not disrupt the template compiler
|
|
||||||
$timeout(function () {
|
|
||||||
elm.select2(opts);
|
|
||||||
|
|
||||||
// Set initial value - I'm not sure about this but it seems to need to be there
|
|
||||||
elm.val(controller.$viewValue);
|
|
||||||
// important!
|
|
||||||
controller.$render();
|
|
||||||
|
|
||||||
// Not sure if I should just check for !isSelect OR if I should check for 'tags' key
|
|
||||||
if (!opts.initSelection && !isSelect) {
|
|
||||||
controller.$setViewValue(
|
|
||||||
convertToAngularModel(elm.select2('data'))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}]);
|
|
||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user