diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c2f433 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +tmp \ No newline at end of file diff --git a/bin/start.bat b/bin/start.bat new file mode 100644 index 0000000..2b686c5 --- /dev/null +++ b/bin/start.bat @@ -0,0 +1,26 @@ +@REM +@REM Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) +@REM and other contributors as indicated by the @author tags. +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM + +@ECHO OFF +SET HEAP_MIN=-Xms32m +SET HEAP_MAX=-Xmx256m + +SET CONF_PROPERTIES_FILE=../conf/mycontroller.properties +SET CONF_LOG_FILE=../conf/logback.xml + +@ECHO ON +java %HEAP_MIN% %HEAP_MAX% -Dlogback.configurationFile=%CONF_LOG_FILE% -Dmc.conf.file=%CONF_PROPERTIES_FILE% -cp "../lib/*" org.mycontroller.standalone.StartApp > ../logs/mycontroller_console.log 2>&1 diff --git a/bin/start.sh b/bin/start.sh new file mode 100644 index 0000000..1929513 --- /dev/null +++ b/bin/start.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# +# Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Get user current location +USER_LOCATION=$PWD +ACTUAL_LOCATION=`dirname $0` + +# Change the location to where exactly script is located +cd ${ACTUAL_LOCATION} + + +#Java Heap settings +HEAP_MIN=-Xms32m +HEAP_MAX=-Xmx256m + +JAVA_VERSION="1.7" + +#configuration file location +CONF_PROPERTIES_FILE=../conf/mycontroller.properties +CONF_LOG_FILE=../conf/logback.xml + +if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then + _java="$JAVA_HOME/bin/java" +elif type -p java; then + _java=java +else + echo "java is not installed in our machine" +fi + +if [[ "$_java" ]]; then + version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}') + echo "java version: $version" + if [[ "$version" > "$JAVA_VERSION" ]]; then + MC_PID=`ps -ef | grep "org.mycontroller.standalone.StartApp" | grep -v grep | awk '{ print $2 }'` + if [ ! -z "$MC_PID" ] + then + echo "Mycontroller.org server is already running on pid[${MC_PID}]" + else + $_java ${HEAP_MIN} ${HEAP_MAX} -Dlogback.configurationFile=${CONF_LOG_FILE} -Dmc.conf.file=${CONF_PROPERTIES_FILE} -cp "../lib/*" org.mycontroller.standalone.StartApp >> ../logs/mycontroller.log 2>&1 & + echo 'Start issued for Mycontroller' + fi + else + echo "Mycontroller.org server required java version $JAVA_VERSION or later" + fi +fi + +# back to user location +cd ${USER_LOCATION} diff --git a/bin/stop.sh b/bin/stop.sh new file mode 100644 index 0000000..2bbc8ed --- /dev/null +++ b/bin/stop.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +# Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +MC_PID=`ps -ef | grep "org.mycontroller.standalone.StartApp" | grep -v grep | awk '{ print $2 }'` +if [ ! -z "$MC_PID" ] +then + kill -15 ${MC_PID} + echo 'Termination issued for Mycontroller.org server!' +else + echo 'Mycontroller.org server is not running!' +fi diff --git a/conf/keystore.jks b/conf/keystore.jks new file mode 100644 index 0000000..e2f6cc0 Binary files /dev/null and b/conf/keystore.jks differ diff --git a/conf/logback.xml b/conf/logback.xml new file mode 100644 index 0000000..15af252 --- /dev/null +++ b/conf/logback.xml @@ -0,0 +1,125 @@ + + + + + ../logs/mycontroller.log + + + + %date %level [%thread] [%logger:%line] %replace(%msg){'\r', '\\r'}%n + + + ../logs/mycontroller_%i.log.zip + 1 + 5 + + + 5MB + + + + + + %date %level [%thread] [%logger:%line] %msg%n + + + + + + gateway_reference + 0_default + + + + ../logs/raw_message_gw_${gateway_reference}.log + + %date %replace(%replace(%msg){'\r', '\\r'}){'\n', '\\n'}%n + + + ../logs/raw_message_gw_${gateway_reference}%i.log.zip + 1 + 5 + + + 5MB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/mycontroller.mv.db b/conf/mycontroller.mv.db new file mode 100644 index 0000000..a8b8065 Binary files /dev/null and b/conf/mycontroller.mv.db differ diff --git a/conf/mycontroller.properties b/conf/mycontroller.properties new file mode 100644 index 0000000..8aa3f61 --- /dev/null +++ b/conf/mycontroller.properties @@ -0,0 +1,134 @@ +# +# Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) +# and other contributors as indicated by the @author tags. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#======================================================================== +# Mycontroller.org properties +# If you change any settings in this file, +# Mycontroller.org server restart is required, to apply new configuration +#======================================================================== + +#========================================================================================================= +# Data Processing Agreement +# ------------------------- +# By using this software you agree that the following non-PII (non personally identifiable information) +# data will be collected, processed and used by MyController.org for the purpose of improving quality of +# MyController software. +# If you do not like to share setup anonymous data, disable it here, by setting false +# restart the server and logout and login in the UI +#========================================================================================================= +mcc.collect.anonymous.data=true + +#======================================================================== +# Application temporary location +#======================================================================== +mcc.tmp.location=tmp/ + +#======================================================================== +# Resources location +#======================================================================== +mcc.resources.location=../conf/resources/ + +#======================================================================== +# Database settings +# It is highly recommended to take a backup of this db on upgrade. +# MyController only supports database backup for H2DB(only on same host) +# For other databases users has to manage backup and restore of database +# mcc.db.backup.include: Include database backup along with +# MyController backup. Supports only for H2DB on same host. +# If MyController is running on embedded database mode, this parameter +# will be ignored and backup includes database also. +# mcc.db.type: Select database types +# Supported types: H2DB_EMBEDDED, H2DB, MYSQL, POSTGRESQL, MARIADB +#======================================================================== +mcc.db.backup.include=true + +#H2DB Embedded settings +mcc.db.type=H2DB_EMBEDDED +mcc.db.url=jdbc:h2:file:../conf/mycontroller;MVCC=TRUE +mcc.db.username=mycontroller +mcc.db.password=mycontroller + +# H2DB on TCP settings - Sample +#mcc.db.type=H2DB +#mcc.db.url=jdbc:h2:tcp://localhost//tmp/mycontroller;MVCC=TRUE +#mcc.db.username=mycontroller +#mcc.db.password=mycontroller + +# MariaDB settings - Sample +#mcc.db.type=MARIADB +#mcc.db.url=jdbc:mariadb://127.0.0.1:3306/mycontroller +#mcc.db.username=mycontroller +#mcc.db.password=mycontroller + +# PostgreSQL settings - Sample +#mcc.db.type=POSTGRESQL +#mcc.db.url=jdbc:postgresql://localhost:5432/mycontroller +#mcc.db.username=mycontroller +#mcc.db.password=mycontroller + +# MySQL settings - Sample +#mcc.db.type=MYSQL +#mcc.db.url=jdbc:mysql://localhost:3306/mycontroller +#mcc.db.username=mycontroller +#mcc.db.password=mycontroller + +#======================================================================== +# Web Application server configuration +# bind.address - interface to bind. 0.0.0.0 - all available interfaces +# You can use either http or https, enable.https - https is enabled +# if https is enabled specify keystore file details +# It is highly recommended to use https also change default keystore file +# Web files, will be located under ../www by default +# For web used angularjs +#======================================================================== +mcc.web.bind.address=0.0.0.0 +mcc.web.enable.https=true +mcc.web.http.port=8443 +mcc.web.file.location=../www/ +mcc.web.ssl.keystore.file=../conf/keystore.jks +mcc.web.ssl.keystore.password=mycontroller +mcc.web.ssl.keystore.type=JKS + + +#======================================================================== +# ** MQTT broker configuration ** +# broker.enabled - Enable/Disable MQTT broker from back-end +# ** Other settings are available on the GUI ** +# ** If MQTT broker disabled here. Cannot enable it from GUI. ** +#======================================================================== +mcc.mqtt.broker.enabled=true + +#======================================================================== +# MyController persistent stores location. +# This store used to keep off-heap data. +# It keeps data like messages queue, MQTT broker data, etc. +# If you want to keep execute old data that not processed on shutdown +# set false on mcc.clear.message.queue.on.start +# If you want to keep smart sleep messages on MyController reboot, +# set false on mcc.clear.smart.sleep.msg.queue.on.start +#======================================================================== +mcc.persistent.stores.location=../conf/persistent_stores/ +mcc.clear.message.queue.on.start=true +mcc.clear.smart.sleep.msg.queue.on.start=true + +#======================================================================== +# MyController mDNS service settings +# Enable or disable mDNS service +#======================================================================== +mcc.mdns.service.enable=false + +#logger configuration - logback.xml diff --git a/conf/mycontroller.trace.db b/conf/mycontroller.trace.db new file mode 100644 index 0000000..d452a68 --- /dev/null +++ b/conf/mycontroller.trace.db @@ -0,0 +1,2068 @@ +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "EXTERNAL_SERVER" not found; SQL statement: +SELECT COUNT(*) FROM `external_server` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "EXTERNAL_SERVER_RESOURCE_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `external_server_resource_map` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "FIRMWARE" not found; SQL statement: +SELECT COUNT(*) FROM `firmware` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "FIRMWARE_DATA" not found; SQL statement: +SELECT COUNT(*) FROM `firmware_data` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "FIRMWARE_TYPE" not found; SQL statement: +SELECT COUNT(*) FROM `firmware_type` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "FIRMWARE_VERSION" not found; SQL statement: +SELECT COUNT(*) FROM `firmware_version` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "FORWARD_PAYLOAD" not found; SQL statement: +SELECT COUNT(*) FROM `forward_payload` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "GATEWAY" not found; SQL statement: +SELECT COUNT(*) FROM `gateway` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "METRICS_BATTERY_USAGE" not found; SQL statement: +SELECT COUNT(*) FROM `metrics_battery_usage` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "METRICS_BINARY_TYPE_DEVICE" not found; SQL statement: +SELECT COUNT(*) FROM `metrics_binary_type_device` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "METRICS_COUNTER_TYPE_DEVICE" not found; SQL statement: +SELECT COUNT(*) FROM `metrics_counter_type_device` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "METRICS_DOUBLE_TYPE_DEVICE" not found; SQL statement: +SELECT COUNT(*) FROM `metrics_double_type_device` [42102-194] +2019-11-27 13:09:44 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "METRICS_GPS_TYPE_DEVICE" not found; SQL statement: +SELECT COUNT(*) FROM `metrics_gps_type_device` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "NODE" not found; SQL statement: +SELECT COUNT(*) FROM `node` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "OPERATION" not found; SQL statement: +SELECT COUNT(*) FROM `operation` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RULE_OPERATION_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `rule_operation_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RULE_TIMER_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `rule_timer_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RESOURCE" not found; SQL statement: +SELECT COUNT(*) FROM `resource` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RESOURCES_GROUP" not found; SQL statement: +SELECT COUNT(*) FROM `resources_group` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RESOURCES_GROUP_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `resources_group_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RESOURCES_LOGS" not found; SQL statement: +SELECT COUNT(*) FROM `resources_logs` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROLE" not found; SQL statement: +SELECT COUNT(*) FROM `role` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROLE_GATEWAY_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `role_gateway_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROLE_MQTT_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `role_mqtt_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROLE_NODE_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `role_node_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROLE_SENSOR_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `role_sensor_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROLE_USER_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `role_user_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "ROOM" not found; SQL statement: +SELECT COUNT(*) FROM `room` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "RULE_DEFINITION" not found; SQL statement: +SELECT COUNT(*) FROM `rule_definition` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "SENSOR" not found; SQL statement: +SELECT COUNT(*) FROM `sensor` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "SENSOR_VARIABLES_MAP" not found; SQL statement: +SELECT COUNT(*) FROM `sensor_variables_map` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "SENSOR_VARIABLE" not found; SQL statement: +SELECT COUNT(*) FROM `sensor_variable` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "SETTINGS" not found; SQL statement: +SELECT COUNT(*) FROM `settings` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "TIMER" not found; SQL statement: +SELECT COUNT(*) FROM `timer` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "UID_TAG" not found; SQL statement: +SELECT COUNT(*) FROM `uid_tag` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "USER" not found; SQL statement: +SELECT COUNT(*) FROM `user` [42102-194] +2019-11-27 13:09:45 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Table "USER_SETTINGS" not found; SQL statement: +SELECT COUNT(*) FROM `user_settings` [42102-194] +2019-11-27 13:09:45 jdbc[7]: exception +org.h2.jdbc.JdbcSQLException: Table "ALARM_DEFINITION" not found; SQL statement: +SELECT count(*) FROM ALARM_DEFINITION [42102-194] +2019-11-27 13:09:45 jdbc[8]: exception +org.h2.jdbc.JdbcSQLException: Column "LASTFIRED" not found; SQL statement: +SELECT count(LASTFIRED) FROM TIMER [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_01_02__SNAPSHOT.migrate(V1_01_02__SNAPSHOT.java:117) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:45 jdbc[15]: exception +org.h2.jdbc.JdbcSQLException: Column "VARIABLE1" not found; SQL statement: +SELECT count(VARIABLE1) FROM GATEWAY [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_01__2016_Mar_24.migrate(V1_02_01__2016_Mar_24.java:100) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:45 jdbc[15]: exception +org.h2.jdbc.JdbcSQLException: Table "NOTIFICATION" not found; SQL statement: +SELECT count(*) FROM NOTIFICATION [42102-194] +2019-11-27 13:09:45 jdbc[15]: exception +org.h2.jdbc.JdbcSQLException: Table "ALARM_DEFINITION" not found; SQL statement: +SELECT count(*) FROM ALARM_DEFINITION [42102-194] +2019-11-27 13:09:45 jdbc[15]: exception +org.h2.jdbc.JdbcSQLException: Table "ALARM_NOTIFICATION_MAP" not found; SQL statement: +SELECT count(*) FROM ALARM_NOTIFICATION_MAP [42102-194] +2019-11-27 13:09:45 jdbc[16]: exception +org.h2.jdbc.JdbcSQLException: Column "RESOURCETYPE" not found; SQL statement: +SELECT count(RESOURCETYPE) FROM TIMER [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_01__2016_Mar_24.migrate(V1_02_01__2016_Mar_24.java:254) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:46 jdbc[18]: exception +org.h2.jdbc.JdbcSQLException: Column "PUBLICACCESS" not found; SQL statement: +SELECT count(PUBLICACCESS) FROM OPERATION [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_03__2016_Apr_14.migrate(V1_02_03__2016_Apr_14.java:81) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:46 jdbc[23]: exception +org.h2.jdbc.JdbcSQLException: Column "UNIT" not found; SQL statement: +SELECT count(UNIT) FROM SENSOR_VARIABLE [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_08__2016_Jul_01.migrate(V1_02_08__2016_Jul_01.java:69) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 40 more +2019-11-27 13:09:47 jdbc[26]: exception +org.h2.jdbc.JdbcSQLException: Column "LASESEEN" not found; SQL statement: +SELECT count(LASESEEN) FROM NODE [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:47 jdbc[29]: exception +org.h2.jdbc.JdbcSQLException: Column "BLOCKS" not found; SQL statement: +SELECT count(BLOCKS) FROM FIRMWARE [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_03_03__2016_Sep_20.migrate(V1_03_03__2016_Sep_20.java:59) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:47 jdbc[32]: exception +org.h2.jdbc.JdbcSQLException: Column "SENSORVARIABLE" not found; SQL statement: +SELECT count(SENSORVARIABLE) FROM UID_TAG [42122-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:146) + at org.h2.expression.Aggregate.optimize(Aggregate.java:379) + at org.h2.command.dml.Select.prepare(Select.java:853) + at org.h2.command.Parser.prepareCommand(Parser.java:261) + at org.h2.engine.Session.prepareLocal(Session.java:564) + at org.h2.engine.Session.prepareCommand(Session.java:505) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) + at org.h2.jdbc.JdbcPreparedStatement.(JdbcPreparedStatement.java:73) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:141) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:273) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_03_05__2016_Nov_18.migrate(V1_03_05__2016_Nov_18.java:55) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +2019-11-27 13:09:47 jdbc[38]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_03_03__2016_Sep_20.migrate(V1_03_03__2016_Sep_20.java:59) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForFirst(BaseDaoImpl.java:237) + at com.j256.ormlite.stmt.QueryBuilder.queryForFirst(QueryBuilder.java:380) + at org.mycontroller.standalone.db.dao.SettingsDaoImpl.get(SettingsDaoImpl.java:74) + at org.mycontroller.standalone.settings.SettingsUtils.getValue(SettingsUtils.java:57) + at org.mycontroller.standalone.settings.SettingsUtils.getValue(SettingsUtils.java:62) + at org.mycontroller.standalone.settings.LocationSettings.getValue(LocationSettings.java:72) + at org.mycontroller.standalone.settings.LocationSettings.get(LocationSettings.java:57) + at org.mycontroller.standalone.AppProperties.loadPropertiesFromDb(AppProperties.java:554) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:188) + at org.mycontroller.standalone.db.migration.MigrationBase.loadDao(MigrationBase.java:52) + at org.mycontroller.standalone.db.migration.V1_03_02__2016_Aug_06.migrate(V1_03_02__2016_Aug_06.java:39) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_03_01__2016_Aug_03.migrate(V1_03_01__2016_Aug_03.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_03_04__2016_Oct_19.migrate(V1_03_04__2016_Oct_19.java:51) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:270) + at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:616) + at org.mycontroller.standalone.db.migration.ClientBase.hasColumn(ClientBase.java:59) + at org.mycontroller.standalone.db.migration.V1_02_10__2016_Jul_29.migrate(V1_02_10__2016_Jul_29.java:49) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:09:47 jdbc[38]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForFirst(BaseDaoImpl.java:237) + at com.j256.ormlite.stmt.QueryBuilder.queryForFirst(QueryBuilder.java:380) + at org.mycontroller.standalone.db.dao.SettingsDaoImpl.get(SettingsDaoImpl.java:74) + at org.mycontroller.standalone.settings.SettingsUtils.getValue(SettingsUtils.java:57) + at org.mycontroller.standalone.settings.SettingsUtils.getValue(SettingsUtils.java:62) + at org.mycontroller.standalone.settings.LocationSettings.getValue(LocationSettings.java:72) + at org.mycontroller.standalone.settings.LocationSettings.get(LocationSettings.java:57) + at org.mycontroller.standalone.AppProperties.loadPropertiesFromDb(AppProperties.java:554) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:188) + at org.mycontroller.standalone.db.migration.MigrationBase.loadDao(MigrationBase.java:52) + at org.mycontroller.standalone.db.migration.V1_03_05__2016_Nov_18.migrate(V1_03_05__2016_Nov_18.java:41) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.countOf(BaseDaoImpl.java:791) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.hasTable(BaseAbstractDaoImpl.java:78) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.(BaseAbstractDaoImpl.java:66) + at org.mycontroller.standalone.db.dao.ExternalServerDaoImpl.(ExternalServerDaoImpl.java:39) + at org.mycontroller.standalone.db.DaoUtils.loadAllDao(DaoUtils.java:154) + at org.mycontroller.standalone.db.DataBaseUtils.loadDao(DataBaseUtils.java:184) + at org.mycontroller.standalone.db.DataBaseUtils.reloadDao(DataBaseUtils.java:199) + at org.mycontroller.standalone.db.migration.MigrationBase.reloadDao(MigrationBase.java:56) + at org.mycontroller.standalone.db.migration.V1_04_05__2018_Sep_11.migrate(V1_04_05__2018_Sep_11.java:92) + at org.flywaydb.core.internal.resolver.jdbc.JdbcMigrationExecutor.execute(JdbcMigrationExecutor.java:45) + at org.flywaydb.core.internal.command.DbMigrate.doMigrateGroup(DbMigrate.java:365) + at org.flywaydb.core.internal.command.DbMigrate.access$400(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$5.call(DbMigrate.java:299) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:296) + at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:261) + at org.flywaydb.core.internal.command.DbMigrate.access$300(DbMigrate.java:52) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:179) + at org.flywaydb.core.internal.command.DbMigrate$4.call(DbMigrate.java:176) + at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:155) + at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:75) + at org.flywaydb.core.internal.database.Connection.lock(Connection.java:151) + at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:143) + at org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:176) + at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:145) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1206) + at org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) + at org.flywaydb.core.Flyway.execute(Flyway.java:1650) + at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:117) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 45 more +2019-11-27 13:10:00 jdbc[45]: java.lang.Exception: Open Stack Trace + at org.h2.util.CloseWatcher.register(CloseWatcher.java:100) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:128) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at org.flywaydb.core.internal.util.jdbc.DriverDataSource.getConnectionFromDriver(DriverDataSource.java:417) + at org.flywaydb.core.internal.util.jdbc.DriverDataSource.getConnection(DriverDataSource.java:380) + at org.mycontroller.standalone.db.DataBaseUtils.runDatabaseMigration(DataBaseUtils.java:127) + at org.mycontroller.standalone.StartApp.startServices(StartApp.java:279) + at org.mycontroller.standalone.StartApp.startMycontroller(StartApp.java:133) + at org.mycontroller.standalone.StartApp.main(StartApp.java:119) + +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:243) + at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:197) + at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:277) + at com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:366) + at com.j256.ormlite.stmt.Where.query(Where.java:480) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.getAll(BaseAbstractDaoImpl.java:429) + at org.mycontroller.standalone.rule.McRuleEngine.doRun(McRuleEngine.java:133) + at org.knowm.sundial.Job.execute(Job.java:56) + at org.quartz.core.JobRunShell.run(JobRunShell.java:178) + at org.quartz.core.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:515) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 22 more +2019-11-28 09:11:10 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1484) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1459) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:675) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:299) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:235) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:229) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.testConnection(JdbcPooledConnectionSource.java:352) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:131) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForId(BaseDaoImpl.java:226) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.getById(BaseAbstractDaoImpl.java:339) + at org.mycontroller.standalone.gateway.config.GatewayConfig.setStatus(GatewayConfig.java:107) + at org.mycontroller.standalone.gateway.serial.SerialDriverJSerialComm.disconnect(SerialDriverJSerialComm.java:99) + at org.mycontroller.standalone.gateway.serial.GatewaySerial.disconnect(GatewaySerial.java:96) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:140) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +2019-11-28 09:11:10 jdbc[4]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1484) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1459) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:675) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:299) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:235) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:229) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.testConnection(JdbcPooledConnectionSource.java:352) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:131) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForId(BaseDaoImpl.java:226) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.getById(BaseAbstractDaoImpl.java:339) + at org.mycontroller.standalone.gateway.config.GatewayConfig.setStatus(GatewayConfig.java:107) + at org.mycontroller.standalone.gateway.serial.SerialDriverJSerialComm.disconnect(SerialDriverJSerialComm.java:99) + at org.mycontroller.standalone.gateway.serial.GatewaySerial.disconnect(GatewaySerial.java:96) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:140) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) diff --git a/conf/persistent_stores/mc/mc.mapdb b/conf/persistent_stores/mc/mc.mapdb new file mode 100644 index 0000000..b9602f9 Binary files /dev/null and b/conf/persistent_stores/mc/mc.mapdb differ diff --git a/conf/persistent_stores/mc/mc.mapdb.p b/conf/persistent_stores/mc/mc.mapdb.p new file mode 100644 index 0000000..7079826 Binary files /dev/null and b/conf/persistent_stores/mc/mc.mapdb.p differ diff --git a/conf/persistent_stores/mc/mc.mapdb.t b/conf/persistent_stores/mc/mc.mapdb.t new file mode 100644 index 0000000..1094c07 Binary files /dev/null and b/conf/persistent_stores/mc/mc.mapdb.t differ diff --git a/conf/persistent_stores/moquette/moquette_store.mapdb b/conf/persistent_stores/moquette/moquette_store.mapdb new file mode 100644 index 0000000..f19bd7a Binary files /dev/null and b/conf/persistent_stores/moquette/moquette_store.mapdb differ diff --git a/conf/persistent_stores/moquette/moquette_store.mapdb.p b/conf/persistent_stores/moquette/moquette_store.mapdb.p new file mode 100644 index 0000000..9b1ea49 Binary files /dev/null and b/conf/persistent_stores/moquette/moquette_store.mapdb.p differ diff --git a/conf/persistent_stores/moquette/moquette_store.mapdb.t b/conf/persistent_stores/moquette/moquette_store.mapdb.t new file mode 100644 index 0000000..1094c07 Binary files /dev/null and b/conf/persistent_stores/moquette/moquette_store.mapdb.t differ diff --git a/conf/resources/dashboards/5952e781-c878-4d24-ac11-d359b197e2cd.json b/conf/resources/dashboards/5952e781-c878-4d24-ac11-d359b197e2cd.json new file mode 100644 index 0000000..c1c0bae --- /dev/null +++ b/conf/resources/dashboards/5952e781-c878-4d24-ac11-d359b197e2cd.json @@ -0,0 +1 @@ +"[{\"columns\":[{\"styleClass\":\"col-md-4\",\"widgets\":[{\"type\":\"mycTime\",\"config\":{\"datePattern\":\"MMM dd, yyyy\",\"refreshTime\":\"120\"},\"title\":\"MyController time\",\"titleTemplateUrl\":\"../src/templates/widget-title.html\",\"wid\":\"1454676806001-1\"},{\"type\":\"mycSunriseTime\",\"config\":{\"refreshTime\":\"300\"},\"title\":\"Sunrise and sunset time\",\"titleTemplateUrl\":\"../src/templates/widget-title.html\",\"wid\":\"1454685464871-1\"}],\"cid\":\"1574885484919-2\"},{\"styleClass\":\"col-md-4\",\"widgets\":[{\"type\":\"mycSenVars\",\"config\":{\"variableIds\":[\"3\",\"4\"],\"showIcon\":true,\"confirmationEnabled\":false,\"itemsPerRow\":\"2\",\"refreshTime\":30},\"title\":\"Garage Doors\",\"titleTemplateUrl\":\"../src/templates/widget-title.html\",\"wid\":\"1574885450524-1\"}],\"cid\":\"1574885484920-3\"},{\"styleClass\":\"col-md-4\",\"widgets\":[],\"cid\":\"1574885484921-4\"}]},{\"columns\":[{\"styleClass\":\"col-md-12\",\"widgets\":[],\"cid\":\"1574885484922-5\"}]}]" \ No newline at end of file diff --git a/conf/resources/scripts/conditions/If either garage door has been open for more than 15 minutes.js b/conf/resources/scripts/conditions/If either garage door has been open for more than 15 minutes.js new file mode 100644 index 0000000..3976761 --- /dev/null +++ b/conf/resources/scripts/conditions/If either garage door has been open for more than 15 minutes.js @@ -0,0 +1,4 @@ +northDoorOpen = mcApi.uidTag().getByUid("north-garage-door-tripped").getResource(); +southDoorOpen = mcApi.uidTag().getByUid("south-garage-door-tripped").getResource(); + +!northDoorOpen || !southDoorOpen \ No newline at end of file diff --git a/conf/resources/templates/mc-default-rule-email-template.html b/conf/resources/templates/mc-default-rule-email-template.html new file mode 100644 index 0000000..1261bff --- /dev/null +++ b/conf/resources/templates/mc-default-rule-email-template.html @@ -0,0 +1,19 @@ + + + + + Dear User, +
+
There is a rule triggered for you! +
+
+ + + + + +
Rule definition name: ${notification.ruleName}
Condition: ${notification.ruleCondition}
Actual value: ${notification.actualValue}
Triggered at: ${notification.triggeredAt}
+
+
-- Powered by www.MyController.org + + diff --git a/lib/mycontroller-dist-standalone-1.4.0.Final-single.jar b/lib/mycontroller-dist-standalone-1.4.0.Final-single.jar new file mode 100644 index 0000000..934832f Binary files /dev/null and b/lib/mycontroller-dist-standalone-1.4.0.Final-single.jar differ diff --git a/logs/.gitignore b/logs/.gitignore new file mode 100644 index 0000000..bf0824e --- /dev/null +++ b/logs/.gitignore @@ -0,0 +1 @@ +*.log \ No newline at end of file diff --git a/www/_configurations/additional.css b/www/_configurations/additional.css new file mode 100644 index 0000000..e69de29 diff --git a/www/_configurations/additional.js b/www/_configurations/additional.js new file mode 100644 index 0000000..95044c9 --- /dev/null +++ b/www/_configurations/additional.js @@ -0,0 +1,25 @@ +$.when( + //this list is automatically generated by + //Utilites > HTML additional headers > Script files + $.Deferred(function(deferred) { $(deferred.resolve);}) +).done(function() { + //this list is automatically generated by + //Utilities > HTML additional headers > Additional AngularJS modules to load + let aModules = [ + ]; + + //test each module name to prevent AngularJS from failing to load + let aWorkingModules = []; + for(let i = 0; i < aModules.length; i++) + { + try { + angular.module(aModules[i]); //test if module loads + aWorkingModules.push(aModules[i]); //put working module on list + } + //throw an error, if module can not be loaded + catch(ex) { console.log('unable to load module ' + aModules[i]); } + } + //resume bootstrap process which was halted with /defer_angular_bootstrap.js + //and load working modules + angular.resumeBootstrap(aWorkingModules); +}); \ No newline at end of file diff --git a/www/_configurations/custom-controllers.js b/www/_configurations/custom-controllers.js new file mode 100644 index 0000000..e69de29 diff --git a/www/_configurations/mycontroller-configs.json b/www/_configurations/mycontroller-configs.json new file mode 100644 index 0000000..5613357 --- /dev/null +++ b/www/_configurations/mycontroller-configs.json @@ -0,0 +1,21 @@ +{ + "timezone" : "-0600", + "timezoneMilliseconds" : -21600000, + "timezoneString" : "CST", + "appVersion" : "1.4.0.Final", + "systemDate" : 1574884623419, + "appName" : "MyController.org", + "languageId" : "en_us", + "language" : "English (US)", + "dateFormat" : "MMM dd, yyyy hh:mm:ss a", + "dateFormatWithoutSeconds" : "MMM dd, yyyy hh:mm a", + "timeFormat" : "hh:mm:ss a", + "timeFormatWithoutSeconds" : "hh:mm a", + "timeFormatSet" : "12 hours", + "loginMessage" : "Default username: admin, password: admin", + "globalPageRefreshTime" : 30000, + "dashboardLimit" : 5, + "tableRowsLimit" : 10, + "googleAnalyticsEnabled" : true, + "googleAnalyticsTid" : "UA-127071169-1" +} \ No newline at end of file diff --git a/www/angular_defer_bootstrap.js b/www/angular_defer_bootstrap.js new file mode 100644 index 0000000..64de23d --- /dev/null +++ b/www/angular_defer_bootstrap.js @@ -0,0 +1,20 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//set the window.name to signal AangularJS to delay bootstrapping until resumeBootstrap() is called +//see: https://docs.angularjs.org/guide/bootstrap +window.name = 'NG_DEFER_BOOTSTRAP! ' + window.name; \ No newline at end of file diff --git a/www/app.css b/www/app.css new file mode 100644 index 0000000..75325db --- /dev/null +++ b/www/app.css @@ -0,0 +1,882 @@ +/* + * Copyright 2015-2019 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* app css stylesheet */ + +body { + background-color: #f5f5f5; + line-height: 1.4; + padding-bottom: 20px; +} + +.top-buffer-nm { margin-top:20px; } + +.top-buffer-m { margin-top:100px; } + + +.fa-check-circle-o { + color: #3f9c35; +} + +.mc-top-space{ + margin-top: 20px; +} + +.mc-top-space-header{ + margin-top: 25px; +} + +.mc-top-space-1x{ + margin-top: 35px; +} + +.mc-top-space-2x{ + margin-top: 60px; +} + +.mc-bottom-space{ + margin-bottom: 40px; +} + +.mc-text-red{ + color: red; +} +/* +.fa-arrow-down { + color: #c00; +} +*/ +.mc-single-row{ + white-space: nowrap; +} + +.mc-cards-offset { + margin-top: 30px; +} + +.mc-align-center { + text-align: center; /* center checkbox horizontally */ + vertical-align: middle; /* center checkbox vertically */ +} + +.mc-table { + background-color: #ffffff; +} + +.mc-table > thead > tr > th { + background-color: #313131; + color: #d0d0d0; + font-weight: bold; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + vertical-align: middle; +} + +.mc-table > tbody > tr > td { + padding-left: 5px; + padding-right: 5px; + padding-top: 5px; + padding-bottom: 5px; + vertical-align: middle; +} + +.mc-table > tbody > tr:hover > td { + cursor: pointer; + background-color:#a3c1db; +} + +.mc-table > tbody > tr.mc-selected > td{ + background-color: #4077a5; + color: white; +} + +.mc-table > tbody > tr.mc-selected > td .pficon, +.mc-table > tbody > tr.mc-selected > td .fa{ + color: #ffffff; +} + +.mc-form-actions-separator { + border-top: 1px solid #e5e5e5; + padding-top: 15px; + text-align: right; +} + +/* Till now not used anywhere */ +.mc-graph .mc-spinner-container { + margin-bottom: 50px; + margin-top: 60px; +} + +.mc-urls-list { + padding: 0 40px 0 10px; +} + +/* END */ + +.mc-side-space{ + margin-right: 10px; + margin-left: 10px; +} + +.mc-spinner-container-alone { + margin-top: 220px; +} + + +.navbar-pf { + margin-bottom: 10px; +} +@media (min-width: 768px) { + .navbar-header { + padding: 0px 0; + } + .navbar-pf .navbar-utility > li > a { + padding: 12px 10px; + } + .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user { + top: 12px; + } +} +@media (max-width: 767px) { + .navbar-pf { + padding-top: 1px; + } +} +.dropdown-menu li:not(.active) > a:hover:active { + background-color: #0099d3; +} + +.mc-form-fixer-left { + padding-left:20px; + padding-right:5px; +} + +.mc-form-fixer { + padding-left:5px; + padding-right:5px; +} + +/* color-1 */ +.mc-color-teal { + color: #fff; + background-color: #008080; + border-color: #007070; +} +.mc-color-teal:focus, +.mc-color-teal.focus { + color: #fff; + background-color: #006565; + border-color: #005050; +} +.mc-color-teal:hover { + color: #fff; + background-color: #006565; + border-color: #005050; +} +.mc-color-teal::-webkit-input-placeholder { + color: #ccc; + font-weight: normal; +} +input.mc-color-teal{ + font-weight: 600; +} + + +/* color-2 */ +.mc-color-slate-gray { + color: #fff; + background-color: #708090; + border-color: #607080; +} +.mc-color-slate-gray:focus, +.mc-color-slate-gray.focus { + color: #fff; + background-color: #607080; + border-color: #506070; +} +.mc-color-slate-gray:hover { + color: #fff; + background-color: #607080; + border-color: #506070; +} +.mc-color-slate-gray::-webkit-input-placeholder { + color: #ccc; + font-weight: normal; +} +input.mc-color-slate-gray{ + font-weight: 600; +} + +/* color-3 */ +.mc-color-indian-red { + color: #fff; + background-color: #cd5c5c; + border-color: #bc4b4b; +} +.mc-color-indian-red:focus, +.mc-color-indian-red.focus { + color: #fff; + background-color: #bc4b4b; + border-color: #ab3a3a; +} +.mc-color-indian-red:hover { + color: #fff; + background-color: #bc4b4b; + border-color: #ab3a3a; +} +.mc-color-indian-red::-webkit-input-placeholder { + color: #ccc; + font-weight: normal; +} +input.mc-color-indian-red{ + font-weight: 600; +} + +/* color-4*/ +.mc-color-rosy-brown { + color: #fff; + background-color: #9a6d6d; + border-color: #895c5c; +} +.mc-color-rosy-brown:focus, +.mc-color-rosy-brown.focus { + color: #fff; + background-color: #895c5c; + border-color: #784b4b; +} +.mc-color-rosy-brown:hover { + color: #fff; + background-color: #895c5c; + border-color: #784b4b; +} +.mc-color-rosy-brown::-webkit-input-placeholder { + color: #eee; + font-weight: normal; +} +input.mc-color-rosy-brown{ + font-weight: 600; +} + +/* color-5 */ +.mc-color-tan { + color: #fff; + background-color: #af8159; + border-color: #9e7058; +} +.mc-color-tan:focus, +.mc-color-tan.focus { + color: #fff; + background-color: #9e7058; + border-color: #8d6f47; +} +.mc-color-tan:hover { + color: #fff; + background-color: #9e7058; + border-color: #8d6f47; +} +.mc-color-tan::-webkit-input-placeholder { + color: #ddd; + font-weight: normal; +} +input.mc-color-tan{ + font-weight: 600; +} + +/* color-6 */ +.mc-color-steel-blue { + color: #fff; + background-color: #2b4f6e; + border-color: #24425c; +} +.mc-color-steel-blue:focus, +.mc-color-steel-blue.focus { + color: #fff; + background-color: #24425c; + border-color: #1d3549; +} +.mc-color-steel-blue:hover { + color: #fff; + background-color: #24425c; + border-color: #1d3549; +} +.mc-color-steel-blue::-webkit-input-placeholder { + color: #eee; + font-weight: normal; +} +input.mc-color-steel-blue{ + font-weight: 600; +} + + +.mc-model-text-margin { + margin-top:5px; + margin-bottom:5px; +} + +/* on angular-patternfly upgrade from 2.x to 3.x introduced issue on sensors-action page. + * To overcome this issue copied style from old version. + * following style used only on sensors-action page. + * */ +.data-list-pf { + background: #fff; + overflow-x: hidden; + overflow-y: auto; + padding-bottom: 1px; +} +.data-list-pf .list-row { + margin-right: 0px; + position: relative; + padding-right: 0px; + width: 100%; +} +.data-list-pf .list-content { + left: 15px; + position: relative; +} +.data-list-pf .list-content.with-check-box { + border-left: solid 2px #d2d2d2; + left: 30px; + margin-left: 10px; +} +.data-list-pf .list-content.with-menu { + margin-right: 30px; + right: 15px; +} +.data-list-pf .list-check-box { + bottom: 0px; + left: 20px; + position: absolute; + top: 0px; + width: 20px; +} +.data-list-pf .data-list-loading { + background: rgba(0, 0, 0, 0.05); +} +.data-list-pf .list-group-item:first-of-type { + margin-top: 0; +} +.data-list-pf .list-group-item .list-column { + float: left; + padding: 5px 0px; +} +.data-list-pf .list-group-item .pficon { + -webkit-align-items: center; + align-items: center; + color: #1186C1; + font-size: 26px; + width: 26px; +} + +.data-list-pf .list-group-item.active, +.data-list-pf .list-group-item.active:hover, +.data-list-pf .list-group-item.active:focus { + background-color: #def3ff; + border-color: #def3ff; + color: #000000; +} + +.data-list-pf .list-group-item:hover, +.data-list-pf .list-group-item:focus { + background-color: #ededed; + border-color: #ededed; +} + +.data-list-pf .list-group-item.active .pficon, +.data-list-pf .list-group-item.active:hover .pficon, +.data-list-pf .list-group-item.active:focus .pficon { + color: #ffffff; +} +.data-list-pf .row-column { + padding-right: 5px; +} + +/* used in sensors action board list items */ +.mc-list-align { + display: flex; + border-bottom: 2px solid #f5f5f5; + border-top: 2px solid #f5f5f5; + line-height: 33px; +} + + +.mc-list-align { + display: flex; + border-bottom: 2px solid #f5f5f5; + border-top: 2px solid #f5f5f5; + line-height: 33px; +} + +.mc-list-align:nth-child(odd) { + background-color: #ffffff; +} +.mc-list-align:nth-child(even) { + background-color: #fbfbfb; +} + + + +/* Dropdown size in sensors action board(sab) */ +.mc-sab-dropdown { + width:117px !important; +} + + +.mc-top-space-5px{ + margin-top: 5px; +} + + +.mc-icon{ + font-size:15px; + vertical-align: middle; + margin-right: 5px; +} + +.mc-icon{ + font-size:100%; + vertical-align: middle; + margin-right: 5px; +} + +.mc-icon-md-1{ + font-size:110%; + vertical-align: middle; + margin-right: 5px; +} + +.mc-icon-md-3{ + font-size:130%; + vertical-align: middle; + margin-right: 5px; +} + +.mc-icon-lg{ + font-size:150%; + vertical-align: middle; + margin-right: 5px; +} + +.mc-icon-2x{ + font-size:200%; + vertical-align: middle; + margin-right: 5px; +} + +.mc-inline-editer-ab{ + color: #000000; + cursor: pointer; + font-style:initial; + border-bottom: initial; +} + +.mc-inline-editer-ab:hover{ + color: #428bca; + font-style:initial; +} + +.mc-style-ab{ + font-weight: 500; + font-size: 130%; + color:initial; +} + +.mc-show-disabled{ + background-color: #ffffff !important; + color: #333 !important; +} + + + +.mc-margin-right{ + margin-right: 8px; +} + +.mc-margin-left{ + margin-right: 8px; +} + +.mc-margin-icon{ + margin-right: 3px; +} + + +.mc-v-margin > div { + padding:0 20px; +} + + +.mc-padding { + padding-left:5px; + padding-right:5px; +} + +.mc-margin { + margin-left:3px; + margin-right:3px; +} + + +.dl-horizontal dt { + white-space: normal; +} + +.mc-sensor-variable-detail{ + height:80px; +} + +.mc-sensor-action-tiles{ + height:333px; +} + +.mc-sa-tiles-variable{ + padding-bottom: 3px; + padding-top: 3px; +} + + +.mc-pointer{ + cursor: pointer; +} + + + + +/* ADF css */ +.adf-myct { + text-align: center; +} + +.adf-myct-time { + font-size: 300%; +} + +.adf-myct-date { + font-size: 200%; +} + +.adf-myct-timezone { + font-size: 80%; +} + +/* sunrise sun set*/ +.adf-mycsr { + text-align: center; +} + +.adf-mycsr-time { + font-size: 200%; +} + +.adf-mycsr-time > i{ + margin-left: 10px; + margin-right: 10px; + margin-bottom:10px; + font-size: 150%; + vertical-align: middle; +} + +.adf-mycsr-location { + font-size: 150%; +} + +.adf-mycsr-location > i{ + margin-left: 10px; + margin-right: 10px; + font-size: 120%; + vertical-align: middle; +} + +.adf-myc-sen-var{ + height:75px; +} + +.adf-myc-sen-var > .card-pf-title > .fa{ + font-size: 12px; + margin-left:2px; + margin-right:2px; +} + +.adf-myc-sbg{ + height:70px; +} +.adf-myc-sbg-margin{ + margin-top:5px; + margin-bottom:7px; +} + +.adf-myc-dsi-image{ + display: block; + margin-left: auto; + margin-right: auto; + max-height:100%; + max-width:100%; +} + + +.adf-myc-shm-margin > .heatmap-pf-container > h3{ + margin:0px; +} + +/* custom buttons */ +#custom-buttons-wrapper .btn { + margin: 3px 0px 3px 3px; + font-weight: bold; + font-size: 21px; +} +.adf-myc-cb-margin{ + margin-top:5px; + margin-bottom:5px; +} + +/* ADF Table widget */ +.adf-table > tbody > tr > td{ + padding-left: 2px; + padding-right: 5px; + padding-top: 2px; + padding-bottom: 5px; + vertical-align: middle; +} + + +/* on-off button*/ +.bootstrap-switch-on{ + font-weight: 600; +} +.bootstrap-switch-off { + font-weight: 500; +} + + + +/* sensors list under rooms page */ +.mc-sensors-room { + display: flex; + justify-content: center; +} + +.mc-sensors-hr { + margin-top: 3px; + margin-bottom: 0px; +} + + +kubernetes-topology-graph { + border: 2px solid lightgray; + background-color: #FCFCFC; +} + +.container_topology .legend { + padding-top: 5px; + /*font-family: sans-serif;*/ + font-size: 15px; + display: inline-block; + vertical-align: middle; +} +.container_topology .legend label { + font-weight: 400; + cursor: pointer; + vertical-align: 10px; +} + +.container_topology #selected { + float: right; + display: block; + margin-top: 15px; +} + +kubernetes-topology-icon { + padding: 4px 11px 4px 2px !important; + opacity: 0.4; +} + +kubernetes-topology-icon.active { + opacity: 1; +} + +kubernetes-topology-icon svg { + width: 39px !important; + height: 39px !important; + display: inline-block; +} + +.kube-topology g text.attached-label { + display: none; +} + +.kube-topology g text.attached-label.visible { + font-size: 12px; + fill: black; + display: block; +} + +.kube-topology g.selected { + stroke-width: 4px; +} + +.kube-topology g circle { + stroke-width: 2px; +} + +.kube-topology g circle.success { + stroke: #3F9C35; +} + +.kube-topology g circle.error { + stroke: #CC0000; +} + +.kube-topology g circle.warning { + stroke: #EC7A08; +} + +.kube-topology g circle.unknown { + stroke: #bbb; +} + +.container_topology .canvas { + position: absolute; +} + +.container_topology .popup { + position: absolute; + left: 0; + top: 0; + background-color: #fff; + width: 180px; + border: 1px #ccc solid; + border-radius: 6px; + box-shadow: #333 2px 2px 4px; + padding: 6px; + font-size: 14px; +} + +.container_topology .popup h5 { + font-weight: bold; +} + +.container_topology .popup p { + margin: 0 0 4px; +} + +.container_topology .popup p:hover { + color : #0099cc; + cursor: pointer; +} + +.container_topology label.checkbox-inline { + font-size:14px; +} + + + + + + + + + + + + + + + + + + + + + +/* Specify styling for uib-tooltip contents */ +.tooltip.customClass450px .tooltip-inner { + min-width: 450px; + text-align: left; +} + +/* Specify styling for uib-tooltip contents */ +.tooltip.customClass350px .tooltip-inner { + min-width: 350px; + text-align: left; +} + +.battery-modal-window .modal-dialog { + width: 95%; +} + +.tick line { + /* When you do not want to display grid line on your charts enable, 'display:none;' */ + /* display: none; */ +} + +.modal-body { + position: relative; + padding-top: 20px; + padding-right: 10px; + padding-bottom: 2px; + padding-left: 10px; +} + +.modal-body-text-only { + position: relative; + padding: 5px 20px; +} + +.modal-header { + background-color: rgba(0, 0, 0, 0.07); +} + +.modal-footer { + padding: 12px; +} + +.mc-dialog { + /*border-style: solid; + border-width: 1px; + border-color: #D3D3D3;*/ +} + +.panel-body-action-board { + padding-top: 3px; +} + +.multiSelect > button { + font-size: 12px; + min-height: 35px !important; + border-radius: 0px; +} + +/* Specify styling for angular-bootstrap-colorpicker contents */ +.close-colorpicker { + color:gray; +} + +.close-colorpicker:hover { + color:black; +} + +.text-color-red { + color:red; +} + +.text-color-green { + color:green; +} + +.text-color-gray { + color:gray; +} diff --git a/www/app.js b/www/app.js new file mode 100644 index 0000000..9c548ee --- /dev/null +++ b/www/app.js @@ -0,0 +1,869 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +'use strict'; + +// Declare app level module which depends on views, and components +var myControllerModule = angular.module('myController',[ + 'ui.router', + 'ui.bootstrap', + 'ngResource', + 'ngCookies', + 'ui.bootstrap.datetimepicker', + 'base64', + 'colorpicker.module', + 'ngFileSaver', + 'pascalprecht.translate', + 'ngSanitize', + 'nvd3', + 'patternfly', + 'patternfly.charts', + 'patternfly.select', + 'patternfly.views', + 'patternfly.filters', + 'patternfly.card', + 'patternfly.toolbars', + 'frapontillo.bootstrap-switch', + 'xeditable', + 'angularUtils.directives.dirPagination', + 'frapontillo.bootstrap-duallistbox', + 'angularMoment', + 'adf', + 'adf.structures.base', + 'adf.widget.myc-a-sensor-graph', + 'adf.widget.myc-custom-widget', + 'adf.widget.myc-dsi', + 'adf.widget.myc-sensors-grouped-graph', + 'adf.widget.myc-groups', + 'adf.widget.myc-heat-map', + 'adf.widget.myc-sensors-mixed-graph', + 'adf.widget.myc-time', + 'adf.widget.news', + 'adf.widget.myc-os-commands', + 'adf.widget.myc-custom-buttons', + 'adf.widget.myc-sen-vars', + 'adf.widget.myc-sensors-bullet-graph', + 'adf.widget.myc-sunrisetime', + 'ngMap', + 'kubernetesUI', +]); + +myControllerModule.constant("mchelper", { + internal:{}, + cfg:{}, + languages:{}, + user:{}, + userSettings:{}, +}); + +myControllerModule.config(function($stateProvider, $urlRouterProvider) { + //For any unmatched url, redirect to /dashboard + $urlRouterProvider.otherwise('/dashboard'); + + $stateProvider + + /* Dashboard */ + .state('dashboardMain', { + url:"/dashboard", + templateUrl: "partials/dashboard/dashboard.html?mcv=29", + controller: "DashboardListController", + data: { + requireLogin: true + } + }).state('dashboardRoomsSensorsList', { + url:"/dashboard/rooms/list/:id", + templateUrl: "partials/rooms/rooms-sensors-list.html?mcv=29", + controller: "RoomsSensorsControllerList", + data: { + requireLogin: true + } + }).state('dashboardTopology', { + url:"/dashboard/topology/:resourceType/:resourceId", + templateUrl: "partials/topology/topology.html?mcv=29", + controller: "TopologyController", + data: { + requireLogin: true + } + }) + + /* Resources */ + .state('gatewaysList', { + url:"/resources/gateways/list", + templateUrl: "partials/gateways/gateways-list.html?mcv=29", + controller: "GatewaysController", + data: { + requireLogin: true + } + }).state('gatewaysAddEdit', { + url:"/resources/gateways/addedit/:id", + templateUrl: "partials/gateways/gateway-add-edit.html?mcv=29", + controller: "GatewaysControllerAddEdit", + data: { + requireLogin: true + } + }).state('gatewaysDetail', { + url:"/resources/gateways/detail/:id", + templateUrl: "partials/gateways/gateways-detail.html?mcv=29", + controller: "GatewaysControllerDetail", + data: { + requireLogin: true + } + }).state('nodesList', { + url:"/resources/nodes/list/:gatewayId", + templateUrl: "partials/nodes/nodes-list.html?mcv=29", + controller: "NodesController", + data: { + requireLogin: true + } + }).state('nodesAddEdit', { + url:"/resources/nodes/addedit/:id", + templateUrl: "partials/nodes/node-add-edit.html?mcv=29", + controller: "NodesControllerAddEdit", + data: { + requireLogin: true + } + }).state('nodesDetail', { + url:"/resources/nodes/detail/:id", + templateUrl: "partials/nodes/node-detail.html?mcv=29", + controller: "NodesControllerDetail", + data: { + requireLogin: true + } + }).state('sensorsList', { + url:"/resources/sensors/list/:nodeId", + templateUrl: "partials/sensors/sensors-list.html?mcv=29", + controller: "SensorsController", + data: { + requireLogin: true + } + }).state('sensorsAddEdit', { + url:"/resources/sensors/addedit/:id", + templateUrl: "partials/sensors/sensor-add-edit.html?mcv=29", + controller: "SensorsControllerAddEdit", + data: { + requireLogin: true + } + }).state('sensorVariablePurge', { + url:"/resources/sensorvariable/purge/:id", + templateUrl: "partials/sensors/sensor-variable-purge.html?mcv=29", + controller: "SensorVariableControllerPurge", + data: { + requireLogin: true + } + }).state('sensorVariableEdit', { + url:"/resources/sensorvariable/edit/:id", + templateUrl: "partials/sensors/sensor-variable-edit.html?mcv=29", + controller: "SensorVariableControllerEdit", + data: { + requireLogin: true + } + }).state('sensorsDetail', { + url:"/resources/sensors/detail/:id", + templateUrl: "partials/sensors/sensors-detail.html?mcv=29", + controller: "SensorsControllerDetail", + data: { + requireLogin: true + } + }).state('rulesList', { + url:"/resources/rules/list/:resourceType/:resourceId", + templateUrl: "partials/rule-engine/rules-list.html?mcv=29", + controller: "RuleEngineController", + data: { + requireLogin: true + } + }).state('rulesAddEdit', { + url:"/resources/rules/addedit/:id/:action", + templateUrl: "partials/rule-engine/rules-add-edit.html?mcv=29", + controller: "RuleEngineControllerAddEdit", + data: { + requireLogin: true + } + }).state('operationsList', { + url:"/resources/operations/list", + templateUrl: "partials/operations/operations-list.html?mcv=29", + controller: "OperationsController", + data: { + requireLogin: true + } + }).state('operationsAddEdit', { + url:"/resources/operations/addedit/:id/:action", + templateUrl: "partials/operations/operations-add-edit.html?mcv=29", + controller: "OperationsControllerAddEdit", + data: { + requireLogin: true + } + }).state('forwardPayloadList', { + url:"/resources/forwardpayload/list/:sensorId", + templateUrl: "partials/forward-payload/forward-payload-list.html?mcv=29", + controller: "ForwardPayloadController", + data: { + requireLogin: true + } + }).state('forwardPayloadAddEdit', { + url:"/resources/forwardpayload/addedit/:id", + templateUrl: "partials/forward-payload/forward-payload-add-edit.html?mcv=29", + controller: "ForwardPayloadControllerAddEdit", + data: { + requireLogin: true + } + }).state('resourcesGroupList', { + url:"/resources/groups/list/:resourceType/:resourceId", + templateUrl: "partials/resources-group/resources-group-list.html?mcv=29", + controller: "ResourcesGroupController", + data: { + requireLogin: true + } + }).state('resourcesGroupAddEdit', { + url:"/resources/groups/addedit/:id", + templateUrl: "partials/resources-group/resources-group-add-edit.html?mcv=29", + controller: "ResourcesGroupControllerAddEdit", + data: { + requireLogin: true + } + }).state('timersList', { + url:"/resources/timers/list/:resourceType/:resourceId", + templateUrl: "partials/timers/timers-list.html?mcv=29", + controller: "TimersController", + data: { + requireLogin: true + } + }).state('timersAddEdit', { + url:"/resources/timers/addedit/:id/:action", + templateUrl: "partials/timers/timer-add-edit.html?mcv=29", + controller: "TimersControllerAddEdit", + data: { + requireLogin: true + } + }).state('resourcesGroupMapList', { + url:"/resources/groups/map/list/:id", + templateUrl: "partials/resources-group/resources-group-map-list.html?mcv=29", + controller: "ResourcesGroupMapController", + data: { + requireLogin: true + } + }).state('resourcesGroupMapAddEdit', { + url:"/resources/groups/map/addedit/:groupId/:id", + templateUrl: "partials/resources-group/resources-group-map-add-edit.html?mcv=29", + controller: "ResourcesGroupMapControllerAddEdit", + data: { + requireLogin: true + } + }).state('roomsList', { + url:"/resources/rooms/list", + templateUrl: "partials/rooms/rooms-list.html?mcv=29", + controller: "RoomsControllerList", + data: { + requireLogin: true + } + }).state('roomsAddEdit', { + url:"/resources/rooms/addedit/:id", + templateUrl: "partials/rooms/rooms-add-edit.html?mcv=29", + controller: "RoomsControllerAddEdit", + data: { + requireLogin: true + } + }) + + /* Action board */ + .state('actionBoardSensorsList', { + url:"/actionboard/sensorsaction/list", + templateUrl: "partials/action-board/sensors-action-list.html?mcv=29", + controller: "SensorsActionControllerList", + data: { + requireLogin: true + } + }).state('sendRawMessage', { + url:"/actionboard/sendrawmessage", + templateUrl: "partials/send-raw-message/send-raw-message.html?mcv=29", + controller: "SendRawMessageController", + data: { + requireLogin: true + } + }) + + /* Status */ + .state('aboutMyController', { + url:"/status/about", + templateUrl: "partials/status/about.html?mcv=29", + controller: "McAboutController", + data: { + requireLogin: true + } + }).state('statusSystem', { + url:"/status/system", + templateUrl: "partials/status/system-status.html?mcv=29", + controller: "StatusSystemController", + data: { + requireLogin: true + } + }).state('resourcesLogsList', { + url:"/status/resourceslogs/:resourceType/:resourceId", + templateUrl: "partials/resources-logs/resources-logs-list.html?mcv=29", + controller: "ResourcesLogsController", + data: { + requireLogin: true + } + }).state('resourcesLogsPurge', { + url:"/status/resourceslogs/purge", + templateUrl: "partials/resources-logs/resources-logs-purge.html?mcv=29", + controller: "ResourcesLogsPurgeController", + data: { + requireLogin: true + } + }).state('mycontrollerLogList', { + url:"/status/log/mycontroller", + templateUrl: "partials/status/mc-log-list.html?mcv=29", + controller: "StatusMcLogController", + data: { + requireLogin: true + } + }) + + /* Utilities */ + .state('scriptsList', { + url:"/utilities/scripts/list", + templateUrl: "partials/scripts/scripts-list.html?mcv=29", + controller: "ScriptsController", + data: { + requireLogin: true + } + }).state('scriptsAddEdit', { + url:"/utilities/scripts/addedit/:name", + templateUrl: "partials/scripts/scripts-add-edit.html?mcv=29", + controller: "ScriptsControllerAddEdit", + data: { + requireLogin: true + } + }).state('templatesList', { + url:"/utilities/templates/list", + templateUrl: "partials/templates/templates-list.html?mcv=29", + controller: "TemplatesController", + data: { + requireLogin: true + } + }).state('templatesAddEdit', { + url:"/utilities/templates/addedit/:name", + templateUrl: "partials/templates/templates-add-edit.html?mcv=29", + controller: "TemplatesControllerAddEdit", + data: { + requireLogin: true + } + }).state('additionalHeadersUpdate', { + url:"/utilities/additionalheaders/update", + templateUrl: "partials/additional-headers/additional-headers-update.html?mcv=29", + controller: "AdditionalHeadersUpdateController", + data: { + requireLogin: true + } + }).state('variablesRepositoryList', { + url:"/utilities/variables/list", + templateUrl: "partials/variables-repository/variables-list.html?mcv=29", + controller: "VariablesRepositoryController", + data: { + requireLogin: true + } + }).state('variablesRepositoryAddEdit', { + url:"/utilities/variables/addedit/:id", + templateUrl: "partials/variables-repository/variables-add-edit.html?mcv=29", + controller: "VariablesRepositoryControllerAddEdit", + data: { + requireLogin: true + } + }).state('firmwaresList', { + url:"/utilities/firmwares/list", + templateUrl: "partials/firmwares/firmwares-list.html?mcv=29", + controller: "FirmwaresController", + data: { + requireLogin: true + } + }).state('firmwaresAddEdit', { + url:"/utilities/firmwares/addedit/:id", + templateUrl: "partials/firmwares/firmwares-add-edit.html?mcv=29", + controller: "FirmwaresControllerAddEdit", + data: { + requireLogin: true + } + }).state('firmwaresTypeList', { + url:"/utilities/firmwares/type/list", + templateUrl: "partials/firmwares/firmwares-type-list.html?mcv=29", + controller: "FirmwaresTypeController", + data: { + requireLogin: true + } + }).state('firmwaresTypeAddEdit', { + url:"/utilities/firmwares/type/addedit/:id", + templateUrl: "partials/firmwares/firmwares-type-add-edit.html?mcv=29", + controller: "FirmwaresTypeControllerAddEdit", + data: { + requireLogin: true + } + }).state('firmwaresVersionList', { + url:"/utilities/firmwares/version/list", + templateUrl: "partials/firmwares/firmwares-version-list.html?mcv=29", + controller: "FirmwaresVersionController", + data: { + requireLogin: true + } + }).state('firmwaresVersionAddEdit', { + url:"/utilities/firmwares/version/addedit/:id", + templateUrl: "partials/firmwares/firmwares-version-add-edit.html?mcv=29", + controller: "FirmwaresVersionControllerAddEdit", + data: { + requireLogin: true + } + }).state('uidTagsList', { + url:"/utilities/uidtags/list", + templateUrl: "partials/uid-tags/uid-tags-list.html?mcv=29", + controller: "UidTagsController", + data: { + requireLogin: true + } + }).state('uidTagsAddEdit', { + url:"/utilities/uidtags/addedit/:id", + templateUrl: "partials/uid-tags/uid-tags-add-edit.html?mcv=29", + controller: "UidTagsControllerAddEdit", + data: { + requireLogin: true + } + }).state('resourcesDataList', { + url:"/utilities/resourcesdata/list", + templateUrl: "partials/resources-data/resources-data-list.html?mcv=29", + controller: "ResourcesDataController", + data: { + requireLogin: true + } + }).state('resourcesDataAddEdit', { + url:"/utilities/resourcesdata/addedit/:id", + templateUrl: "partials/resources-data/resources-data-add-edit.html?mcv=29", + controller: "ResourcesDataControllerAddEdit", + data: { + requireLogin: true + } + }).state('externalServersList', { + url:"/utilities/externalserver/list", + templateUrl: "partials/external-servers/external-servers-list.html?mcv=29", + controller: "ExternalServerController", + data: { + requireLogin: true + } + }).state('externalServersAddEdit', { + url:"/utilities/externalserver/addedit/:id", + templateUrl: "partials/external-servers/external-server-add-edit.html?mcv=29", + controller: "ExternalServersControllerAddEdit", + data: { + requireLogin: true + } + }) + + /* Settings */ + .state('settingsProfileUpdate', { + url:"/settings/profile/update", + templateUrl: "partials/users-roles/profile-update.html?mcv=29", + controller: "ProfileControllerUpdate", + data: { + requireLogin: true + } + }).state('settingsSystem', { + url:"/settings/system", + templateUrl: "partials/settings/settings-system.html?mcv=29", + controller: "SettingsSystemController", + data: { + requireLogin: true + } + }).state('settingsNotifications', { + url:"/settings/notifications", + templateUrl: "partials/settings/settings-notifications.html?mcv=29", + controller: "SettingsNotificationsController", + data: { + requireLogin: true + } + }).state('settingsMqttBroker', { + url:"/settings/mqttbroker", + templateUrl: "partials/settings/settings-mqtt-broker.html?mcv=29", + controller: "SettingsMqttBrokerController", + data: { + requireLogin: true + } + }).state('settingsMetrics', { + url:"/settings/metrics", + templateUrl: "partials/settings/settings-metrics.html?mcv=29", + controller: "SettingsMetricsController", + data: { + requireLogin: true + } + }).state('settingsMySensors', { + url:"/settings/mysensors", + templateUrl: "partials/settings/settings-mysensors.html?mcv=29", + controller: "SettingsSystemMySensors", + data: { + requireLogin: true + } + }).state('settingsVariablesMapperList', { + url:"/settings/variablesmapper/list", + templateUrl: "partials/variables-mapper/variables-mapper-list.html?mcv=29", + controller: "VariablesMapperListController", + data: { + requireLogin: true + } + }).state('settingsVariablesMapperEdit', { + url:"/settings/variablesmapper/edit/:sensorType", + templateUrl: "partials/variables-mapper/variables-mapper-edit.html?mcv=29", + controller: "VariablesMapperEditController", + data: { + requireLogin: true + } + }).state('settingsUsersList', { + url:"/settings/users/list", + templateUrl: "partials/users-roles/users-list.html?mcv=29", + controller: "UsersControllerList", + data: { + requireLogin: true + } + }).state('settingsUsersAddEdit', { + url:"/settings/users/addedit/:id", + templateUrl: "partials/users-roles/users-add-edit.html?mcv=29", + controller: "UsersControllerAddEdit", + data: { + requireLogin: true + } + }).state('settingsRolesList', { + url:"/settings/roles/list", + templateUrl: "partials/users-roles/roles-list.html?mcv=29", + controller: "RolesControllerList", + data: { + requireLogin: true + } + }).state('settingsRolesAddEdit', { + url:"/settings/roles/addedit/:id", + templateUrl: "partials/users-roles/roles-add-edit.html?mcv=29", + controller: "RolesControllerAddEdit", + data: { + requireLogin: true + } + }).state('settingsBackupList', { + url:"/settings/backup/list", + templateUrl: "partials/backup/backup-list.html?mcv=29", + controller: "BackupControllerList", + data: { + requireLogin: true + } + }).state('settingsBackupAuto', { + url:"/settings/backup/settings", + templateUrl: "partials/backup/automatic-backup-settings.html?mcv=29", + controller: "BackupControllerAutoSettings", + data: { + requireLogin: true + } + }) + + /* Login */ + .state('login', { + url:"/login", + templateUrl: "partials/authentication/login.html?mcv=29", + controller: "LoginController", + data: { + requireLogin: false + }, + params: { + 'toState': 'dashboardMain', // default state to proceed to after login + 'toParams': {} + }, + }); +}); + + +//McNavCtrl +myControllerModule.controller('McNavBarCtrl', function($scope, $location, $translate, $state, mchelper, SettingsFactory, CommonServices) { + $scope.isCollapsed = true; + $scope.mchelper = mchelper; + $scope.$state = $state; + + $scope.isAuthenticated = function () { + return mchelper.internal.currentUser; + }; + + $scope.changeLanguage = function (lang) { + $translate.use(lang.id); + $scope.languageId = lang.id; + mchelper.cfg.languageId = lang.id; + mchelper.cfg.language = lang.displayName; + //Update selected language + if(mchelper.user.permission === 'Super admin'){ + SettingsFactory.updateLanguage(lang.displayName); + } + //Update mchelper + CommonServices.saveMchelper(mchelper); + }; + + //Show hide main menu + $scope.showHideMainMenu = function () { + if(mchelper.userSettings.hideMenu){ + mchelper.userSettings.hideMenu = false; + }else{ + mchelper.userSettings.hideMenu = true; + } + //Update mchelper + CommonServices.saveMchelper(mchelper); + }; +}); + +myControllerModule.run(function ($rootScope, $state, $location, $http, mchelper, $translate, editableOptions, CommonServices, $window) { + //Load mchelper from cookies + CommonServices.loadMchelper(); + + // keep user logged in after page refresh + if(!mchelper){ + CommonServices.saveMchelper(CommonServices.loadMchelper()); + }; + + if(mchelper.cfg){ + $translate.use(mchelper.cfg.languageId); + } + + if (mchelper.internal.currentUser) { + $http.defaults.headers.common['Authorization'] = 'Basic ' + mchelper.internal.currentUser.authdata; // jshint ignore:line + } + + // initialise google analytics and send browser details, if enabled + if(mchelper.cfg.googleAnalyticsEnabled){ + $window.ga('create', mchelper.cfg.googleAnalyticsTid, 'auto'); + $window.ga('send', 'pageview', "/"); + } + + $rootScope.$on('$stateChangeStart', function (event, toState, toParams) { + //alert(angular.toJson(toState)); + if(toState.name.indexOf('login') === 0){ + angular.element( document.querySelector( '#rootId' ) ).addClass( "login-pf" ); + angular.element( document.querySelector( '#rootView' ) ).removeClass( "container-fluid top-buffer-m top-buffer-nm" ); + }else{ + angular.element( document.querySelector( '#rootId' ) ).removeClass( "login-pf" ); + if(!mchelper.userSettings.hideMenu){ + angular.element( document.querySelector( '#rootView' ) ).addClass( "container-fluid top-buffer-m"); + }else{ + angular.element( document.querySelector( '#rootView' ) ).addClass( "container-fluid top-buffer-nm"); + } + } + var requireLogin = toState.data.requireLogin; + // redirect to login page if not logged in + if (requireLogin && !mchelper.internal.currentUser) { + event.preventDefault(); + //return $state.go('login'); + return $state.go('login', {'toState': toState.name, 'toParams': toParams}); + } + }); + + //update xeditable theme + editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default' + +}); + +myControllerModule.controller('LoginController', + function ($state, $scope, $rootScope, AuthenticationService, ReadFileFactory, alertService, StatusFactory, TypesFactory, SettingsFactory, displayRestError, CommonServices, mchelper, $translate, $filter) { + // load login page settings + $scope.loginSettings = {}; + // reset login status + AuthenticationService.ClearCredentials(); + // remove mchelper cookies + //CommonServices.clearCookies(); + //Update login page details + ReadFileFactory.getConfigFile(function(configFile){ + $scope.loginSettings = configFile; + //Update language + $translate.use($scope.loginSettings.languageId); + }); + + $scope.login = function () { + $scope.dataLoading = true; + AuthenticationService.Login($scope.username, $scope.password, function(authResponse) { + if(authResponse.success) { + AuthenticationService.SetCredentials($scope.username, $scope.password); + mchelper.user = authResponse.user;//Update user details + StatusFactory.getConfig(function(response) { + mchelper.cfg = response;//Update config + //Update language + $translate.use(mchelper.cfg.languageId); + TypesFactory.getLanguages(function(langResponse){ + mchelper.languages = langResponse; + SettingsFactory.getUserSettings(function(userNativeSettings){ + mchelper.userSettings = userNativeSettings; + mchelper.userSettings.hideMenu = false; + //Store all the configurations locally + CommonServices.saveMchelper(mchelper); + }); + }); + },function(error){ + displayRestError.display(error); + }); + //$state.go('dashboard'); + $state.go($state.params.toState, $state.params.toParams); + } else { + if(authResponse.message){ + alertService.danger(authResponse.message); + }else{ + alertService.danger($filter('translate')('INVALID_USERNAME_OR_PASSWORD')); + } + $scope.dataLoading = false; + } + }); + }; + }); + +myControllerModule.filter('millSecondsToTimeString', function() { + return function(millseconds) { + var seconds = Math.floor(millseconds / 1000); + var tmpSeconds = seconds % 60; + var days = Math.floor(seconds / 86400); + var hours = Math.floor((seconds % 86400) / 3600); + var minutes = Math.floor(((seconds % 86400) % 3600) / 60); + var timeString = ''; + if(days > 0){ + timeString += (days > 1) ? (days + " days ") : (days + " day "); + } + if(hours >0){ + timeString += (hours > 1) ? (hours + " hours ") : (hours + " hour "); + } + if(minutes > 0){ + timeString += (minutes >1) ? (minutes + " minutes ") : (minutes + " minute "); + } + if(tmpSeconds >= 0){ + timeString += (tmpSeconds >1) ? (tmpSeconds + " seconds ") : (tmpSeconds + " second "); + } + return timeString; + } +}); + +myControllerModule.filter('byteToMBsizeConvertor', function() { + return function(sizeInByte) { + if(sizeInByte < 0){ + return "n/a"; + } + return Math.floor(sizeInByte /(1024 * 1024)) + " MB"; + } +}); + +myControllerModule.filter('byteToFriendlyConvertor', function() { + return function(sizeInByte) { + if(sizeInByte < 0){ + return "n/a"; + }else if((sizeInByte /(1024 * 1024)) > 1024){ + return (sizeInByte /(1024 * 1024 * 1024)).toFixed(2) + " GB"; + }else if((sizeInByte /(1024)) > 1024){ + return (sizeInByte /(1024 * 1024)).toFixed(2) + " MB"; + }else if(sizeInByte > 1024){ + return (sizeInByte /1024).toFixed(2) + " KB"; + } + return sizeInByte + " Bytes"; + } +}); + +myControllerModule.filter('mcResourceRepresentation', function() { + return function(text){ + if(text === undefined){ + return undefined; + } + return text.replace(/>>>/g, '') + .replace(/>>/g, '') + .replace(/\[RG\]:/g, ' ') + .replace(/\[G\]:/g, ' ') + .replace(/\[N\]:/g, ' ') + .replace(/\[S\]:/g, ' ') + .replace(/\[SV\]:/g, '') + .replace(/\[T\]:/g, ' ') + .replace(/\[RD\]:/g, ' '); + } +}); + + +myControllerModule.filter('mcHtml', function($sce) { + return function(htmlText) { + return $sce.trustAsHtml(htmlText); + //return htmlText + }; +}); + +myControllerModule.filter('slice', function() { + return function(arr, start, end) { + return (arr || []).slice(start, end); + }; +}); + +/** + * i18n Language support + * */ + +myControllerModule.config(function($translateProvider) { + // Enable escaping of HTML + //$translateProvider.useSanitizeValueStrategy('sanitize'); + $translateProvider.useSanitizeValueStrategy(null); + $translateProvider.useStaticFilesLoader({ + prefix: 'languages/mc_locale_gui-', + suffix: '.json' + }); + $translateProvider.preferredLanguage('en_us'); + +}); + +//Dashboard custom layouts +myControllerModule.config(function(dashboardProvider){ + dashboardProvider + .structure('4-4-4/12', { + rows: [{ + columns: [{ + styleClass: 'col-md-4' + }, { + styleClass: 'col-md-4' + }, { + styleClass: 'col-md-4' + }] + }, { + columns: [{ + styleClass: 'col-md-12' + }] + }] + }).structure('6-6/12', { + rows: [{ + columns: [{ + styleClass: 'col-md-6' + }, { + styleClass: 'col-md-6' + }] + }, { + columns: [{ + styleClass: 'col-md-12' + }] + }] + }); +}); + +//Items Delete Modal +myControllerModule.controller('ControllerDeleteModal', function ($scope, $uibModalInstance, $sce, $filter) { + $scope.header = $filter('translate')('DELETE_ITEMS'); + $scope.deleteMsg = $filter('translate')('DELETE_MESSAGE'); + $scope.remove = function() { + $uibModalInstance.close(); + }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + +/* +//Global exception handler +myControllerModule.factory('$exceptionHandler', function () { + return function errorCatcherHandler(exception, cause) { + console.log('Exception cause:'+cause+', Exception:'+angular.toJson(exception)); + //throw exception; + }; +}); +*/ diff --git a/www/controllers/additional-headers.js b/www/controllers/additional-headers.js new file mode 100644 index 0000000..7f45870 --- /dev/null +++ b/www/controllers/additional-headers.js @@ -0,0 +1,50 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//Additional headers update controller +myControllerModule.controller('AdditionalHeadersUpdateController', function ($scope, $stateParams, $state, + SettingsFactory, mchelper, alertService, displayRestError, $filter, CommonServices, $base64) { + $scope.mchelper = mchelper; + $scope.additionalHeaders = {}; + + //Get data + $scope.loadData = function(){ + SettingsFactory.getHtmlAdditionalHeaders(function(response){ + $scope.additionalHeaders = response; + $scope.cssFiles = response.links.join('\n'); + $scope.scriptFiles = response.scripts.join('\n'); + },function(error){ + displayRestError.display(error); + }); + }; + + //GUI page settings + $scope.headerStringAdd = $filter('translate')('HTML_ADDITIONAL_HEADERS'); + $scope.cancelButtonState = "additionalHeadersUpdate"; //Cancel button url + $scope.saveProgress = false; + $scope.loadData(); + + $scope.save = function(){ + $scope.saveProgress = true; + SettingsFactory.updateHtmlAdditionalHeaders($scope.additionalHeaders, function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $scope.saveProgress = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); diff --git a/www/controllers/adf-widgets/adf-myc-asg/adf-myc-a-sensor-graph.js b/www/controllers/adf-widgets/adf-myc-asg/adf-myc-a-sensor-graph.js new file mode 100644 index 0000000..30357d9 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-asg/adf-myc-a-sensor-graph.js @@ -0,0 +1,159 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-a-sensor-graph', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycSingleSensorGraph', { + title: 'A sensor graphical view', + description: 'Displays a sensor graphical view', + templateUrl: 'controllers/adf-widgets/adf-myc-asg/view.html?mcv=29', + controller: 'mycSingleSensorGraphController', + controllerAs: 'mycSingleSensorGraph', + config: { + variableId:null, + withMinMax:false, + chartFromTimestamp:'3600000', + refreshTime:30, + marginTop:5, + marginRight:20, + marginBottom:60, + marginLeft:65, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-asg/edit.html?mcv=29', + controller: 'mycSingleSensorGraphEditController', + controllerAs: 'mycSingleSensorGraphEdit', + } + }); + }) + .controller('mycSingleSensorGraphController', function($scope, $interval, config, mchelper, $filter, MetricsFactory, TypesFactory, CommonServices){ + var mycSingleSensorGraph = this; + + mycSingleSensorGraph.showLoading = true; + mycSingleSensorGraph.showError = false; + mycSingleSensorGraph.isSyncing = false; + mycSingleSensorGraph.variables = {}; + $scope.tooltipEnabled = false; + $scope.hideVariableName=true; + $scope.cs = CommonServices; + + CommonServices.updateGraphMarginDefault(config); + + mycSingleSensorGraph.chartOptions = { + chart: { + type: 'lineChart', + noErrorCheck: true, + height: 225, + margin : { + top: config.marginTop, + right: config.marginRight, + bottom: config.marginBottom, + left: config.marginLeft, + }, + color: ["#2ca02c","#1f77b4", "#ff7f0e"], + noData:"No data available.", + x: function(d){return d[0];}, + y: function(d){return d[1];}, + useVoronoi: false, + clipEdge: false, + useInteractiveGuideline: true, + xAxis: { + showMaxMin: false, + tickFormat: function(d) { + return d3.time.format('hh:mm a')(new Date(d)) + }, + //axisLabel: 'Timestamp', + rotateLabels: -20 + }, + yAxis: { + tickFormat: function(d){ + return d3.format(',.2f')(d); + }, + axisLabelDistance: -10, + //axisLabel: '' + }, + }, + title: { + enable: false, + text: 'Title' + } + }; + + mycSingleSensorGraph.chartTimeFormat = mchelper.cfg.dateFormat; + mycSingleSensorGraph.chartOptions.chart.xAxis.tickFormat = function(d) {return $filter('date')(d, mycSingleSensorGraph.chartTimeFormat, mchelper.cfg.timezone)}; + + function updateChart(){ + mycSingleSensorGraph.isSyncing = true; + MetricsFactory.getMetricsData({"variableId":config.variableId, "withMinMax":config.withMinMax, "start": new Date().getTime() - config.chartFromTimestamp}, function(resource){ + if(resource.length > 0){ + mycSingleSensorGraph.chartData = resource[0].chartData; + //Update display time format + mycSingleSensorGraph.chartTimeFormat = resource[0].timeFormat; + mycSingleSensorGraph.chartOptions.chart.type = resource[0].chartType; + mycSingleSensorGraph.chartOptions.chart.interpolate = resource[0].chartInterpolate; + + if(resource[0].dataType === 'Double'){ + mycSingleSensorGraph.chartOptions.chart.yAxis.tickFormat = function(d){return d3.format('.02f')(d) + ' ' + resource[0].unit}; + }else if(resource[0].dataType === 'Binary' || resource[0].dataType === 'Counter'){ + mycSingleSensorGraph.chartOptions.chart.yAxis.tickFormat = function(d){return d3.format('.0f')(d)}; + } + mycSingleSensorGraph.chartOptions.title.text = resource[0].variableType; + mycSingleSensorGraph.resourceName = resource[0].resourceName; + mycSingleSensorGraph.internalId = resource[0].internalId; + }else{ + if(config.variableId !== null){ + mycSingleSensorGraph.showError = true; + } + } + mycSingleSensorGraph.isSyncing = false; + if(mycSingleSensorGraph.showLoading){ + mycSingleSensorGraph.showLoading = false; + } + }); + } + + function updateVariables(){ + if(mycSingleSensorGraph.isSyncing){ + return; + }else if(config.variableId !== null){ + updateChart(); + }else{ + mycSingleSensorGraph.showLoading = false; + } + } + + //load graph initially + updateVariables(); + + // refresh every second + var promise = $interval(updateVariables, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }).controller('mycSingleSensorGraphEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices){ + var mycSingleSensorGraphEdit = this; + mycSingleSensorGraphEdit.variables = TypesFactory.getSensorVariables({"metricType":["Double","Binary","Counter"]}); + mycSingleSensorGraphEdit.cs = CommonServices; + }); diff --git a/www/controllers/adf-widgets/adf-myc-asg/edit.html b/www/controllers/adf-widgets/adf-myc-asg/edit.html new file mode 100644 index 0000000..a6c243f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-asg/edit.html @@ -0,0 +1,88 @@ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+ +
+ + +
+ +
+ + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-asg/view.html b/www/controllers/adf-widgets/adf-myc-asg/view.html new file mode 100644 index 0000000..80ce74a --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-asg/view.html @@ -0,0 +1,32 @@ + + +
+
+
+ +
+
+
+ +
+ + +
+
+ diff --git a/www/controllers/adf-widgets/adf-myc-cb/adf-myc-custom-buttons.js b/www/controllers/adf-widgets/adf-myc-cb/adf-myc-custom-buttons.js new file mode 100644 index 0000000..535f255 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-cb/adf-myc-custom-buttons.js @@ -0,0 +1,106 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-custom-buttons', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycCustomBtns', { + title: 'Sensor custom buttons', + description: 'Create custom buttons', + templateUrl: 'controllers/adf-widgets/adf-myc-cb/view.html?mcv=29', + controller: 'mycCusBtnsController', + controllerAs: 'mycCBtns', + config: { + variableId:null, + refreshTime:30, + minBtnHeight:30, + minBtnWidth:90, + buttonsJson:"[\n]", + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-cb/edit.html?mcv=29', + controller: 'mycSenVarsEditController', + controllerAs: 'mycCBtnsEdit', + } + }); + }) + .controller('mycCusBtnsController', function($scope, $interval, config, mchelper, $filter, SensorsFactory, TypesFactory, CommonServices){ + var mycCBtns = this; + + mycCBtns.showLoading = true; + mycCBtns.isSyncing = true; + mycCBtns.variable = {}; + $scope.tooltipEnabled = false; + $scope.hideVariableName=true; + $scope.cs = CommonServices; + mycCBtns.buttons = angular.fromJson(config.buttonsJson); + + + function loadVariable(){ + mycCBtns.isSyncing = true; + SensorsFactory.getVariables({'ids':config.variableId}, function(response){ + if(response.length > 0){ + mycCBtns.variable = response[0]; + } + mycCBtns.isSyncing = false; + if(mycCBtns.showLoading){ + mycCBtns.showLoading = false; + } + }); + }; + + function updateVariable(){ + if(mycCBtns.isSyncing){ + return; + }else if(config.variableId){ + loadVariable(); + } + } + + //load variables initially + loadVariable(); + //updateVariables(); + + //Update Variable / Send Payload + $scope.updateSVariable = function(button){ + var variable = angular.copy(mycCBtns.variable); + variable.value = button.payload; + SensorsFactory.updateVariable(variable, function(){ + //update Success + loadVariable(); + },function(error){ + displayRestError.display(error); + }); + }; + + // refresh every second + var promise = $interval(updateVariable, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }).controller('mycCusBtnsEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices){ + var mycCBtnsEdit = this; + mycCBtnsEdit.cs = CommonServices; + mycCBtnsEdit.variables = TypesFactory.getSensorVariables(); + }); diff --git a/www/controllers/adf-widgets/adf-myc-cb/edit.html b/www/controllers/adf-widgets/adf-myc-cb/edit.html new file mode 100644 index 0000000..37c04dd --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-cb/edit.html @@ -0,0 +1,49 @@ + +
+
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ + {{ 'BUTTON_SETTINGS' | translate }} + +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} + + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-cb/view.html b/www/controllers/adf-widgets/adf-myc-cb/view.html new file mode 100644 index 0000000..5b6da79 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-cb/view.html @@ -0,0 +1,36 @@ + + +
+
+
+ +
+
+ {{mycCBtns.variable.value}} {{mycCBtns.variable.unit}} +
+
+ +
+
+ +
+
diff --git a/www/controllers/adf-widgets/adf-myc-cw/adf-myc-custom-widget.js b/www/controllers/adf-widgets/adf-myc-cw/adf-myc-custom-widget.js new file mode 100644 index 0000000..3a3d1ad --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-cw/adf-myc-custom-widget.js @@ -0,0 +1,102 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +'use strict'; + +angular.module('adf.widget.myc-custom-widget', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycCustomWidget', { + title: 'Custom widget', + description: 'Make your own widget with script and template', + templateUrl: 'controllers/adf-widgets/adf-myc-cw/view.html?mcv=29', + controller: 'mycCustomWidgetController', + controllerAs: 'mycCustomWidget', + config: { + script: null, + template: null, + refreshTime:-1, + bindings: '{}', + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-cw/edit.html?mcv=29', + controller: 'mycCustomWidgetEditController', + controllerAs: 'mycCustomWidgetEdit', + } + }); + }) + .controller('mycCustomWidgetController', function($scope, $interval, config, TemplatesFactory, $sce, mchelper, CommonServices){ + var mycCustomWidget = this; + mycCustomWidget.showLoading = true; + mycCustomWidget.isSyncing = false; + mycCustomWidget.htmlData = null; + mycCustomWidget.trustedHtml = ""; + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + + function updateState(){ + mycCustomWidget.dataAvailable = true; + mycCustomWidget.isSyncing = false; + if(mycCustomWidget.showLoading){ + mycCustomWidget.showLoading = false; + } + }; + + function loadData(){ + mycCustomWidget.isSyncing = true; + TemplatesFactory.getHtml({'template':config.template, 'script':config.script, 'scriptBindings':JSON.stringify(eval('('+config.bindings+')'))}, function(response){ + mycCustomWidget.htmlData = response.message; + mycCustomWidget.trustedHtml = $sce.trustAsHtml(response.message); + updateState(); + },function(error){ + mycCustomWidget.htmlData = '
'+error.data.errorMessage+'
'; + updateState(); + }); + }; + + function updateData(){ + if(mycCustomWidget.isSyncing){ + return; + }else if(config.template !== null){ + loadData(); + } + } + + //load variables initially + if(config.dataKey !== null){ + updateData(); + }else{ + mycCustomWidget.showLoading = false; + } + + // refresh every second, if config.refreshTime has positive value + if(config.refreshTime > 0){ + var promise = $interval(updateData, config.refreshTime*1000); + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + } + + }).controller('mycCustomWidgetEditController', function($scope, $interval, config, TypesFactory, ScriptsFactory, TemplatesFactory, CommonServices){ + var mycCustomWidgetEdit = this; + mycCustomWidgetEdit.cs = CommonServices; + + // load variables at startup + mycCustomWidgetEdit.scripts = ScriptsFactory.getAllLessInfo({"type":"Operation"}); + mycCustomWidgetEdit.templates = TemplatesFactory.getAllLessInfo(); + + }); diff --git a/www/controllers/adf-widgets/adf-myc-cw/edit.html b/www/controllers/adf-widgets/adf-myc-cw/edit.html new file mode 100644 index 0000000..f52b3de --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-cw/edit.html @@ -0,0 +1,46 @@ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + +
+ +
+ + + {{ 'SYNTAX_ERROR' | translate }} +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-cw/view.html b/www/controllers/adf-widgets/adf-myc-cw/view.html new file mode 100644 index 0000000..155b8bf --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-cw/view.html @@ -0,0 +1,30 @@ + + +
+
+
+
+ +
+ +
{{'NO_DATA_AVAILABLE' | translate}}
+
+
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-dsi/adf-myc-display-static-image.js b/www/controllers/adf-widgets/adf-myc-dsi/adf-myc-display-static-image.js new file mode 100644 index 0000000..e9606cb --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-dsi/adf-myc-display-static-image.js @@ -0,0 +1,132 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-dsi', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycDisplayStaticImage', { + title: 'Display image file', + description: 'Displays image file from local disk or url', + templateUrl: 'controllers/adf-widgets/adf-myc-dsi/view.html?mcv=29', + controller: 'mycDisplayStaticImageController', + controllerAs: 'mycDisplayStaticImage', + config: { + locationType:"disk", + imageNameUrl:"", + refreshTime:30, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-dsi/edit.html?mcv=29', + controller: 'mycDisplayStaticImageEditController', + controllerAs: 'mycDisplayStaticImageEdit', + } + }); + }) + .controller('mycDisplayStaticImageController', function($scope, $interval, config, mchelper, $filter, StatusFactory, displayRestError, CommonServices){ + var mycDisplayStaticImage = this; + + mycDisplayStaticImage.showLoading = true; + mycDisplayStaticImage.isSyncing = true; + mycDisplayStaticImage.fileData = {}; + mycDisplayStaticImage.error = false; + mycDisplayStaticImage.errorMsg; + mycDisplayStaticImage.imageNameUrl = config.imageNameUrl; + $scope.cs = CommonServices; + + + function loadImage(){ + mycDisplayStaticImage.isSyncing = true; + if(config.locationType === "disk"){ + StatusFactory.getStaticImageFile({'fileName':config.imageNameUrl}, function(response){ + mycDisplayStaticImage.fileData = response; + mycDisplayStaticImage.isSyncing = false; + if(mycDisplayStaticImage.showLoading){ + mycDisplayStaticImage.showLoading = false; + } + mycDisplayStaticImage.error = false; + },function(error){ + mycDisplayStaticImage.showLoading = false; + mycDisplayStaticImage.isSyncing = false; + mycDisplayStaticImage.error = true; + if(error.data && error.data.errorMessage){ + mycDisplayStaticImage.errorMsg = error.data.errorMessage; + }else{ + mycDisplayStaticImage.errorMsg = error.statusText; + displayRestError.display(error); + } + }); + }else{ + mycDisplayStaticImage.imageNameUrl = config.imageNameUrl+'?t='+Date.now(); // Image should updated on every refresh + mycDisplayStaticImage.isSyncing = false; + if(mycDisplayStaticImage.showLoading){ + mycDisplayStaticImage.showLoading = false; + } + } + }; + + function updateImage(){ + if(mycDisplayStaticImage.isSyncing){ + return; + }else if(config.imageNameUrl && config.imageNameUrl.length > 0){ + loadImage(); + } + } + + //load image initially + if(config.imageNameUrl && config.imageNameUrl.length > 0){ + loadImage(); + }else{ + mycDisplayStaticImage.showLoading = false; + } + + // refresh every second + var promise = $interval(updateImage, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }).controller('mycDisplayStaticImageEditController', function($scope, config, StatusFactory, displayRestError, CommonServices){ + var mycDisplayStaticImageEdit = this; + mycDisplayStaticImageEdit.cs = CommonServices; + mycDisplayStaticImageEdit.locationTypes = ["disk","url"]; + mycDisplayStaticImageEdit.filesList = []; + + mycDisplayStaticImageEdit.onLocationTypeChange = function(){ + config.imageNameUrl = ""; + if(config.locationType === "disk"){ + StatusFactory.getStaticImageFilesList(function(response){ + mycDisplayStaticImageEdit.filesList = response; + },function(error){ + displayRestError.display(error); + }); + } + }; + + if(config.locationType === "disk"){ + var tmpImageUrl = config.imageNameUrl; + mycDisplayStaticImageEdit.onLocationTypeChange(); + config.imageNameUrl = tmpImageUrl; + } + + + }); diff --git a/www/controllers/adf-widgets/adf-myc-dsi/edit.html b/www/controllers/adf-widgets/adf-myc-dsi/edit.html new file mode 100644 index 0000000..4f4bae8 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-dsi/edit.html @@ -0,0 +1,44 @@ + +
+
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-dsi/view.html b/www/controllers/adf-widgets/adf-myc-dsi/view.html new file mode 100644 index 0000000..3c36b6f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-dsi/view.html @@ -0,0 +1,37 @@ + + +
+
+
+ +
+ +
+ + {{mycDisplayStaticImage.errorMsg}} +
+ +
+ {{mycDisplayStaticImage.fileData.name}} + {{mycDisplayStaticImage.imageNameUrl}} +
+
+ + +
diff --git a/www/controllers/adf-widgets/adf-myc-groups/adf-myc-groups.js b/www/controllers/adf-widgets/adf-myc-groups/adf-myc-groups.js new file mode 100644 index 0000000..56c65f5 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-groups/adf-myc-groups.js @@ -0,0 +1,103 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-groups', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycGroups', { + title: 'Groups', + description: 'Change state(ON/OFF) of resources group(Scene control)', + templateUrl: 'controllers/adf-widgets/adf-myc-groups/view.html?mcv=29', + controller: 'mycGroupsController', + controllerAs: 'mycGroups', + config: { + itemIds:[], + itemsPerRow:"1", + refreshTime:30, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-groups/edit.html?mcv=29', + controller: 'mycGroupsEditController', + controllerAs: 'mycGroupsEdit', + } + }); + }) + .controller('mycGroupsController', function($scope, $interval, config, mchelper, $filter, ResourcesGroupFactory, TypesFactory, CommonServices){ + var mycGroups = this; + + mycGroups.showLoading = true; + mycGroups.isSyncing = false; + mycGroups.items = {}; + $scope.cs = CommonServices; + + function loadItems(){ + mycGroups.isSyncing = true; + ResourcesGroupFactory.getAll({'id':config.itemIds, 'page':1, 'pageLimit':30}, function(response){ + mycGroups.items = response.data; + mycGroups.isSyncing = false; + if(mycGroups.showLoading){ + mycGroups.showLoading = false; + } + }); + }; + + function updateItems(){ + if(mycGroups.isSyncing){ + return; + }else if(config.itemIds.length > 0){ + loadItems(); + } + } + + //load items initially + updateItems(); + + //On,Off switch control + $scope.changeMystate = function(item, state){ + var itemArray = [item.id]; + if(state){ + ResourcesGroupFactory.turnOnIds(itemArray, function(response) { + //alertService.success($filter('translate')('RESOURCE_GROUP_TURNED_ON')); + },function(error){ + displayRestError.display(error); + }); + }else{ + ResourcesGroupFactory.turnOffIds(itemArray, function(response) { + //alertService.success($filter('translate')('RESOURCE_GROUP_TURNED_OFF')); + },function(error){ + displayRestError.display(error); + }); + } + } + + // refresh every second + var promise = $interval(updateItems, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }).controller('mycGroupsEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices){ + var mycGroupsEdit = this; + mycGroupsEdit.cs = CommonServices; + mycGroupsEdit.items = TypesFactory.getResourcesGroups(); + }); diff --git a/www/controllers/adf-widgets/adf-myc-groups/edit.html b/www/controllers/adf-widgets/adf-myc-groups/edit.html new file mode 100644 index 0000000..51b7d41 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-groups/edit.html @@ -0,0 +1,43 @@ + +
+
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+
+ + +
+
+ + +
+
diff --git a/www/controllers/adf-widgets/adf-myc-groups/view.html b/www/controllers/adf-widgets/adf-myc-groups/view.html new file mode 100644 index 0000000..b8ac66f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-groups/view.html @@ -0,0 +1,51 @@ + + +
+ +
+
+
+ +
+ +
+
+
+

+ + {{item.name ? item.name : '-' | limitTo:18}}{{item.name.length > 18 ? '...' : ''}} + {{item.description ? item.description : '-' | limitTo:36}}{{item.description.length > 36 ? '...' : ''}} +

+
+

+ + + +

+
+
+
+
+
+
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-hm/adf-myc-heat-map.js b/www/controllers/adf-widgets/adf-myc-hm/adf-myc-heat-map.js new file mode 100644 index 0000000..b9b472c --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-hm/adf-myc-heat-map.js @@ -0,0 +1,189 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +'use strict'; + +angular.module('adf.widget.myc-heat-map', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycHeatMap', { + title: 'Heatmap chart', + description: 'Displays data as heatmap chart', + templateUrl: 'controllers/adf-widgets/adf-myc-hm/view.html?mcv=29', + controller: 'mycHeatMapController', + controllerAs: 'mycHeatMap', + config: { + dataType: null, + upperLimit: null, + thresholds: [], + colorPattern: [], + legendLabels: [], + dataKey:null, + refreshTime:30, + height:200, + maxBlockSize:50, + showLegends:true, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-hm/edit.html?mcv=29', + controller: 'mycHeatMapEditController', + controllerAs: 'mycHeatMapEdit', + } + }); + }) + .controller('mycHeatMapController', function($scope, $interval, config, mchelper, $filter, MetricsFactory,$state){ + var mycHeatMap = this; + mycHeatMap.showLoading = true; + mycHeatMap.isSyncing = false; + mycHeatMap.data = {}; + mycHeatMap.dataAvailable = false; + + function updateState(){ + if(mycHeatMap.data.length === 0){ + mycHeatMap.dataAvailable = false; + }else{ + mycHeatMap.dataAvailable = true; + } + mycHeatMap.isSyncing = false; + if(mycHeatMap.showLoading){ + mycHeatMap.showLoading = false; + } + }; + + function loadData(){ + mycHeatMap.isSyncing = true; + if(config.dataType === 'NODE_STATUS'){ + MetricsFactory.getHeatMapHeatMapNodeStatus({'nodeId':config.dataKey}, function(response){ + mycHeatMap.data = response; + updateState(); + }); + }else if(config.dataType === 'BATTERY_LEVEL'){ + MetricsFactory.getHeatMapBatteryLevel({'nodeId':config.dataKey}, function(response){ + mycHeatMap.data = response; + updateState(); + }); + }else if(config.dataType === 'SENSOR_VARIABLES'){ + MetricsFactory.getHeatMapHeatMapSensorVariable({'variableId':config.dataKey, 'upperLimit':config.upperLimit}, function(response){ + mycHeatMap.data = response; + updateState(); + }); + }else if(config.dataType === 'SCRIPT'){ + MetricsFactory.getHeatMapHeatMapScript({'scriptName':config.dataKey}, function(response){ + mycHeatMap.data = response; + updateState(); + }); + }else{ + mycHeatMap.isSyncing = false; + if(mycHeatMap.showLoading){ + mycHeatMap.showLoading = false; + } + } + //remove this line + if(mycHeatMap.showLoading){ + mycHeatMap.showLoading = false; + } + }; + + function updateData(){ + if(mycHeatMap.isSyncing){ + return; + }else if(config.dataKey !== null){ + loadData(); + } + } + + //load variables initially + if(config.dataKey !== null){ + updateData(); + }else{ + mycHeatMap.showLoading = false; + } + + //Heat map click action + mycHeatMap.hmClickAction = function(block){ + if(config.dataType === 'NODE_STATUS' || config.dataType === 'BATTERY_LEVEL'){ + $state.go("nodesDetail", {'id':block.altId}); + }else if(config.dataType === 'SENSOR_VARIABLES'){ + $state.go("sensorsDetail", {'id':block.altId}); + }else if(config.dataType === 'SCRIPT'){ + //Not implemented yet + } + }; + + // refresh every second + var promise = $interval(updateData, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + + }).controller('mycHeatMapEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, ScriptsFactory, CommonServices){ + var mycHeatMapEdit = this; + mycHeatMapEdit.cs = CommonServices; + + var generalColorPattern = ['#21781F', '#3F9C35', '#57A8D4', '#F9D67A', '#EC7A08', '#CC0000', '#F00']; + var generalThresholds = [0.1, 0.3, 0.5, 0.7, 0.8, 0.9]; + var generalLabels = ['< 10%', '10-30%', '30-50%', '50-70%', '70-80%', '80-90%', '> 90%']; + var statusColorPattern = ['#C00', '#808080', '#3F9C35']; + var statusThresholds = [0.4, 0.6]; + var statusLabels = ['Down', 'Unavailable', 'Up']; + + //Change data type + mycHeatMapEdit.changeDataType = function(){ + //Update pattern, colors, labels + if(config.dataType === 'NODE_STATUS'){ + config.thresholds = angular.copy(statusThresholds); + config.colorPattern = angular.copy(statusColorPattern); + config.legendLabels = angular.copy(statusLabels); + }else if(config.dataType){ + config.thresholds = angular.copy(generalThresholds); + config.colorPattern = angular.copy(generalColorPattern); + config.legendLabels = angular.copy(generalLabels); + } + //Change color to reverse order if selected object is battery level + if(config.dataType === 'BATTERY_LEVEL'){ + mycHeatMapEdit.swapColors(); + } + //Change object type + if(config.dataType === 'SCRIPT'){ + config.dataKey = {}; + }else{ + config.dataKey = []; + } + //load variables + loadVariables(); + }; + + var loadVariables = function(){ + if(config.dataType === 'NODE_STATUS' || config.dataType === 'BATTERY_LEVEL'){ + mycHeatMapEdit.variables = TypesFactory.getNodes(); + }else if(config.dataType === 'SENSOR_VARIABLES'){ + //Get only DOUBLE type devices + mycHeatMapEdit.variables = TypesFactory.getSensorVariables({"metricType":"Double"}); + }else if(config.dataType === 'SCRIPT'){ + mycHeatMapEdit.variables = ScriptsFactory.getAllLessInfo({"type":"Operation"}); + } + } + + // load variables at startup + loadVariables(); + + //Swap up down color + mycHeatMapEdit.swapColors = function(){ + config.colorPattern.reverse(); + } + }); diff --git a/www/controllers/adf-widgets/adf-myc-hm/edit.html b/www/controllers/adf-widgets/adf-myc-hm/edit.html new file mode 100644 index 0000000..9d0ede1 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-hm/edit.html @@ -0,0 +1,84 @@ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} + + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + {{config.legendLabels[$index] || "-"}} + +
+ +
+ + + + + + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-hm/view.html b/www/controllers/adf-widgets/adf-myc-hm/view.html new file mode 100644 index 0000000..76c1fa9 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-hm/view.html @@ -0,0 +1,36 @@ + + +
+
+
+ +
+
+
+
+ {{'NO_DATA_AVAILABLE' | translate}} +
+
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-os/adf-myc-os-commands.js b/www/controllers/adf-widgets/adf-myc-os/adf-myc-os-commands.js new file mode 100644 index 0000000..f65a10a --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-os/adf-myc-os-commands.js @@ -0,0 +1,104 @@ +/* + * Copyright 2015-2019 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-os-commands', []) + .config(function (dashboardProvider) { + dashboardProvider + .widget('mycOsCommands', { + title: 'OS Commands', + description: 'Create buttons to run Operating System Commands', + templateUrl: 'controllers/adf-widgets/adf-myc-os/view.html?mcv=${mc.gui.version}', + controller: 'mycOsCommandController', + controllerAs: 'mycOsBtns', + config: { + minBtnHeight: 30, + minBtnWidth: 90, + buttonsJson: "[\n]", + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-os/edit.html?mcv=${mc.gui.version}', + controller: 'mycOsCommandEditController', + controllerAs: 'mycOsBtnsEdit', + } + }); + }) + .controller('mycOsCommandController', function ($scope, $interval, config, mchelper, $uibModal, $filter, OSCommandFactory, CommonServices) { + var mycOsBtns = this; + + mycOsBtns.showLoading = false; + $scope.tooltipEnabled = false; + $scope.cs = CommonServices; + mycOsBtns.buttons = angular.fromJson(config.buttonsJson); + + // execute OS command directly + $scope.executeOsCommandDirect = function (button) { + var request = {}; + request.os = button.os; + request.command = button.command; + OSCommandFactory.execute(request, function (response) { + if (response.error === undefined) { + alertService.success(response.result); + } else { + alertService.danger(angular.toJson(response)); + } + }, function (error) { + displayRestError.display(error); + }); + }; + + // execute OS command with confirmation check + $scope.executeOsCommand = function (button) { + if (button.confirmation === true) { + var addModalInstance = $uibModal.open({ + templateUrl: 'controllers/adf-widgets/adf-myc-os/confirmation-modal.html?mcv=${mc.gui.version}', + controller: 'CommandConfirmationController', + resolve: { + button: button + } + }); + + addModalInstance.result.then(function () { + $scope.executeOsCommandDirect(button); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + } else { + $scope.executeOsCommandDirect(button); + } + }; + + + }).controller('mycOsCommandEditController', function ($scope, $interval, config, mchelper, $filter, CommonServices) { + var mycOsBtnsEdit = this; + mycOsBtnsEdit.cs = CommonServices; + + }).controller('CommandConfirmationController', function ($scope, $uibModalInstance, $filter, button) { + $scope.header = $filter('translate')('OS_COMMAND_EXECTION_CONFIRMATION_TITLE'); + $scope.button = button; + $scope.reboot = function () { + $uibModalInstance.close(); + }; + $scope.cancel = function () { + $uibModalInstance.dismiss('cancel'); + } + }); diff --git a/www/controllers/adf-widgets/adf-myc-os/confirmation-modal.html b/www/controllers/adf-widgets/adf-myc-os/confirmation-modal.html new file mode 100644 index 0000000..335b572 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-os/confirmation-modal.html @@ -0,0 +1,40 @@ + +
+ + + + + + + +
diff --git a/www/controllers/adf-widgets/adf-myc-os/edit.html b/www/controllers/adf-widgets/adf-myc-os/edit.html new file mode 100644 index 0000000..eab5007 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-os/edit.html @@ -0,0 +1,35 @@ + +
+ {{ 'BUTTON_SETTINGS' | translate }} + +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} + + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-os/view.html b/www/controllers/adf-widgets/adf-myc-os/view.html new file mode 100644 index 0000000..ba3e5c6 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-os/view.html @@ -0,0 +1,34 @@ + + +
+
+
+ +
+
+
+ +
+
+ +
+
diff --git a/www/controllers/adf-widgets/adf-myc-sbg/adf-myc-sensors-bullet-graph.js b/www/controllers/adf-widgets/adf-myc-sbg/adf-myc-sensors-bullet-graph.js new file mode 100644 index 0000000..6c79309 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sbg/adf-myc-sensors-bullet-graph.js @@ -0,0 +1,140 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-sensors-bullet-graph', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycSensorsBulletGraph', { + title: 'Sensors bullet graph', + description: 'Monitor sensors value with bullet graph', + templateUrl: 'controllers/adf-widgets/adf-myc-sbg/view.html?mcv=29', + controller: 'mycSensorsBulletGraphController', + controllerAs: 'mycSensorsBulletGraph', + config: { + colorUp:"#3f9c35", + colorDown:"#c00000", + chartFromTimestamp:'3600000', + variableIds:[], + refreshTime:30, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-sbg/edit.html?mcv=29', + controller: 'mycSensorsBulletGraphEditController', + controllerAs: 'mycSensorsBulletGraphEdit', + } + }); + }) + .controller('mycSensorsBulletGraphController', function($scope, $interval, config, mchelper, $filter, MetricsFactory){ + var mycSensorsBulletGraph = this; + mycSensorsBulletGraph.showLoading = true; + mycSensorsBulletGraph.isSyncing = true; + mycSensorsBulletGraph.variables = {}; + $scope.tooltipEnabled = false; + $scope.hideVariableName=true; + + mycSensorsBulletGraph.variables = {}; + + mycSensorsBulletGraph.chartOptions = { + chart: { + type: 'bulletChart', + transitionDuration: 500, + //color: config.color, //rgb(31, 119, 180) + noData: $filter('translate')('NO_DATA_AVAILABLE'), + margin: { + top: 8, + right: 10, + bottom: 21, + left: 5, + }, + } + }; + + mycSensorsBulletGraph.getChartOptions = function(){ + return angular.copy(mycSensorsBulletGraph.chartOptions); + } + + function loadVariables(){ + mycSensorsBulletGraph.isSyncing = true; + MetricsFactory.getBulletChart({'variableId':config.variableIds, "start": new Date().getTime() - config.chartFromTimestamp}, function(response){ + mycSensorsBulletGraph.sensorVariables = response; + angular.forEach(mycSensorsBulletGraph.sensorVariables, function(item){ + if(item.markers && item.markers[0]){ + if(parseFloat(item.markers[0]) <= parseFloat(item.measures[0])){ + item.color = config.colorUp; + }else{ + item.color = config.colorDown; + } + }else{ + item.color = "#1f77b4";//default color + } + }); + mycSensorsBulletGraph.isSyncing = false; + if(mycSensorsBulletGraph.showLoading){ + mycSensorsBulletGraph.showLoading = false; + } + }); + }; + + function updateVariables(){ + if(mycSensorsBulletGraph.isSyncing){ + return; + }else if(config.variableIds.length > 0){ + loadVariables(); + } + } + + //load variables initially + if(config.variableIds.length > 0){ + loadVariables(); + }else{ + mycSensorsBulletGraph.showLoading = false; + } + //updateVariables(); + + //Update Variable / Send Payload + $scope.updateVariable = function(variable){ + SensorsFactory.updateVariable(variable, function(){ + //update Success + },function(error){ + displayRestError.display(error); + }); + }; + + // refresh every second + var promise = $interval(updateVariables, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }).controller('mycSensorsBulletGraphEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices){ + var mycSensorsBulletGraphEdit = this; + mycSensorsBulletGraphEdit.cs = CommonServices; + //TODO: get only DOUBLE type devices + mycSensorsBulletGraphEdit.variables = TypesFactory.getSensorVariables({"metricType":"Double"}); + //Swap up down color + mycSensorsBulletGraphEdit.swapColor = function(){ + var colorUp = config.colorUp; + config.colorUp = config.colorDown; + config.colorDown = colorUp; + } + }); diff --git a/www/controllers/adf-widgets/adf-myc-sbg/edit.html b/www/controllers/adf-widgets/adf-myc-sbg/edit.html new file mode 100644 index 0000000..34f0e72 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sbg/edit.html @@ -0,0 +1,58 @@ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + + {{config.colorUp || "-"}} + + {{config.colorDown || "-"}} + +
+ +
+ + +
+ +
+ + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-sbg/view.html b/www/controllers/adf-widgets/adf-myc-sbg/view.html new file mode 100644 index 0000000..6bf6bc0 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sbg/view.html @@ -0,0 +1,35 @@ + + +
+
+
+ +
+ +
+
+
+ + +
+
+
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-sen-vars/adf-myc-sen-vars.js b/www/controllers/adf-widgets/adf-myc-sen-vars/adf-myc-sen-vars.js new file mode 100644 index 0000000..a18ec1f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sen-vars/adf-myc-sen-vars.js @@ -0,0 +1,147 @@ +/* + * Copyright 2015-2019 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js +'use strict'; + +angular.module('adf.widget.myc-sen-vars', []) + .config(function (dashboardProvider) { + dashboardProvider + .widget('mycSenVars', { + title: 'Sensors', + description: 'Monitor and change sensors state', + templateUrl: 'controllers/adf-widgets/adf-myc-sen-vars/view.html?mcv=29', + controller: 'mycSenVarsController', + controllerAs: 'mycSenVars', + config: { + variableIds: [], + showIcon: true, + confirmationEnabled: false, + itemsPerRow: "2", + refreshTime: 30, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-sen-vars/edit.html?mcv=29', + controller: 'mycSenVarsEditController', + controllerAs: 'mycSenVarsEdit', + } + }); + }) + .controller('mycSenVarsController', function ($scope, $interval, config, mchelper, $filter, SensorsFactory, TypesFactory, CommonServices, $uibModal) { + var mycSenVars = this; + + mycSenVars.showLoading = true; + mycSenVars.isSyncing = true; + mycSenVars.variables = {}; + $scope.tooltipEnabled = false; + $scope.hideVariableName = !config.showIcon; + $scope.cs = CommonServices; + + //HVAC heater options - HVAC flow state + $scope.hvacOptionsFlowState = TypesFactory.getHvacOptionsFlowState(); + //HVAC heater options - HVAC flow mode + $scope.hvacOptionsFlowMode = TypesFactory.getHvacOptionsFlowMode(); + //HVAC heater options - HVAC fan speed + $scope.hvacOptionsFanSpeed = TypesFactory.getHvacOptionsFanSpeed(); + + //Defined variable types list + $scope.definedVariableTypes = CommonServices.getSensorVariablesKnownList(); + + + //update rgba color + $scope.updateRgba = function (variable) { + variable.value = CommonServices.rgba2hex(variable.rgba); + $scope.updateVariable(variable); + }; + + function loadVariables() { + mycSenVars.isSyncing = true; + SensorsFactory.getVariables({ + 'ids': config.variableIds + }, function (response) { + mycSenVars.variables = response; + mycSenVars.isSyncing = false; + if (mycSenVars.showLoading) { + mycSenVars.showLoading = false; + } + }); + }; + + function updateVariables() { + if (mycSenVars.isSyncing) { + return; + } else if (config.variableIds.length > 0) { + loadVariables(); + } + } + + // load variables initially + loadVariables(); + //updateVariables(); + + // update Variable / Send Payload + $scope.updateVariableFinal = function (variable) { + SensorsFactory.updateVariable(variable, function () { + //update Success + }, function (error) { + displayRestError.display(error); + }); + }; + + // update Variable confirmation test + $scope.updateVariable = function (variable) { + if (config.confirmationEnabled) { + var addModalInstance = $uibModal.open({ + templateUrl: 'controllers/adf-widgets/adf-myc-sen-vars/confirmation-modal.html?mcv=29', + controller: 'SensorVarsConfirmationController', + resolve: { + variable: variable + } + }); + + addModalInstance.result.then(function () { + $scope.updateVariableFinal(variable); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + } else { + $scope.updateVariableFinal(variable); + } + }; + + // refresh every second + var promise = $interval(updateVariables, config.refreshTime * 1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function () { + $interval.cancel(promise); + }); + }).controller('mycSenVarsEditController', function ($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices) { + var mycSenVarsEdit = this; + mycSenVarsEdit.cs = CommonServices; + mycSenVarsEdit.variables = TypesFactory.getSensorVariables(); + }).controller('SensorVarsConfirmationController', function ($scope, $uibModalInstance, $filter, variable) { + $scope.variable = variable; + $scope.accept = function () { + $uibModalInstance.close(); + }; + $scope.cancel = function () { + $uibModalInstance.dismiss('cancel'); + } + }); diff --git a/www/controllers/adf-widgets/adf-myc-sen-vars/confirmation-modal.html b/www/controllers/adf-widgets/adf-myc-sen-vars/confirmation-modal.html new file mode 100644 index 0000000..584cb42 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sen-vars/confirmation-modal.html @@ -0,0 +1,37 @@ + +
+ + + + + + + +
diff --git a/www/controllers/adf-widgets/adf-myc-sen-vars/edit.html b/www/controllers/adf-widgets/adf-myc-sen-vars/edit.html new file mode 100644 index 0000000..668e4ac --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sen-vars/edit.html @@ -0,0 +1,54 @@ + +
+
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
diff --git a/www/controllers/adf-widgets/adf-myc-sen-vars/view.html b/www/controllers/adf-widgets/adf-myc-sen-vars/view.html new file mode 100644 index 0000000..e20fdbc --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sen-vars/view.html @@ -0,0 +1,41 @@ + + +
+
+
+ +
+ +
+
+
+

{{variable.sensorName}}

+
+ +
+
+
+
+
+ +
+ +
+ + diff --git a/www/controllers/adf-widgets/adf-myc-sgg/adf-myc-sensors-grouped-graph.js b/www/controllers/adf-widgets/adf-myc-sgg/adf-myc-sensors-grouped-graph.js new file mode 100644 index 0000000..fe1fc7f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sgg/adf-myc-sensors-grouped-graph.js @@ -0,0 +1,173 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-sensors-grouped-graph', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycSensorsGroupedGraph', { + title: 'Grouped sensors graph', + description: 'Similar type of sensors grouped graphical view', + templateUrl: 'controllers/adf-widgets/adf-myc-sgg/view.html?mcv=29', + controller: 'mycSensorsGroupedGraphController', + controllerAs: 'mycSensorsGroupedGraph', + config: { + useInteractiveGuideline:true, + enableUniqueName:false, + variableId:[], + variableType:null, + chartFromTimestamp:'3600000', + refreshTime:30, + marginTop:5, + marginRight:20, + marginBottom:60, + marginLeft:65, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-sgg/edit.html?mcv=29', + controller: 'mycSensorsGroupedGraphEditController', + controllerAs: 'mycSensorsGroupedGraphEdit', + } + }); + }) + .controller('mycSensorsGroupedGraphController', function($scope, $interval, config, mchelper, $filter, MetricsFactory, CommonServices){ + var mycSensorsGroupedGraph = this; + mycSensorsGroupedGraph.showLoading = true; + mycSensorsGroupedGraph.showError = false; + mycSensorsGroupedGraph.isSyncing = false; + mycSensorsGroupedGraph.cs = CommonServices; + + CommonServices.updateGraphMarginDefault(config); + + mycSensorsGroupedGraph.chartOptions = { + chart: { + type: 'lineChart', + noErrorCheck: true, + height: 225, + margin : { + top: config.marginTop, + right: config.marginRight, + bottom: config.marginBottom, + left: config.marginLeft, + }, + color: d3.scale.category10().range(), + noData: $filter('translate')('NO_DATA_AVAILABLE'), + x: function(d){return d[0];}, + y: function(d){return d[1];}, + useVoronoi: !config.useInteractiveGuideline, + useInteractiveGuideline: config.useInteractiveGuideline, + clipEdge: false, + xAxis: { + showMaxMin: false, + tickFormat: function(d) { + return d3.time.format('hh:mm a')(new Date(d)) + }, + //axisLabel: 'Timestamp', + rotateLabels: -20 + }, + yAxis: { + tickFormat: function(d){ + return d3.format(',.2f')(d); + }, + axisLabelDistance: -10, + //axisLabel: '' + }, + }, + title: { + enable: false, + text: 'Title' + } + }; + + mycSensorsGroupedGraph.chartTimeFormat = mchelper.cfg.dateFormat; + + + function updateChart(){ + mycSensorsGroupedGraph.isSyncing = true; + MetricsFactory.getMetricsData({"variableId":config.variableId, "chartType":"lineChart", "start": new Date().getTime() - config.chartFromTimestamp, "enableDetailedKey": config.enableUniqueName === undefined ? false : config.enableUniqueName}, function(resource){ + if(resource.length > 0){ + mycSensorsGroupedGraph.chartData = resource[0].chartData; + //Update display time format + mycSensorsGroupedGraph.chartTimeFormat = resource[0].timeFormat; + mycSensorsGroupedGraph.chartOptions.chart.xAxis.tickFormat = function(d) {return $filter('date')(d, mycSensorsGroupedGraph.chartTimeFormat, mchelper.cfg.timezone)}; + mycSensorsGroupedGraph.chartOptions.chart.interpolate = resource[0].chartInterpolate; + + if(resource[0].unit === ''){ + mycSensorsGroupedGraph.chartOptions.chart.yAxis.tickFormat = function(d){return d3.format('.0f')(d);}; + }else{ + mycSensorsGroupedGraph.chartOptions.chart.yAxis.tickFormat = function(d){return d3.format('.02f')(d) + ' ' + resource[0].unit;}; + } + + }else{ + if(config.variableId.length !== 0){ + mycSensorsGroupedGraph.showError = true; + } + } + mycSensorsGroupedGraph.isSyncing = false; + if(mycSensorsGroupedGraph.showLoading){ + mycSensorsGroupedGraph.showLoading = false; + } + }); + } + + function updateVariables(){ + if(mycSensorsGroupedGraph.isSyncing){ + return; + }else if(config.variableId.length !== 0){ + updateChart(); + }else{ + mycSensorsGroupedGraph.showLoading = false; + } + } + + //load graph initially + updateVariables(); + + // refresh every second + var promise = $interval(updateVariables, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + + + }).controller('mycSensorsGroupedGraphEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices){ + var mycSensorsGroupedGraphEdit = this; + mycSensorsGroupedGraphEdit.cs = CommonServices; + + mycSensorsGroupedGraphEdit.onVariableTypeChange = function(){ + config.variableId = []; + if(config.variableType){ + mycSensorsGroupedGraphEdit.variables = TypesFactory.getSensorVariables({"variableType":config.variableType}); + }else{ + mycSensorsGroupedGraphEdit.variables = {}; + } + }; + + //Load variable types + mycSensorsGroupedGraphEdit.variableTypes = TypesFactory.getSensorVariableTypes({"metricType":["Double","Binary", "Counter"]}); + if(config.variableType){ + var variableIdRef = config.variableId; + mycSensorsGroupedGraphEdit.onVariableTypeChange(); + config.variableId = variableIdRef; + } + }); diff --git a/www/controllers/adf-widgets/adf-myc-sgg/edit.html b/www/controllers/adf-widgets/adf-myc-sgg/edit.html new file mode 100644 index 0000000..fb8cf5c --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sgg/edit.html @@ -0,0 +1,101 @@ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
diff --git a/www/controllers/adf-widgets/adf-myc-sgg/view.html b/www/controllers/adf-widgets/adf-myc-sgg/view.html new file mode 100644 index 0000000..3e139eb --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sgg/view.html @@ -0,0 +1,32 @@ + + +
+
+
+ +
+
+
+ +
+ + +
+
+ diff --git a/www/controllers/adf-widgets/adf-myc-smg/adf-myc-sensors-mixed-graph.js b/www/controllers/adf-widgets/adf-myc-smg/adf-myc-sensors-mixed-graph.js new file mode 100644 index 0000000..d06562f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-smg/adf-myc-sensors-mixed-graph.js @@ -0,0 +1,196 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-sensors-mixed-graph', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycSensorsMixedGraph', { + title: 'Mixed sensors graph', + description: 'Different type of sensors mixed graphical view [refer document]', + templateUrl: 'controllers/adf-widgets/adf-myc-smg/view.html?mcv=29', + controller: 'mycSensorsMixedGraphController', + controllerAs: 'mycSensorsMixedGraph', + config: { + useInteractiveGuideline:false, + enableUniqueName:false, + chartInterpolate:"linear", + variableId:[], + variableType:[], + chartFromTimestamp:'3600000', + refreshTime:30, + marginTop:5, + marginRight:20, + marginBottom:60, + marginLeft:65, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-smg/edit.html?mcv=29', + controller: 'mycSensorsMixedGraphEditController', + controllerAs: 'mycSensorsMixedGraphEdit', + } + }); + }) + .controller('mycSensorsMixedGraphController', function($scope, $interval, config, mchelper, $filter, MetricsFactory, CommonServices){ + var mycSensorsMixedGraph = this; + mycSensorsMixedGraph.showLoading = true; + mycSensorsMixedGraph.showError = false; + mycSensorsMixedGraph.isSyncing = false; + + CommonServices.updateGraphMarginDefault(config); + + mycSensorsMixedGraph.chartOptions = { + chart: { + type: 'multiChart', + noErrorCheck: true, + height: 225, + margin : { + top: config.marginTop, + right: config.marginRight, + bottom: config.marginBottom, + left: config.marginLeft, + }, + color: d3.scale.category10().range(), + duration: 500, + noData: $filter('translate')('NO_DATA_AVAILABLE'), + + //x: function(d,i){return d[0];}, + //y: function(d,i){return d[1];}, + clipEdge: false, + useVoronoi: !config.useInteractiveGuideline, + useInteractiveGuideline: config.useInteractiveGuideline, + + xAxis: { + showMaxMin: false, + tickFormat: function(d) { + return d3.time.format('hh:mm a')(new Date(d)) + }, + //axisLabel: 'Timestamp', + rotateLabels: -20 + }, + yAxis1: { + axisLabelDistance: -10, + //axisLabel: '' + }, + yAxis2: { + axisLabelDistance: -10, + //axisLabel: '' + }, + }, + title: { + enable: false, + text: 'Title' + } + }; + + mycSensorsMixedGraph.chartTimeFormat = mchelper.cfg.dateFormat; + + + function updateChart(){ + mycSensorsMixedGraph.isSyncing = true; + MetricsFactory.getMetricsData({"variableId":config.variableId, "chartType":"multiChart", "start": new Date().getTime() - config.chartFromTimestamp, "enableDetailedKey": config.enableUniqueName === undefined ? false : config.enableUniqueName}, function(resource){ + if(resource.length > 0){ + mycSensorsMixedGraph.chartData = resource[0].chartData; + //Update display time format + mycSensorsMixedGraph.chartTimeFormat = resource[0].timeFormat; + mycSensorsMixedGraph.chartOptions.chart.xAxis.tickFormat = function(d) {return $filter('date')(d, mycSensorsMixedGraph.chartTimeFormat, mchelper.cfg.timezone)}; + mycSensorsMixedGraph.chartOptions.chart.interpolate = config.chartInterpolate; + + if(resource[0].unit === ''){ + mycSensorsMixedGraph.chartOptions.chart.yAxis1.tickFormat = function(d){return d3.format('.0f')(d);}; + }else{ + //Not displaying properly axis unit, there is an issue + if(config.useInteractiveGuideline){ + mycSensorsMixedGraph.chartOptions.chart.yAxis1.tickFormat = function(d){return d3.format('.02f')(d) + ' ' + resource[0].unit;}; + }else{ + mycSensorsMixedGraph.chartOptions.chart.yAxis1.tickFormat = function(d){return d3.format('.02f')(d)}; + } + } + + if(resource[0].unit2 === ''){ + mycSensorsMixedGraph.chartOptions.chart.yAxis2.tickFormat = function(d){return d3.format('.0f')(d);}; + }else{ + mycSensorsMixedGraph.chartOptions.chart.yAxis2.tickFormat = function(d){return d3.format('.02f')(d) + ' ' + resource[0].unit2;}; + } + + }else{ + if(config.variableId.length !== 0){ + mycSensorsMixedGraph.showError = true; + } + } + mycSensorsMixedGraph.isSyncing = false; + if(mycSensorsMixedGraph.showLoading){ + mycSensorsMixedGraph.showLoading = false; + } + }); + } + + function updateVariables(){ + if(mycSensorsMixedGraph.isSyncing){ + return; + }else if(config.variableId.length !== 0){ + updateChart(); + } + } + + //load graph initially + updateVariables(); + + // refresh every second + var promise = $interval(updateChart, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + + + }).controller('mycSensorsMixedGraphEditController', function($scope, $interval, config, mchelper, $filter, TypesFactory, CommonServices){ + var mycSensorsMixedGraphEdit = this; + + mycSensorsMixedGraphEdit.onVariableTypeChange = function(){ + if(config.variableType.length > 0){ + TypesFactory.getSensorVariables({"variableType":config.variableType}, function(response){ + mycSensorsMixedGraphEdit.variables = response; + var newVariableId = []; + response.forEach(function(item) { + if(config.variableId.indexOf(item.id.toString()) !== -1){ + newVariableId.push(item.id.toString()); + } + }); + config.variableId = newVariableId; + }); + }else{ + mycSensorsMixedGraphEdit.variables = {}; + config.variableId = []; + } + }; + + //Pre load + mycSensorsMixedGraphEdit.cs = CommonServices; + //Load variable types + mycSensorsMixedGraphEdit.variableTypes = TypesFactory.getSensorVariableTypes({"metricType":["Double","Binary","Counter"]}); + if(config.variableType.length > 0){ + var variableIdRef = config.variableId; + mycSensorsMixedGraphEdit.onVariableTypeChange(); + config.variableId = variableIdRef; + } + }); diff --git a/www/controllers/adf-widgets/adf-myc-smg/edit.html b/www/controllers/adf-widgets/adf-myc-smg/edit.html new file mode 100644 index 0000000..f5ccc42 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-smg/edit.html @@ -0,0 +1,120 @@ + +
+ +
+ + + {{ 'VALIDATION_ERROR_NUMBER' | translate }} +
+ +
+ + +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
diff --git a/www/controllers/adf-widgets/adf-myc-smg/view.html b/www/controllers/adf-widgets/adf-myc-smg/view.html new file mode 100644 index 0000000..6b564d3 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-smg/view.html @@ -0,0 +1,38 @@ + + +
+ +
+
+
+ +
+
+
+ +
+ + +
+
+
+ +
+ + diff --git a/www/controllers/adf-widgets/adf-myc-sunrisetime/adf-myc-sunrise.js b/www/controllers/adf-widgets/adf-myc-sunrisetime/adf-myc-sunrise.js new file mode 100644 index 0000000..530b6c0 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sunrisetime/adf-myc-sunrise.js @@ -0,0 +1,73 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-sunrisetime', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycSunriseTime', { + title: 'Sunrise and sunset time', + description: 'Displays sunrise and sunset time from MyController configuration', + templateUrl: 'controllers/adf-widgets/adf-myc-sunrisetime/view.html?mcv=29', + controller: 'mycSunriseController', + controllerAs: 'mycSunriseTime', + config: { + refreshTime:300, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-sunrisetime/edit.html?mcv=29' + } + }); + }) + .controller('mycSunriseController', function($scope, $interval, config, mchelper, $filter, SettingsFactory){ + var mycSunriseTime = this; + + mycSunriseTime.isSyncing = false; + mycSunriseTime.showLoading = true; + + function updateLocationSettings(){ + if(mycSunriseTime.isSyncing){ + return; + } + mycSunriseTime.isSyncing = true; + SettingsFactory.getLocation(function(response){ + mycSunriseTime.sunriseTime = $filter('date')(response.sunriseTime, mchelper.cfg.timeFormatWithoutSeconds, mchelper.cfg.timezone); + mycSunriseTime.sunsetTime = $filter('date')(response.sunsetTime, mchelper.cfg.timeFormatWithoutSeconds, mchelper.cfg.timezone); + mycSunriseTime.latitude = response.latitude; + mycSunriseTime.longitude = response.longitude; + mycSunriseTime.name = response.name; + mycSunriseTime.isSyncing = false; + if(mycSunriseTime.showLoading){ + mycSunriseTime.showLoading = false; + } + }); + }; + + updateLocationSettings(); + + // refresh every five minutes + var promise = $interval(updateLocationSettings, config.refreshTime*1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }); diff --git a/www/controllers/adf-widgets/adf-myc-sunrisetime/edit.html b/www/controllers/adf-widgets/adf-myc-sunrisetime/edit.html new file mode 100644 index 0000000..4bed6c4 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sunrisetime/edit.html @@ -0,0 +1,23 @@ + +
+
+ + +
+
diff --git a/www/controllers/adf-widgets/adf-myc-sunrisetime/view.html b/www/controllers/adf-widgets/adf-myc-sunrisetime/view.html new file mode 100644 index 0000000..20a3d9d --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-sunrisetime/view.html @@ -0,0 +1,28 @@ + + +
+
+
+ +
+
+
{{mycSunriseTime.sunriseTime}}{{mycSunriseTime.sunsetTime}}
+
{{mycSunriseTime.name}}
+
+
diff --git a/www/controllers/adf-widgets/adf-myc-time/adf-myc-time.js b/www/controllers/adf-widgets/adf-myc-time/adf-myc-time.js new file mode 100644 index 0000000..9fd4417 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-time/adf-myc-time.js @@ -0,0 +1,92 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// don't forget to declare this service module as a dependency in your main app constructor! +//http://js2.coffee/#coffee2js +//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js + +'use strict'; + +angular.module('adf.widget.myc-time', []) + .config(function(dashboardProvider){ + dashboardProvider + .widget('mycTime', { + title: 'MyController time', + description: 'Displays date and time of MyController', + templateUrl: 'controllers/adf-widgets/adf-myc-time/view.html?mcv=29', + controller: 'mycTimeController', + controllerAs: 'mycTime', + config: { + datePattern: 'MMM dd, yyyy', + refreshTime:120, + }, + edit: { + templateUrl: 'controllers/adf-widgets/adf-myc-time/edit.html?mcv=29' + } + }); + }) + .controller('mycTimeController', function($scope, $interval, config, mchelper, $filter, StatusFactory){ + var mycTime = this; + + mycTime.isSyncing = false; + mycTime.showLoading = true; + mycTime.mycTimestamp = {}; + + + function updateDateTime(){ + mycTime.time = $filter('date')(mycTime.mycTimestamp.timestamp, mchelper.cfg.timeFormat, mchelper.cfg.timezone); + mycTime.date = $filter('date')(mycTime.mycTimestamp.timestamp, config.datePattern, mchelper.cfg.timezone); + mycTime.timezone = mchelper.cfg.timezone; + mycTime.timezoneString = mchelper.cfg.timezoneString; + }; + + function getTimestampFromServer(){ + mycTime.isSyncing = true; + StatusFactory.getTimestamp(function(response){ + mycTime.mycTimestamp = response; + updateDateTime(); + mycTime.isSyncing = false; + if(mycTime.showLoading){ + mycTime.showLoading = false; + } + }); + }; + + function setDateAndTime(){ + if(mycTime.isSyncing){ + return; + } + if((mycTime.mycTimestamp.timestamp/1000 | 0) % config.refreshTime == 0){ + if(!mycTime.isSyncing){ + getTimestampFromServer(); + } + }else{ + mycTime.mycTimestamp.timestamp += 1000; + updateDateTime(); + } + } + + getTimestampFromServer(); + setDateAndTime(); + + // refresh every second + var promise = $interval(setDateAndTime, 1000); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + }); diff --git a/www/controllers/adf-widgets/adf-myc-time/edit.html b/www/controllers/adf-widgets/adf-myc-time/edit.html new file mode 100644 index 0000000..b95eb1f --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-time/edit.html @@ -0,0 +1,31 @@ + +
+
+ + +
+
+ + +
+

+ For the list of possible patterns, please have a look at + angular date documentation +

+
diff --git a/www/controllers/adf-widgets/adf-myc-time/view.html b/www/controllers/adf-widgets/adf-myc-time/view.html new file mode 100644 index 0000000..5c66d49 --- /dev/null +++ b/www/controllers/adf-widgets/adf-myc-time/view.html @@ -0,0 +1,28 @@ + + +
+
+
+ +
+
+
{{mycTime.time}}
+
{{mycTime.date}}, {{mycTime.timezoneString}} ({{mycTime.timezone}})
+
+
diff --git a/www/controllers/adf-widgets/edit-dummy.html b/www/controllers/adf-widgets/edit-dummy.html new file mode 100644 index 0000000..eb30d18 --- /dev/null +++ b/www/controllers/adf-widgets/edit-dummy.html @@ -0,0 +1,18 @@ + + diff --git a/www/controllers/backup.js b/www/controllers/backup.js new file mode 100644 index 0000000..fb06e24 --- /dev/null +++ b/www/controllers/backup.js @@ -0,0 +1,224 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('BackupControllerList', function(alertService, $scope, $filter, displayRestError, BackupRestoreFactory, $filter, mchelper, CommonServices, $uibModal) { + //GUI page settings + $scope.headerStringList = $filter('translate')('BACKUPS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_BACKUPS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-database"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all items + $scope.getAllItems = function(){ + BackupRestoreFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + $scope.queryResponse.$resolved = true; + displayRestError.display(error); + }); + } + + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope, 'name'); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item, 'name'); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns [*** NOT IN USE ***] + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + //Pre load + $scope.disableRunBackup = false; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + BackupRestoreFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //backup now + $scope.backupNow = function(){ + $scope.disableRunBackup = true; + BackupRestoreFactory.backupNow(function(){ + $scope.getAllItems(); + alertService.success($filter('translate')('BACKUP_COMPLETED_SUCCESSFULLY')); + $scope.disableRunBackup = false; + },function(error){ + displayRestError.display(error); + $scope.disableRunBackup = false; + }); + }; + + //Restore + $scope.restoreItemFn = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/backup/restore-confirmation-modal.html', + controller: 'BackupControllerRestore', + size: size, + resolve: {backupFile: function () {return {'name': $scope.itemIds[0]}}} + }); + + addModalInstance.result.then(function () { + BackupRestoreFactory.restore($scope.itemIds[0], function(response) { + alertService.success($filter('translate')('RESTORE_INITIATED_SUCCESSFULLY')+' '+response.message); + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//restore Modal +myControllerModule.controller('BackupControllerRestore', function ($scope, $uibModalInstance, $filter, backupFile) { + $scope.header = $filter('translate')('RESTORE_CONFIRMATION_TITLE', backupFile); + $scope.rebootMsg = $filter('translate')('RESTORE_CONFIRMATION_MESSAGE', backupFile); + $scope.restore = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + +//Automatice backup settings +myControllerModule.controller('BackupControllerAutoSettings', function ($scope, BackupRestoreFactory, mchelper, alertService, displayRestError, $filter, CommonServices) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.item.enabled = false; + $scope.cs = CommonServices; + + $scope.resetSettings = function(){ + BackupRestoreFactory.getBackupSettings(function(response) { + $scope.item = response; + //Update dropdown + if($scope.item.interval % 86400000 == 0){ + $scope.intervalLocal = $scope.item.interval / 86400000; + $scope.intervalTimeConstant = "86400000"; + $scope.intervalTimeConstantString = $filter('translate')('DAYS'); + }else if($scope.item.interval % 3600000 == 0){ + $scope.intervalLocal = $scope.item.interval / 3600000; + $scope.intervalTimeConstant = "3600000"; + $scope.intervalTimeConstantString = $filter('translate')('Hours'); + }else if($scope.item.interval % 60000 == 0){ + $scope.intervalLocal = $scope.item.interval / 60000; + $scope.intervalTimeConstant = "60000"; + $scope.intervalTimeConstantString = $filter('translate')('Minutes'); + } + },function(error){ + displayRestError.display(error); + }); + } + + //GUI page settings + $scope.saveProgress = false; + + //Load details + $scope.resetSettings(); + + $scope.save = function(){ + if($scope.item.enabled){ + //Update time + $scope.item.interval = $scope.intervalLocal * $scope.intervalTimeConstant; + } + $scope.saveProgress = true; + BackupRestoreFactory.updateBackupSettings($scope.item,function(response) { + $scope.saveProgress = false; + $scope.editEnable.backupSettings = false; + $scope.resetSettings(); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); diff --git a/www/controllers/dashboard.js b/www/controllers/dashboard.js new file mode 100644 index 0000000..a564070 --- /dev/null +++ b/www/controllers/dashboard.js @@ -0,0 +1,115 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('DashboardListController', function(alertService, +$scope, $filter, $location, $uibModal, $stateParams, $state, displayRestError, DashboardFactory, mchelper, CommonServices) { + $scope.dId; + $scope.dashboards ={}; + $scope.showLoading = false; + $scope.showLoadingMain = false; + $scope.mchelper = mchelper; + + $scope.updateDashboard = function(){ + DashboardFactory.getAll({'lessInfo':true}, function(responseDashboards){ + $scope.dashboards = $filter('orderBy')(responseDashboards, 'id', false); + if(mchelper.user.selectedDashboard === undefined){ + mchelper.user.selectedDashboard = $scope.dashboards[0].id; + //Update mchelper + CommonServices.saveMchelper(mchelper); + } + $scope.dId = mchelper.user.selectedDashboard; + $scope.showLoadingMain = false; + DashboardFactory.get({'dId':$scope.dId}, function(responseDashboard){ + $scope.model = responseDashboard; + $scope.model.titleTemplateUrl = "partials/dashboard/dashboard-title.html"; + $scope.selectedName = $scope.model.name; + }); + }); + }; + + //Initial load + $scope.updateDashboard(); + + $scope.changeDashboard = function (item){ + $scope.showLoading = true; + $scope.dId = item.id; + mchelper.user.selectedDashboard = item.id; + //Update mchelper + CommonServices.saveMchelper(mchelper); + DashboardFactory.get({'dId':$scope.dId}, function(response){ + $scope.model = response; + $scope.model.titleTemplateUrl = "partials/dashboard/dashboard-title.html"; + $scope.selectedName = $scope.model.name; + //console.log(angular.toJson($scope.model)); + $scope.showLoading = false; + }); + }; + + $scope.createNewDashboad = function(){ + if($scope.dashboards.length < mchelper.cfg.dashboardLimit){ + DashboardFactory.get({'getNew':true,'title':$filter('translate')('NEW_DASHBOARD')},function(response){ + //Update items + $scope.updateDashboard(); + }); + } + }; + + //Delete item(s) + $scope.deleteDashboad = function (size) { + if($scope.dashboards.length == 1){ + return; + } + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + DashboardFactory.delete({'dId':$scope.dId}, function(response) { + alertService.success('Deleted an item successfully!'); + $scope.dId = undefined; + mchelper.selectedDashboard = undefined; + //Update items + $scope.updateDashboard(); + },function(error){ + displayRestError.display(error); + }); + }), + function () { + } + }; + + var eventFired = function (event, name, model) { + //$scope.eventsFired.push(event); + //console.log(angular.toJson(model)); + DashboardFactory.update(model); + $scope.dashboards.forEach + angular.forEach($scope.dashboards, function(dashboard) { + if(dashboard.id === model.id){ + dashboard.title = model.title; + } + }); + }; + + $scope.$on('adfDashboardChanged', eventFired); + //$scope.$on('adfWidgetAdded', eventFired); + //$scope.$on('adfWidgetMoved', eventFired); + //$scope.$on('adfWidgetAddedToColumn', eventFired); + //$scope.$on('adfWidgetRemovedFromColumn', eventFired); + //$scope.$on('adfWidgetMovedInColumn', eventFired); +}); diff --git a/www/controllers/external-servers.js b/www/controllers/external-servers.js new file mode 100644 index 0000000..893c11f --- /dev/null +++ b/www/controllers/external-servers.js @@ -0,0 +1,267 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('ExternalServerController', function(alertService, +$scope, ExternalServersFactory, $stateParams, $state, $uibModal, displayRestError, CommonServices, mchelper, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('EXTERNAL_SERVERS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_EXTERNAL_SERVERS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-server"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.gatewayId){ + $scope.query.gatewayId = $stateParams.gatewayId; + } + + //get all ExternalServers + $scope.getAllItems = function(){ + ExternalServersFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + placeholder: $filter('translate')('FILTER_BY_ENABLED'), + filterType: 'select', + filterValues: ['True','False'], + }, + { + id: 'type', + title: 'Type', + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'select', + filterValues: ['Grafana.org','Emoncms.org'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + + //Delete items(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ExternalServersFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("externalServersAddEdit",{'id':$scope.itemIds[0]}); + } + }; + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + ExternalServersFactory.enableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_ENABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + ExternalServersFactory.disableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DISABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + +}); + + +// ExternalServers other controllers + +//Add/Edit Node +myControllerModule.controller('ExternalServersControllerAddEdit', function ($scope, $stateParams, CommonServices, ExternalServersFactory, TypesFactory, mchelper, alertService, displayRestError, $filter, $state) { + //Load mchelper variables to this scope + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + $scope.item = {}; + if($stateParams.id){ + $scope.item = ExternalServersFactory.get({"id":$stateParams.id}); + }else{ + $scope.item.enabled = true; + $scope.item.keyCase='DEFAULT'; + } + $scope.trustHostTypes = TypesFactory.getTrustHostTypes(); + $scope.types = TypesFactory.getExternalServerTypes(); + //Reset common things in all server types + $scope.item.keyFormat='$nodeEui_$sensorId_$variableType'; + $scope.item.trustHostType=''; + $scope.item.url=''; + $scope.item.username=''; + $scope.item.password=''; + + //Update type change + $scope.updateTypeChange = function (){ + if($scope.item.type === 'Sparkfun [phant.io]'){ + $scope.item.url='https://data.sparkfun.com'; + $scope.item.publicKey=''; + $scope.item.privateKey=''; + }else if($scope.item.type === 'Emoncms.org'){ + $scope.item.url='https://emoncms.org'; + $scope.item.writeApiKey=''; + }else if($scope.item.type === 'Influxdb'){ + $scope.item.database=''; + }else if($scope.item.type === 'MQTT'){ + $scope.item.keyFormat='$nodeEui/$sensorId/$variableType'; + }else if($scope.item.type === 'WUnderground'){ + $scope.item.url='https://weatherstation.wunderground.com/weatherstation/updateweatherstation.php'; + } + }; + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_EXTERNAL_SERVER'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_EXTERNAL_SERVER'); + $scope.cancelButtonState = "externalServersList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + ExternalServersFactory.update($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("externalServersList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + ExternalServersFactory.create($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("externalServersList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); diff --git a/www/controllers/firmwares.js b/www/controllers/firmwares.js new file mode 100644 index 0000000..c7e5d5d --- /dev/null +++ b/www/controllers/firmwares.js @@ -0,0 +1,631 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Firmwares type */ +myControllerModule.controller('FirmwaresTypeController', function( + alertService, $scope, $filter, FirmwaresFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('FIRMWARE_TYPES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_FIRMWARE_TYPES_SETUP'); + $scope.noItemsSystemIcon = "fa fa-file-code-o"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all items + $scope.getAllItems = function(){ + FirmwaresFactory.getAllFirmwareTypes($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + },{ + id: 'id', + title: $filter('translate')('TYPE_ID'), + placeholder: $filter('translate')('FILTER_BY_TYPE_ID'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + },{ + id: 'id', + title: $filter('translate')('TYPE_ID'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("firmwaresTypeAddEdit", {'id': $scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + FirmwaresFactory.deleteFirmwareTypes($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; +}); + + + +//add edit item +myControllerModule.controller('FirmwaresTypeControllerAddEdit', function ($scope, CommonServices, alertService, FirmwaresFactory, mchelper, $stateParams, $filter, $state) { + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_FIRMWARE_TYPE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_FIRMWARE_TYPE'); + $scope.cancelButtonState = "firmwaresTypeList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.cs = CommonServices; + + $scope.firmwareType = {}; + $scope.ftypeId = $stateParams.id; + + if($stateParams.id){ + FirmwaresFactory.getFirmwareType({"refId":$stateParams.id},function(response) { + $scope.firmwareType = response; + $scope.firmwareType.newId = $scope.firmwareType.id; + },function(error){ + displayRestError.display(error); + }); + } + + + //Save data + $scope.save = function(){ + $scope.saveProgress = true; + if($scope.firmwareType.id === undefined){ + $scope.firmwareType.id = $scope.firmwareType.newId; + } + if($stateParams.id){ + FirmwaresFactory.updateFirmwareType($scope.firmwareType,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("firmwaresTypeList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + FirmwaresFactory.createFirmwareType($scope.firmwareType,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("firmwaresTypeList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + +}); + +//type over + +/* Firmwares version */ +myControllerModule.controller('FirmwaresVersionController', function( + alertService, $scope, $filter, FirmwaresFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('FIRMWARE_VERSIONS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_FIRMWARE_VERSIONS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-file-code-o"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all items + $scope.getAllItems = function(){ + FirmwaresFactory.getAllFirmwareVersions($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'version', + title: $filter('translate')('VERSION'), + placeholder: $filter('translate')('FILTER_BY_VERSION'), + filterType: 'text' + },{ + id: 'id', + title: $filter('translate')('VERSION_ID'), + placeholder: $filter('translate')('FILTER_BY_VERSION_ID'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'version', + title: $filter('translate')('VERSION'), + sortType: 'text' + },{ + id: 'id', + title: $filter('translate')('VERSION_ID'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("firmwaresVersionAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + FirmwaresFactory.deleteFirmwareVersions($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; +}); + +//add edit item +myControllerModule.controller('FirmwaresVersionControllerAddEdit', function ($scope, CommonServices, alertService, FirmwaresFactory, mchelper, $stateParams, $filter, $state, CommonServices) { + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_FIRMWARE_VERSION'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_FIRMWARE_VERSION'); + $scope.cancelButtonState = "firmwaresVersionList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.item = {}; + $scope.itemId = $stateParams.id; + $scope.cs = CommonServices; + + if($stateParams.id){ + FirmwaresFactory.getFirmwareVersion({"refId":$stateParams.id},function(response) { + $scope.item = response; + $scope.item.newId = $scope.item.id; + },function(error){ + displayRestError.display(error); + }); + } + + + //Save data + $scope.save = function(){ + $scope.saveProgress = true; + if($scope.item.id === undefined){ + $scope.item.id = $scope.item.newId; + } + if($stateParams.id){ + FirmwaresFactory.updateFirmwareVersion($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("firmwaresVersionList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + FirmwaresFactory.createFirmwareVersion($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("firmwaresVersionList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + +}); + +//Version over + + + +/* Firmware controller */ +myControllerModule.controller('FirmwaresController', function( + alertService, $scope, $filter, FirmwaresFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('FIRMWARES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_FIRMWARES_SETUP'); + $scope.noItemsSystemIcon = "fa fa-file-code-o"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.sensorId){ + $scope.sensorId = $stateParams.sensorId; + } + + //get all items + $scope.getAllItems = function(){ + FirmwaresFactory.getAllFirmwares($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + +$scope.filterConfig = { + fields: [ + { + id: 'typeId', + title: $filter('translate')('TYPE_ID'), + placeholder: $filter('translate')('FILTER_BY_TYPE_ID'), + filterType: 'text' + },{ + id: 'versionId', + title: $filter('translate')('VERSION_ID'), + placeholder: $filter('translate')('FILTER_BY_VERSION_ID'), + filterType: 'text' + },{ + id: 'blocks', + title: $filter('translate')('BLOCKS'), + placeholder: $filter('translate')('FILTER_BY_BLOCKS'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'typeId', + title: $filter('translate')('TYPE_ID'), + sortType: 'text' + },{ + id: 'versionId', + title: $filter('translate')('VERSION_ID'), + sortType: 'text' + },{ + id: 'blocks', + title: $filter('translate')('BLOCKS'), + sortType: 'text' + },{ + id: 'timestamp', + title: $filter('translate')('UPLOADED_ON'), + sortType: 'text' + },{ + id: 'crc', + title: $filter('translate')('CRC'), + sortType: 'text' + }, + ], + onSortChange: sortChange + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("firmwaresAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + FirmwaresFactory.deleteFirmwares($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + + +//add edit item +myControllerModule.controller('FirmwaresControllerAddEdit', function ($scope, CommonServices, displayRestError, alertService, FirmwaresFactory, mchelper, $stateParams, $state, $filter, TypesFactory) { + $scope.item = {}; + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_FIRMWARE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_FIRMWARE'); + $scope.cancelButtonState = "firmwaresList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + if($stateParams.id){ + FirmwaresFactory.getFirmware({"refId":$stateParams.id},function(response) { + $scope.item = response; + },function(error){ + displayRestError.display(error); + }); + } + + //Pre load + $scope.firmwareTypes = TypesFactory.getFirmwareTypes(); + $scope.firmwareVersions = TypesFactory.getFirmwareVersions(); + + //Read File and put it in textarea + $scope.displayFileContents = function(contents, fileExtension) { + if(fileExtension === 'bin'){ + $scope.item.fileBytes = Array.from(new Uint8Array(contents)); + $scope.item.fileType = 'Bin'; + }else if(fileExtension === 'hex'){ + $scope.item.fileType = 'Hex'; + $scope.item.fileString = contents; + }else{ + $scope.item.fileType = 'Hex'; + $scope.item.fileString = contents; + } + }; + + //Save data + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + FirmwaresFactory.updateFirmware($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("firmwaresList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + FirmwaresFactory.createFirmware($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("firmwaresList"); + },function(error){ + $scope.saveProgress = false; + displayRestError.display(error); + }); + } + } + +}).directive('onReadFile', function ($parse) { + return { + restrict: 'A', + scope: false, + link: function(scope, element, attrs) { + element.bind('change', function(e) { + var onFileReadFn = $parse(attrs.onReadFile); + var reader = new FileReader(); + var fileExtension = element[0].files[0].name.split('.').pop().toLowerCase(); + reader.onload = function() { + var fileContents = reader.result; + // invoke parsed function on scope + // special syntax for passing in data + // to named parameters + // in the parsed function + // we are providing a value for the property 'contents' + // in the scope we pass in to the function + scope.$apply(function() { + onFileReadFn(scope, { + 'contents' : fileContents, + 'fileExtension': fileExtension + }); + }); + }; + if(fileExtension === 'bin'){ + reader.readAsArrayBuffer(element[0].files[0]); + }else if(fileExtension === 'hex'){ + reader.readAsText(element[0].files[0]); + }else{ + reader.readAsText(element[0].files[0]); + } + }); + } + }; +}); diff --git a/www/controllers/forward-payload.js b/www/controllers/forward-payload.js new file mode 100644 index 0000000..9a9b802 --- /dev/null +++ b/www/controllers/forward-payload.js @@ -0,0 +1,240 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('ForwardPayloadController', function(alertService, +$scope, $filter, ForwardPayloadFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams) { + //GUI page settings + $scope.headerStringList = $filter('translate')('FORWARD_PAYLOADS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_FORWARD_PAYLOADS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-forward"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.sensorId){ + $scope.query.sensorId = $stateParams.sensorId; + } + + //get all items + $scope.getAllItems = function(){ + ForwardPayloadFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'sourceId', + title: $filter('translate')('SOURCE_ID'), + placeholder: $filter('translate')('FILTER_BY_SOURCE_ID'), + filterType: 'text' + }, + { + id: 'destinationId', + title: $filter('translate')('DESTINATION_ID'), + placeholder: $filter('translate')('FILTER_BY_DESTINATION_ID'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + },{ + id: 'sourceId', + title: $filter('translate')('SOURCE_ID'), + sortType: 'text' + },{ + id: 'destinationId', + title: $filter('translate')('DESTINATION_ID'), + sortType: 'text' + } + ], + onSortChange: sortChange, + isAscending: false, + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("forwardPayloadAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ForwardPayloadFactory.deleteIds($scope.itemIds, function(response) { + alertService.success('ITEMS_DELETED_SUCCESSFULLY'); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + ForwardPayloadFactory.enableIds($scope.itemIds, function(response) { + alertService.success('ITEMS_ENABLED_SUCCESSFULLY'); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + ForwardPayloadFactory.disableIds($scope.itemIds, function(response) { + alertService.success('ITEMS_DISABLED_SUCCESSFULLY'); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + +}); + +//add edit item +myControllerModule.controller('ForwardPayloadControllerAddEdit', function ($scope, CommonServices, alertService, ForwardPayloadFactory, mchelper, $stateParams, $state, $filter, displayRestError) { + $scope.fpayload = {}; + $scope.fpayload.enabled=true; + $scope.fpayload.source={}; + $scope.fpayload.destination={}; + + if($stateParams.id){ + ForwardPayloadFactory.get({"id":$stateParams.id},function(response) { + $scope.fpayload = response; + },function(error){ + displayRestError.display(error); + }); + } + + //Get resources + $scope.getResources = function(resourceType){ + return CommonServices.getResources(resourceType); + } + + + //pre load + $scope.resources = $scope.getResources("Sensor variable"); + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_FORWARD_PAYLOAD_ENTRY'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_FORWARD_PAYLOAD_ENTRY'); + $scope.cancelButtonState = "forwardPayloadList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + + //Save data + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + ForwardPayloadFactory.update($scope.fpayload,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("forwardPayloadList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + ForwardPayloadFactory.create($scope.fpayload,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("forwardPayloadList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + +}); diff --git a/www/controllers/gateways.js b/www/controllers/gateways.js new file mode 100644 index 0000000..e4c7f56 --- /dev/null +++ b/www/controllers/gateways.js @@ -0,0 +1,353 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('GatewaysController', function(alertService, +$scope, $filter, GatewaysFactory, $state, $uibModal, displayRestError, mchelper, CommonServices) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('GATEWAYS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_GATEWAYS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-plug"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all Items + $scope.getAllItems = function(){ + GatewaysFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text', + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'select', + filterValues: ['Serial','Ethernet','MQTT'], + }, + { + id: 'networkType', + title: $filter('translate')('NETWORK_TYPE'), + placeholder: $filter('translate')('FILTER_BY_NETWORK_TYPE'), + filterType: 'select', + filterValues: ['MySensors'], + }, + { + id: 'statusMessage', + title: $filter('translate')('STATUS_MESSAGE'), + placeholder: $filter('translate')('FILTER_BY_STATUS_MESSAGE'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text', + }, + { + id: 'state', + title: $filter('translate')('STATUS'), + sortType: 'text', + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + sortType: 'text', + }, + { + id: 'networkType', + title: $filter('translate')('NETWORK_TYPE'), + sortType: 'text', + }, + { + id: 'statusMessage', + title: $filter('translate')('STATUS_MESSAGE'), + sortType: 'text', + }, + { + id: 'statusSince', + title: $filter('translate')('STATUS_SINCE'), + sortType: 'text', + } + ], + onSortChange: sortChange + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("gatewaysAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + GatewaysFactory.enable($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_ENABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + GatewaysFactory.disable($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DISABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Discover items + $scope.discover = function () { + if($scope.itemIds.length > 0){ + GatewaysFactory.discover($scope.itemIds, function(response) { + alertService.success($filter('translate')('DISCOVER_INITIATED_SUCCESSFULLY')); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Update noe informations + $scope.refreshNodesInfo = function () { + if($scope.itemIds.length > 0){ + GatewaysFactory.executeNodeInfoUpdate($scope.itemIds, function(response) { + alertService.success($filter('translate')('REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY')); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + + //Reload items + $scope.reload = function () { + if($scope.itemIds.length > 0){ + GatewaysFactory.reload($scope.itemIds, function(response) { + alertService.success($filter('translate')('RELOAD_INITIATED_SUCCESSFULLY')); + $scope.itemIds = []; + //Update display table + $scope.getAllItems(); + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + GatewaysFactory.delete($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + +}); + + +myControllerModule.controller('GatewaysControllerAddEdit', function ($scope, TypesFactory, GatewaysFactory, $stateParams, mchelper, $state, alertService, $filter, CommonServices, displayRestError) { + $scope.gateway = {}; + $scope.gateway.enabled = true; + $scope.gateway.txDelay = 0; + $scope.gateway.reconnectDelay = 120; + $scope.gatewayTypes = {}; + $scope.trustHostTypes = TypesFactory.getTrustHostTypes(); + $scope.gatewayNetworkTypes = TypesFactory.getGatewayNetworkTypes(); + $scope.cs = CommonServices; + + if($stateParams.id){ + GatewaysFactory.get({"gatewayId":$stateParams.id}, function(response){ + $scope.gateway = response; + $scope.updateGatewayTypes(); + },function(error){ + displayRestError.display(error); + }); + } + + $scope.gatewaySerialDrivers = TypesFactory.getGatewaySerialDrivers(); + + $scope.updateTypeChange = function (){ + if($scope.gateway.type === 'Serial'){ + $scope.gateway.driver=''; + $scope.gateway.portName=''; + $scope.gateway.baudRate=''; + }else if($scope.gateway.type === 'Ethernet'){ + $scope.gateway.host=''; + $scope.gateway.port=''; + $scope.gateway.aliveFrequency=''; + }else if($scope.gateway.type === 'MQTT'){ + $scope.gateway.brokerHost=''; + $scope.gateway.clientId=''; + $scope.gateway.topicsPublish=''; + $scope.gateway.topicsSubscribe=''; + $scope.gateway.username=''; + $scope.gateway.password=''; + }else if($scope.gateway.type === 'Sparkfun [phant.io]'){ + $scope.gateway.url='https://data.sparkfun.com'; + $scope.gateway.publicKey=''; + $scope.gateway.privateKey=''; + $scope.gateway.pollFrequency='1'; + $scope.gateway.recordsLimit='10'; + $scope.gateway.trustHostType=''; + }else if($scope.gateway.type === 'Hue bridge'){ + $scope.gateway.url=''; + $scope.gateway.authorizedUser=''; + $scope.gateway.pollFrequency='5'; + }else if($scope.gateway.type === 'Weather Underground'){ + $scope.gateway.apiKey=''; + $scope.gateway.location='autoip'; + $scope.gateway.pollFrequency='15'; + } + }; + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_GATEWAY'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_GATEWAY'); + $scope.cancelButtonState = "gatewaysList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + // Update gateway types + $scope.updateGatewayTypes = function(){ + $scope.gatewayTypes = TypesFactory.getGatewayTypes({"networkType": $scope.gateway.networkType}); + } + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + GatewaysFactory.update($scope.gateway,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("gatewaysList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + GatewaysFactory.create($scope.gateway,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("gatewaysList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + +}); + + +//item Detail +myControllerModule.controller('GatewaysControllerDetail', function ($scope, $stateParams, mchelper, GatewaysFactory, MetricsFactory, $filter) { + //Load mchelper variables to this scope + $scope.mchelper = mchelper; + $scope.node = {}; + $scope.headerStringList = $filter('translate')('GATEWAY_DETAILS'); + + $scope.item = GatewaysFactory.get({"gatewayId":$stateParams.id}); + $scope.statistics = GatewaysFactory.statistics({"gatewayId":$stateParams.id}); + $scope.resourceCount = MetricsFactory.getResourceCount({"resourceType":"Gateway", "resourceId":$stateParams.id}); +}); diff --git a/www/controllers/nodes.js b/www/controllers/nodes.js new file mode 100644 index 0000000..e7bacdd --- /dev/null +++ b/www/controllers/nodes.js @@ -0,0 +1,440 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('NodesController', function(alertService, +$scope, NodesFactory, $stateParams, $state, $uibModal, displayRestError, CommonServices, mchelper, $filter, $interval) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('NODES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_NODES_SETUP'); + $scope.noItemsSystemIcon = "fa fa-sitemap"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.gatewayId){ + $scope.query.gatewayId = $stateParams.gatewayId; + } + + $scope.isRunning = false; + //get all Items + $scope.getAllItems = function(){ + if($scope.isRunning){ + return; + } + $scope.isRunning = true; + NodesFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + $scope.isRunning = false; + },function(error){ + displayRestError.display(error); + $scope.isRunning = false; + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'state', + title: $filter('translate')('STATUS'), + placeholder: $filter('translate')('FILTER_BY_STATUS'), + filterType: 'select', + filterValues: ['Up','Down','Unavailable'], + }, + { + id: 'type', + title: 'Type', + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'select', + filterValues: ['Node','Repeater node'], + }, + { + id: 'eui', + title: 'EUI', + placeholder: $filter('translate')('FILTER_BY_EUI'), + filterType: 'text', + }, + { + id: 'version', + title: 'Version', + placeholder: $filter('translate')('FILTER_BY_VERSION'), + filterType: 'text', + }, + { + id: 'libVersion', + title: 'Library Version', + placeholder: $filter('translate')('FILTER_BY_LIBRARY_VERSION'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'state', + title: $filter('translate')('STATUS'), + sortType: 'text' + }, + { + id: 'eui', + title: $filter('translate')('EUI'), + sortType: 'text' + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + sortType: 'text' + }, + { + id: 'version', + title: $filter('translate')('VERSION'), + sortType: 'text' + }, + { + id: 'libVersion', + title: $filter('translate')('LIBRARY_VERSION'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + + //Delete Node(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + NodesFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("nodesAddEdit",{'id':$scope.itemIds[0]}); + } + }; + + //Upload Firmware + $scope.uploadFirmware = function (size) { + if($scope.itemIds.length > 0){ + NodesFactory.uploadFirmware($scope.itemIds,function(response) { + alertService.success($filter('translate')('FIRMWARE_UPLOAD_INITIATED')); + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Refresh nodes information + $scope.refreshNodesInfo = function (size) { + if($scope.itemIds.length > 0){ + NodesFactory.executeNodeInfoUpdate($scope.itemIds,function(response) { + alertService.success($filter('translate')('REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY')); + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Reboot a Node + $scope.reboot = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/nodes/node-reboot-modal.html', + controller: 'NodesControllerReboot', + size: size, + resolve: {} + }); + + addModalInstance.result.then(function () { + NodesFactory.reboot($scope.itemIds, function(response) { + alertService.success($filter('translate')('REBOOT_INITIATED')); + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Erase Configuration of Nodes + $scope.eraseConfiguration = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/nodes/node-erase-configuration-modal.html', + controller: 'NodesControllerEraseConfiguration', + size: size, + resolve: {} + }); + + addModalInstance.result.then(function () { + NodesFactory.eraseConfiguration($scope.itemIds, function(response) { + alertService.success($filter('translate')('ERASE_CONFIGURATION_INITIATED')); + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + // global page refresh + var promise = $interval($scope.getAllItems, mchelper.cfg.globalPageRefreshTime); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + +}); + + +// Nodes other controllers + +//Add/Edit Node +myControllerModule.controller('NodesControllerAddEdit', function ($scope, $stateParams, GatewaysFactory, NodesFactory, TypesFactory, mchelper, alertService, displayRestError, $filter, $state, CommonServices) { + //Load mchelper variables to this scope + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + $scope.node = {}; + $scope.node.altproperties='{}'; + if($stateParams.id){ + NodesFactory.get({"nodeId":$stateParams.id},function(response) { + $scope.node = response; + $scope.node.altproperties = angular.toJson(response.properties); + },function(error){ + displayRestError.display(error); + }); + } + $scope.node.gateway = {}; + $scope.gateways = TypesFactory.getGateways(); + $scope.nodeTypes = TypesFactory.getNodeTypes(); + $scope.nodeRstatuses = TypesFactory.getNodeRegistrationStatuses(); + $scope.firmwares = TypesFactory.getFirmwares(); + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_NODE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_NODE'); + $scope.cancelButtonState = "nodesList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + + $scope.save = function(){ + $scope.saveProgress = true; + $scope.node.properties = angular.fromJson(JSON.stringify(eval('('+$scope.node.altproperties+')'))); + console.log(angular.toJson($scope.node.altproperties)); + if($stateParams.id){ + NodesFactory.update($scope.node,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("nodesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + NodesFactory.create($scope.node,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("nodesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); + + +//Node Detail +myControllerModule.controller('NodesControllerDetail', function ($scope, $stateParams, mchelper, NodesFactory, TypesFactory, MetricsFactory, $filter, $timeout, $window) { + //Load mchelper variables to this scope + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.headerStringList = $filter('translate')('NODE_DETAILS'); + + $scope.item = NodesFactory.get({"nodeId":$stateParams.id}); + $scope.resourceCount = MetricsFactory.getResourceCount({"resourceType":"NODE", "resourceId":$stateParams.id}); + + $scope.chartOptions = { + chart: { + type: 'lineChart', + noErrorCheck: true, + height: 325, + width:null, + margin : { + top: 0, + right: 10, + bottom: 90, + left: 65 + }, + color: ["#2ca02c","#1f77b4", "#ff7f0e"], + + x: function(d){return d[0];}, + y: function(d){return d[1];}, + useVoronoi: false, + clipEdge: false, + transitionDuration: 500, + useInteractiveGuideline: true, + xAxis: { + showMaxMin: false, + tickFormat: function(d) { + return d3.time.format('hh:mm:ss a')(new Date(d)) + }, + //axisLabel: 'Timestamp', + rotateLabels: -20 + }, + yAxis: { + tickFormat: function(d){ + return d3.format(',.2f')(d) + ' %'; + }, + //axisLabel: '' + } + }, + title: { + enable: false, + text: 'Title' + } + }; + + //pre select, should be updated from server + TypesFactory.getMetricsSettings(function(response){ + $scope.metricsSettings = response; + $scope.chartEnableMinMax = $scope.metricsSettings.enabledMinMax; + $scope.chartFromTimestamp = $scope.metricsSettings.defaultTimeRange.toString(); + MetricsFactory.getBatteryMetrics({"nodeId":$stateParams.id, "withMinMax":$scope.chartEnableMinMax, "start": new Date().getTime() - $scope.chartFromTimestamp},function(response){ + $scope.batteryChartData = response; + //Update display time format + $scope.chartTimeFormat = response.timeFormat; + $scope.chartOptions.chart.type = response.chartType; + $scope.chartOptions.chart.interpolate = response.chartInterpolate; + $scope.fetching = false; + }); + }); + $scope.chartTimeFormat = mchelper.cfg.dateFormat; + $scope.chartOptions.chart.xAxis.tickFormat = function(d) {return $filter('date')(d, $scope.chartTimeFormat, mchelper.cfg.timezone)}; + + $scope.updateChart = function(){ + MetricsFactory.getBatteryMetrics({"nodeId":$stateParams.id, "withMinMax":$scope.chartEnableMinMax, "start": new Date().getTime() - $scope.chartFromTimestamp}, function(resource){ + $scope.batteryChartData.chartData = resource.chartData; + //Update display time format + $scope.chartTimeFormat = resource.timeFormat; + }); + } + + //Graph resize issue, see: https://github.com/krispo/angular-nvd3/issues/40 + $scope.$watch('fetching', function() { + if(!$scope.fetching) { + $timeout(function() { + $window.dispatchEvent(new Event('resize')); + $scope.fetching = true; + }, 1000); + } + }); + +}); + + +//Erase Configuration Modal +myControllerModule.controller('NodesControllerEraseConfiguration', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('ERASE_CONFIGURATION_CONFIRMATION_TITLE'); + $scope.eraseMsg = $filter('translate')('ERASE_CONFIGURATION_CONFIRMATION_MESSAGE'); + $scope.eraseNodeConfiguration = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + +//reboot Modal +myControllerModule.controller('NodesControllerReboot', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('REBOOT_CONFIRMATION_TITLE'); + $scope.rebootMsg = $filter('translate')('REBOOT_CONFIRMATION_MESSAGE'); + $scope.reboot = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); diff --git a/www/controllers/operations.js b/www/controllers/operations.js new file mode 100644 index 0000000..6a8716c --- /dev/null +++ b/www/controllers/operations.js @@ -0,0 +1,346 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('OperationsController', function(alertService, +$scope, OperationsFactory, $state, $uibModal, $stateParams, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('OPERATIONS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_OPERATIONS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-tasks"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + $scope.query.resourceId = $stateParams.resourceId; + } + + //get all Sensors + $scope.getAllItems = function(){ + OperationsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + placeholder: $filter('translate')('FILTER_BY_ENABLED'), + filterType: 'select', + filterValues: ['True','False'], + }, + { + id: 'type', + title: $filter('translate')('OPERATION_TYPE'), + placeholder: $filter('translate')('FILTER_BY_OPERATION_TYPE'), + filterType: 'select', + filterValues: ['Send payload','Send SMS','Send email','Send pushbullet note','Execute script'], + }, + { + id: 'publicAccess', + title: $filter('translate')('PUBLIC_ACCESS'), + placeholder: $filter('translate')('FILTER_BY_PUBLIC_ACCESS'), + filterType: 'select', + filterValues: ['True','False'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + }, + { + id: 'type', + title: $filter('translate')('OPERATION_TYPE'), + sortType: 'text' + }, + { + id: 'publicAccess', + title: $filter('translate')('PUBLIC_ACCESS'), + sortType: 'text' + }, + { + id: 'lastExecution', + title: $filter('translate')('LAST_EXECUTION'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + OperationsFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + OperationsFactory.enableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_ENABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + OperationsFactory.disableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DISABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("operationsAddEdit",{'id':$scope.itemIds[0]}); + } + }; + + //Clone item + $scope.clone = function () { + if($scope.itemIds.length == 1){ + $state.go("operationsAddEdit",{'id':$scope.itemIds[0], 'action': 'clone'}); + } + }; + +}); + + +//Add Edit notification controller +myControllerModule.controller('OperationsControllerAddEdit', function ($scope, $stateParams, $state, GatewaysFactory, + NodesFactory, SensorsFactory, TypesFactory, OperationsFactory, ScriptsFactory, TemplatesFactory, mchelper, alertService, displayRestError, $filter, CommonServices) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.item.enabled = true; + $scope.item.publicAccess = false; + $scope.cs = CommonServices; + + // Update resources list + $scope.getResources= function(resourceType){ + if(resourceType === 'Sensor variable'){ + return TypesFactory.getSensorVariables(); + }else if(resourceType === 'Gateway' || resourceType === 'Gateway state'){ + return TypesFactory.getGateways(); + }else if(resourceType === 'Node' || resourceType === 'Node state'){ + return TypesFactory.getNodes(); + }else if(resourceType === 'Resources group'){ + return TypesFactory.getResourcesGroups(); + }else if(resourceType === 'Rule definition'){ + return TypesFactory.getRuleDefinitions(); + }else if(resourceType === 'Timer'){ + return TypesFactory.getTimers(); + }else if(resourceType === 'Forward payload'){ + return TypesFactory.getForwardPayloads(); + }else if(resourceType === 'Value'){ + $scope.updateThresholdValueTypes($scope.item.resourceType); + return null; + }else{ + return null; + } + } + + //Update Payload operations + $scope.updatePayloadOperations= function(resourceType){ + $scope.payloadOperations = TypesFactory.getPayloadOperations({"resourceType":resourceType}); + } + + + if($stateParams.id){ + OperationsFactory.get({"id":$stateParams.id},function(response) { + $scope.item = response; + //Update Operation Type + if($scope.item.type === 'Send payload'){ + $scope.plResourcesList = $scope.getResources($scope.item.resourceType); + $scope.plResourceId = parseInt($scope.item.resourceId); + //Update payload operations + if($scope.item.resourceType !== 'Sensor variable'){ + $scope.updatePayloadOperations($scope.item.resourceType); + } + }else if($scope.item.type === 'Execute script'){ + $scope.item.altScriptBindings = angular.toJson(response.scriptBindings); + }else if($scope.item.type === 'Send email'){ + $scope.item.altTemplateBindings = angular.toJson(response.templateBindings); + } + + //Update delay time + if($scope.item.delayTime){ + $scope.item.dt = $scope.item.delayTime/1000; + } + + if($stateParams.action === 'clone'){ + $stateParams.id = undefined; + $scope.item.id = undefined; + $scope.item.name = $scope.item.name + '-' + $filter('translate')('CLONE'); + } + + },function(error){ + displayRestError.display(error); + }); + }else{ + $scope.item.altScriptBindings='{}'; + $scope.item.altTemplateBindings='{}'; + $scope.item.parseText = "Text"; + } + + //--------------pre load ----------- + $scope.resourceTypes = TypesFactory.getResourceTypes({"resourceType": "Rule definition"}); + $scope.spResourceTypes = TypesFactory.getResourceTypes({"operationType": "Send payload"}); + $scope.reqPlResourceTypes = TypesFactory.getResourceTypes({"operationType": "Request payload"}); + $scope.operationTypes = TypesFactory.getOperationTypes(); + $scope.templatesList = TemplatesFactory.getAllLessInfo(); + $scope.scriptsList = ScriptsFactory.getAllLessInfo({"type":"Operation"}); + + //GUI page settings + if(!$stateParams.action || $stateParams.action !== 'clone'){ + $scope.showHeaderUpdate = $stateParams.id; + } + $scope.headerStringAdd = $filter('translate')('ADD_OPERATION'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_OPERATION'); + $scope.cancelButtonState = "operationsList"; //Cancel button url + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.save = function(){ + //Update delay time + if($scope.item.dt){ + $scope.item.delayTime = $scope.item.dt*1000; + } + //Change string to JSON string + if($scope.item.type === 'Execute script'){ + $scope.item.scriptBindings = angular.fromJson(JSON.stringify(eval('('+$scope.item.altScriptBindings+')'))); + }else if($scope.item.type === 'Send email'){ + $scope.item.templateBindings = angular.fromJson(JSON.stringify(eval('('+$scope.item.altTemplateBindings+')'))); + } + $scope.saveProgress = true; + if($stateParams.id){ + OperationsFactory.update($scope.item, function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("operationsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + OperationsFactory.create($scope.item, function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("operationsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); diff --git a/www/controllers/resources-data.js b/www/controllers/resources-data.js new file mode 100644 index 0000000..19aff30 --- /dev/null +++ b/www/controllers/resources-data.js @@ -0,0 +1,251 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('ResourcesDataController', function(alertService, +$scope, ResourcesDataFactory, $stateParams, $state, $uibModal, displayRestError, CommonServices, mchelper, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('RESOURCES_DATA_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_RESOURCES_DATA_SETUP'); + $scope.noItemsSystemIcon = "fa fa-server"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.gatewayId){ + $scope.query.gatewayId = $stateParams.gatewayId; + } + + //get all ResourcesDatas + $scope.getAllItems = function(){ + ResourcesDataFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'resourceType', + title: $filter('translate')('RESOURCE_TYPE'), + placeholder: $filter('translate')('FILTER_BY_RESOURCE_TYPE'), + filterType: 'select', + filterValues: ['Gateway','Node','Sensor','Sensor variable'], + }, { + id: 'enabled', + title: $filter('translate')('ENABLED'), + placeholder: $filter('translate')('FILTER_BY_ENABLED'), + filterType: 'select', + filterValues: ['True','False'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'resourceType', + title: $filter('translate')('RESOURCE_TYPE'), + sortType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + + //Delete items(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ResourcesDataFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("resourcesDataAddEdit",{'id':$scope.itemIds[0]}); + } + }; + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + ResourcesDataFactory.enableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_ENABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + ResourcesDataFactory.disableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DISABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + +}); + + +// ResourcesDatas other controllers +// Add/Edit Node +myControllerModule.controller('ResourcesDataControllerAddEdit', function ($scope, $stateParams, CommonServices, ResourcesDataFactory, TypesFactory, mchelper, alertService, displayRestError, $filter, $state) { + //Load mchelper variables to this scope + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + $scope.item = {}; + if($stateParams.id){ + ResourcesDataFactory.get({"id":$stateParams.id}, function(response){ + $scope.item = response; + $scope.resourcesList = $scope.getResources($scope.item.resourceType); + },function(error){ + + }); + + }else{ + $scope.item.enabled = true; + } + + $scope.externalServers = TypesFactory.getExternalServers(); + $scope.resourceTypes = TypesFactory.getResourceTypes({"resourceType": "Resource data"}); + + // Update resources list + $scope.getResources = function(resourceType){ + if(resourceType === 'Sensor variable'){ + return TypesFactory.getSensorVariables(); + }else if(resourceType === 'Gateway'){ + return TypesFactory.getGateways(); + }else if(resourceType === 'Node'){ + return TypesFactory.getNodes(); + }else if(resourceType === 'Sensor'){ + return TypesFactory.getSensors(); + }else{ + return null; + } + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_RESOURCE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_RESOURCE'); + $scope.cancelButtonState = "resourcesDataList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + ResourcesDataFactory.update($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("resourcesDataList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + ResourcesDataFactory.create($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("resourcesDataList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); diff --git a/www/controllers/resources-group.js b/www/controllers/resources-group.js new file mode 100644 index 0000000..d110256 --- /dev/null +++ b/www/controllers/resources-group.js @@ -0,0 +1,463 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('ResourcesGroupController', function(alertService, +$scope, ResourcesGroupFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('RESOURCE_GROUPS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_RESOURCE_GROUPS_SETUP'); + $scope.noItemsSystemIcon = "pficon pficon-replicator"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all Sensors + $scope.getAllItems = function(){ + ResourcesGroupFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'description', + title: $filter('translate')('DESCRIPTION'), + placeholder: $filter('translate')('FILTER_BY_DESCRIPTION'), + filterType: 'integer', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + },{ + id: 'description', + title: $filter('translate')('DESCRIPTION'), + sortType: 'text' + },{ + id: 'state', + title: $filter('translate')('STATUS'), + sortType: 'text' + },{ + id: 'stateSince', + title: $filter('translate')('STATUS_SINCE'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + + //On,Off switch control + $scope.changeMystate = function(item, state){ + var itemArray = [item.id]; + if(state){ + ResourcesGroupFactory.turnOnIds(itemArray, function(response) { + alertService.success($filter('translate')('RESOURCE_GROUP_TURNED_ON')); + //Update display table + //$scope.getAllItems(); + },function(error){ + displayRestError.display(error); + }); + }else{ + ResourcesGroupFactory.turnOffIds(itemArray, function(response) { + alertService.success($filter('translate')('RESOURCE_GROUP_TURNED_OFF')); + //Update display table + //$scope.getAllItems(); + },function(error){ + displayRestError.display(error); + }); + } + } + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("resourcesGroupAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Turm ON items + $scope.turnOn = function () { + if($scope.itemIds.length > 0){ + ResourcesGroupFactory.turnOnIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('RESOURCE_GROUPS_TURNED_ON')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Turm OFF items + $scope.turnOff = function () { + if($scope.itemIds.length > 0){ + ResourcesGroupFactory.turnOffIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('RESOURCE_GROUPS_TURNED_OFF')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ResourcesGroupFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + + +//Add Edit item controller +myControllerModule.controller('ResourcesGroupControllerAddEdit', function ($scope, $stateParams, $state, ResourcesGroupFactory, mchelper, alertService, displayRestError, $filter) { + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_RESOURCES_GROUP'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_RESOURCES_GROUP'); + $scope.cancelButtonState = "resourcesGroupList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.mchelper = mchelper; + $scope.group = {}; + $scope.id = $stateParams.id; + + + if($stateParams.id){ + ResourcesGroupFactory.get({'_id':$stateParams.id},function(response) { + $scope.group = response; + },function(error){ + displayRestError.display(error); + }); + } + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + ResourcesGroupFactory.update($scope.group,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("resourcesGroupList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + ResourcesGroupFactory.create($scope.group,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("resourcesGroupList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); + + +//ResourcesGroup Map +//------------------------------------------------------------------------------ + +myControllerModule.controller('ResourcesGroupMapController', function(alertService, +$scope, ResourcesGroupFactory, ResourcesGroupMapFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('RESOURCE_GROUPS_MAPS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_RESOURCE_GROUPS_MAP_SETUP'); + $scope.noItemsSystemIcon = "pficon pficon-replicator"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //redirect to groups list if id not found + if(!$stateParams){ + $state.go("resourcesGroupList"); + } + + //always lock with group id + $scope.query.groupId = $stateParams.id; + + $scope.resourcesGroup = ResourcesGroupFactory.get({"id":$stateParams.id}); + + //get all items + $scope.getAllItems = function(){ + ResourcesGroupMapFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'resourceType', + title: $filter('translate')('RESOURCE_TYPE'), + placeholder: $filter('translate')('FILTER_BY_RESOURCE_TYPE'), + filterType: 'text' + }, + { + id: 'payloadOn', + title: $filter('translate')('PAYLOAD_ON'), + placeholder: $filter('translate')('FILTER_BY_PAYLOAD_ON'), + filterType: 'integer', + }, + { + id: 'payloadOff', + title: $filter('translate')('PAYLOAD_OFF'), + placeholder: $filter('translate')('FILTER_BY_PAYLOAD_OFF'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'resourceType', + title: $filter('translate')('RESOURCE_TYPE'), + sortType: 'text' + },{ + id: 'payloadOn', + title: $filter('translate')('PAYLOAD_ON'), + sortType: 'text' + }, + { + id: 'payloadOff', + title: $filter('translate')('PAYLOAD_OFF'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("resourcesGroupMapAddEdit", {'groupId':$scope.query.groupId, 'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ResourcesGroupMapFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + + +//Add Edit item controller +myControllerModule.controller('ResourcesGroupMapControllerAddEdit', function ($scope, $stateParams, $state, TypesFactory, CommonServices, ResourcesGroupMapFactory, mchelper, alertService, displayRestError, $filter) { + $scope.mchelper = mchelper; + $scope.groupMap = {}; + + if($stateParams.id){ + ResourcesGroupMapFactory.get({"id":$stateParams.id},function(response) { + $scope.groupMap = response; + //Update Resources + $scope.dspResources = $scope.getResources($scope.groupMap.resourceType); + },function(error){ + displayRestError.display(error); + }); + }else if($stateParams.groupId){ + $scope.groupMap.resourcesGroup = {}; + $scope.groupMap.resourcesGroup.id = $stateParams.groupId; + }else{ + $state.go("resourcesGroupList"); + } + + //pre load + $scope.resourceTypes = TypesFactory.getResourceTypes({"resourceType": "resources group"}); + + //Get resources + $scope.getResources = function(resourceType){ + return CommonServices.getResources(resourceType); + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_AN_ENTRY'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_AN_ENTRY'); + $scope.cancelButtonState = "resourcesGroupMapList({id:"+$stateParams.groupId+"})"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + ResourcesGroupMapFactory.update($scope.groupMap,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("resourcesGroupMapList",{id:$stateParams.groupId}); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + ResourcesGroupMapFactory.create($scope.groupMap,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("resourcesGroupMapList",{id:$stateParams.groupId}); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); diff --git a/www/controllers/resources-logs.js b/www/controllers/resources-logs.js new file mode 100644 index 0000000..734f53a --- /dev/null +++ b/www/controllers/resources-logs.js @@ -0,0 +1,272 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('ResourcesLogsController', function(alertService, +$scope, $filter, ResourcesLogsFactory, SettingsFactory, $uibModal, $stateParams, mchelper, CommonServices, $interval) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('RESOURCES_LOGS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_LOGS_AVAILABLE'); + $scope.noItemsSystemIcon = "fa fa-list"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + $scope.itemsPerPage = mchelper.userSettings.resourcesLogsItemsPerPage; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + if($stateParams.resourceId){ + $scope.query.resourceId = $stateParams.resourceId; + } + } + + + //Stop if an request sent already + var updateInprogress = false; + //get all items + $scope.getAllItems = function(){ + if(updateInprogress){ + return; + } + updateInprogress = true; + $scope.query.pageLimit = parseInt($scope.itemsPerPage); + ResourcesLogsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + updateInprogress = false; + },function(error){ + updateInprogress = false; + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'message', + title: $filter('translate')('MESSAGE'), + placeholder: $filter('translate')('FILTER_BY_MESSAGE'), + filterType: 'text' + }, + { + id: 'resourceType', + title: $filter('translate')('TYPE'), + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'select', + filterValues:['Gateway','Node','Sensor','Sensor variable','Resources group','Alarm definition','Timer'], + }, + { + id: 'logLevel', + title: $filter('translate')('LEVEL'), + placeholder: $filter('translate')('FILTER_BY_LEVEL'), + filterType: 'select', + filterValues: ['Trace','Notice','Info','Warning','Error'], + }, + { + id: 'messageType', + title: $filter('translate')('MESSAGE_TYPE'), + placeholder: $filter('translate')('FILTER_BY_MESSGAE_TYPE'), + filterType: 'select', + filterValues: ['Presentation','Set','Request','Internal','Stream'], + }, + { + id: 'logDirection', + title: $filter('translate')('DIRECTION'), + placeholder: $filter('translate')('FILTER_BY_DIRECTION'), + filterType: 'select', + filterValues: ['Internal','Sent','Received'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'timestamp', + title: $filter('translate')('TIME'), + sortType: 'alpha' + }, + { + id: 'logLevel', + title: $filter('translate')('LEVEL'), + sortType: 'alpha' + }, + { + id: 'resourceType', + title: $filter('translate')('TYPE'), + sortType: 'alpha' + }, + { + id: 'messageType', + title: $filter('translate')('MESSAGE_TYPE'), + sortType: 'alpha' + }, + { + id: 'logDirection', + title: $filter('translate')('DIRECTION'), + sortType: 'alpha' + }, + { + id: 'message', + title: $filter('translate')('MESSAGE'), + sortType: 'alpha' + } + ], + onSortChange: sortChange, + isAscending: false, + }; + + //Update items per page + $scope.updateItemsPerPage = function(itemsPerPage){ + mchelper.userSettings.resourcesLogsItemsPerPage = itemsPerPage; + SettingsFactory.saveUserSettings(mchelper.userSettings); + CommonServices.saveMchelper(mchelper); + $scope.getAllItems(); + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ResourcesLogsFactory.delete($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + function updatePage(){ + $scope.getAllItems(true); + }; + + // global page refresh + var promise = $interval(updatePage, mchelper.cfg.globalPageRefreshTime); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + +}); + +//purge resources logs +myControllerModule.controller('ResourcesLogsPurgeController', function ($scope, CommonServices, alertService, ResourcesLogsFactory, mchelper, $filter, TypesFactory) { + $scope.item = {}; + + //GUI page settings + $scope.headerStringAdd = $filter('translate')('PURGE_RESOURCES_LOGS'); + $scope.cancelButtonState = "resourcesLogsList"; //Cancel button state + $scope.saveProgress = false; + $scope.saveButtonName = $filter('translate')('PURGE'); + $scope.savingButtonName = $filter('translate')('PURGING'); + $scope.saveButtonTooltip = $filter('translate')('PURGE_WARNING'); + //$scope.isSettingChange = false; + + //Pre load + $scope.messageTypes = TypesFactory.getResourceLogsMessageTypes(); + $scope.logDirections = TypesFactory.getResourceLogsLogDirections(); + $scope.logLevels = TypesFactory.getResourceLogsLogLevels(); + + $scope.resourceTypes = TypesFactory.getResourceTypes(); + $scope.resourcesLogs = {}; + + + //Get resources + $scope.getResources = function(resourceType){ + return CommonServices.getResources(resourceType); + } + + //Convert as display string + $scope.getDateTimeDisplayFormat = function (newDate) { + return $filter('date')(newDate, mchelper.cfg.dateFormat, mchelper.cfg.timezone); + }; + + //Save data - here it's purge + $scope.save = function(){ + //Update validity from/to + if($scope.purgeBefore){ + $scope.resourcesLogs.timestamp = moment($scope.purgeBefore).format('YYYY-MM-DDTHH:mm:ss'); + } + + $scope.saveProgress = true; + ResourcesLogsFactory.purge($scope.resourcesLogs,function(response) { + alertService.success($filter('translate')('PURGE_DONE_SUCCESSFULLY')); + $scope.saveProgress = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); + diff --git a/www/controllers/roles.js b/www/controllers/roles.js new file mode 100644 index 0000000..d16dba4 --- /dev/null +++ b/www/controllers/roles.js @@ -0,0 +1,209 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('RolesControllerList', function(alertService, +$scope, SecurityFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('ROLES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_ROLES_SETUP'); + $scope.noItemsSystemIcon = "pficon pficon-registry"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all Sensors + $scope.getAllItems = function(){ + SecurityFactory.getAllRoles($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'description', + title: $filter('translate')('DESCRIPTION'), + placeholder: $filter('translate')('FILTER_BY_DESCRIPTION'), + filterType: 'text', + }, + { + id: 'permission', + title: $filter('translate')('PERMISSION'), + placeholder: $filter('translate')('FILTER_BY_PERMISSION'), + filterType: 'select', + filterValues: ['Super admin','User','MQTT user'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'description', + title: $filter('translate')('DESCRIPTION'), + sortType: 'text' + }, + { + id: 'permission', + title: $filter('translate')('PERMISSION'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("settingsRolesAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + SecurityFactory.deleteRoleIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//Add Edit item +myControllerModule.controller('RolesControllerAddEdit', function ($scope, $stateParams, $state, SecurityFactory, TypesFactory, mchelper, alertService, displayRestError, $filter) { + $scope.mchelper = mchelper; + $scope.item = {}; + + if($stateParams.id){ + SecurityFactory.getRole({"id":$stateParams.id},function(response) { + $scope.item = response; + },function(error){ + displayRestError.display(error); + }); + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_ROLE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_ROLE'); + $scope.cancelButtonState = "settingsRolesList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + //Pre load + $scope.nodes = TypesFactory.getNodes(); + $scope.sensors = TypesFactory.getSensors(); + $scope.gateways = TypesFactory.getGateways(); + $scope.users = SecurityFactory.getAllUsersSimple(); + $scope.rolePermissions = TypesFactory.getRolePermissions(); + + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + SecurityFactory.updateRole($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("settingsRolesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + SecurityFactory.createRole($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("settingsRolesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); diff --git a/www/controllers/rooms.js b/www/controllers/rooms.js new file mode 100644 index 0000000..47cea0f --- /dev/null +++ b/www/controllers/rooms.js @@ -0,0 +1,299 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('RoomsControllerList', function(alertService, +$scope, RoomsFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('ROOMS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_ROOMS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-object-group"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all Sensors + $scope.getAllItems = function(){ + RoomsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'description', + title: $filter('translate')('DESCRIPTION'), + placeholder: $filter('translate')('FILTER_BY_DESCRIPTION'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + },{ + id: 'description', + title: $filter('translate')('DESCRIPTION'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("roomsAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + RoomsFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + + +//Add Edit item controller +myControllerModule.controller('RoomsControllerAddEdit', function ($scope, $stateParams, $state, RoomsFactory, TypesFactory, mchelper, alertService, displayRestError, $filter) { + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_ROOM'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_ROOM'); + $scope.cancelButtonState = "roomsList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.sensorIds = []; + $scope.sensors = {}; + $scope.id = $stateParams.id; + + + if($stateParams.id){ + RoomsFactory.get({"id":$stateParams.id},function(response) { + $scope.item = response; + $scope.rooms = TypesFactory.getRooms({"selfId": response.id}); + },function(error){ + displayRestError.display(error); + }); + $scope.sensors = TypesFactory.getSensors({"roomId":$stateParams.id, "enableNoRoomFilter":true}); + }else{ + $scope.sensors = TypesFactory.getSensors({"enableNoRoomFilter":true}); + $scope.rooms = TypesFactory.getRooms(); + } + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + RoomsFactory.update($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("roomsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + RoomsFactory.create($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("roomsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); + +//room list with sensors detail +myControllerModule.controller('RoomsSensorsControllerList', function(alertService, $stateParams, +$scope, RoomsFactory, SensorsFactory, TypesFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.roomHeader = '/'; + $scope.showLoading = true; + $scope.noItemsSystemMsg = $filter('translate')('NO_ROOMS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-object-group"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + $scope.tooltipPlacement = 'top'; + $scope.tooltipEnabled=true; + $scope.showNoRoomsSetup=false; + $scope.queryResponse = {}; + $scope.queryResponse.query = {}; + $scope.query = {}; + $scope.query.pageLimit = -1; + $scope.query.isSimpleQuery = true; + $scope.sensorsQueryResponse = {}; + $scope.sensorsList = {}; + + //get all Sensors + $scope.getAllSensors = function(){ + SensorsFactory.getAll($scope.query, function(response) { + $scope.sensorsQueryResponse = response; + $scope.sensorsList = $scope.sensorsQueryResponse.data; + $scope.showLoading = false; + },function(error){ + displayRestError.display(error); + }); + } + + //get all items + $scope.getAllItems = function(){ + RoomsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.queryResponse.query = {}; + if(response.data.length == 0){ + $scope.queryResponse.query.totalItems = 0; + } + },function(error){ + displayRestError.display(error); + }); + } + + //pre-load + if($stateParams.id){ + $scope.query.parentId = $stateParams.id; + $scope.query.roomId = $stateParams.id; + RoomsFactory.get({"id":$stateParams.id},function(response) { + $scope.parentRoom = response; + $scope.roomHeader = $scope.parentRoom.room.fullPath; + $scope.getAllSensors(); //Get sensors + },function(error){ + displayRestError.display(error); + }); + }else{ + $scope.showNoRoomsSetup=true; + $scope.showLoading = false; + } + $scope.getAllItems(); + + //Load room + $scope.getRoom = function(item){ + $state.go("dashboardRoomsSensorsList", {'id':item.id}); + }; + + + //Load room - root + $scope.getRoomRoot = function(){ + //console.log("root room..."); + $state.go('dashboardRoomsSensorsList', {'id':''}, { reload: true }); + }; + + //Update Variable / Send Payload + $scope.updateVariable = function(variable){ + SensorsFactory.updateVariable(variable, function(){ + //update Success + },function(error){ + displayRestError.display(error); + }); + }; + + //HVAC heater options - HVAC flow state + $scope.hvacOptionsFlowState = TypesFactory.getHvacOptionsFlowState(); + //HVAC heater options - HVAC flow mode + $scope.hvacOptionsFlowMode = TypesFactory.getHvacOptionsFlowMode(); + //HVAC heater options - HVAC fan speed + $scope.hvacOptionsFanSpeed = TypesFactory.getHvacOptionsFanSpeed(); + + //Defined variable types list + $scope.definedVariableTypes = CommonServices.getSensorVariablesKnownList(); + + //Hide variable names + $scope.hideVariableName=false; + +}); diff --git a/www/controllers/rule-engine.js b/www/controllers/rule-engine.js new file mode 100644 index 0000000..e86e42a --- /dev/null +++ b/www/controllers/rule-engine.js @@ -0,0 +1,434 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('RuleEngineController', function(alertService, +$scope, RulesFactory, $state, $uibModal, $stateParams, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('RULES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_RULES_SETUP'); + $scope.noItemsSystemIcon = "fa fa-cogs"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + $scope.query.resourceId = $stateParams.resourceId; + } + + //get all Sensors + $scope.getAllItems = function(){ + RulesFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'resourceType', + title: $filter('translate')('RESOURCE_TYPE'), + placeholder: $filter('translate')('FILTER_BY_RESOURCE_TYPE'), + filterType: 'select', + filterValues: ['Gateway','Node','Sensor variable','Resources group','Script'], + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + placeholder: $filter('translate')('FILTER_BY_ENABLED'), + filterType: 'select', + filterValues: ['True','False'], + }, + { + id: 'conditionType', + title: $filter('translate')('CONDITION_TYPE'), + placeholder: $filter('translate')('FILTER_BY_CONDITION_TYPE'), + filterType: 'select', + filterValues: ['Threshold','Threshold range','Compare','State','String','Script'], + }, + { + id: 'dampeningType', + title: $filter('translate')('DAMPENING_TYPE'), + placeholder: $filter('translate')('FILTER_BY_DAMPENING_TYPE'), + filterType: 'select', + filterValues: ['None','Consecutive','Last N evaluations','Active time'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + }, + { + id: 'resourceType', + title: $filter('translate')('RESOURCE_TYPE'), + sortType: 'text' + }, + { + id: 'conditionType', + title: $filter('translate')('CONDITION_TYPE'), + sortType: 'text' + }, + { + id: 'dampeningType', + title: $filter('translate')('DAMPENING_TYPE'), + sortType: 'text' + }, + { + id: 'lastTrigger', + title: $filter('translate')('LAST_TRIGGER'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + RulesFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + RulesFactory.enableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_ENABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + RulesFactory.disableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DISABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("rulesAddEdit",{'id':$scope.itemIds[0]}); + } + }; + + //Clone item + $scope.clone = function () { + if($scope.itemIds.length == 1){ + $state.go("rulesAddEdit",{'id':$scope.itemIds[0], 'action': 'clone'}); + } + }; + +}); + + +//Add Edit alarm defination controller +myControllerModule.controller('RuleEngineControllerAddEdit', function ($scope, $stateParams, $state, GatewaysFactory, NodesFactory, SensorsFactory, TypesFactory, RulesFactory, ScriptsFactory, + mchelper, alertService, displayRestError, $filter, CommonServices) { + + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.item.ignoreDuplicate = true; + $scope.item.enabled = true; + $scope.item.disableWhenTrigger = false; + $scope.cs = CommonServices; + + // Update resources list + $scope.getResources= function(resourceType, filterValue){ + if(resourceType === 'Sensor variable'){ + return TypesFactory.getSensorVariables({'metricType':filterValue}); + }else if(resourceType === 'Gateway' || resourceType === 'Gateway state'){ + return TypesFactory.getGateways(); + }else if(resourceType === 'Node' || resourceType === 'Node state'){ + return TypesFactory.getNodes(); + }else if(resourceType === 'Resources group'){ + return TypesFactory.getResourcesGroups(); + }else if(resourceType === 'Rule definition'){ + return TypesFactory.getRuleDefinitions(); + }else if(resourceType === 'Timer'){ + return TypesFactory.getTimers(); + }else if(resourceType === 'Value'){ + $scope.updateThresholdValueTypes($scope.item.resourceType); + return null; + }else{ + return null; + } + } + + //Update operator types + $scope.getOperatorTypes = function(resourceType){ + return TypesFactory.getRuleOperatorTypes({"resourceType":resourceType}); + } + + //Update State types + $scope.updateStateTypes= function(resourceType){ + $scope.stateTypes = TypesFactory.getStateTypes({"resourceType":resourceType}); + } + + //Update Payload operations + $scope.updatePayloadOperations= function(resourceType){ + $scope.payloadOperations = TypesFactory.getPayloadOperations({"resourceType":resourceType}); + } + + //Update on condition type change + $scope.updateOnConditionTypChange = function(){ + $scope.item.resourceType = ''; + $scope.item.resourceId = ''; + if($scope.item.conditionType === 'Threshold' + || $scope.item.conditionType === 'Threshold range' + || $scope.item.conditionType === 'Compare' + || $scope.item.conditionType === 'String'){ + $scope.item.resourceType = 'Sensor variable'; + } + if($scope.item.conditionType === 'Threshold'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables({"metricType":"Double"}); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.ruleThresholdDataTypes = TypesFactory.getRuleThresholdDataTypes({"resourceType":$scope.item.resourceType}); + $scope.item.operator = ''; + $scope.item.dataType = ''; + $scope.item.data = ''; + }else if($scope.item.conditionType === 'Threshold range'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables({"metricType":"Double"}); + $scope.item.inRange = true; + $scope.item.includeOperatorLow = true; + $scope.item.includeOperatorHigh = true; + $scope.item.thresholdLow = ''; + $scope.item.thresholdHigh = ''; + }else if($scope.item.conditionType === 'Compare'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables({"metricType":"Double"}); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.item.operator = ''; + $scope.item.data2Multiplier = ''; + $scope.item.data2ResourceId = ''; + $scope.item.data2ResourceType = 'Sensor variable'; + }else if($scope.item.conditionType === 'State'){ + $scope.resourceTypes = TypesFactory.getResourceTypes({"conditionType":$scope.item.conditionType}); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.item.operator = ''; + $scope.item.state = ''; + }else if($scope.item.conditionType === 'String'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables(); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.item.ignoreCase = true; + $scope.item.operator = ''; + $scope.item.pattern = ''; + }else if($scope.item.conditionType === 'Script'){ + $scope.scriptsList = ScriptsFactory.getAllLessInfo({"type":"Condition"}); + $scope.item.resourceId = -1; + $scope.item.resourceType = 'Script'; + } + } + + + + if($stateParams.id){ + RulesFactory.get({"id":$stateParams.id},function(response) { + $scope.item = response; + if($scope.item.conditionType === 'Threshold'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables({"metricType":"Double"}); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.ruleThresholdDataTypes = TypesFactory.getRuleThresholdDataTypes({"resourceType":$scope.item.resourceType}); + }else if($scope.item.conditionType === 'Threshold range'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables({"metricType":"Double"}); + }else if($scope.item.conditionType === 'Compare'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables({"metricType":"Double"}); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.item.targetResourceType = 'Sensor variable'; + }else if($scope.item.conditionType === 'State'){ + $scope.resourceTypes = TypesFactory.getResourceTypes({"conditionType":$scope.item.conditionType}); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + $scope.updateStateTypes($scope.item.resourceType); + $scope.stateResourcesList = $scope.getResources($scope.item.resourceType, 'Binary'); + }else if($scope.item.conditionType === 'String'){ + $scope.sensorVariablesList = TypesFactory.getSensorVariables(); + $scope.ruleOperatorTypes = TypesFactory.getRuleOperatorTypes({"conditionType":$scope.item.conditionType}); + }else if($scope.item.conditionType === 'Script'){ + $scope.scriptsList = ScriptsFactory.getAllLessInfo({"type":"Condition"}); + $scope.item.altScriptBindings = angular.toJson(response.scriptBindings); + } + + + //Update dampening value + if($scope.item.dampeningType === 'Active time'){ + var item = {}; + $scope.cs.updateReadable($scope.item.dampening.activeTime, item); + $scope.item.dampening.activeTimeReadable = item.readableValue; + $scope.item.dampening.activeTimeConstant = item.timeConstant; + } + //Update re enable delay + if($scope.item.reEnable){ + var item = {}; + $scope.cs.updateReadable($scope.item.reEnableDelay, item); + $scope.item.reEnableDelayReadable = item.readableValue; + $scope.item.reEnableDelayConstant = item.timeConstant; + } + if($stateParams.action === 'clone'){ + $stateParams.id = undefined; + $scope.item.id = undefined; + $scope.item.name = $scope.item.name + '-' + $filter('translate')('CLONE'); + } + },function(error){ + displayRestError.display(error); + }); + }else{ + $scope.item.altScriptBindings='{}'; + } + + //--------------pre load ----------- + $scope.dampeningTypes = TypesFactory.getRuleDampeningTypes(); + $scope.operations = TypesFactory.getOperations(); + $scope.ruleConditionTypes = TypesFactory.getRuleConditionTypes(); + + //GUI page settings + if(!$stateParams.action || $stateParams.action !== 'clone'){ + $scope.showHeaderUpdate = $stateParams.id; + } + $scope.headerStringAdd = $filter('translate')('ADD_RULE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_RULE'); + $scope.cancelButtonState = "rulesList"; //Cancel button url + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.save = function(){ + //Update dampening active time + if($scope.item.dampeningType === 'Active time'){ + $scope.item.dampening.activeTime = $scope.cs.getMilliseconds($scope.item.dampening.activeTimeReadable, $scope.item.dampening.activeTimeConstant); + } + //Update re enable delay + if($scope.item.reEnable){ + $scope.item.reEnableDelay = $scope.cs.getMilliseconds($scope.item.reEnableDelayReadable, $scope.item.reEnableDelayConstant); + } + //Change string to JSON string + if($scope.item.conditionType === 'Script'){ + $scope.item.scriptBindings = angular.fromJson(JSON.stringify(eval('('+$scope.item.altScriptBindings+')'))); + } + $scope.saveProgress = true; + + if($stateParams.id){ + RulesFactory.update($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("rulesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + RulesFactory.create($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("rulesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); diff --git a/www/controllers/scripts.js b/www/controllers/scripts.js new file mode 100644 index 0000000..ba23242 --- /dev/null +++ b/www/controllers/scripts.js @@ -0,0 +1,271 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('ScriptsController', function(alertService, +$scope, ScriptsFactory, $state, $uibModal, $stateParams, displayRestError, mchelper, CommonServices, $filter, $base64) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('SCRIPTS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_SCRIPTS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-code"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + $scope.query.resourceId = $stateParams.resourceId; + } + + //get all items + $scope.getAllItems = function(){ + ScriptsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope, 'name'); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item, 'name'); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'select', + filterValues: ['Condition','Operation'], + }, + { + id: 'extension', + title: $filter('translate')('EXTENSION'), + placeholder: $filter('translate')('FILTER_BY_EXTENSION'), + filterType: 'select', + filterValues: ['js','groovy','py','rb'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + ScriptsFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("scriptsAddEdit",{'name':$base64.encode($scope.itemIds[0])}); + } + }; +/* + //execute item + $scope.runNow = function () { + if($scope.itemIds.length == 1){ + ScriptsFactory.runNow({"script":$scope.itemIds[0]}, function(response) { + alertService.success('Result printed in console also.
'+angular.toJson(response)); + console.log('Script['+$scope.itemIds[0]+'] result:\n'+angular.toJson(response)); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + +*/ + //Execute item + $scope.runNow = function (size) { + if($scope.itemIds.length != 1){ + return; + } + var modalInstance = $uibModal.open({ + templateUrl: 'partials/scripts/run-now-modal.html', + controller: 'ControllerScriptRunNowModal', + size: size, + resolve: {itemId: function () {return $scope.itemIds[0]}} + }); + + modalInstance.result.then(function () { + //Nothing to do... + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//Script run now Modal +myControllerModule.controller('ControllerScriptRunNowModal', function ($scope, $uibModalInstance, $filter, CommonServices, ScriptsFactory, itemId) { + $scope.header = $filter('translate')('RUN_NOW'); + $scope.cs = CommonServices; + $scope.request = {}; + $scope.request.script = itemId; + $scope.request.bindings = '{ }'; + //$uibModalInstance.close(); + $scope.runNow = function() { + $scope.runningInProgress = true; + $scope.request.scriptBindings = angular.fromJson(JSON.stringify(eval('('+$scope.request.bindings+')'))); + ScriptsFactory.runNow($scope.request, function(response) { + $scope.scriptResult = angular.toJson(response, true); + $scope.runningInProgress = false; + },function(error){ + if(error.data.errorMessage){ + $scope.scriptResult = error.data.errorMessage; + }else{ + $scope.scriptResult = angular.toJson(error.data); + } + $scope.scriptResult = angular.toJson(error.data, true); + $scope.runningInProgress = false; + displayRestError.display(error); + }); + }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + +//Add Edit script controller +myControllerModule.controller('ScriptsControllerAddEdit', function ($scope, $stateParams, $state, + ScriptsFactory, mchelper, alertService, displayRestError, $filter, CommonServices, $base64) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.cs = CommonServices; + $scope.showData = false; + $scope.editMode = false; + + if($stateParams.name){ + $scope.editMode = true; + ScriptsFactory.get({"name":$base64.decode($stateParams.name)},function(response) { + $scope.item = response; + $scope.showData = true; + },function(error){ + displayRestError.display(error); + $scope.showData = true; + }); + }else{ + $scope.showData = true; + } + + //Read File and put it in textarea + $scope.displayFileContents = function(contents) { + $scope.item.data = contents; + }; + + $scope.editorOptions = { + lineWrapping : true, + lineNumbers: true, + readOnly: 'nocursor', + mode: 'xml', + }; + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.name; + $scope.headerStringAdd = $filter('translate')('ADD_SCRIPT'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_SCRIPT'); + $scope.cancelButtonState = "scriptsList"; //Cancel button url + $scope.saveProgress = false; + + $scope.save = function(){ + $scope.saveProgress = true; + ScriptsFactory.upload($scope.item, function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("scriptsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); diff --git a/www/controllers/send-raw-message.js b/www/controllers/send-raw-message.js new file mode 100644 index 0000000..e89ab14 --- /dev/null +++ b/www/controllers/send-raw-message.js @@ -0,0 +1,47 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('SendRawMessageController', function(alertService, $scope, displayRestError, TypesFactory, SensorsFactory, $filter, CommonServices) { + + //GUI page settings + $scope.headerStringAdd = $filter('translate')('SEND_RAW_MESSAGE'); + $scope.cancelButtonState = "sendRawMessage"; //Cancel button state + $scope.sendProgress = false; + $scope.cs = CommonServices; + + $scope.message = {}; + + //Get subtypes + $scope.updateSubTypes = function(type){ + $scope.subTypes = TypesFactory.getMessageSubTypes({"messageType":type}); + }; + + //Pre load + $scope.gateways = CommonServices.getResources("Gateway"); + $scope.messageTypes = TypesFactory.getMessageTypes(); + + //Send raw message + $scope.send = function(){ + $scope.saveProgress = true; + SensorsFactory.sendRawMessage($scope.message, function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $scope.saveProgress = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }; +}); diff --git a/www/controllers/sensors-action.js b/www/controllers/sensors-action.js new file mode 100644 index 0000000..69854e6 --- /dev/null +++ b/www/controllers/sensors-action.js @@ -0,0 +1,251 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('SensorsActionControllerList', function( + alertService, $scope, SensorsFactory, TypesFactory, NodesFactory, SettingsFactory, $uibModal, displayRestError, mchelper, CommonServices, pfViewUtils, $filter, $window, $interval) { + + //GUI page settings + //$scope.headerStringList = "Sesnors detail"; + $scope.noItemsSystemMsg = $filter('translate')('NO_SENSORS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-eye"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + $scope.cs = CommonServices; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //Stop if an request sent already + var updateInprogress = false; + //get all items + $scope.getAllItems = function(hideLoading){ + if(updateInprogress){ + return; + } + updateInprogress = true; + if(!hideLoading){ + $scope.dataLoading = true; + } + SensorsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + $scope.dataLoading = false; + updateInprogress = false; + },function(error){ + displayRestError.display(error); + $scope.dataLoading = false; + updateInprogress = false; + }); + } + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('SENSOR_NAME'), + placeholder: $filter('translate')('FILTER_BY_SENSOR_NAME'), + filterType: 'text' + }, + { + id: 'nodeId', + title: $filter('translate')('NODE_ID'), + placeholder: $filter('translate')('FILTER_BY_NODE_ID'), + filterType: 'text' + }, + { + id: 'sensorId', + title: $filter('translate')('SENSOR_ID'), + placeholder: $filter('translate')('FILTER_BY_SENSOR_ID'), + filterType: 'text' + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //View selection + var viewSelected = function(viewId) { + mchelper.userSettings.actionBoardView = viewId; + SettingsFactory.saveUserSettings(mchelper.userSettings); + CommonServices.saveMchelper(mchelper); + if(viewId === 'cardView'){ + $scope.query.pageLimit = 12; + $scope.tooltipPlacement = 'top'; + }else if(viewId === 'listView'){ + $scope.query.pageLimit = 10; + $scope.tooltipPlacement = 'left'; + } + $scope.currentPage = 1; + $scope.query.page=1; + $scope.getAllItems(); + $scope.viewType = viewId; + + }; + + //View configuration + $scope.viewsConfig = { + views: [pfViewUtils.getListView(), pfViewUtils.getCardView()], + onViewSelect: viewSelected, + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + + $scope.sortConfig = { + fields: [ + { + id: 'lastSeen', + title: $filter('translate')('LAST_SEEN'), + sortType: 'text' + },{ + id: 'name', + title: $filter('translate')('SENSOR_NAME'), + sortType: 'text' + }, + { + id: 'nodeId', + title: $filter('translate')('NODE_ID'), + sortType: 'text' + }, + { + id: 'sensorId', + title: $filter('translate')('SENSOR_ID'), + sortType: 'number' + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + sortType: 'text' + } + ], + onSortChange: sortChange, + isAscending: false, + }; + + + // Item tool bar config + $scope.sensorsToolbarConfig = { + viewsConfig: $scope.viewsConfig, + filterConfig: $scope.filterConfig, + sortConfig: $scope.sortConfig, + }; + + + //refresh sensor + $scope.refreshSensor = function(sensor){ + SensorsFactory.get({"id":sensor.id}, function(response) { + var newSensor = response; + sensor.lastSeen = newSensor.lastSeen; + sensor.variables = newSensor.variables; + },function(error){ + displayRestError.display(error); + }); + }; + + + //Update Variable / Send Payload + $scope.updateVariable = function(variable){ + SensorsFactory.updateVariable(variable, function(){ + //update Success + },function(error){ + displayRestError.display(error); + }); + }; + + //HVAC heater options - HVAC flow state + $scope.hvacOptionsFlowState = TypesFactory.getHvacOptionsFlowState(); + //HVAC heater options - HVAC flow mode + $scope.hvacOptionsFlowMode = TypesFactory.getHvacOptionsFlowMode(); + //HVAC heater options - HVAC fan speed + $scope.hvacOptionsFanSpeed = TypesFactory.getHvacOptionsFanSpeed(); + + //Defined variable types list + $scope.definedVariableTypes = CommonServices.getSensorVariablesKnownList(); + + + + //update rgba color + $scope.updateRgba = function(variable){ + variable.value = CommonServices.rgba2hex(variable.rgba); + $scope.updateVariable(variable); + }; + + + //Pre load + $scope.viewsConfig.currentView = mchelper.userSettings.actionBoardView; + $scope.tooltipPlacement = 'left'; + $scope.tooltipEnabled = true; + $scope.viewType = $scope.viewsConfig.currentView; + //Update list table + //getAllItems(); + + + //fix for layout tiles + var isInnterWidth = function(minWidth, maxWidth, value){ + return (minWidth <= value) && (maxWidth >= value); + }; + $scope.$watch(function(){ + return $window.innerWidth; + }, function(value) { + $scope.colLg3 = isInnterWidth(1200,1600, value); + }); + + function updatePage(){ + $scope.getAllItems(true); + }; + + // global page refresh + var promise = $interval(updatePage, mchelper.cfg.globalPageRefreshTime); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + +}); diff --git a/www/controllers/sensors.js b/www/controllers/sensors.js new file mode 100644 index 0000000..66a849c --- /dev/null +++ b/www/controllers/sensors.js @@ -0,0 +1,595 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('SensorsController', function(alertService, +$scope, SensorsFactory, TypesFactory, NodesFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams, $filter, $interval) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('SENSORS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_SENSORS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-eye"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.nodeId){ + //$scope.nodeId = $stateParams.nodeId; + $scope.query.nodeId = $stateParams.nodeId; + } + + $scope.isRunning = false; + //get all Sensors + $scope.getAllItems = function(){ + if($scope.isRunning){ + return; + } + $scope.isRunning = true; + SensorsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + $scope.isRunning = false; + },function(error){ + displayRestError.display(error); + $scope.isRunning = false; + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'sensorId', + title: $filter('translate')('SENSOR_ID'), + placeholder: $filter('translate')('FILTER_BY_SENSOR_ID'), + filterType: 'integer', + }, + { + id: 'nodeName', + title: $filter('translate')('NODE_NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text', + }, + { + id: 'nodeEui', + title: $filter('translate')('NODE_EUI'), + placeholder: $filter('translate')('FILTER_BY_EUI'), + filterType: 'text', + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + placeholder: $filter('translate')('FILTER_BY_TYPE'), + filterType: 'text', + }, + { + id: 'variableTypes', + title: $filter('translate')('VARIABLE_TYPES'), + placeholder: $filter('translate')('FILTER_BY_VARIABLE_TYPES'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'sensorId', + title: $filter('translate')('SENSOR_ID'), + sortType: 'number' + }, + { + id: 'type', + title: $filter('translate')('TYPE'), + sortType: 'text' + }, + { + id: 'nodeEui', + title: $filter('translate')('NODE_EUI'), + sortType: 'text' + }, + { + id: 'nodeName', + title: $filter('translate')('NODE_NAME'), + sortType: 'text' + }, + { + id: 'lastSeen', + title: $filter('translate')('LAST_SEEN'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("sensorsAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + SensorsFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Get sensor variable types + $scope.getSensorVariableTypes = function(variables){ + var types = []; + angular.forEach(variables, function(variable){ + types.push(variable.name ? variable.name : variable.type.locale); + }); + return types.join(', '); + } + + // global page refresh + var promise = $interval($scope.getAllItems, mchelper.cfg.globalPageRefreshTime); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + +}); + +//Add Edit sensor controller +myControllerModule.controller('SensorsControllerAddEdit', function ($scope, $stateParams, $state, GatewaysFactory, NodesFactory, SensorsFactory, TypesFactory, mchelper, alertService, displayRestError, $filter) { + $scope.mchelper = mchelper; + $scope.sensor = {}; + $scope.sensor.node = {}; + $scope.sensor.node.gateway = {}; + + $scope.nodes = {}; + $scope.sensorVariableTypes = {}; + + + if($stateParams.id){ + SensorsFactory.get({"sensorId":$stateParams.id},function(response) { + $scope.sensor = response; + $scope.sensorVariableTypes = TypesFactory.getSensorVariableTypes({'sensorType': $scope.sensor.type.en, 'sensorId': $scope.sensor.id}); + },function(error){ + displayRestError.display(error); + }); + } + $scope.sensorTypes = TypesFactory.getSensorTypes(); + + $scope.nodes = TypesFactory.getNodes(); + $scope.rooms = TypesFactory.getRooms(); +/* + $scope.updateNodes= function(gatewayId){ + $scope.nodes = TypesFactory.getNodes({"gatewayId":gatewayId}); + } + */ + $scope.refreshVariableTypes = function(sensorType){ + $scope.sensorVariableTypes = TypesFactory.getSensorVariableTypes({'sensorType': sensorType}); + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_SENSOR'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_SENSOR'); + $scope.cancelButtonState = "sensorsList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + $scope.save = function(){ + $scope.saveProgress = true; + //TODO: for now REST request fails if we send with 'lastSeen'. drop this here + $scope.sensor.lastSeen = null; + if($stateParams.id){ + SensorsFactory.update($scope.sensor,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("sensorsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + SensorsFactory.create($scope.sensor,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("sensorsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); + +//item Detail +myControllerModule.controller('SensorsControllerDetail', function ($scope, $stateParams, mchelper, SensorsFactory, + MetricsFactory, $filter, CommonServices, TypesFactory, $timeout, $window, displayRestError, $interval) { + //Load mchelper variables to this scope + $scope.mchelper = mchelper; + $scope.node = {}; + $scope.headerStringList = $filter('translate')('SENSOR_DETAILS'); + $scope.cs = CommonServices; + + $scope.item = SensorsFactory.get({"id":$stateParams.id}); + + $scope.chartOptions = { + chart: { + type: 'lineChart', + noErrorCheck: true, + height: 270, + margin : { + top: 5, + right: 20, + bottom: 60, + left: 80 + }, + color: ["#2ca02c","#1f77b4", "#ff7f0e"], + noData: $filter('translate')('NO_DATA_AVAILABLE'), + x: function(d){return d[0];}, + y: function(d){return d[1];}, + useVoronoi: false, + clipEdge: false, + useInteractiveGuideline: true, + xAxis: { + showMaxMin: false, + tickFormat: function(d) { + return d3.time.format('hh:mm a')(new Date(d)) + }, + //axisLabel: 'Timestamp', + rotateLabels: -20 + }, + yAxis: { + tickFormat: function(d){ + return d3.format(',.2f')(d); + }, + axisLabelDistance: -10, + //axisLabel: '' + }, + }, + title: { + enable: false, + text: 'Title' + } + }; + + //pre select, should be updated from server + TypesFactory.getMetricsSettings(function(response){ + $scope.metricsSettings = response; + $scope.chartEnableMinMax = $scope.metricsSettings.enabledMinMax; + $scope.chartFromTimestamp = $scope.metricsSettings.defaultTimeRange.toString(); + MetricsFactory.getMetricsData({"sensorId":$stateParams.id, "withMinMax":$scope.chartEnableMinMax, "start": new Date().getTime() - $scope.chartFromTimestamp},function(response){ + $scope.chartData = response; + $scope.fetching = false; + }); + }); + $scope.tooltipPlacement = 'top'; + $scope.chartTimeFormat = mchelper.cfg.dateFormat; + $scope.chartOptions.chart.xAxis.tickFormat = function(d) {return $filter('date')(d, $scope.chartTimeFormat, mchelper.cfg.timezone)}; + + + + $scope.updateChart = function(){ + MetricsFactory.getMetricsData({"sensorId":$stateParams.id, "withMinMax":$scope.chartEnableMinMax, "start": new Date().getTime() - $scope.chartFromTimestamp}, function(resource){ + //$scope.chartData = resource; + resource.forEach(function(item) { + $scope.chartData.forEach(function(itemLocal) { + if(itemLocal.id === item.id){ + itemLocal.chartData = item.chartData; + //Update display time format + $scope.chartTimeFormat = item.timeFormat; + } + }); + }); + }); + } + + + $scope.resourceCount = MetricsFactory.getResourceCount({"resourceType":"Sensor", "resourceId":$stateParams.id}); + + $scope.updateChartOptions = function(chData){ + var chOptions = angular.copy($scope.chartOptions); + chOptions.chart.type = chData.chartType; + chOptions.chart.interpolate = chData.chartInterpolate; + //Update margins + chOptions.chart.margin.left = chData.marginLeft; + chOptions.chart.margin.right = chData.marginRight; + chOptions.chart.margin.top = chData.marginTop; + chOptions.chart.margin.bottom = chData.marginBottom; + //Update display time format + $scope.chartTimeFormat = chData.timeFormat; + if(chData.dataType === 'Double'){ + chOptions.chart.yAxis.tickFormat = function(d){return d3.format('.02f')(d) + ' ' + chData.unit}; + }else if(chData.dataType === 'Binary' || chData.dataType === 'Counter'){ + chOptions.chart.yAxis.tickFormat = function(d){return d3.format('.0f')(d)}; + } + chOptions.title.text = chData.variableType; + return chOptions; + } + + //Update Variable / Send Payload + $scope.updateVariable = function(variable){ + SensorsFactory.updateVariable(variable, function(){ + //update Success + },function(error){ + displayRestError.display(error); + }); + }; + + //update variable unit + $scope.updateVariableUnit = function(variable){ + SensorsFactory.updateVariableUnit(variable, function(){ + //update Success + },function(error){ + displayRestError.display(error); + }); + } + + //HVAC heater options - HVAC flow state + $scope.hvacOptionsFlowState = TypesFactory.getHvacOptionsFlowState(); + //HVAC heater options - HVAC flow mode + $scope.hvacOptionsFlowMode = TypesFactory.getHvacOptionsFlowMode(); + //HVAC heater options - HVAC fan speed + $scope.hvacOptionsFanSpeed = TypesFactory.getHvacOptionsFanSpeed(); + + //Defined variable types list + $scope.definedVariableTypes = CommonServices.getSensorVariablesKnownList(); + + //Hide variable names + $scope.hideVariableName=true; + + + //update rgba color + $scope.updateRgba = function(variable){ + variable.value = CommonServices.rgba2hex(variable.rgba); + $scope.updateVariable(variable); + }; + + //Graph resize issue, see: https://github.com/krispo/angular-nvd3/issues/40 + $scope.$watch('fetching', function() { + if(!$scope.fetching) { + $timeout(function() { + $window.dispatchEvent(new Event('resize')); + $scope.fetching = true; + }, 1000); + } + }); + + //Get sensor variable types + $scope.getSensorVariableTypes = function(variables){ + var types = []; + angular.forEach(variables, function(variable){ + types.push(variable.type.locale); + }); + return types.join(', '); + } + + //Update data for N seconds once + var updatePageData = function(){ + $scope.item = SensorsFactory.get({"id":$stateParams.id}); //This line introduces flickering on refresh + $scope.updateChart(); + } + + // global page refresh + var promise = $interval(updatePageData, mchelper.cfg.globalPageRefreshTime); + + // cancel interval on scope destroy + $scope.$on('$destroy', function(){ + $interval.cancel(promise); + }); + +}); + +//Purge sensor variable controller +myControllerModule.controller('SensorVariableControllerPurge', function ($scope, $stateParams, $state, SensorsFactory, TypesFactory, + mchelper, alertService, displayRestError, $filter, CommonServices, $uibModal) { + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + $scope.sensorVariable = {}; + $scope.item = {}; + $scope.metricTypes = {}; + $scope.unitTypes = {}; + $scope.orgSvar = {}; + + if($stateParams.id){ + SensorsFactory.getVariable({"id":$stateParams.id},function(response) { + $scope.sensorVariable = response; + $scope.orgSvar = angular.copy(response); + $scope.item.id = $scope.sensorVariable.id; + $scope.item.depthSearch = false; + },function(error){ + displayRestError.display(error); + }); + } + + //GUI page settings + $scope.headerStringAdd = $filter('translate')('PURGE_SENSOR_VARIABLE'); + $scope.cancelButtonState = "sensorsDetail({id: sensorVariable.sensorId})"; //Cancel button state + $scope.saveProgress = false; + $scope.saveButtonName = $filter('translate')('PURGE'); + $scope.savingButtonName = $filter('translate')('PURGING'); + $scope.saveButtonTooltip = $filter('translate')('PURGE_WARNING'); + + + //Convert as display string + $scope.getDateTimeDisplayFormat = function (newDate) { + return $filter('date')(newDate, mchelper.cfg.dateFormat, mchelper.cfg.timezone); + }; + + //Save data - here it's purge + $scope.save = function(){ + //Update time range from/to + if($scope.purgeFrom){ + $scope.item.start = moment($scope.purgeFrom).format('YYYY-MM-DDTHH:mm:ss'); + } + if($scope.purgeTo){ + $scope.item.end = moment($scope.purgeTo).format('YYYY-MM-DDTHH:mm:ss'); + } + + $scope.saveProgress = true; + if($stateParams.id){ + SensorsFactory.purgeVariable($scope.item,function(response) { + alertService.success($filter('translate')('PURGE_DONE_SUCCESSFULLY')); + $state.go("sensorsDetail", {"id": $scope.sensorVariable.sensorId}); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + +}); + +//Edit sensor variable controller +myControllerModule.controller('SensorVariableControllerEdit', function ($scope, $stateParams, $state, SensorsFactory, TypesFactory, + mchelper, alertService, displayRestError, $filter, CommonServices, $uibModal) { + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + $scope.sensorVariable = {}; + $scope.metricTypes = {}; + $scope.unitTypes = {}; + $scope.orgSvar = {}; + + if($stateParams.id){ + SensorsFactory.getVariable({"id":$stateParams.id},function(response) { + $scope.sensorVariable = response; + $scope.orgSvar = angular.copy(response); + },function(error){ + displayRestError.display(error); + }); + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_SENSOR_VARIABLE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_SENSOR_VARIABLE'); + $scope.cancelButtonState = "sensorsDetail({id: sensorVariable.sensorId})"; //Cancel button state + $scope.saveProgress = false; + $scope.unitTypes = TypesFactory.getUnitTypes(); + $scope.metricTypes = TypesFactory.getMetricTypes(); + + $scope.saveFinal = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + SensorsFactory.updateVariableConfig($scope.sensorVariable,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("sensorsDetail", {"id": $scope.sensorVariable.sensorId}); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + + //Show update warning + $scope.save = function (size) { + if($scope.orgSvar.metricType === $scope.sensorVariable.metricType){ + $scope.saveFinal(); + }else{ + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/edit-confirmation-modal.html', + controller: 'SensorVariableUpdateWarnController', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + $scope.saveFinal(); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + } + + }; + +}); + +//sensor variable change Modal +myControllerModule.controller('SensorVariableUpdateWarnController', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('S_VARIABLE_DIALOG_TITLE'); + $scope.message = $filter('translate')('S_VARIABLE_DIALOG_CONFIRMATION_MSG'); + $scope.continute = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); diff --git a/www/controllers/settings.js b/www/controllers/settings.js new file mode 100644 index 0000000..c56df89 --- /dev/null +++ b/www/controllers/settings.js @@ -0,0 +1,532 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('SettingsSystemController', function(alertService, $scope, $filter, SettingsFactory, + StatusFactory, TypesFactory, displayRestError, mchelper, $translate, $cookieStore, CommonServices, NavigatorGeolocation, $uibModal) { + + //config, language, user, etc., + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + + //editable settings + $scope.editEnable = {}; + $scope.saveProgress = {}; + + //settings location details, sunrise, sunset + $scope.updateSettingsLocation = function(){ + $scope.locationSettings = SettingsFactory.getLocation(); + }; + + //settings MyController + $scope.updateSettingsController = function(){ + SettingsFactory.getController(function(resource){ + $scope.controllerSettings = resource; + $scope.aliveCheckMinutes = $scope.controllerSettings.aliveCheckInterval / 60000; + $scope.globalPageRefreshTime = $scope.controllerSettings.globalPageRefreshTime / 1000; + $scope.executeDiscoverMinutes = $scope.controllerSettings.executeDiscoverInterval / 60000; + $scope.resourcesLogsRetentionDurationMinutes = $scope.controllerSettings.resourcesLogsRetentionDuration / 60000; + }); + }; + + //Pre-load + $scope.locationSettings = {}; + $scope.controllerSettings = {}; + //get log levels + $scope.logLevels = TypesFactory.getResourceLogsLogLevels(); + //get languages + $scope.languages = TypesFactory.getLanguages(); + $scope.updateSettingsLocation(); + $scope.updateSettingsController(); + $scope.aliveCheckMinutes = null; + $scope.globalPageRefreshTime = null; + + //Get current location + $scope.updateGeoLocation = function(){ + NavigatorGeolocation.getCurrentPosition() + .then(function(position) { + $scope.locationSettings.latitude = $filter('number')(position.coords.latitude, 4); + $scope.locationSettings.longitude = $filter('number')(position.coords.longitude, 4); + }); + }; + + //Save location + $scope.saveLocation = function(){ + $scope.saveProgress.location = true; + SettingsFactory.saveLocation($scope.locationSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.location = false; + $scope.updateSettingsLocation(); + $scope.editEnable.location = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.location = false; + }); + }; + + //Save controller + $scope.saveController = function(){ + $scope.saveProgress.controller = true; + $scope.controllerSettings.aliveCheckInterval = $scope.aliveCheckMinutes * 60000; + $scope.controllerSettings.executeDiscoverInterval = $scope.executeDiscoverMinutes * 60000; + $scope.controllerSettings.resourcesLogsRetentionDuration = $scope.resourcesLogsRetentionDurationMinutes * 60000; + $scope.controllerSettings.globalPageRefreshTime = $scope.globalPageRefreshTime * 1000; + SettingsFactory.saveController($scope.controllerSettings,function(response) { + StatusFactory.getConfig(function(response) { + mchelper.cfg = response;//Update config + //Update language + $translate.use(mchelper.cfg.languageId); + //Store all the configurations locally + $cookieStore.put('mchelper', mchelper); + }); + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.controller = false; + $scope.updateSettingsController(); + $scope.editEnable.controller = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.controller = false; + }); + }; + + + //settings system jobs + $scope.updateSettingsSystemJobs = function(){ + SettingsFactory.getSystemJobs(function(response) { + $scope.systemJobs = response; + }); + }; + + //Pre-load + $scope.systemJobs = {}; + $scope.updateSettingsSystemJobs(); + + //Save settings + $scope.saveSystemJobsLocal = function(){ + $scope.saveProgress.systemJob = true; + SettingsFactory.saveSystemJobs($scope.systemJobs,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.systemJobs = false; + $scope.updateSettingsSystemJobs(); + $scope.editEnable.systemJobs = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.systemJobs = false; + }); + }; + + //edit confirmation + $scope.systemJobsWarning = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/edit-confirmation-modal.html', + controller: 'SystemJobsChangeController', + size: size, + resolve: {} + }); + addModalInstance.result.then(function () { + $scope.editEnable.systemJobs = true; + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +// System jobs change warning +myControllerModule.controller('SystemJobsChangeController', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE'); + $scope.message = $filter('translate')('SYSTEM_JOBS_EDIT_CONFIRMATION_MSG'); + $scope.continute = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + + +myControllerModule.controller('SettingsNotificationsController', function(alertService, $scope, $filter, SettingsFactory, displayRestError, mchelper, CommonServices) { + + //config, language, user, etc., + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + + //editable settings + $scope.editEnable = {}; + $scope.saveProgress = {}; + $scope.testing = {}; + + //settings Email + $scope.updateSettingsEmail = function(){ + $scope.emailSettings = SettingsFactory.getEmail(); + }; + + //settings SMS + $scope.updateSettingsSms = function(){ + $scope.smsSettings = SettingsFactory.getSms(); + }; + + //settings Pushbullet + $scope.updateSettingsPushbullet = function(){ + $scope.pushbulletSettings = SettingsFactory.getPushbullet(); + }; + + //settings TelegramBot + $scope.updateSettingsTelegramBot = function(){ + $scope.telegramBotSettings = SettingsFactory.getTelegramBot(); + }; + + + //Pre-load + $scope.emailSettings = {}; + $scope.smsSettings = {}; + $scope.updateSettingsEmail(); + $scope.updateSettingsSms(); + $scope.updateSettingsPushbullet(); + $scope.updateSettingsTelegramBot(); + + //Save email + $scope.saveEmail = function(){ + $scope.saveProgress.email = true; + SettingsFactory.saveEmail($scope.emailSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.email = false; + $scope.updateSettingsEmail(); + $scope.editEnable.email = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.email = false; + }); + }; + + //Send test email + $scope.sendTestEmail = function(){ + $scope.testing.email = true; + SettingsFactory.saveEmail({'testOnly': true}, $scope.emailSettings, function(response) { + alertService.success(response.message); + $scope.testing.email = false; + },function(error){ + displayRestError.display(error); + $scope.testing.email = false; + }); + }; + + //Save sms + $scope.saveSms = function(){ + $scope.saveProgress.sms = true; + SettingsFactory.saveSms($scope.smsSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.sms = false; + $scope.updateSettingsSms(); + $scope.editEnable.sms = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.sms = false; + }); + }; + + //Save pushbullet + $scope.savePushbullet = function(){ + $scope.saveProgress.pushbullet = true; + SettingsFactory.savePushbullet($scope.pushbulletSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.pushbullet = false; + $scope.updateSettingsPushbullet(); + $scope.editEnable.pushbullet = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.pushbullet = false; + }); + }; + + //Save telegramBot + $scope.saveTelegramBot = function(){ + $scope.saveProgress.telegramBot = true; + SettingsFactory.saveTelegramBot($scope.telegramBotSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.telegramBot = false; + $scope.updateSettingsTelegramBot(); + $scope.editEnable.telegramBot = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.telegramBot = false; + }); + }; + + +}); + +myControllerModule.controller('SettingsSystemMySensors', function(alertService, $scope, $filter, SettingsFactory, TypesFactory, FirmwaresFactory, displayRestError, mchelper) { + + //config, language, user, etc., + $scope.mchelper = mchelper; + + //editable settings + $scope.editEnable = {}; + $scope.saveProgress = {}; + + + //settings MySensors + $scope.updateSettingsMySensors = function(){ + SettingsFactory.getMySensors(function(response){ + $scope.mySensorsSettings = response; + if(response.defaultFirmware){ + FirmwaresFactory.getFirmware({"refId": response.defaultFirmware},function(response){ + $scope.defaultFirmware = response.firmwareName; + }); + } + }); + }; + + //Pre-load + $scope.mySensorsSettings = {}; + //Get firmwares list + $scope.firmwares = TypesFactory.getFirmwares(); + $scope.updateSettingsMySensors(); + $scope.defaultFirmware = null; + + //Save mySensors + $scope.saveMySensors = function(){ + $scope.saveProgress.mySensors = true; + SettingsFactory.saveMySensors($scope.mySensorsSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.mySensors = false; + $scope.updateSettingsMySensors(); + $scope.editEnable.mySensors = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.mySensors = false; + }); + }; + +}); + +myControllerModule.controller('SettingsMetricsController', function(alertService, $scope, $filter, SettingsFactory, TypesFactory, displayRestError, mchelper, CommonServices, $uibModal) { + + //config, language, user, etc., + $scope.mchelper = mchelper; + $scope.cs = CommonServices; + + //editable settings + $scope.editEnable = {}; + $scope.saveProgress = {}; + + //settings Units + $scope.updateSettingsMetrics = function(){ + SettingsFactory.getMetrics(function(response){ + $scope.metricsSettings = response; + $scope.metricsSettings.defaultTimeRange = $scope.metricsSettings.defaultTimeRange.toString(); + }); + }; + + //Update Retention settings + $scope.updateSettingsMetricsRetention = function(){ + SettingsFactory.getMetricsRetention(function(response) { + $scope.metricsRetention = response; + $scope.rRawData = CommonServices.getTimestampJson(response.retentionRawData); + $scope.rOneMinute = CommonServices.getTimestampJson(response.retentionOneMinute); + $scope.rFiveMinutes = CommonServices.getTimestampJson(response.retentionFiveMinutes); + $scope.rOneHour = CommonServices.getTimestampJson(response.retentionOneHour); + $scope.rSixHours = CommonServices.getTimestampJson(response.retentionSixHours); + $scope.rTwelveHours = CommonServices.getTimestampJson(response.retentionTwelveHours); + $scope.rOneDay = CommonServices.getTimestampJson(response.retentionOneDay); + $scope.rBinary = CommonServices.getTimestampJson(response.retentionBinary); + $scope.rGPS = CommonServices.getTimestampJson(response.retentionGPS); + },function(error){ + displayRestError.display(error); + }); + } + + //Update engine settings + $scope.updateSettingsMetricsEngine = function(){ + SettingsFactory.getMetricsEngine(function(response) { + $scope.metricsEngine = response; + $scope.metricsEngine.purgeEveryThing = false; + },function(error){ + displayRestError.display(error); + }); + } + + //Pre-load + $scope.engineTypes = TypesFactory.getMetricEngineTypes(); + $scope.trustHostTypes = TypesFactory.getTrustHostTypes(); + $scope.metricsSettings = {}; + $scope.updateSettingsMetricsEngine(); + $scope.updateSettingsMetricsRetention(); + $scope.updateSettingsMetrics(); + + //Save garphs settings + $scope.saveMetrics = function(){ + $scope.saveProgress.metrics = true; + SettingsFactory.saveMetrics($scope.metricsSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.metrics = false; + $scope.updateSettingsMetrics(); + $scope.editEnable.metrics = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.metrics = false; + }); + }; + + //Save engine settings + $scope.saveMetricsEngine = function(){ + $scope.saveProgress.metricsEngine = true; + SettingsFactory.saveMetricsEngine($scope.metricsEngine,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.metricsEngine = false; + $scope.updateSettingsMetricsEngine(); + $scope.editEnable.metricsEngine = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.metricsEngine = false; + }); + }; + + //Save retention settings + $scope.saveMetricsRetention = function(){ + $scope.saveProgress.metricsRetention = true; + //Update on timestamp format + $scope.metricsRetention.retentionRawData = CommonServices.getTimestamp($scope.rRawData); + $scope.metricsRetention.retentionOneMinute = CommonServices.getTimestamp($scope.rOneMinute); + $scope.metricsRetention.retentionFiveMinutes = CommonServices.getTimestamp($scope.rFiveMinutes); + $scope.metricsRetention.retentionOneHour = CommonServices.getTimestamp($scope.rOneHour); + $scope.metricsRetention.retentionSixHours = CommonServices.getTimestamp($scope.rSixHours); + $scope.metricsRetention.retentionTwelveHours = CommonServices.getTimestamp($scope.rTwelveHours); + $scope.metricsRetention.retentionOneDay = CommonServices.getTimestamp($scope.rOneDay); + $scope.metricsRetention.retentionBinary = CommonServices.getTimestamp($scope.rBinary); + $scope.metricsRetention.retentionGPS = CommonServices.getTimestamp($scope.rGPS); + + SettingsFactory.saveMetricsRetention($scope.metricsRetention,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.metricsRetention = false; + $scope.updateSettingsMetricsRetention(); + $scope.editEnable.metricsDataRetention = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.metricsRetention = false; + }); + }; + + //edit retention confirmation + $scope.retentionWarning = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/edit-confirmation-modal.html', + controller: 'MetricsRetentionWarnController', + size: size, + resolve: {} + }); + addModalInstance.result.then(function () { + $scope.editEnable.metricsDataRetention = true; + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + + //edit engine confirmation + $scope.engineChnageWarning = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/edit-confirmation-modal.html', + controller: 'MetricsEngineWarnController', + size: size, + resolve: {} + }); + addModalInstance.result.then(function () { + $scope.editEnable.metricsEngine = true; + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//retention change Modal +myControllerModule.controller('MetricsRetentionWarnController', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('RETENTION_DIALOG_TITLE'); + $scope.message = $filter('translate')('RETENTION_DIALOG_CONFIRMATION_MSG'); + $scope.continute = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + +//metric engine change Modal +myControllerModule.controller('MetricsEngineWarnController', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('RETENTION_DIALOG_TITLE'); + $scope.message = $filter('translate')('METRIC_ENGINE_DIALOG_CONFIRMATION_MSG'); + $scope.continute = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + + +myControllerModule.controller('SettingsMqttBrokerController', function(alertService, $scope, $filter, SettingsFactory, CommonServices, displayRestError, $uibModal) { + + //config, language, user, etc., + $scope.cs = CommonServices; + + //editable settings + $scope.editEnable = {}; + $scope.saveProgress = {}; + + + //settings mqtt broker + $scope.updateSettingsMqttBroker = function(){ + SettingsFactory.getMqttBroker(function(response){ + $scope.mqttBrokerSettings = response; + }); + }; + + //Pre-load + $scope.mqttBrokerSettings = {}; + $scope.updateSettingsMqttBroker(); + + //Save settings + $scope.saveMqttBroker = function(){ + $scope.saveProgress.mqttBroker = true; + SettingsFactory.saveMqttBroker($scope.mqttBrokerSettings,function(response) { + alertService.success($filter('translate')('UPDATED_SUCCESSFULLY')); + $scope.saveProgress.mqttBroker = false; + $scope.updateSettingsMqttBroker(); + $scope.editEnable.mqttBroker = false; + },function(error){ + displayRestError.display(error); + $scope.saveProgress.mqttBroker = false; + }); + }; + + + //edit confirmation + $scope.saveSettings = function (size) { + var addModalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/edit-confirmation-modal.html', + controller: 'MqttBrokerChangeController', + size: size, + resolve: {} + }); + addModalInstance.result.then(function () { + $scope.saveMqttBroker(); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//Mqtt broker change warning +myControllerModule.controller('MqttBrokerChangeController', function ($scope, $uibModalInstance, $filter) { + $scope.header = $filter('translate')('MQTT_BROKER_EDIT_DIALOG'); + $scope.message = $filter('translate')('MQTT_BROKER_EDIT_CONFIRMATION_MSG'); + $scope.continute = function() {$uibModalInstance.close(); }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); diff --git a/www/controllers/status.js b/www/controllers/status.js new file mode 100644 index 0000000..30608f5 --- /dev/null +++ b/www/controllers/status.js @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('StatusSystemController', function(alertService, +$scope, $filter, StatusFactory, $uibModal, $stateParams, displayRestError) { + + //GUI page settings + $scope.headerStringList = "System status"; + + //OS Status + $scope.osStatus = StatusFactory.getOsStatus(); + //JVM Status + $scope.jvmStatus = StatusFactory.getJvmStatus(); + //Script engines + $scope.scriptEngines = StatusFactory.getScriptEngines(); + + //Run Garbage Collection + $scope.runGC = function(){ + StatusFactory.runGarbageCollection(function(response) { + //Update display data + $scope.jvmStatus = response; + },function(error){ + displayRestError.display(error); + }); + } + +}); + +myControllerModule.controller('McAboutController', function(alertService, +$scope, $filter, StatusFactory, $uibModal, $stateParams, displayRestError) { + //GUI page settings + $scope.headerStringList = "About"; + + //About MC + $scope.mcAbout = StatusFactory.getMcAbout(); +}); + +myControllerModule.controller('StatusMcLogController', function(alertService, +$scope, $filter, StatusFactory, $uibModal, $stateParams, displayRestError) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('MYCONTROLLER_SERVER_LOG'); + $scope.noItemsSystemMsg = $filter('translate')('NO_LOGS_AVAILABLE'); + $scope.noItemsSystemIcon = "fa fa-list"; + + $scope.initialLog = {}; + $scope.logData = []; + $scope.logLevel = null; + + //Refresh + $scope.refreshLogs = function(){ + $scope.initialLog = StatusFactory.getMcServerLog(function(response){ + $scope.logData = response.data; + }); + }; + + //Get log level string + /* + $scope.getLogLevel = function(log){ + if(log.indexOf(' ERROR ') > -1 ){ + $scope.logLevel = "danger"; + }else if(log.indexOf(' INFO ') > -1 ){ + $scope.logLevel = "info"; + }else if(log.indexOf(' WARN ') > -1 ){ + $scope.logLevel = "warning"; + }else if(log.indexOf(' DEBUG ') > -1 ){ + $scope.logLevel = "default"; + } + + if(!$scope.logLevel){ + $scope.logLevel = "default"; + } + return $scope.logLevel; + } + */ + //Pre load + $scope.initialLog = StatusFactory.getMcServerLog(function(response){ + $scope.logData = response.data; + /* + if(response.data && response.data.length > 0){ + $scope.logData = response.data.split('\n'); + } + */ + }); + + +}); + diff --git a/www/controllers/templates.js b/www/controllers/templates.js new file mode 100644 index 0000000..0c01042 --- /dev/null +++ b/www/controllers/templates.js @@ -0,0 +1,254 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('TemplatesController', function(alertService, +$scope, TemplatesFactory, $state, $uibModal, $stateParams, displayRestError, mchelper, CommonServices, $filter, $base64) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('TEMPLATES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_TEMPLATES_SETUP'); + $scope.noItemsSystemIcon = "fa fa-file-text"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + $scope.query.resourceId = $stateParams.resourceId; + } + + //get all items + $scope.getAllItems = function(){ + TemplatesFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope, 'name'); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item, 'name'); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'extension', + title: $filter('translate')('EXTENSION'), + placeholder: $filter('translate')('FILTER_BY_EXTENSION'), + filterType: 'select', + filterValues: ['html'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + TemplatesFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("templatesAddEdit",{'name':$base64.encode($scope.itemIds[0])}); + } + }; + + //Execute item + $scope.runNow = function (size) { + if($scope.itemIds.length != 1){ + return; + } + var modalInstance = $uibModal.open({ + templateUrl: 'partials/templates/run-now-modal.html', + controller: 'ControllerTemplateRunNowModal', + size: size, + resolve: {itemId: function () {return $scope.itemIds[0]}} + }); + + modalInstance.result.then(function () { + ScriptsFactory.deleteIds($scope.itemIds, function(response) { + //Nothing to do... + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//Template run now Modal +myControllerModule.controller('ControllerTemplateRunNowModal', function ($scope, $uibModalInstance, $filter, CommonServices, ScriptsFactory, TemplatesFactory, $sce, itemId) { + $scope.header = $filter('translate')('RUN_NOW'); + $scope.cs = CommonServices; + $scope.request = {}; + $scope.request.template = itemId; + $scope.scripts = ScriptsFactory.getAllLessInfo({"type":"Operation"}); + $scope.request.bindings = '{ }'; + //$uibModalInstance.close(); + $scope.runNow = function() { + $scope.runningInProgress = true; + $scope.request.scriptBindings = angular.fromJson(JSON.stringify(eval('('+$scope.request.bindings+')'))); + TemplatesFactory.getHtml($scope.request, function(response) { + $scope.templateResult = $sce.trustAsHtml(response.message); + $scope.runningInProgress = false; + },function(error){ + if(error.data.errorMessage){ + $scope.templateResult = $sce.trustAsHtml('
'+error.data.errorMessage+'
'); + }else{ + $scope.templateResult = $sce.trustAsHtml('
'+angular.toJson(error.data)+'
'); + } + $scope.runningInProgress = false; + displayRestError.display(error); + }); + }; + $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); } +}); + +//Add Edit script controller +myControllerModule.controller('TemplatesControllerAddEdit', function ($scope, $stateParams, $state, + TemplatesFactory, mchelper, alertService, displayRestError, $filter, CommonServices, $base64) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.cs = CommonServices; + $scope.showData = false; + $scope.editMode = false; + + if($stateParams.name){ + $scope.editMode = true; + TemplatesFactory.get({"name":$base64.decode($stateParams.name)},function(response) { + $scope.item = response; + $scope.showData = true; + },function(error){ + displayRestError.display(error); + $scope.showData = true; + }); + }else{ + $scope.showData = true; + } + + //Read File and put it in textarea + $scope.displayFileContents = function(contents) { + $scope.item.data = contents; + }; + + $scope.editorOptions = { + lineWrapping : true, + lineNumbers: true, + readOnly: 'nocursor', + mode: 'xml', + }; + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.name; + $scope.headerStringAdd = $filter('translate')('ADD_TEMPLATE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_TEMPLATE'); + $scope.cancelButtonState = "templatesList"; //Cancel button url + $scope.saveProgress = false; + + $scope.save = function(){ + $scope.saveProgress = true; + TemplatesFactory.upload($scope.item, function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("templatesList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); diff --git a/www/controllers/timers.js b/www/controllers/timers.js new file mode 100644 index 0000000..fc5905b --- /dev/null +++ b/www/controllers/timers.js @@ -0,0 +1,420 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('TimersController', function(alertService, +$scope, TimersFactory, $state, $uibModal, $stateParams, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('TIMERS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_TIMERS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-clock-o"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + $scope.query.resourceId = $stateParams.resourceId; + } + + //get all Sensors + $scope.getAllItems = function(){ + TimersFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + placeholder: $filter('translate')('FILTER_BY_NAME'), + filterType: 'text' + }, + { + id: 'timerType', + title: $filter('translate')('TIMER_TYPE'), + placeholder: $filter('translate')('FILTER_BY_RESOURCE_TYPE'), + filterType: 'select', + filterValues: ['Simple','Normal','Cron','Before sunrise','After sunrise','Before sunset','After sunset'], + }, + { + id: 'frequency', + title: $filter('translate')('FREQUENCY'), + placeholder: $filter('translate')('FILTER_BY_FREQUENCY'), + filterType: 'select', + filterValues: ['Daily','Weekly','Monthly'], + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + placeholder: $filter('translate')('FILTER_BY_ENABLED'), + filterType: 'select', + filterValues: ['True','False'], + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: $filter('translate')('NAME'), + sortType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + }, + { + id: 'timerType', + title: $filter('translate')('TIMER_TYPE'), + sortType: 'text' + }, + { + id: 'frequency', + title: $filter('translate')('FREQUENCY'), + sortType: 'text' + }, + { + id: 'lastFire', + title: $filter('translate')('LAST_FIRED'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("timersAddEdit",{'id':$scope.itemIds[0]}); + } + }; + + //Clone item + $scope.clone = function () { + if($scope.itemIds.length == 1){ + $state.go("timersAddEdit",{'id':$scope.itemIds[0], 'action': 'clone'}); + } + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + TimersFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + + //Enable items + $scope.enable = function () { + if($scope.itemIds.length > 0){ + TimersFactory.enableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_ENABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + //Disable items + $scope.disable = function () { + if($scope.itemIds.length > 0){ + TimersFactory.disableIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DISABLED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + } + }; + + +}); + +myControllerModule.controller('TimersControllerAddEdit', function ($scope, TypesFactory, CommonServices, alertService, TimersFactory, mchelper, $stateParams, $state, $filter, displayRestError) { + $scope.timer = {}; + $scope.timer.enabled=true; + $scope.showMeridian = angular.equals(mchelper.cfg.timeFormatSet, "12 hours"); + $scope.cs = CommonServices; + + if($stateParams.id){ + TimersFactory.get({"id":$stateParams.id},function(response) { + $scope.timer = response; + + //Update Resource Type + $scope.dspResources = $scope.getResources($scope.timer.resourceType); + + //Update frequency data + if($scope.timer.timerType === 'Simple'){ + var array = $scope.timer.frequencyData.split(','); + $scope.rpInterval = array[0]/1000; + $scope.rpCount = array[1]; + }else if($scope.timer.timerType === 'Cron'){ + $scope.cronFrequencyData = $scope.timer.frequencyData; + }else{ + if($scope.timer.frequencyType === 'Daily'){ + $scope.dailyFrequencyData = $scope.timer.frequencyData.split(','); + }else if($scope.timer.frequencyType === 'Weekly'){ + $scope.weeklyFrequencyData = $scope.timer.frequencyData; + }else if($scope.timer.frequencyType === 'Monthly'){ + $scope.monthlyFrequencyData = $scope.timer.frequencyData; + } + } + + //Update payload operations + if($scope.timer.resourceType !== 'Sensor variable'){ + $scope.updatePayloadOperations($scope.timer.resourceType); + } + + //Update date + if($scope.timer.timerType !== 'Simple' || $scope.timer.timerType !== 'Cron'){ + $scope.lTriggerTime = moment("1970-01-01T" + $scope.timer.triggerTime); + } + //Update validity from/to + if($scope.timer.validityFrom){ + $scope.vFromDate = new Date(moment($scope.timer.validityFrom).utc()); + $scope.vFromString = $filter('date')($scope.vFromDate.getTime(), mchelper.cfg.dateFormat); + } + if($scope.timer.validityTo){ + $scope.vToDate = new Date(moment($scope.timer.validityTo).utc()); + $scope.vToString = $filter('date')($scope.vToDate.getTime(), mchelper.cfg.dateFormat); + } + //Clone job + if($stateParams.action === 'clone'){ + $stateParams.id = undefined; + $scope.timer.id = undefined; + $scope.timer.name = $scope.timer.name + '-' + $filter('translate')('CLONE'); + } + },function(error){ + displayRestError.display(error); + }); + } + + //pre load + $scope.dailyFrequencyData = []; + $scope.monthDays = ['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31']; + $scope.hours = ['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23']; + $scope.minutes = ['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31', + '32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59']; + + $scope.operations = TypesFactory.getOperations(); + + $scope.timerTypes = TypesFactory.getTimerTypes(); + $scope.timerFrequencyTypes = TypesFactory.getTimerFrequencies(); + $scope.timerWeekDays = TypesFactory.getTimerWeekDays(); + + $scope.resourceTypes = TypesFactory.getResourceTypes({"resourceType": "timer", "isSendPayload":true}); + + //Get resources + $scope.getResources = function(resourceType){ + return CommonServices.getResources(resourceType); + } + + //Update Payload operations + $scope.updatePayloadOperations= function(resourceType){ + $scope.payloadOperations = TypesFactory.getPayloadOperations({"resourceType":resourceType}); + } + + //Get trigger time + $scope.setTriggerTime = function(isDefault){ + if(!$scope.lTriggerTime){ + $scope.lTriggerTime = moment(); + if(isDefault){ + $scope.lTriggerTime.hour(00); + $scope.lTriggerTime.minute(00); + $scope.lTriggerTime.second(00); + } + } + }; + + $scope.frequencyData; + //Update Frequency Data + $scope.updateFrequencyData = function(value1,value2){ + if($scope.timer.timerType === 'Simple'){ + }else if($scope.timer.timerType === 'Cron'){ + $scope.frequencyData = value1; + }else{ + if($scope.timer.frequencyType === 'Daily'){ + $scope.frequencyData = value1.join(); + }else if($scope.timer.frequencyType === 'Weekly'){ + $scope.frequencyData = value1; + }else if($scope.timer.frequencyType === 'Monthly'){ + $scope.frequencyData = value1; + } + } + console.log('FrequencyData:'+$scope.frequencyData); + }; + + //Update daily frequency + $scope.updateFrequency = function() { + if($scope.timer.frequencyType === 'Daily' && $scope.dailyFrequencyData.length == 0){ + angular.forEach($scope.timerWeekDays, function(value, key){ + $scope.dailyFrequencyData.push(value.displayName); + }); + } + }; + + //Convert as display string + $scope.getDateTimeDisplayFormat = function (newDate) { + return $filter('date')(newDate.getTime(), mchelper.cfg.dateFormat); + }; + + //GUI page settings + if(!$stateParams.action || $stateParams.action !== 'clone'){ + $scope.showHeaderUpdate = $stateParams.id; + } + $scope.headerStringAdd = $filter('translate')('ADD_TIMER'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_TIMER'); + $scope.cancelButtonState = "timersList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + //Save data + $scope.save = function(){ + + //Clear update required values + $scope.timer.frequencyData = null; + + //Update validity from/to + if($scope.vFromDate){ + $scope.timer.validityFrom = moment($scope.vFromDate).format('YYYY-MM-DDTHH:mm:ss'); + } + if($scope.vToDate){ + $scope.timer.validityTo = moment($scope.vToDate).format('YYYY-MM-DDTHH:mm:ss'); + } + + //Update Frequency Data + if($scope.timer.timerType === 'Simple'){ + $scope.timer.frequencyData = ($scope.rpInterval*1000)+','+$scope.rpCount; + }else if($scope.timer.timerType === 'Cron'){ + $scope.timer.frequencyData = $scope.cronFrequencyData; + }else{ + if($scope.timer.frequencyType === 'Daily'){ + $scope.timer.frequencyData = $scope.dailyFrequencyData.join(); + }else if($scope.timer.frequencyType === 'Weekly'){ + $scope.timer.frequencyData = $scope.weeklyFrequencyData; + }else if($scope.timer.frequencyType === 'Monthly'){ + $scope.timer.frequencyData = $scope.monthlyFrequencyData; + } + } + + //Update Time + if($scope.timer.timerType === 'Simple' || $scope.timer.timerType === 'Cron'){ + $scope.timer.triggerTime = null; + $scope.timer.frequency = null; + }else{ + if(!$scope.lTriggerTime){ + $scope.lTriggerTime = new Date(); + } + //set seconds to zero until the issue resolved >> https://github.com/mycontroller-org/mycontroller/issues/214 + $scope.timer.triggerTime = moment($scope.lTriggerTime).format('HH:mm:00'); + } + $scope.saveProgress = true; + if($stateParams.id){ + TimersFactory.update($scope.timer,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("timersList"); + },function(error){ + $scope.saveProgress = false; + displayRestError.display(error); + }); + }else{ + TimersFactory.create($scope.timer,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("timersList"); + },function(error){ + $scope.saveProgress = false; + displayRestError.display(error); + }); + } + } + +}); diff --git a/www/controllers/topology.js b/www/controllers/topology.js new file mode 100644 index 0000000..1a07478 --- /dev/null +++ b/www/controllers/topology.js @@ -0,0 +1,212 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('TopologyController', function(alertService, +$scope, MetricsFactory, $stateParams, $state, displayRestError, mchelper, CommonServices, $filter, TopologyService, $interval, mchelper) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('TOPOLOGY'); + $scope.noItemsSystemMsg = $filter('translate')('NO_DATA_AVAILABLE'); + $scope.noItemsSystemIcon = "pficon pficon-topology"; + + $scope.mchelper = mchelper; + + $scope.query = {}; + //Update $stateParams + if($stateParams.resourceType && $stateParams.resourceId){ + $scope.query = {'resourceType': $stateParams.resourceType, 'resourceId': $stateParams.resourceId}; + } + + $scope.query.realtime = true; + + var self = this; + $scope.vs = null; + var d3 = window.d3; + $scope.data = {}; + $scope.search = {}; + $scope.topologyHeight; + $scope.displayKinds= {}; + + $scope.kinds = { + "Gateway": "#vertex-Gateway", + "Node": "#vertex-Node", + "Sensor": "#vertex-Sensor", + "SensorVariable": "#vertex-SensorVariable" + }; + + // Refresh topology + $scope.refresh = function() { + MetricsFactory.getTopologyData($scope.query, function(data){ + $scope.data = data; + //$scope.relations = data.relations; + $scope.displayKinds = data.kinds; + },function(error){ + displayRestError.display(error); + }); + }; + + $scope.isEmpty = function(item){ + return angular.equals({}, item); + } + + $scope.checkboxModel = { + value : false + }; + $scope.legendTooltip = "Click here to show/hide entities of this type"; + + $scope.show_hide_names = function() { + var vertices = $scope.vs; + if($scope.checkboxModel.value) { + vertices.selectAll("tspan") + .style("display", "block"); + } + else { + vertices.selectAll("tspan") + .style("display", "none"); + } + }; + + $scope.refresh(); + var promise = $interval( $scope.refresh, mchelper.cfg.globalPageRefreshTime); + + $scope.$on('$destroy', function() { + $interval.cancel(promise); + }); + + $scope.$on("render", function(ev, vertices, added) { + /* + * We are passed two selections of elements: + * vertices: All the elements + * added: Just the ones that were added + */ + added.attr("class", function(d) { return self.getKindClass(d); }); + added.append("circle") + .attr("r", function(d) { return self.getDimensions(d).r}) + .attr('class' , function(d) { + return TopologyService.getItemStatusClass(d); + }); + added.append("title"); + added.on("dblclick", function(d) { + return self.dblclick(d);}); + added.append("text") + .attr("x", function(d) { return self.getDimensions(d).x}) + .attr("y", function(d) { return self.getDimensions(d).y}) + .style("font-family", function(d) {return self.getIcon(d).fname;}) + .style("fill", function(d) { return self.getDimensions(d).fc}) + .attr('font-size', function(d) { return self.getDimensions(d).fs +'px'} ) + .text(function(d) {return self.getIcon(d).ucode;}) + + .append("tspan") + .attr("x", 26) + .attr("y", 24) + .text(function(d) { return d.item.name }) + .style("font-size", function(d) {return "12px"}).style("fill", function(d) {return "black"}) + .style("font-family","FontAwesome") + .style("display", function(d) {if ($scope.checkboxModel.value) {return "block"} else {return "none"}}); + + added.selectAll("title").text(function(d) { + return TopologyService.tooltip(d).join("\n"); + }); + $scope.vs = vertices; + + /* Don't do default rendering */ + ev.preventDefault(); + }); + + self.class_name = function class_name(d) { + var class_name = d.item.icon; + return class_name; + }; + + this.dblclick = function dblclick(d) { + //window.location.assign(TopologyService.geturl(d)); + switch(d.item.kind) { + case "Gateway": + $state.go("gatewaysDetail", {'id': d.item.id}); + break; + case "Node": + $state.go("nodesDetail", {'id': d.item.id}); + break; + case "Sensor": + $state.go("sensorsDetail", {'id': d.item.id}); + break; + case "SensorVariable": + $state.go("sensorVariableEdit", {'id': d.item.id}); + break; + + } + }; + + self.getDimensions = function getDimensions(d) { + switch (d.item.kind) { + case "Gateway": + return { x: 0, y: 11, r: 28, fs: 33, fc:'#663333'}; + case "Node" : + return { x: 0, y: 9, r: 21, fs: 27, fc:'#1186C1'}; + case "Sensor" : + return { x: 0.2, y: 8, r: 15, fs: 21, fc:'#9467bd'}; + default : + return { x: 0, y: 6, r: 12, fs:16, fc:'#ff7f0e'}; + } + }; + + self.getIcon = function(d) { + switch (d.item.kind) { + case "Gateway": + return {ucode:'\uf1e6', fname:'FontAwesome'}; + case "Node" : + return {ucode:'\uf0e8', fname:'FontAwesome'}; + case "Sensor" : + return CommonServices.getSensorIconData(d.item.subType.en); + default : + return {ucode:'\uf005', fname:'FontAwesome'}; + } + }; + + self.getKindClass = function(d) { + switch (d.item.kind) { + case "Node": + return 'McNode'; + default : + return d.item.kind; + } + }; + + $scope.searchNode = function() { + var svg = TopologyService.getSVG(d3); + var query = $scope.search.query; + TopologyService.searchNode(svg, query); + }; + + $scope.resetSearch = function() { + TopologyService.resetSearch(d3); + // Reset the search term in search input + $scope.search.query = ""; + }; + + var resized = function(){ + var height = window.innerHeight - 265; + if(height < 350){ + $scope.topologyHeight = 350; + }else{ + $scope.topologyHeight = height; + } + } + + //set layout height + resized(); + +}); diff --git a/www/controllers/uid-tags.js b/www/controllers/uid-tags.js new file mode 100644 index 0000000..f9771ea --- /dev/null +++ b/www/controllers/uid-tags.js @@ -0,0 +1,191 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('UidTagsController', function(alertService, +$scope, $filter, UidTagsFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $stateParams) { + //GUI page settings + $scope.headerStringList = $filter('translate')('UID_TAGS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_UID_TAGS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-tags"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + if($stateParams.sensorId){ + $scope.query.sensorId = $stateParams.sensorId; + } + + //get all items + $scope.getAllItems = function(){ + UidTagsFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'uid', + title: $filter('translate')('UID'), + placeholder: $filter('translate')('FILTER_BY_UID'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'uid', + title: $filter('translate')('UID'), + sortType: 'numeric' + } + ], + onSortChange: sortChange, + isAscending: true, + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("uidTagsAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + UidTagsFactory.deleteIds($scope.itemIds, function(response) { + alertService.success('ITEM_DELETED_SUCCESSFULLY'); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + +//add edit item +myControllerModule.controller('UidTagsControllerAddEdit', function ($scope, CommonServices, alertService, UidTagsFactory, mchelper, $stateParams, $state, $filter, displayRestError, TypesFactory) { + $scope.item = {}; + $scope.cs = CommonServices; + + if($stateParams.id){ + UidTagsFactory.get({"id":$stateParams.id},function(response) { + $scope.item = response; + $scope.resourcesList = $scope.cs.getResources($scope.item.resourceType); + },function(error){ + displayRestError.display(error); + }); + } + + //pre load + $scope.resourceTypes = TypesFactory.getResourceTypes({"resourceType": "UID tag"}); + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_UID_TAG_ENTRY'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_UID_TAG_ENTRY'); + $scope.cancelButtonState = "uidTagsList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + + //Save data + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + UidTagsFactory.update($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("uidTagsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + UidTagsFactory.create($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("uidTagsList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } + +}); diff --git a/www/controllers/users.js b/www/controllers/users.js new file mode 100644 index 0000000..99b83ad --- /dev/null +++ b/www/controllers/users.js @@ -0,0 +1,257 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + myControllerModule.controller('UsersControllerList', function(alertService, +$scope, SecurityFactory, $state, $uibModal, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('USERS_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_USERS_SETUP'); + $scope.noItemsSystemIcon = "fa fa-users"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + //get all Sensors + $scope.getAllItems = function(){ + SecurityFactory.getAllUsers($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'username', + title: $filter('translate')('USERNAME'), + placeholder: $filter('translate')('FILTER_BY_USERNAME'), + filterType: 'text' + }, + { + id: 'fullName', + title: $filter('translate')('FULL_NAME'), + placeholder: $filter('translate')('FILTER_BY_FULL_NAME'), + filterType: 'text', + }, + { + id: 'email', + title: $filter('translate')('EMAIL'), + placeholder: $filter('translate')('FILTER_BY_EMAIL'), + filterType: 'text', + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'username', + title: $filter('translate')('USERNAME'), + sortType: 'text' + }, + { + id: 'fullName', + title: $filter('translate')('FULL_NAME'), + sortType: 'text' + }, + { + id: 'email', + title: $filter('translate')('EMAIL'), + sortType: 'text' + }, + { + id: 'enabled', + title: $filter('translate')('ENABLED'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("settingsUsersAddEdit", {'id':$scope.itemIds[0]}); + } + }; + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + SecurityFactory.deleteUserIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + +}); + + + +//Add Edit item +myControllerModule.controller('UsersControllerAddEdit', function ($scope, $stateParams, $state, SecurityFactory, TypesFactory, mchelper, alertService, displayRestError, $filter) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.item.user = {}; + $scope.item.user.enabled = true; + + if($stateParams.id){ + SecurityFactory.getUser({"id":$stateParams.id},function(response) { + $scope.item = response; + },function(error){ + displayRestError.display(error); + }); + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_USER'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_USER'); + $scope.cancelButtonState = "settingsUsersList"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + //Pre load + $scope.roles = SecurityFactory.getAllRolesSimple(); + + $scope.save = function(){ + $scope.saveProgress = true; + if($stateParams.id){ + SecurityFactory.updateUser($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("settingsUsersList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + }else{ + SecurityFactory.createUser($scope.item,function(response) { + alertService.success($filter('translate')('ITEM_CREATED_SUCCESSFULLY')); + $state.go("settingsUsersList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } + } +}); + +//Add Edit item +myControllerModule.controller('ProfileControllerUpdate', function ($scope, $stateParams, $state, SecurityFactory, TypesFactory, mchelper, alertService, displayRestError, $filter) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.item.user = {}; + $scope.item.user.enabled = true; + + $scope.resetProfile = function(){ + SecurityFactory.getProfile(function(response) { + $scope.item = response; + mchelper.user = angular.copy(response.user); + },function(error){ + if(error.statusText === 'Unauthorized'){ + $state.go("login"); + }else{ + displayRestError.display(error); + } + }); + } + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('PROFILE'); + $scope.headerStringUpdate = $filter('translate')('PROFILE'); + $scope.cancelButtonState = "dashboard"; //Cancel button state + $scope.saveProgress = false; + //$scope.isSettingChange = false; + + //Load self details + $scope.resetProfile(); + + $scope.save = function(){ + $scope.saveProgress = true; + SecurityFactory.updateProfile($scope.item,function(response) { + alertService.success($filter('translate')('PROFILE_UPDATED_SUCCESSFULLY')); + $scope.saveProgress = false; + $scope.editEnable.profile = false; + $scope.resetProfile(); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); diff --git a/www/controllers/variables-mapper.js b/www/controllers/variables-mapper.js new file mode 100644 index 0000000..8f2a852 --- /dev/null +++ b/www/controllers/variables-mapper.js @@ -0,0 +1,130 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('VariablesMapperListController', function(alertService, $scope, $filter, displayRestError, TypesFactory, $filter, mchelper, CommonServices, $state) { + + + //GUI page settings + $scope.headerStringList = $filter('translate')('SENSORS_AND_VARIABLES_MAPPING'); + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + + //get all items + $scope.getAllItems = function(){ + TypesFactory.getSensorVariableMapper(function(response) { + $scope.orgList = response; + $scope.filteredList = $scope.orgList; + $scope.filterConfig.resultsCount = $scope.filteredList.length; + },function(error){ + displayRestError.display(error); + }); + } + + //Pre load + $scope.getAllItems(); + $scope.itemName = null; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.filterChangeLocal(filters, $scope); + $scope.itemName = null; + }; + + $scope.filterConfig = { + fields: [ + { + id: 'displayName', + title: $filter('translate')('SENSOR_TYPE'), + placeholder: $filter('translate')('FILTER_BY_SENSOR_TYPE'), + filterType: 'text' + },{ + id: 'value', + title: $filter('translate')('SENSOR_VARIABLES'), + placeholder: $filter('translate')('FILTER_BY_SENSOR_VARIABLES'), + filterType: 'array' + }, + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + //Select item + $scope.selectItem = function (item) { + if($scope.itemName === item.displayName){ + $scope.itemName = null; + }else{ + $scope.itemName = item.displayName; + } + }; + + //Edit item + $scope.editItem = function () { + $state.go("settingsVariablesMapperEdit", {'sensorType':$scope.itemName}); + }; + +}); + +//Edit mapping +myControllerModule.controller('VariablesMapperEditController', function ($scope, TypesFactory, $filter, $stateParams, mchelper, alertService) { + + //GUI page settings + $scope.headerStringAdd = $filter('translate')('MODIFIY_SENSOR_VARIABLES_MAPPING'); + $scope.cancelButtonState = "settingsVariablesMapperList"; //Cancel button state + $scope.saveProgress = false; + + + $scope.item = {}; + $scope.sensorVariableTypes = {}; + $scope.item.displayName = $stateParams.sensorType; + $scope.item.value = []; + + $scope.getSensorVariables = function(){ + TypesFactory.getSensorVariableMapperByType({"sensorType": $scope.item.displayName}, function(resource){ + $scope.sensorVariableTypes = resource; + angular.forEach($scope.sensorVariableTypes, function(value, key) { + if(value.ticked){ + $scope.item.value.push(value.displayName); + } + }); + }); + }; + + + //pre load + $scope.getSensorVariables(); + + $scope.save = function(){ + $scope.saveProgress = true; + TypesFactory.updateSensorVariableMapper($scope.item,function(response) { + $scope.saveProgress = false; + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + },function(error){ + $scope.saveProgress = false; + displayRestError.display(error); + }); + } + +}); diff --git a/www/controllers/variables-repository.js b/www/controllers/variables-repository.js new file mode 100644 index 0000000..67e80da --- /dev/null +++ b/www/controllers/variables-repository.js @@ -0,0 +1,221 @@ +/* + * Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com) + * and other contributors as indicated by the @author tags. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +myControllerModule.controller('VariablesRepositoryController', function(alertService, +$scope, VariablesRepositoryFactory, $state, $uibModal, $stateParams, displayRestError, mchelper, CommonServices, $filter) { + + //GUI page settings + $scope.headerStringList = $filter('translate')('VARIABLES_DETAIL'); + $scope.noItemsSystemMsg = $filter('translate')('NO_VARIABLES_SETUP'); + $scope.noItemsSystemIcon = "fa fa-list-alt"; + + //load empty, configuration, etc., + $scope.mchelper = mchelper; + $scope.filteredList=[]; + + //data query details + $scope.currentPage = 1; + $scope.query = CommonServices.getQuery(); + $scope.queryResponse = {}; + + //Get min number + $scope.getMin = function(item1, item2){ + return CommonServices.getMin(item1, item2); + }; + + + if($stateParams.resourceType){ + $scope.query.resourceType = $stateParams.resourceType; + $scope.query.resourceId = $stateParams.resourceId; + } + + //get all items + $scope.getAllItems = function(){ + VariablesRepositoryFactory.getAll($scope.query, function(response) { + $scope.queryResponse = response; + $scope.filteredList = $scope.queryResponse.data; + $scope.filterConfig.resultsCount = $scope.queryResponse.query.filteredCount; + },function(error){ + displayRestError.display(error); + }); + } + + //Hold all the selected item ids + $scope.itemIds = []; + + $scope.selectAllItems = function(){ + CommonServices.selectAllItems($scope); + }; + + $scope.selectItem = function(item){ + CommonServices.selectItem($scope, item); + }; + + //On page change + $scope.pageChanged = function(newPage){ + CommonServices.updatePageChange($scope, newPage); + }; + + //Filter change method + var filterChange = function (filters) { + //Reset filter fields and update items + CommonServices.updateFiltersChange($scope, filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'key', + title: $filter('translate')('KEY'), + placeholder: $filter('translate')('FILTER_BY_KEY'), + filterType: 'text' + }, + { + id: 'value', + title: $filter('translate')('VALUE'), + placeholder: $filter('translate')('FILTER_BY_VALUE'), + filterType: 'text' + }, + { + id: 'value2', + title: $filter('translate')('VALUE2'), + placeholder: $filter('translate')('FILTER_BY_VALUE2'), + filterType: 'text' + }, + { + id: 'value3', + title: $filter('translate')('VALUE3'), + placeholder: $filter('translate')('FILTER_BY_VALUE3'), + filterType: 'text' + } + ], + resultsCount: $scope.filteredList.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + + //Sort columns + var sortChange = function (sortId, isAscending) { + //Reset sort type and update items + CommonServices.updateSortChange($scope, sortId, isAscending); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'key', + title: $filter('translate')('KEY'), + sortType: 'text' + }, + { + id: 'value', + title: $filter('translate')('VALUE'), + sortType: 'text' + }, + { + id: 'value2', + title: $filter('translate')('VALUE2'), + sortType: 'text' + }, + { + id: 'value3', + title: $filter('translate')('VALUE3'), + sortType: 'text' + } + ], + onSortChange: sortChange + }; + + + //Delete item(s) + $scope.delete = function (size) { + var modalInstance = $uibModal.open({ + templateUrl: 'partials/common-html/delete-modal.html', + controller: 'ControllerDeleteModal', + size: size, + resolve: {} + }); + + modalInstance.result.then(function () { + VariablesRepositoryFactory.deleteIds($scope.itemIds, function(response) { + alertService.success($filter('translate')('ITEMS_DELETED_SUCCESSFULLY')); + //Update display table + $scope.getAllItems(); + $scope.itemIds = []; + },function(error){ + displayRestError.display(error); + }); + }), + function () { + //console.log('Modal dismissed at: ' + new Date()); + } + }; + + //Edit item + $scope.edit = function () { + if($scope.itemIds.length == 1){ + $state.go("variablesRepositoryAddEdit",{'id':$scope.itemIds[0]}); + } + }; + +}); + +//Add Edit script controller +myControllerModule.controller('VariablesRepositoryControllerAddEdit', function ($scope, $stateParams, $state, + VariablesRepositoryFactory, mchelper, alertService, displayRestError, $filter, CommonServices) { + $scope.mchelper = mchelper; + $scope.item = {}; + $scope.cs = CommonServices; + $scope.showData = false; + + if($stateParams.id){ + VariablesRepositoryFactory.get({"id":$stateParams.id},function(response) { + $scope.item = response; + $scope.showData = true; + },function(error){ + displayRestError.display(error); + $scope.showData = true; + }); + }else{ + $scope.showData = true; + } + + $scope.editorOptions = { + lineWrapping : true, + lineNumbers: true, + readOnly: 'nocursor', + mode: 'xml', + }; + + //GUI page settings + $scope.showHeaderUpdate = $stateParams.id; + $scope.headerStringAdd = $filter('translate')('ADD_VARIABLE'); + $scope.headerStringUpdate = $filter('translate')('UPDATE_VARIABLE'); + $scope.cancelButtonState = "variablesRepositoryList"; //Cancel button url + $scope.saveProgress = false; + + $scope.save = function(){ + $scope.saveProgress = true; + VariablesRepositoryFactory.update($scope.item, function(response) { + alertService.success($filter('translate')('ITEM_UPDATED_SUCCESSFULLY')); + $state.go("variablesRepositoryList"); + },function(error){ + displayRestError.display(error); + $scope.saveProgress = false; + }); + } +}); diff --git a/www/images/favicon.ico b/www/images/favicon.ico new file mode 100644 index 0000000..1c8c373 Binary files /dev/null and b/www/images/favicon.ico differ diff --git a/www/images/mc_logo.gif b/www/images/mc_logo.gif new file mode 100644 index 0000000..f8e9958 Binary files /dev/null and b/www/images/mc_logo.gif differ diff --git a/www/images/mc_logo.png b/www/images/mc_logo.png new file mode 100644 index 0000000..9454072 Binary files /dev/null and b/www/images/mc_logo.png differ diff --git a/www/images/mc_logo_.gif b/www/images/mc_logo_.gif new file mode 100644 index 0000000..2f5d527 Binary files /dev/null and b/www/images/mc_logo_.gif differ diff --git a/www/images/mc_logo_2.gif b/www/images/mc_logo_2.gif new file mode 100644 index 0000000..1531ab2 Binary files /dev/null and b/www/images/mc_logo_2.gif differ diff --git a/www/images/mc_logo_2.jpg b/www/images/mc_logo_2.jpg new file mode 100644 index 0000000..1b26643 Binary files /dev/null and b/www/images/mc_logo_2.jpg differ diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..62ca06c --- /dev/null +++ b/www/index.html @@ -0,0 +1,391 @@ + + + + + + + + MyController.org - The Open Source Controller + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + diff --git a/www/languages/mc_locale_gui-ca_es.json b/www/languages/mc_locale_gui-ca_es.json new file mode 100644 index 0000000..e19b038 --- /dev/null +++ b/www/languages/mc_locale_gui-ca_es.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 hores", + "24_HOURS": "24 hores", + "ABOUT": "Sobre", + "ACCESS": "Accés", + "ACCESS_TOKEN": "Testimoni d'accés", + "ACK": "ACK", + "ACKNOWLEDGE": "Reconèixer", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Accions", + "ACTION_BOARD": "Tauler d'accions", + "ACTIVE": "Actiu", + "ADD": "Add", + "ADD_AN_ENTRY": "Afegir entrada", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Agefir firmware", + "ADD_FIRMWARE_TYPE": "Agefir tipus de firmware", + "ADD_FIRMWARE_VERSION": "Agefir versió de firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Afegir forward payload", + "ADD_GATEWAY": "Agefir gateway", + "ADD_GROUP": "Agefir grup", + "ADD_NEW_WIDGET": "Afegir nou widget", + "ADD_NODE": "Agefir node", + "ADD_OPERATION": "Operació d'afegir", + "ADD_RESOURCE": "Agefir recurs", + "ADD_RESOURCES_GROUP": "Agefir grup de recurs", + "ADD_ROLE": "Afegir rol", + "ADD_ROOM": "Afegir la sala", + "ADD_RULE": "Afegir la regla", + "ADD_SCRIPT": "Afegir script", + "ADD_SENSOR": "Afegir sensor", + "ADD_TEMPLATE": "Afegir la plantilla", + "ADD_TIMER": "Afegir timer", + "ADD_UID_TAG_ENTRY": "Afegir entrada de cordó UID", + "ADD_USER": "Afegir usuari", + "ADD_VARIABLE": "Afegir la variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Després", + "ALIAS": "Àlies", + "ALIVE_TEST_FREQUENCY": "Comprobació temps de vida (segons)", + "ALLOW_ANONYMOUS": "Permetre accés anònim", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "Registra't a MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Benvinguts a MyController.org! El Open Source Controller. ", + "ARCHITECTURE": "Arquitectura", + "AREA": "Area", + "AUTH_ID_SID": "Autorització ID", + "AUTH_TOKEN": "Token Auth.", + "AUTOMATIC_BACKUP_SETTINGS": "Paramètres de copies automàtiques", + "AUTORIZED_USER": "Usuari autoritzat", + "AUTO_GENERATE": "Autogeneració", + "AVAILABLE_PROCESS": "Processos disponibles", + "AVERAGE_TIME": "Temps promig", + "BACKUP": "Copies", + "BACKUPS_DETAIL": "Detall Copies", + "BACKUP_COMPLETED_SUCCESSFULLY": "Copies completades correctament", + "BACKUP_EVERY": "Copia cada", + "BACKUP_FILE_PREFIX": "Prefix fitxer copies", + "BACKUP_LOCATION": "Ubicación de les copies", + "BACKUP_ON": "Copies a", + "BACKUP_SETTINGS": "Parametres de les copies", + "BAR": "Barra", + "BASIS": "Base", + "BASIS_CLOSED": "Bases tancat", + "BASIS_OPEN": "Base oberta", + "BATTERY": "Bateria", + "BATTERY_LEVEL": "Nivell bateria", + "BATTERY_USAGE": "Us battery", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Host amfitrió", + "BUILD_JDK": "Construir JDK", + "BUILD_TOOL": "Construir l'eina", + "BUILT_ON": "Construït sobre", + "BUNDLE": "Farcell", + "BUTTON_SETTINGS": "Configuració del botó:", + "CANCEL": "Cancelar", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal tancat", + "CARDINAL_OPEN": "Cardinal obert", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Carregant detall de les Classes", + "CLIENT_ID": "Id Client", + "CLONE": "Clone", + "COLLECTION_COUNT": "Comte de col·lecció", + "COLLECTION_TIME": "Hora de recollida", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Desat", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Mida de memòria Virtual compromesos", + "CONDITION": "Condició", + "CONDITION_TYPE": "Tipus de condició", + "CONNECTION_DETAILS": "Detall connexió", + "CONTENT": "Contingut", + "CONTINUE": "Continuar", + "COUNT": "Comte", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Expressió de cron", + "CSS_FILES": "CSS files", + "CURRENT": "Actual", + "CURRENT_PASSWORD": "Password actual", + "CUSTOM_MESSAGE": "Missatge personalitzat", + "DAEMON": "Dimoni", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Que humiteja", + "DAMPENING_TYPE": "Tipus que humiteja", + "DASHBOARDS": "Escriptoris digitals", + "DASHBOARD_LIMIT": "Màxims d'escriptoris digitals permitits", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Versio Base de Dades", + "DATA_RETENTION_SETTINGS": "Configuració de retenció de dades", + "DATA_TYPE": "Tipus de dades", + "DATA_UNAVAILABLE": "Dades no disponibles", + "DATE_PATTERN": "Patró de data", + "DATE_RANGE": "Date range", + "DAY": "Dia", + "DAYS": "Dies", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Firmware per defecte", + "DEFAULT_TIME_RANGE": "Rang de temps per defecte", + "DELAY_TIME_IN_SECONDS": "Temps d'espera en segons", + "DELETE": "Suprimir", + "DELETE_DASHBOARD": "Suprimir tauler", + "DELETE_ITEMS": "Suprimir item(s)", + "DELETE_MESSAGE": "Esteu a punt de suprimir els elements seleccionats
supressió procés eliminarà traça completa d'aquest elements!
Feu clic a \"Esborrar\" per continuar.", + "DESCRIPTION": "Descripció", + "DESTINATION": "Destinació", + "DESTINATION_ID": "ID destinació", + "DETAILS": "Detalls", + "DEVICES": "Dispositius", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direcció", + "DISABLE": "Deshabitar", + "DISABLED": "Deshabilitat", + "DISABLE_WHEN_TRIGGER": "Deshabilitar quan s'activa", + "DISCOVER": "Descobrir", + "DISCOVER_INITIATED_SUCCESSFULLY": "Descobrir iniciat amb èxit", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Abaix", + "DRIVER": "Driver", + "EDIT": "Editar", + "EDIT_DASHBOARD": "Editar taulell", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email separat per comma", + "ENABLE": "Habilitar", + "ENABLED": "Habilitat", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Habilitar per defecte si no hi ha firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Quan s'activa aquesta opció, utilitzar firmware d'omissió, on microprogramari sol·licitada no està disponible en el sistema", + "ENABLE_EDIT_MODE": "Habilitat mode edició", + "ENABLE_MIN_MAX": "Habilitar Min/Max", + "ENABLE_SSL": "Habilitar SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Esborrar configuració", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Vas a esborrar la configuració completa dels elements seleccionats.
Feu clic a \"Esborrar configuració\" per seguir endavant.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Esborrar configuració", + "ERASE_CONFIGURATION_INITIATED": "Esborrar configuració iniciada per elements seleccionats", + "ERROR_ITEMS_NOT_AVAILABLE": "Elements seleccionats no disponible!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Exemple: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Exemple: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Exemple: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluacions", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extensió", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Fitxer", + "FILE_NAME": "Nom fitxer", + "FILE_SIZE": "Tamany fitxer", + "FILTER_BY_BLOCKS": "Filtrar per Blocks", + "FILTER_BY_CONDITION_TYPE": "Filtrar per tipus de condició", + "FILTER_BY_DAMPENING_TYPE": "Filtrar per tipus de Dampening", + "FILTER_BY_DESCRIPTION": "Filtrar per Descripció", + "FILTER_BY_DESTINATION_ID": "Filtrar per ID Destinatari", + "FILTER_BY_DIRECTION": "Filtrar per Direcció", + "FILTER_BY_EMAIL": "Filtrar per Email", + "FILTER_BY_ENABLED": "Filtrar els habilitats", + "FILTER_BY_EUI": "Filtrar per EUI", + "FILTER_BY_EXTENSION": "Filtrar per extensió", + "FILTER_BY_FILE_NAME": "Filtrar per Nom fitxer", + "FILTER_BY_FREQUENCY": "Filtrar per freqüència", + "FILTER_BY_FULL_NAME": "Filtrar per Nom compert", + "FILTER_BY_KEY": "Filtrar per clau", + "FILTER_BY_LEVEL": "Filtrar per Nivell", + "FILTER_BY_LIBRARY_VERSION": "Filtrar per versió Llibreria", + "FILTER_BY_MESSAGE": "Filtrar per Missatge", + "FILTER_BY_MESSGAE_TYPE": "Filtrar per Tipus de missatge", + "FILTER_BY_NAME": "Filtrar per Nom", + "FILTER_BY_NETWORK_TYPE": "Filtrar per tipus de xarxa", + "FILTER_BY_NODE_ID": "Filtrar per ID Node", + "FILTER_BY_OPERATION": "Filtrar per operació", + "FILTER_BY_OPERATION_TYPE": "Filtrar per tipus d'operació", + "FILTER_BY_PAYLOAD_OFF": "Filtrar per Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filtrar per Payload ON", + "FILTER_BY_PERMISSION": "Filtrar per Permís", + "FILTER_BY_PUBLIC_ACCESS": "Filtrar per l'accés públic", + "FILTER_BY_RESOURCE": "Filtrar per Recursos", + "FILTER_BY_RESOURCE_TYPE": "Filtrar per Tipus de recursos", + "FILTER_BY_SENSOR_ID": "Filtrar per ID Sensor", + "FILTER_BY_SENSOR_NAME": "Filtrar per Nom de sensor", + "FILTER_BY_SENSOR_TYPE": "Filtrar per Tipus de sensor", + "FILTER_BY_SENSOR_VARIABLES": "Filtrar per Variables de sensor", + "FILTER_BY_SOURCE_ID": "Filtrar per ID origen", + "FILTER_BY_STATUS": "Filtrar per l'estat", + "FILTER_BY_STATUS_MESSAGE": "Filtrar per Missatge d'estat", + "FILTER_BY_TYPE": "Filtrar per Tipus", + "FILTER_BY_TYPE_ID": "Filtrar per ID Tipus", + "FILTER_BY_UID": "Filtrar per UID", + "FILTER_BY_USERNAME": "Filtrar per Nom d'usuari", + "FILTER_BY_VALUE": "Filtrar per valor", + "FILTER_BY_VALUE2": "Filtrar per valor #2", + "FILTER_BY_VALUE3": "Filtrar per valor #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrar per Tipus de variables", + "FILTER_BY_VERSION": "Filtrar per Versió", + "FILTER_BY_VERSION_ID": "Filtrar per ID Versió", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Detall firmwares", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Detall tipus de firmware", + "FIRMWARE_TYPE_NAME": "Nom tipus de firmware", + "FIRMWARE_UPLOAD_INITIATED": "Carrega de firmware iniciada en els items sel·leccionats", + "FIRMWARE_VERSION": "Versió firmware", + "FIRMWARE_VERSIONS_DETAIL": "Detall versions de firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Dades de cinc minuts", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Avançar payload", + "FORWARD_PAYLOADS_DETAIL": "Detall de càrregues endavant", + "FREE": "Lliure", + "FREQUENCY": "Freqüència", + "FROM": "From", + "FROM_ADDRESS": "Adreça", + "FROM_PHONE_NUMBER": "De número de telèfon", + "FULL_NAME": "Nom complert", + "FULL_PATH": "Nom complert", + "GARBAGE_COLLECTOR": "Recol·lector de brossa", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Detall Gateways", + "GATEWAY_DETAILS": "Detall Gateway", + "GATEWAY_NAME": "Nom Gateway", + "GATEWAY_TYPE": "Tipus Gateway", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git cometre: branca", + "GLOBAL_PAGE_REFRESH_TIME": "Temps global de refresc", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Garantir accès a recurços fills(rols)", + "GRAPHS_SETTINGS": "Parametres gràfiques", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Grups", + "GROUP_NAME": "Nom grup", + "HEAP_MEMORY": "Memòria de munt", + "HEIGHT": "Alçada", + "HIDE_MENU": "Amaga el menú", + "HISTORICAL_BAR_CHART": "Historial Gràfiques", + "HOST_NAME": "Hostname", + "HOURS": "Hores", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Cas d'ignorar", + "IGNORE_DUPLICATE": "Ignorar duplicats", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Inclouen llindar alt", + "INCLUDE_THRESHOLD_LOW": "Inclouen llindar baix", + "INDIVIDUAL_SETTINGS": "Parametres individuals", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolar tipus", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval en segons", + "INVALID_USERNAME_OR_PASSWORD": "Invalid nom o password!", + "IN_RANGE": "En el rang", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) suprimits correctament", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) deshabilitats correctament", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) habilitats correctament", + "ITEMS_PER_ROW": "Items per fila", + "ITEM_CREATED_SUCCESSFULLY": "Items creat correctament", + "ITEM_UPDATED_SUCCESSFULLY": "Item actualitzat correctament", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Especificación Java Virtual Machine", + "JSON": "JSON", + "KEY": "Clau", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Llenguatge ", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Ultimes 6 hores", + "LAST_12_HOURS": "Ultimes 12 hores", + "LAST_DAY": "Ultim dia", + "LAST_EXECUTION": "Ultima execució", + "LAST_FIRED": "Ultim actiu/disparat", + "LAST_GARBAGECOLLECTOR_DURATION": "Ultima duración GC", + "LAST_HOUR": "Ultima hora", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Darrera modificació", + "LAST_MONTH": "Ultim mes", + "LAST_SEEN": "Ultim vist", + "LAST_TRIGGER": "Ultim disparador", + "LAST_WEEK": "Ultima setmana", + "LAST_YEAR": "Ultim any", + "LATITUDE": "Latitud", + "LEFT": "Left", + "LEVEL": "Nivell", + "LIBRARY_VERSION": "Versió llibreria", + "LINE": "Linia", + "LINEAR": "Linial", + "LINE_CHART": "Grafica", + "LOAD": "Carregar", + "LOADED": "Carregat", + "LOADING": "Carregant...", + "LOCATION": "Localització", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Missatge de Login", + "LOGS": "Logs", + "LOG_DIRECTION": "Direcció Logs", + "LOG_IN": "Log In", + "LOG_LEVEL": "Nivell Log", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitud", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Versió d'especificació de gestió", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Mida màxima de bloc", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Misatge", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Contingut del missatge", + "MESSAGE_TYPE": "Tipus de missatge", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Alçada mínima", + "MINIMUM_WIDTH": "Amplada mínima", + "MINUTES": "Minuts", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modificación sensor i variables", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Exemple: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Exemple: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Exemple: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Exemple: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Registre del servidor MyController", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nom", + "NETWORK": "Xarxa", + "NETWORK_TYPE": "Tipus de xarxa", + "NEVER": "Mai", + "NEW": "New", + "NEW_DASHBOARD": "Nova dashboard", + "NEW_PASSWORD": "Nou password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "L'interval de nodes vius comprovació", + "NODES_DETAIL": "Detalls nodes", + "NODE_DETAILS": "Detall nodes", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node Id", + "NODE_NAME": "Nom node", + "NODE_STATUS": "Estatus de node", + "NODE_TYPE": "Tipus Node", + "NON_HEAP_MEMORY": "Munt no memòria", + "NOTHING_SELECTED": "Res seleccionat", + "NOTIFICATIONS": "Notificacions", + "NOT_SET": "No marcat", + "NO_ACK": "Cap ack", + "NO_BACKUPS_SETUP": "Backups no configurats", + "NO_DATA_AVAILABLE": "Dades no disponibles", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "Firmware no configurats", + "NO_FIRMWARE_TYPES_SETUP": "Tipus de firmware no configurats", + "NO_FIRMWARE_VERSIONS_SETUP": "Versions de firmware no configurats", + "NO_FORWARD_PAYLOADS_SETUP": "Establir cap endavant càrregues.", + "NO_GATEWAYS_SETUP": "Gateways no configurats", + "NO_ITEMS_IN_FILTER": "Oops! No s'ha trobat res. Modifica la consulta", + "NO_ITEMS_SETUP": "Sense Items configurats", + "NO_LOGS_AVAILABLE": "No hi ha Logs", + "NO_NODES_SETUP": "Nodes no configurats", + "NO_OPERATIONS_SETUP": "No hi ha operacions configurar.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Sense recursos assignats amb aquest grup.", + "NO_RESOURCE_GROUPS_SETUP": "No hi ha grups de recursos establert.", + "NO_ROOMS_SETUP": "No hi ha habitacions configurades.", + "NO_RULES_SETUP": "No hi ha regles establertes.", + "NO_SCRIPTS_SETUP": "No hi ha scripts establerts.", + "NO_SENSORS_SETUP": "No hi ha sensors de configurar.", + "NO_TEMPLATES_SETUP": "No hi ha plantilles de configurar.", + "NO_TIMERS_SETUP": "Establir cap temporitzadors.", + "NO_UID_TAGS_SETUP": "Cap configuració d'etiquetes UID.", + "NO_VARIABLES_SETUP": "Constituir variables.", + "OCCURRENCES": "Aparicions", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "Dades d'un dia", + "ONE_HOUR_DATA": "Dades d'una hora", + "ONE_MINUTE_DATA": "Dades d'un minut", + "OPERATING_SYSTEM": "Sistema operatiu", + "OPERATION": "Operació", + "OPERATIONS": "Operacions", + "OPERATIONS_DETAIL": "Detall de les operacions", + "OPERATION_NAME": "Nom d'operació", + "OPERATION_TYPE": "Tipus d'operació", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Pare", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Clau", + "PATTERN": "Patró", + "PAYLOAD": "Càrrega útil", + "PAYLOAD_DELAY": "Càrrega / retard", + "PAYLOAD_OFF": "Càrrega útil OFF", + "PAYLOAD_ON": "Càrrega útil ON", + "PEAK": "Pic", + "PERCENTAGE": "Percentatge", + "PERMISSION": "Permís", + "PHONE_NUMBERS": "Números de telèfon", + "PHONE_NUMBERS_COMMA_SEPARATED": "Telèfon números separats per comes", + "PHYSICAL_MEMORY": "Memòria física (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Nom del port", + "PRIORITY": "Priority", + "PRIVATE": "Privat", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Procés de CPU", + "PROFILE": "Perfil", + "PROFILE_UPDATED_SUCCESSFULLY": "Perfil actualitzat correctament", + "PROPERTIES": "Properties", + "PUBLIC": "Públic", + "PUBLIC_ACCESS": "Accés públic", + "PUBLIC_KEY": "Public key", + "PURGE": "Vuidar", + "PURGE_BEFORE": "Vuidar abans", + "PURGE_DONE_SUCCESSFULLY": "Vuida completada correctament", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Vuidar els registres de Logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "Advertiment: Si no seleccioneu cap paràmetre, aquest procés se suprimirà tot!", + "PURGING": "Purga", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Dades brutes", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "Li estan a punt de tornar a arrencar seleccionat elements
clic 'Reiniciar' per procedir.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reinici iniciada per elements seleccionats.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "L'actualització", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refrescar temps (segons)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Comunicats", + "RELOAD": "Recàrrega", + "RELOAD_INITIATED_SUCCESSFULLY": "Recarregar iniciada amb èxit", + "RESOURCE": "Recurs", + "RESOURCES": "Recursos", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Grups de recursos", + "RESOURCES_LOGS": "Registres de recursos", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Detall de Logs de recursos", + "RESOURCES_LOG_LEVEL": "Nivell de Logs de recursos", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Detall de grups de recursos", + "RESOURCE_GROUPS_MAPS_DETAIL": "Detall de mapes de grups de recursos", + "RESOURCE_GROUPS_TURNED_OFF": "Grups de recursos en OFF", + "RESOURCE_GROUPS_TURNED_ON": "Grups de recursos en ON", + "RESOURCE_GROUP_TURNED_OFF": "Grup de recursos a OFF", + "RESOURCE_GROUP_TURNED_ON": "Grup de recursos a ON", + "RESOURCE_TYPE": "Tipus de recurs", + "RESTORE": "Restauració", + "RESTORE_CONFIRMATION_MESSAGE": "Esteu a punt de restaurar sistema a \"{{nom}}\".
Restaurar suprimeix totes les dades/configuració actuals i passará a l'estat de '{{nom}}'!
Feu clic a \"Restaura\" per continuar.
Nota: després de restaurar amb èxit cal engega el servidor manualment des de la línia d'ordres", + "RESTORE_CONFIRMATION_TITLE": "Restaurar sistema a \"{{nom}}\"", + "RESTORE_INITIATED_SUCCESSFULLY": "Restauració iniciada amb èxit.", + "RESULT": "Result", + "RETAIN_MAX": "Mantenir la màxima #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Esteu a punt de canviar la configuració de retenció de dades mètriques.
Aquesta acció pot conduir a pèrdua de dades. Llegiu el manual d'usuari per a més detalls.
És molt recomanable una còpia de seguretat de sistema abans de seguir endavant!", + "RETENTION_DIALOG_TITLE": "Llegeixi atentament abans de seguir endavant", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Rols", + "ROLES_DETAIL": "Detall de rols", + "ROOM": "Sala", + "ROOMS": "Sales", + "ROOMS_DETAIL": "Detall de les Sales", + "ROOM_NAME": "Nom de Sala", + "RULES": "Regles", + "RULES_DETAIL": "Detall de les normes", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nom de la norma", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Executar la còpia de seguretat", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Ara executi", + "SAVE": "Desa", + "SAVE_CHANGES": "Desa els canvis", + "SAVING": "Desant...", + "SCRIPT": "Escriptura", + "SCRIPTS": "Seqüències d'ordres", + "SCRIPTS_DETAIL": "Detall d'escriptures", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Segons", + "SELECT": "Seleccioneu", + "SEND": "Enviar", + "SENDING": "Enviant dades", + "SEND_RAW_MESSAGE": "Enviar missatge crua", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Acció de sensors", + "SENSORS_AND_VARIABLES_MAPPING": "Mapa de Sensors i variables", + "SENSORS_DETAIL": "Detall de sensors", + "SENSOR_DETAILS": "Dades del sensor", + "SENSOR_ID": "Identificador del sensor", + "SENSOR_NAME": "Nom del sensor", + "SENSOR_TYPE": "Tipus de sensors", + "SENSOR_VARIABLE": "Variable de sensor", + "SENSOR_VARIABLES": "Variables de sensor", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Tipus de variable de sensors", + "SERIAL_BAUD_RATE_EXAMPLE": "Exemple: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Exemple: / dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Exemple: 120", + "SETTINGS": "Configuració", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Mostra de llegendes", + "SHOW_MENU": "Mostra el menú", + "SIX_HOURS_DATA": "Dades de sis hores", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP clau", + "SMTP_PORT": "Port de SMTP", + "SMTP_USERNAME": "Nom d'usuari SMTP", + "SOURCE": "Font", + "SOURCE_CODE": "Codi font", + "SOURCE_ID": "Font id", + "SPECIFICATION_VENDOR": "Especificació del venedor", + "SPECIFICATION_VERSION": "Especificació de versió", + "STACKED_AREA_CHART": "Àrea de Gràfic apilada", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Estat", + "STATUS_MESSAGE": "Missatge d'estat", + "STATUS_SINCE": "Des de l'estat", + "STEP_AFTER": "Pas després de", + "STEP_BEFORE": "Pas abans", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Tema", + "SUB_TYPE": "Tipus de la sub", + "SUNRISE": "Alba", + "SUNSET": "Posta de sol", + "SUPPORT": "Suport", + "SWAP": "Intercanvi", + "SWAP_SPACE": "Espai d'intercanvi", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "Sistema", + "SYSTEM_CPU_LOAD": "Càrrega de Cpu de sistema", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Mitjana de càrrega de sistema", + "SYSTEM_STATUS": "Estatus de sistema", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Límit de files de taula", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Plantilla", + "TEMPLATES": "Plantilles", + "TEMPLATES_DETAIL": "Detall de plantilles", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Connexió de prova", + "TEXT": "Text", + "THREADS_COUNT": "Comte de fils", + "THRESHOLD_VALUE": "Valor llindar", + "THRESHOLD_VALUE_HIGH": "Valor llindar alt", + "THRESHOLD_VALUE_LOW": "Valor llindar baix", + "TIME": "Temps", + "TIMERS": "Temporitzadors", + "TIMERS_DETAIL": "Detall de temporitzadors", + "TIMER_NAME": "Nom de temporitzador", + "TIMER_TYPE": "Tipus de temporitzador", + "TIME_FORMAT": "Format d'hora", + "TIME_HH_MM_SS": "Hora(hh:mm:SS)", + "TIME_OFFSET_HH_MM_SS": "Compensació de temps (HH:mm:ss)", + "TIME_RANGE": "Interval de temps", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Títol", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Publicar temes", + "TOPICS_SUBSCRIBE": "Subscriure's a temes", + "TOPIC_PUBLISH": "Tema publicat", + "TOPIC_SUBSCRIBE": "Tema subscrit", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total carregat", + "TOTAL_STARTED": "Total iniciat", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Desencadenar quan", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Apagar", + "TURN_ON": "Engegar", + "TWELVE_HOURS_DATA": "Hora 12h", + "TWILIO": "Twilio", + "TYPE": "Tipus", + "TYPES": "Tipus", + "TYPE_ID": "Tipus Id", + "UID": "UID", + "UID_TAGS": "Etiquetes UID", + "UID_TAGS_DETAIL": "Detall d'etiquetes UID", + "UNAVAILABLE": "No disponible", + "UNDO_CHANGES": "Desfer canvis", + "UNIT": "Unit", + "UNITS": "Unitats", + "UNITS_CONFIGURATION": "Configurar unitats", + "UNITS_METRICS_IMPERIAL": "Unitats [Mètrics/Imperial]", + "UNLOADED": "Descarregat", + "UP": "Pujar", + "UPDATE": "Actualització", + "UPDATED_SUCCESSFULLY": "Actualització correcte", + "UPDATE_AN_ENTRY": "Actualitzar una entrada", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Actualitzar firmware", + "UPDATE_FIRMWARE_TYPE": "Actualitzar tipus de firmware", + "UPDATE_FIRMWARE_VERSION": "Actualitzar versió firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Actualitzar l'entrada de càrrega cap endavant", + "UPDATE_GATEWAY": "Actualitzar gateway", + "UPDATE_NODE": "Actualitzar node", + "UPDATE_OPERATION": "Operació d'actualització", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Actualitzar grup de recursos", + "UPDATE_ROOM": "Actualitzar habitació", + "UPDATE_RULE": "Regla d'actualització", + "UPDATE_SCRIPT": "Actualització d'escriptura", + "UPDATE_SENSOR": "Actualitzar sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Plantilla d'actualització", + "UPDATE_TIMER": "Actualitzar hora", + "UPDATE_UID_TAG_ENTRY": "Actualitzar l'entrada de cordó UID", + "UPDATE_USER": "Usuari actualitzat", + "UPDATE_VARIABLE": "Variable d'actualització", + "UPLOADED_ON": "Carregat en", + "UPLOAD_FIRMWARE": "Carregar firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Límit superior", + "UP_TIME": "Temps en ús", + "URL": "URL", + "USE": "Use", + "USED": "Utilitzat", + "USERNAME": "Nom d'usuari", + "USERS": "Usuaris", + "USERS_DETAIL": "Detall d'usuari", + "USER_WORKING_DIRECTORY": "Directori de treball", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Utilitza línia guia intractiva", + "UTILITIES": "Utilitats", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Ni ha ha espai", + "VALIDATION_ERROR_NUMBER": "El valor indroduït no es un numeric", + "VALIDITY": "Validar", + "VALUE": "Valor", + "VALUE2": "Valor #2", + "VALUE3": "Valor #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Detall de les variables", + "VARIABLES_GRAPHICAL_VIEW": "Visualització gràfica de les variables", + "VARIABLES_MAPPER": "Mapeig de variables", + "VARIABLES_REPOSITORY": "Repositori de variables", + "VARIABLE_TYPES": "Tipus de variables", + "VENDOR": "Venedor", + "VERSION": "Versió", + "VERSIONS": "Versions", + "VERSION_ID": "Versió Id", + "VERSION_KERNEL": "Versió/Kernel", + "VIEW_DETAILS": "Veure detalls", + "VM_NAME": "Nom VM", + "VM_VENDOR": "Venedor VM", + "VM_VERSION": "Versió VM", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Localització de discs d'arxius d'imatge de widget", + "WRITE_API_KEY": "Write API key", + "YEARS": "Anys", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-cs_cz.json b/www/languages/mc_locale_gui-cs_cz.json new file mode 100644 index 0000000..24347d5 --- /dev/null +++ b/www/languages/mc_locale_gui-cs_cz.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 hodin", + "24_HOURS": "24 hodin", + "ABOUT": "O programu", + "ACCESS": "Přístup", + "ACCESS_TOKEN": "Přístupový token", + "ACK": "Potvrzení", + "ACKNOWLEDGE": "Potvrzení", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack požadavek", + "ACK_RESPONSE": "Ack odpověď", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Akce", + "ACTION_BOARD": "Panel akcí", + "ACTIVE": "Aktivní", + "ADD": "Add", + "ADD_AN_ENTRY": "Přidat záznam", + "ADD_EXTERNAL_SERVER": "Přidat externí server", + "ADD_FIRMWARE": "Přidat firmware", + "ADD_FIRMWARE_TYPE": "Přidat typ firmware", + "ADD_FIRMWARE_VERSION": "Přidat verzi firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Přidat předávání těla zprávy", + "ADD_GATEWAY": "Přidat bránu", + "ADD_GROUP": "Přidat skupinu", + "ADD_NEW_WIDGET": "Přidat nový panel", + "ADD_NODE": "Přidat uzel", + "ADD_OPERATION": "Přidat operaci", + "ADD_RESOURCE": "Přidat zdroj", + "ADD_RESOURCES_GROUP": "Přidat skupinu zdrojů", + "ADD_ROLE": "Přidat roli", + "ADD_ROOM": "Přidat místnost", + "ADD_RULE": "Přidat pravidlo", + "ADD_SCRIPT": "Přidat skript", + "ADD_SENSOR": "Přidat senzor", + "ADD_TEMPLATE": "Přidat šablonu", + "ADD_TIMER": "Přidat časovač", + "ADD_UID_TAG_ENTRY": "Přidat UID štítek", + "ADD_USER": "Přidat uživatele", + "ADD_VARIABLE": "Přidat proměnnou", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Po", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Frekvence kontroly \"alive\" (sekund)", + "ALLOW_ANONYMOUS": "Povolit anonymní", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "Vlastní AngularJS kontrolery", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "PŘIHLÁSIT DO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Vítejte v MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architektura", + "AREA": "Oblast", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Nastavení automatické zálohy", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Automaticky generuj", + "AVAILABLE_PROCESS": "Dostupný Proces", + "AVERAGE_TIME": "Average time", + "BACKUP": "Záloha", + "BACKUPS_DETAIL": "Detail záloh", + "BACKUP_COMPLETED_SUCCESSFULLY": "Záloha byla úspěšně dokončena.", + "BACKUP_EVERY": "Interval záloh", + "BACKUP_FILE_PREFIX": "Prefix záložního souboru", + "BACKUP_LOCATION": "Umístění zálohy", + "BACKUP_ON": "Čas zálohy", + "BACKUP_SETTINGS": "Nastavení zálohy", + "BAR": "Sloupec", + "BASIS": "Základní", + "BASIS_CLOSED": "Základní uzavřený", + "BASIS_OPEN": "Základní otevřený", + "BATTERY": "Baterie", + "BATTERY_LEVEL": "Úroveň baterie", + "BATTERY_USAGE": "Úroveň baterie", + "BAUD_RATE": "Přenosová rychlost", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind adresa", + "BLOCKS": "Bloky", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Sestaveno", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Tlačítko nastavení:", + "CANCEL": "Storno", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags odděleno čárkou", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Detaily nahraných tříd", + "CLIENT_ID": "Id klienta", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Barva", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "Podmínka", + "CONDITION_TYPE": "Typ podmínky", + "CONNECTION_DETAILS": "Detaily spojení", + "CONTENT": "Obsah", + "CONTINUE": "Pokračovat", + "COUNT": "Počet", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Příkaz cronu", + "CSS_FILES": "CSS soubory", + "CURRENT": "Current", + "CURRENT_PASSWORD": "Aktuální heslo", + "CUSTOM_MESSAGE": "Vlastní zpráva", + "DAEMON": "Démon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Panely", + "DASHBOARD_LIMIT": "Maximální počet povolených panelů", + "DATA": "Data", + "DATABASE": "Databáze", + "DATABASE_SCHEMA_REVISION": "Revize databázového schéma", + "DATABASE_TYPE": "Typ databáze", + "DATABASE_VERSION": "Verze databáze", + "DATA_RETENTION_SETTINGS": "Nastavení uchování dat", + "DATA_TYPE": "Datový typ", + "DATA_UNAVAILABLE": "Data nejsou dostupná!", + "DATE_PATTERN": "Vzor data", + "DATE_RANGE": "Rozsah data", + "DAY": "Den", + "DAYS": "Dní", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default časový rozsah", + "DELAY_TIME_IN_SECONDS": "Zpoždění v sekundách", + "DELETE": "Smazat", + "DELETE_DASHBOARD": "Smazat panel", + "DELETE_ITEMS": "Smaž položku(y)", + "DELETE_MESSAGE": "Chystáte se smazat označenou položku(y)
Bude odstraněn kompletní trace této položky(ek)!
Stiskněte tlačítko \"Smazat\" k provedení.", + "DESCRIPTION": "Popis", + "DESTINATION": "Cílový bod", + "DESTINATION_ID": "Id cílového bodu", + "DETAILS": "Detaily", + "DEVICES": "Zařízení", + "DEVICE_IDENS": "Zařízení iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Zařízení idens oděleno čárkou", + "DIRECTION": "Směr", + "DISABLE": "Zakázat", + "DISABLED": "Zakázáno", + "DISABLE_WHEN_TRIGGER": "Zakázat po spuštění", + "DISCOVER": "Prohledat", + "DISCOVER_INITIATED_SUCCESSFULLY": "Hledání bylo zahájeno", + "DISPLAY_NAMES": "Zobrazit názvy", + "DOCUMENTS": "Dokumenty", + "DOUBLE": "Double", + "DOWN": "Zastaveno", + "DRIVER": "Ovladač", + "EDIT": "Upravit", + "EDIT_DASHBOARD": "Upravit panel", + "EMAIL": "Email", + "EMAILS": "Email(y)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email adresy oddělené čárkou", + "ENABLE": "Povolit", + "ENABLED": "Povoleno", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Povolit default, pokud neexistuje firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Je-li zapnuta tato volba, použij default firmware pokud není požadovaný firmware k dispozici", + "ENABLE_EDIT_MODE": "Povolit mód úprav", + "ENABLE_MIN_MAX": "Povolit Min/Max", + "ENABLE_SSL": "Povolit SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Zrušit konfiguraci", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Chystáte se zrušit kompletní konfiguraci zvolených položek.
Stiskněte tlašítko \"Zrušit konfiguraci\" k provedení.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Zrušit konfiguraci", + "ERASE_CONFIGURATION_INITIATED": "Zrušení konfigurace bylo zahájeno.", + "ERROR_ITEMS_NOT_AVAILABLE": "Zvolené položky(a) nejsou dostupné!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Příklad: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Příklad: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Příklad: 5003", + "EUI": "EUI", + "EVALUATIONS": "Hodnocení", + "EXECUTE_DISCOVER_INTERVAL": "Interval zjišťování uzlů", + "EXTENSION": "Přípona", + "EXTENSIONS": "Přípony", + "EXTERNAL_SERVERS": "Externí servery", + "EXTERNAL_SERVERS_DETAIL": "Detail externích serverů", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Soubor", + "FILE_NAME": "Název souboru", + "FILE_SIZE": "Velikost souboru", + "FILTER_BY_BLOCKS": "Filtruj podle Blocks", + "FILTER_BY_CONDITION_TYPE": "Filtruj podle Typu podmínky", + "FILTER_BY_DAMPENING_TYPE": "Filtruj podle Dampening typu", + "FILTER_BY_DESCRIPTION": "Filtruj podle Popisu", + "FILTER_BY_DESTINATION_ID": "Filtruj podle Id cílového bodu", + "FILTER_BY_DIRECTION": "Filtruj podle Směru", + "FILTER_BY_EMAIL": "Filtruj podle Emailu", + "FILTER_BY_ENABLED": "Filtruj podle Povolení", + "FILTER_BY_EUI": "Filtruj podle EUI", + "FILTER_BY_EXTENSION": "Filtruj podle Přípony", + "FILTER_BY_FILE_NAME": "Filtruj podle Názvu souboru", + "FILTER_BY_FREQUENCY": "Filtruj podle Frekvence", + "FILTER_BY_FULL_NAME": "Filtruj podle Celého jména", + "FILTER_BY_KEY": "Filtruj podle Klíče", + "FILTER_BY_LEVEL": "Filtruj podle Úrovně", + "FILTER_BY_LIBRARY_VERSION": "Filtruj podle Verze knihovny", + "FILTER_BY_MESSAGE": "Filtruj podle Zprávy", + "FILTER_BY_MESSGAE_TYPE": "Filtruj podle Typu zprávy", + "FILTER_BY_NAME": "Filtruj podle Názvu", + "FILTER_BY_NETWORK_TYPE": "Filtruj podle Typu sítě", + "FILTER_BY_NODE_ID": "Filtruj podle Id uzlu", + "FILTER_BY_OPERATION": "Filtruj podle Operace", + "FILTER_BY_OPERATION_TYPE": "Filtruj podle Typu operace", + "FILTER_BY_PAYLOAD_OFF": "Filtruj podle vypnutého těla zprávy", + "FILTER_BY_PAYLOAD_ON": "Filtruj podle zapnutého těla zprávy", + "FILTER_BY_PERMISSION": "Filtruj podle oprávnění", + "FILTER_BY_PUBLIC_ACCESS": "Filtlruj podle Veřejného přístupu", + "FILTER_BY_RESOURCE": "Filtruj podle Zdrojů", + "FILTER_BY_RESOURCE_TYPE": "Filtruj podle Typu zdroje", + "FILTER_BY_SENSOR_ID": "Filtruj podle Id senzoru", + "FILTER_BY_SENSOR_NAME": "Filtruj podle Názvu senzoru", + "FILTER_BY_SENSOR_TYPE": "Filtruj podle Typu senzoru", + "FILTER_BY_SENSOR_VARIABLES": "Filtruj podle Proměnných senzoru", + "FILTER_BY_SOURCE_ID": "Filtruj podle Id zdrojového bodu", + "FILTER_BY_STATUS": "Filtruj podle Stavu", + "FILTER_BY_STATUS_MESSAGE": "Filtruj podle Stavové zprávy", + "FILTER_BY_TYPE": "Filtruj podle Typu", + "FILTER_BY_TYPE_ID": "Filtruj podle Id typu", + "FILTER_BY_UID": "Filtruj podle UID", + "FILTER_BY_USERNAME": "Filtruj podle Uživatelského jména", + "FILTER_BY_VALUE": "Filtruj podle Hodnoty", + "FILTER_BY_VALUE2": "Filtruj podle Hodnoty #2", + "FILTER_BY_VALUE3": "Filtruj podle Hodnoty #3", + "FILTER_BY_VARIABLE_TYPES": "Filtruj podle Typu proměnné", + "FILTER_BY_VERSION": "Filtruj podle Verze", + "FILTER_BY_VERSION_ID": "Filtruj podle Id verze", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwary", + "FIRMWARES_DETAIL": "Detail firmwarů", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Detail typů firmware", + "FIRMWARE_TYPE_NAME": "Název typu firmware", + "FIRMWARE_UPLOAD_INITIATED": "Bylo zahájeno nahrání firmware pro zvolené položky.", + "FIRMWARE_VERSION": "Verze firmware", + "FIRMWARE_VERSIONS_DETAIL": "Detail verzí firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "5ti minutová data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Předat tělo zprávy", + "FORWARD_PAYLOADS_DETAIL": "Detail předání těla zprávy", + "FREE": "Free", + "FREQUENCY": "Frekvence", + "FROM": "Z", + "FROM_ADDRESS": "Z adresy", + "FROM_PHONE_NUMBER": "Z telefonního čísla", + "FULL_NAME": "Celé jméno", + "FULL_PATH": "Celá cesta", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Brána", + "GATEWAYS": "Brány", + "GATEWAYS_DETAIL": "Detail bran", + "GATEWAY_DETAILS": "Detaily brány", + "GATEWAY_NAME": "Název brány", + "GATEWAY_TYPE": "Typ brány", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Globální čas obnovení stránky", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Povolit přístup potomkům zdroje (v rolích)", + "GRAPHS_SETTINGS": "Nastavení grafů", + "GRAPH_SETTINGS": "Nastavení grafu", + "GROUPS": "Skupiny", + "GROUP_NAME": "Název skupiny", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Výška", + "HIDE_MENU": "Skrýt menu", + "HISTORICAL_BAR_CHART": "Sloupcový graf", + "HOST_NAME": "Název hosta", + "HOURS": "Hodin", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML dodatečné hlavičky", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignorovat velikost", + "IGNORE_DUPLICATE": "Ignorovat duplicitu", + "IMPERIAL": "Imperiiální", + "INCLUDE_THRESHOLD_HIGH": "Zahrnout horní práh", + "INCLUDE_THRESHOLD_LOW": "Zahrnout spodní práh", + "INDIVIDUAL_SETTINGS": "Vlastní nastavení", + "INIT": "Init", + "INTERPOLATE_TYPE": "Způsob interpolace", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval v sekundách", + "INVALID_USERNAME_OR_PASSWORD": "Neznámé uživatelské jméno nebo heslo!", + "IN_RANGE": "V dosahu", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Položka(y) byly smazány", + "ITEMS_DISABLED_SUCCESSFULLY": "Položka(y) byly zakázány", + "ITEMS_ENABLED_SUCCESSFULLY": "Položka(y) byly povoleny", + "ITEMS_PER_ROW": "Položek na řádku", + "ITEM_CREATED_SUCCESSFULLY": "Položka byla vytvořena", + "ITEM_UPDATED_SUCCESSFULLY": "Položka byla aktualizována", + "JAVA_HOME": "Java home", + "JAVA_VENDOR_URL": "Java URL", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Specifikace Java Virtual Machine", + "JSON": "JSON", + "KEY": "Klíč", + "KEY_FORMAT": "Formát Klíče", + "LANGUAGE": "Jazyk", + "LANGUAGE_VERSION": "Jazyková verze", + "LAST_5_MINUTES": "Posledních 5 minut", + "LAST_6_HOURS": "Posledních 6 hodin", + "LAST_12_HOURS": "Posledních 12 hodin", + "LAST_DAY": "Poslední den", + "LAST_EXECUTION": "Poslední vykonání", + "LAST_FIRED": "Naposledy spuštěn", + "LAST_GARBAGECOLLECTOR_DURATION": "Trvání posledního GC", + "LAST_HOUR": "Poslední hodina", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Poslední změna", + "LAST_MONTH": "Poslední měsíc", + "LAST_SEEN": "Poslední aktivita", + "LAST_TRIGGER": "Poslední trigger", + "LAST_WEEK": "Poslední týden", + "LAST_YEAR": "Poslední rok", + "LATITUDE": "Zeměpisná šířka", + "LEFT": "Left", + "LEVEL": "Úroveň", + "LIBRARY_VERSION": "Verze knihovny", + "LINE": "Čára", + "LINEAR": "Lineární", + "LINE_CHART": "Čárový graf", + "LOAD": "Zatížení", + "LOADED": "Nahráno", + "LOADING": "Nahrávám...", + "LOCATION": "Umístění", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Přihlašovací zpráva", + "LOGS": "Logy", + "LOG_DIRECTION": "Směr zprávy", + "LOG_IN": "Přihlásit", + "LOG_LEVEL": "Úroveň logů", + "LOG_OUT": "Odhlásit", + "LONGITUDE": "Zeměpisná délka", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximální velikost bloku", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Zpráva", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Zpráva obsahuje", + "MESSAGE_TYPE": "Typ zprávy", + "METRIC": "Metrický", + "METRICS": "Měření", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Datový typ", + "MILLISECONDS": "Milisekund", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimální výška", + "MINIMUM_WIDTH": "Minimální šířka", + "MINUTES": "Minut", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Změna mapování senzoru a proměnných", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Chystáte se změnit nastavení MQTT brokeru.
Tato akce způsobí restart MQTT služby s novým nastavením.", + "MQTT_BROKER_EDIT_DIALOG": "Nastavení MQTT brokeru", + "MQTT_BROKER_HOST_EXAMPLE": "Příklad: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Příklad: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Příklad: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Příklad: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Název", + "NETWORK": "Síť", + "NETWORK_TYPE": "Typ sítě", + "NEVER": "Nikdy", + "NEW": "New", + "NEW_DASHBOARD": "Nový panel", + "NEW_PASSWORD": "Nové heslo", + "NEXT_EXECUTION": "Next execution", + "NO": "Ne", + "NODE": "Uzel", + "NODES": "Uzly", + "NODES_ALIVE_CHECK_INTERVAL": "Interval kontroly uzlů \"alive\"", + "NODES_DETAIL": "Detail uzlů", + "NODE_DETAILS": "Detaily uzlu", + "NODE_EUI": "EUI uzlu", + "NODE_ID": "Id uzlu", + "NODE_NAME": "Název uzlu", + "NODE_STATUS": "Stav uzlu", + "NODE_TYPE": "Typ uzlu", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nevybráno", + "NOTIFICATIONS": "Oznámení", + "NOT_SET": "Nenastaveno", + "NO_ACK": "Bez potvrzení", + "NO_BACKUPS_SETUP": "Zálohy nejsou nastaveny.", + "NO_DATA_AVAILABLE": "Data nejsou dostupná.", + "NO_EXTERNAL_SERVERS_SETUP": "Externí servery nejsou nastaveny.", + "NO_FIRMWARES_SETUP": "Firmwary nejsou nastaveny.", + "NO_FIRMWARE_TYPES_SETUP": "Typy firmware nejsou nastaveny.", + "NO_FIRMWARE_VERSIONS_SETUP": "Verze firmware nejsou nastaveny.", + "NO_FORWARD_PAYLOADS_SETUP": "Předávání těla zprávy není nastaveno.", + "NO_GATEWAYS_SETUP": "Brány nejsou nastaveny.", + "NO_ITEMS_IN_FILTER": "Jéje! Nebyla nalezena žádná položka. Změn svůj dotaz.", + "NO_ITEMS_SETUP": "Položku nejsou nastaveny!", + "NO_LOGS_AVAILABLE": "Neexistují žádné logy.", + "NO_NODES_SETUP": "Uzly nejsou nastaveny.", + "NO_OPERATIONS_SETUP": "Operace nejsou nastaveny.", + "NO_RESOURCES_DATA_SETUP": "Zdroje nejsou nastaveny.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Ve skupině nejsou žádné zdroje.", + "NO_RESOURCE_GROUPS_SETUP": "Skupiny zdrojů nejsou nastaveny.", + "NO_ROOMS_SETUP": "Místnosti nejsou nastaveny.", + "NO_RULES_SETUP": "Pravidla nejsou nastavena.", + "NO_SCRIPTS_SETUP": "Skripty nejsou nastaveny.", + "NO_SENSORS_SETUP": "Senzory nejsou nastaveny.", + "NO_TEMPLATES_SETUP": "Šablony nejsou nastaveny.", + "NO_TIMERS_SETUP": "Časovače nejsou nastaveny.", + "NO_UID_TAGS_SETUP": "UID štítky nejsou nastaveny.", + "NO_VARIABLES_SETUP": "Proměnné nejsou nastaveny.", + "OCCURRENCES": "Výskytů", + "OFF": "Vypnuto", + "OFFSET": "Posun", + "ON": "Zapnuto", + "ONE_DAY_DATA": "Denní data", + "ONE_HOUR_DATA": "Hodinová data", + "ONE_MINUTE_DATA": "Minutová data", + "OPERATING_SYSTEM": "Operační systém", + "OPERATION": "Operace", + "OPERATIONS": "Operace", + "OPERATIONS_DETAIL": "Detail operací", + "OPERATION_NAME": "Název operace", + "OPERATION_TYPE": "Typ operace", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Rodič", + "PARENT_NODE_EUI": "EUI rodičovského uzlu", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Heslo", + "PATTERN": "Vzor", + "PAYLOAD": "Tělo zprávy", + "PAYLOAD_DELAY": "Tělo zprávy / Zpoždění", + "PAYLOAD_OFF": "Tělo zprávy Vypnout", + "PAYLOAD_ON": "Tělo zprávy Zappnout", + "PEAK": "Špička", + "PERCENTAGE": "Procent", + "PERMISSION": "Oprávnění", + "PHONE_NUMBERS": "Telefonní čísla", + "PHONE_NUMBERS_COMMA_SEPARATED": "Telefonní čísla oddělená čárkou", + "PHYSICAL_MEMORY": "Fyzická paměť (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frekvence (minuty)", + "PORT": "Port", + "PORT_NAME": "Název portu", + "PRIORITY": "Priorita", + "PRIVATE": "Soukromý", + "PRIVATE_KEY": "Soukromý klíč", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil byl aktualizován.", + "PROPERTIES": "Vlastnosti", + "PUBLIC": "Veřejný", + "PUBLIC_ACCESS": "Veřejný přístup", + "PUBLIC_KEY": "Veřejný klíč", + "PURGE": "Vyčisti", + "PURGE_BEFORE": "Vyčisti před", + "PURGE_DONE_SUCCESSFULLY": "Čištění dokončeno.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Vyčisti logy zdrojů", + "PURGE_SENSOR_VARIABLE": "Vyčisti proměnné senzorů", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "VAROVÁNÍ: Pokud nevyberete žádný parametr, tak proces smaže vše!", + "PURGING": "Čištění", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Nejvíce jednou (0)", + "QOS_1": "Alespoň jednou (1)", + "QOS_2": "Právě jednou (2)", + "RAW_DATA": "Surová data", + "READ_ONLY": "Jen pro čtení", + "REALTIME": "Reálný čas", + "REBOOT": "Restart", + "REBOOT_CONFIRMATION_MESSAGE": "Chystáte se restartovat zvolené položky
Stiskněte \"Restart\" k provedení.", + "REBOOT_CONFIRMATION_TITLE": "Restart", + "REBOOT_INITIATED": "Restart byl pro zvolené položky zahájen.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Limit záznamů", + "REFRESH": "Obnovit", + "REFRESH_NODES_INFO": "Obnov informace o uzlech", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "Obnovení informace o uzlech bylo zahájeno.", + "REFRESH_TIME_SECONDS": "Čas obnovení (sekund)", + "REGISTER_NODES_AUTOMATICALLY": "Registrovat uzly automaticky", + "REGISTRATION_STATUS": "Stav registrace", + "RELEASES": "Vydané verze", + "RELOAD": "Načti znovu", + "RELOAD_INITIATED_SUCCESSFULLY": "Znovunačtení bylo zahájeno.", + "RESOURCE": "Zdroj", + "RESOURCES": "Zdroje", + "RESOURCES_DATA": "Data zdrojů", + "RESOURCES_DATA_DETAIL": "Detail zdrojů", + "RESOURCES_GROUPS": "Skupiny zdrojů", + "RESOURCES_LOGS": "Logy zdrojů", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Detail logu zdrojů", + "RESOURCES_LOG_LEVEL": "Úroveň logu zdrojů", + "RESOURCES_LOG_RETENTION_DURATION": "Doba uchování logů zdrojů", + "RESOURCE_GROUPS_DETAIL": "Detail skupin", + "RESOURCE_GROUPS_MAPS_DETAIL": "Detail mapování skupin zdrojů", + "RESOURCE_GROUPS_TURNED_OFF": "Skupiny zdroje jsou vypnuté", + "RESOURCE_GROUPS_TURNED_ON": "Skupiny zdroje jsou zapnuté", + "RESOURCE_GROUP_TURNED_OFF": "Skupina zdroje je vypnuta", + "RESOURCE_GROUP_TURNED_ON": "Skupina zdroje je zapnuta", + "RESOURCE_TYPE": "Typ zdroje", + "RESTORE": "Obnovit", + "RESTORE_CONFIRMATION_MESSAGE": "Chystáte se obnovit systém k '{{name}}'.
Obnovení kompletně zruší aktuální data a nastavení a systém bude ve stavu k '{{name}}'!
Poznámka: Po obnovení systému musíte manuálně spustit server z příkazové řádky.", + "RESTORE_CONFIRMATION_TITLE": "Obnovení systému k '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Obnovení bylo zahájeno.", + "RESULT": "Výsledek", + "RETAIN_MAX": "Držet maximálně", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Chystáte se změnit nastavení uchování naměřených dat.
Tato operace může způsobit ztrátu dat. Přečtěte si manuál pro další detaily.
Před pokračováním důrazně doporučujeme provedení zálohy systému!", + "RETENTION_DIALOG_TITLE": "Před pokračováním důkladně čtěte", + "RE_ENABLE": "Znovu povolit", + "RIGHT": "Right", + "ROLES": "Role", + "ROLES_DETAIL": "Detail rolí", + "ROOM": "Místnost", + "ROOMS": "Místnosti", + "ROOMS_DETAIL": "Detail místnosti", + "ROOM_NAME": "Název místnosti", + "RULES": "Pravidla", + "RULES_DETAIL": "Detail pravidel", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Název pravidla", + "RUN": "Spustit", + "RUNNING": "Běží...", + "RUN_BACKUP": "Spusť zálohování", + "RUN_GARBAGE_COLLECTION": "Spustit garbage collection", + "RUN_NOW": "Spustit teď", + "SAVE": "Uložit", + "SAVE_CHANGES": "Uložit změny", + "SAVING": "Ukládám...", + "SCRIPT": "Skript", + "SCRIPTS": "Skripty", + "SCRIPTS_DETAIL": "Detail skriptů", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Skriptovací enginy", + "SCRIPT_FILES": "Soubory se skriptem", + "SEARCH": "Vyhledat", + "SECONDS": "Sekund", + "SELECT": "Vybrat", + "SEND": "Odeslat", + "SENDING": "Odesílám...", + "SEND_RAW_MESSAGE": "Odeslat zprávu", + "SENSOR": "Senzor", + "SENSORS": "Senzory", + "SENSORS_ACTION": "Akce senzorů", + "SENSORS_AND_VARIABLES_MAPPING": "Mapování senzorů a proměnných", + "SENSORS_DETAIL": "Detail senzorů", + "SENSOR_DETAILS": "Detaily senzoru", + "SENSOR_ID": "Id senzoru", + "SENSOR_NAME": "Název senzoru", + "SENSOR_TYPE": "Typ senzoru", + "SENSOR_VARIABLE": "Proměnná senzoru", + "SENSOR_VARIABLES": "Promenné senzorů", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Typ proměnné senzoru", + "SERIAL_BAUD_RATE_EXAMPLE": "Příklad: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Příklad: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Příklad: 120", + "SETTINGS": "Nastavení", + "SHOW_ICON": "Zobrazit ikonu", + "SHOW_LEGENDS": "Zobrazit legendu", + "SHOW_MENU": "Zobrazit menu", + "SIX_HOURS_DATA": "6ti hodinová data", + "SMART_SLEEP_ENABLED": "Chytré uspání povoleno", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP uživatelské jméno", + "SOURCE": "Zdrojový bod", + "SOURCE_CODE": "Zdrojový kód", + "SOURCE_ID": "Id zdrojového bodu", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Verze specifikace", + "STACKED_AREA_CHART": "Plošný graf", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Stav", + "STATUS_MESSAGE": "Stavová zpráva", + "STATUS_SINCE": "Poslední aktivita", + "STEP_AFTER": "Skok po", + "STEP_BEFORE": "Skok před", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Předmět", + "SUB_TYPE": "Podtyp", + "SUNRISE": "Východ", + "SUNSET": "Západ", + "SUPPORT": "Podpora", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Chyba v syntaxi", + "SYSTEM": "Systém", + "SYSTEM_CPU_LOAD": "Zatížení systémového CPU", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Průměrné zatížení systému", + "SYSTEM_STATUS": "Stav systému", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Chystáte se změnit nastavení proměnné senzoru.
Pokud jste změnili nastavení typu dat, pak budou smazána data této proměnné!", + "S_VARIABLE_DIALOG_TITLE": "Úprava konfigurací proměnné senzoru", + "TABLE_ROWS_LIMIT": "Limit řádků tabulky", + "TAGS": "UID štítky", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Šablona", + "TEMPLATES": "Šablony", + "TEMPLATES_DETAIL": "Detail Šablon", + "TEMPLATE_BINDINGS": "Bindings šablony", + "TENANT": "Tenant", + "TESTING": "Testuji...", + "TEST_CONNECTION": "Test spojení", + "TEXT": "Text", + "THREADS_COUNT": "Počet vláken", + "THRESHOLD_VALUE": "Prahová hodnota", + "THRESHOLD_VALUE_HIGH": "Prahová hodnota vrchní", + "THRESHOLD_VALUE_LOW": "Prahová hodnota spodní", + "TIME": "Čas", + "TIMERS": "Časovače", + "TIMERS_DETAIL": "Detail časovačů", + "TIMER_NAME": "Název časovače", + "TIMER_TYPE": "Typ časovače", + "TIME_FORMAT": "Formát času", + "TIME_HH_MM_SS": "Čas(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Časový posun (HH:mm:ss)", + "TIME_RANGE": "Rozsah času", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Název", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Publikovaná témata", + "TOPICS_SUBSCRIBE": "Témata k odběru", + "TOPIC_PUBLISH": "Publikované téma", + "TOPIC_SUBSCRIBE": "Téma k odběru", + "TOPOLOGY": "Topologie sítě", + "TOTAL": "Celkem", + "TOTAL_LOADED": "Celkem nahráno", + "TOTAL_STARTED": "Celkem spuštěno", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Spustit když", + "TRUST_HOST": "Důvěryhodný host", + "TURN_OFF": "Vypnout", + "TURN_ON": "Zapnout", + "TWELVE_HOURS_DATA": "12ti hodinová data", + "TWILIO": "Twilio", + "TYPE": "Typ", + "TYPES": "Typy", + "TYPE_ID": "Id typu", + "UID": "UID", + "UID_TAGS": "UID štítky", + "UID_TAGS_DETAIL": "Detail UID štítků", + "UNAVAILABLE": "Nedostupný", + "UNDO_CHANGES": "Vrátit změny", + "UNIT": "Jednotka", + "UNITS": "Jednotky", + "UNITS_CONFIGURATION": "Nastavení jednotek", + "UNITS_METRICS_IMPERIAL": "Jednotky [Metrické/Imperiální]", + "UNLOADED": "Uvolněno", + "UP": "Spuštěno", + "UPDATE": "Upravit", + "UPDATED_SUCCESSFULLY": "Úspěšně aktualizováno.", + "UPDATE_AN_ENTRY": "Úprava záznamu", + "UPDATE_EXTERNAL_SERVER": "Úprava externího serveru", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Úprava typu firmware", + "UPDATE_FIRMWARE_VERSION": "Úprava verze firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Úprava předávání těla zprávy", + "UPDATE_GATEWAY": "Úprava brány", + "UPDATE_NODE": "Úprava uzlu", + "UPDATE_OPERATION": "Úprava operace", + "UPDATE_RESOURCE": "Úprava zdroje", + "UPDATE_RESOURCES_GROUP": "Úprava skupiny zdrojů", + "UPDATE_ROOM": "Úprava místnosti", + "UPDATE_RULE": "Úprava pravidla", + "UPDATE_SCRIPT": "Úprava skriptu", + "UPDATE_SENSOR": "Úprava senzoru", + "UPDATE_SENSOR_VARIABLE": "Úprava proměnné senzoru", + "UPDATE_TEMPLATE": "Úprava šablony", + "UPDATE_TIMER": "Úprava časovače", + "UPDATE_UID_TAG_ENTRY": "Úprava UID štítku", + "UPDATE_USER": "Úprava uživatele", + "UPDATE_VARIABLE": "Úprava proměnné", + "UPLOADED_ON": "Čas nahrání", + "UPLOAD_FIRMWARE": "Nahrát firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Horní limit", + "UP_TIME": "Doba spuštění", + "URL": "URL", + "USE": "Použít", + "USED": "Použito", + "USERNAME": "Uživatelské jméno", + "USERS": "Uživatelé", + "USERS_DETAIL": "Detail uživatele", + "USER_WORKING_DIRECTORY": "Pracovní adresář uživatele", + "USE_GLOBAL": "Použít globálně", + "USE_INTERACTIVE_GUIDE_LINE": "Použij interaktivní pokyny", + "UTILITIES": "Nástroje", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Není povolen žádný prostor.", + "VALIDATION_ERROR_NUMBER": "Zadaná hodnota není číslo.", + "VALIDITY": "Platnost", + "VALUE": "Hodnota", + "VALUE2": "Hodnota #2", + "VALUE3": "Hodnota #3", + "VARIABLES": "Proměnné", + "VARIABLES_DETAIL": "Detail proměnných", + "VARIABLES_GRAPHICAL_VIEW": "Grafické zobrazení proměnných", + "VARIABLES_MAPPER": "Mapování proměnných", + "VARIABLES_REPOSITORY": "Proměnné", + "VARIABLE_TYPES": "Typy proměnných", + "VENDOR": "Vendor", + "VERSION": "Verze", + "VERSIONS": "Verze", + "VERSION_ID": "Id verze", + "VERSION_KERNEL": "Verze/Jádro", + "VIEW_DETAILS": "Zobraz detaily", + "VM_NAME": "Název VM", + "VM_VENDOR": "Společnost VM", + "VM_VERSION": "Verze VM", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Umístění souborů s obrázky pro panel", + "WRITE_API_KEY": "Zapsat klíč API ", + "YEARS": "Roků", + "YES": "Ano" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-da_dk.json b/www/languages/mc_locale_gui-da_dk.json new file mode 100644 index 0000000..c037d06 --- /dev/null +++ b/www/languages/mc_locale_gui-da_dk.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 timer", + "24_HOURS": "24 timer", + "ABOUT": "Om", + "ACCESS": "Adgang", + "ACCESS_TOKEN": "Adgangsbillet", + "ACK": "Ack", + "ACKNOWLEDGE": "Bekræft", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Bekræft forespørgel", + "ACK_RESPONSE": "Bekræft svar", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Aktioner", + "ACTION_BOARD": "Aktionstavle", + "ACTIVE": "Aktiv", + "ADD": "Tilføj", + "ADD_AN_ENTRY": "Tilføj et punkt", + "ADD_EXTERNAL_SERVER": "Tilføj ekstern server", + "ADD_FIRMWARE": "Tilføj firmware", + "ADD_FIRMWARE_TYPE": "Tilføj firmware type", + "ADD_FIRMWARE_VERSION": "Tilføj firmware version", + "ADD_FORWARD_PAYLOAD_ENTRY": "Tilføj punkt for videresendele af nyttelast", + "ADD_GATEWAY": "Tilføj gateway", + "ADD_GROUP": "Tilføj gruppe", + "ADD_NEW_WIDGET": "Tilføj ny widget", + "ADD_NODE": "Tilføj node", + "ADD_OPERATION": "Tilføj operation", + "ADD_RESOURCE": "Tilføj resource", + "ADD_RESOURCES_GROUP": "Tilføj resourcegruppe", + "ADD_ROLE": "Tilføj rolle", + "ADD_ROOM": "Tilføj område", + "ADD_RULE": "Tilføj regel", + "ADD_SCRIPT": "Tilføj script", + "ADD_SENSOR": "Tilføj sensor", + "ADD_TEMPLATE": "Tilføj skabelon", + "ADD_TIMER": "Tilføj timer", + "ADD_UID_TAG_ENTRY": "Tilføj punkt for UID-mærkat", + "ADD_USER": "Tilføj bruger", + "ADD_VARIABLE": "Tilføj variabel", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Efter", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Intervaltid for kontrol (sekunder)", + "ALLOW_ANONYMOUS": "Tillad anonyme", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IND PÅ MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Velkommen til MyController.org! Den Open Source Controller.", + "ARCHITECTURE": "Arkitektur", + "AREA": "Areal", + "AUTH_ID_SID": "Autoriseret id/sid", + "AUTH_TOKEN": "Autoriseret billet", + "AUTOMATIC_BACKUP_SETTINGS": "Indstillinger for automatisk backup", + "AUTORIZED_USER": "Autoriseret bruger", + "AUTO_GENERATE": "Auto-generér", + "AVAILABLE_PROCESS": "Tilgængelige kerner", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backupdetailjer", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup afviklet succesfuldt.", + "BACKUP_EVERY": "Backup hver eneste", + "BACKUP_FILE_PREFIX": "Filnavnsprefix til backup", + "BACKUP_LOCATION": "Backupplacering", + "BACKUP_ON": "Backup aktiv", + "BACKUP_SETTINGS": "Backupindtillinger", + "BAR": "Søjle", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis lukket", + "BASIS_OPEN": "Basis åben", + "BATTERY": "Batteri", + "BATTERY_LEVEL": "Batteriniveau", + "BATTERY_USAGE": "Batteriforbrug", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binær data", + "BIND_ADDRESS": "Adresseforbinding", + "BLOCKS": "Blokke", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bund", + "BROKET_HOST": "Broker-vært", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built tændt", + "BUNDLE": "Sampak", + "BUTTON_SETTINGS": "Knapindtillinger:", + "CANCEL": "Afbryd", + "CARDINAL": "Kardinal", + "CARDINAL_CLOSED": "Kardinal lukket", + "CARDINAL_OPEN": "Kardinal åben", + "CHANNEL_TAGS": "Kanal-mærker", + "CHANNEL_TAGS_COMMA_SEPARATED": "Kanel-mærker kommasepererede", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Klasse-belastning i detaljer", + "CLIENT_ID": "Klient-ID", + "CLONE": "Klon", + "COLLECTION_COUNT": "Antal for samling", + "COLLECTION_TIME": "Tid for samling", + "COLOR": "Farve", + "COMMAND": "Command", + "COMMITTED": "Bundet", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Bundet Virtuel Hukommelse", + "CONDITION": "Betingelse", + "CONDITION_TYPE": "Betingelsestype", + "CONNECTION_DETAILS": "Forbindelesdetaljer", + "CONTENT": "Indhold", + "CONTINUE": "Fortsæt", + "COUNT": "Antal", + "COUNTER": "Tæller", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron-udtyk", + "CSS_FILES": "CSS-filer", + "CURRENT": "Nutidig", + "CURRENT_PASSWORD": "Gældende kodeord", + "CUSTOM_MESSAGE": "Selvvalgt besked", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dæmpning", + "DAMPENING_TYPE": "Dæmpningstype", + "DASHBOARDS": "Instrumentborde", + "DASHBOARD_LIMIT": "Antal maksimalt tilladte intrumentborde", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database skema revision", + "DATABASE_TYPE": "Databasetype", + "DATABASE_VERSION": "Databaseversion", + "DATA_RETENTION_SETTINGS": "Vedholdenhedsindtillinger for data", + "DATA_TYPE": "Datatype", + "DATA_UNAVAILABLE": "Data ej tilgængelig!", + "DATE_PATTERN": "Datomønster", + "DATE_RANGE": "Datospand", + "DAY": "dag", + "DAYS": "dage", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Forvalgt firmware", + "DEFAULT_TIME_RANGE": "Forvalgt tidsspand", + "DELAY_TIME_IN_SECONDS": "Forsinkelsestid i sekunder", + "DELETE": "Slet", + "DELETE_DASHBOARD": "Slet instrumentbord", + "DELETE_ITEMS": "Slet punkt(er)", + "DELETE_MESSAGE": "Du er nu ved at slette markerede punkt(er)
Sletteprocessen vil fjerne ethvert spor af den/disse punkt(er)!
Klik 'Slet' for at fortsætte.", + "DESCRIPTION": "Beskrivelse", + "DESTINATION": "Bestemmelsessted", + "DESTINATION_ID": "Bestemmelsessted-ID", + "DETAILS": "Detaljer", + "DEVICES": "Enheder", + "DEVICE_IDENS": "Enhedsidentitet(er)", + "DEVICE_IDENS_COMMA_SEPARATED": "Enhedsindentitet(er) listet med kommaseperator", + "DIRECTION": "Retning", + "DISABLE": "Afmeld", + "DISABLED": "Afmeldt", + "DISABLE_WHEN_TRIGGER": "Afmeld efter affyring", + "DISCOVER": "Opdag", + "DISCOVER_INITIATED_SUCCESSFULLY": "Opdagfunktion opstartet succesfuldt", + "DISPLAY_NAMES": "Vis navne", + "DOCUMENTS": "Dokumenter", + "DOUBLE": "?? to gange ??", + "DOWN": "Ned", + "DRIVER": "Driver", + "EDIT": "Rediger", + "EDIT_DASHBOARD": "Rediger instrumentbord", + "EMAIL": "Email", + "EMAILS": "Emails", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email-adresser listet med kommaseperator", + "ENABLE": "Tilmeld", + "ENABLED": "Tilmeldt", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Tilmeld forvalg som ingen-firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Når dette valg er sat, pluk da den forvalgte firmware, hvis den ønskede firmware ikke er tilgængelig på systemet --> Når dette valg er aktivt, pluk da den forvalgte firmware, såfremt den ønskede firmware ikke er tilgængelig på systemet", + "ENABLE_EDIT_MODE": "Tilmeld rediger-tilstand", + "ENABLE_MIN_MAX": "Tilmeld Min/Max", + "ENABLE_SSL": "Tilmeld SSL", + "ENABLE_UNIQUE_NAME": "Aktiver unikt navn", + "ERASE_CONFIGURATION": "Slet konfiguration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Du er ved at slette alle konfigurationsdata for de markerede punkter
Klik 'Slet konfiguration' for at fortsætte.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Slet konfiguration", + "ERASE_CONFIGURATION_INITIATED": "Sletning af konfigurationer påbegyndt for de markerede punkter", + "ERROR_ITEMS_NOT_AVAILABLE": "Markede punkt(er) ej tilgængelige!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Eksempel: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Eksempel: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Eksempel: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evalueringer", + "EXECUTE_DISCOVER_INTERVAL": "Interval for opdagelse af nye noder", + "EXTENSION": "Format", + "EXTENSIONS": "Formater", + "EXTERNAL_SERVERS": "Eksterne servere", + "EXTERNAL_SERVERS_DETAIL": "Detalje for eksterne serverer", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Fil", + "FILE_NAME": "Filnavn", + "FILE_SIZE": "Filstørrelse", + "FILTER_BY_BLOCKS": "Filtrer på Blokke", + "FILTER_BY_CONDITION_TYPE": "Filtrer på Betingelsestype", + "FILTER_BY_DAMPENING_TYPE": "Filtrer på Dæmpningstype", + "FILTER_BY_DESCRIPTION": "Filtrer på Beskrivelse", + "FILTER_BY_DESTINATION_ID": "Filtrer på Destinationsid", + "FILTER_BY_DIRECTION": "Filtrer på Retning", + "FILTER_BY_EMAIL": "Filtrer på Email", + "FILTER_BY_ENABLED": "Filtrer på Tilmeldt", + "FILTER_BY_EUI": "Filtrer på EUI", + "FILTER_BY_EXTENSION": "Filtrer på Format", + "FILTER_BY_FILE_NAME": "Filtrer på Filnavn", + "FILTER_BY_FREQUENCY": "Filtrer på Frekvens", + "FILTER_BY_FULL_NAME": "Filtrer på Fulde navn", + "FILTER_BY_KEY": "Filtrer på Nøgle", + "FILTER_BY_LEVEL": "Filtrer på Niveau", + "FILTER_BY_LIBRARY_VERSION": "Filtrer på Biblioteksversion", + "FILTER_BY_MESSAGE": "Filtrer på Besked", + "FILTER_BY_MESSGAE_TYPE": "Filtrer på Beskedtype", + "FILTER_BY_NAME": "Filtrer på Navn", + "FILTER_BY_NETWORK_TYPE": "Filtrer på Netværkstype", + "FILTER_BY_NODE_ID": "Filtrer på Node-id", + "FILTER_BY_OPERATION": "Filtrer på Operation", + "FILTER_BY_OPERATION_TYPE": "Filtrer på Operationstype", + "FILTER_BY_PAYLOAD_OFF": "Filtrer på Nyttelast SLUK", + "FILTER_BY_PAYLOAD_ON": "Filtrer på Nyttelast TÆND", + "FILTER_BY_PERMISSION": "Filtrer på Tilladelser", + "FILTER_BY_PUBLIC_ACCESS": "Filtrer på Offentlig adgang", + "FILTER_BY_RESOURCE": "Filtrer på Resource", + "FILTER_BY_RESOURCE_TYPE": "Filtrer på Resourcetype", + "FILTER_BY_SENSOR_ID": "Filtrer på Sensor-id", + "FILTER_BY_SENSOR_NAME": "Filtrer på Sensornavn", + "FILTER_BY_SENSOR_TYPE": "Filtrer på Sensortype", + "FILTER_BY_SENSOR_VARIABLES": "Filtrer på Sensorvariabler", + "FILTER_BY_SOURCE_ID": "Filtrer på Kilde-id", + "FILTER_BY_STATUS": "Filtrer på Status", + "FILTER_BY_STATUS_MESSAGE": "Filtrer på Statusbesked", + "FILTER_BY_TYPE": "Filtrer på Type", + "FILTER_BY_TYPE_ID": "Filtrer på Type-id", + "FILTER_BY_UID": "Filtrer på UID", + "FILTER_BY_USERNAME": "Filtrer på Brugernavn", + "FILTER_BY_VALUE": "Filtrer på Værdi", + "FILTER_BY_VALUE2": "Filtrer på Værdi #2", + "FILTER_BY_VALUE3": "Filtrer på Værdi #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrer på Variabletyper", + "FILTER_BY_VERSION": "Filtrer på Version", + "FILTER_BY_VERSION_ID": "Filtrer på Versions-id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmware", + "FIRMWARES_DETAIL": "Firmwaredetaljer", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware detaljetype", + "FIRMWARE_TYPE_NAME": "Firmware typenavn", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload påbegyndt for markerede punkter.", + "FIRMWARE_VERSION": "Firmwareversion", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versionsdetalje", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Fem-minuters data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Videresendt nyttelast", + "FORWARD_PAYLOADS_DETAIL": "Detaljer for videresendt nyttelast", + "FREE": "Fri", + "FREQUENCY": "Frekvens", + "FROM": "Fra", + "FROM_ADDRESS": "Afsenderadresse", + "FROM_PHONE_NUMBER": "Afsendernummer", + "FULL_NAME": "Fulde navn", + "FULL_PATH": "Fulde sti", + "GARBAGE_COLLECTOR": "Affaldsopsamler", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Detalje for Gateways", + "GATEWAY_DETAILS": "Gateway-detaljer", + "GATEWAY_NAME": "Gateway navn", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "GIT-beskeder", + "GIT_COMMIT_BRANCH": "GIT indsend:gren", + "GLOBAL_PAGE_REFRESH_TIME": "Global sidegenindlæsningstid", + "GPS_DATA": "GPS-data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Giv adgang til under-resourcer (i roller)", + "GRAPHS_SETTINGS": "Grafindstilliger", + "GRAPH_SETTINGS": "Grafindstilliger", + "GROUPS": "Grupper", + "GROUP_NAME": "Gruppenavn", + "HEAP_MEMORY": "Heap-hukommelse", + "HEIGHT": "Højde", + "HIDE_MENU": "Skjul menu", + "HISTORICAL_BAR_CHART": "Historisk Søjlediagram", + "HOST_NAME": "Host-navn", + "HOURS": "timer", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Yderligere HTML-headers", + "HTTP_PORT": "HTTP-port", + "ID": "ID", + "IDEN": "Identitet", + "IGNORE_CASE": "Ignorer sag", + "IGNORE_DUPLICATE": "Ignorer dubletter", + "IMPERIAL": "Imperisk", + "INCLUDE_THRESHOLD_HIGH": "Inkluder høj grænseværdi", + "INCLUDE_THRESHOLD_LOW": "Inkluder lav grænseværdi", + "INDIVIDUAL_SETTINGS": "Individuelle indstillinger", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpoler-type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval i sekunder", + "INVALID_USERNAME_OR_PASSWORD": "Invalid brugernavn eller kodeord!", + "IN_RANGE": "Forbindelse opnået", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Punkt(er) succesfuldt slettet", + "ITEMS_DISABLED_SUCCESSFULLY": "Punkt(er) succesfuldt afmeldt", + "ITEMS_ENABLED_SUCCESSFULLY": "Punkt(er) succesfuldt tilmeldt", + "ITEMS_PER_ROW": "Punkter pr. række", + "ITEM_CREATED_SUCCESSFULLY": "Punkt succesfuldt oprettet", + "ITEM_UPDATED_SUCCESSFULLY": "Punkt succesfuldt opdateret", + "JAVA_HOME": "Placering af Java", + "JAVA_VENDOR_URL": "Java-udbyders URL", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specifikation", + "JSON": "JSON", + "KEY": "Nøgle", + "KEY_FORMAT": "Nøgleformat", + "LANGUAGE": "Sprog", + "LANGUAGE_VERSION": "Sprogversion", + "LAST_5_MINUTES": "De sidste 5 minutter", + "LAST_6_HOURS": "De sidste 6 timer", + "LAST_12_HOURS": "De sidste 12 timer", + "LAST_DAY": "Det seneste døgn", + "LAST_EXECUTION": "Seneste afvikling", + "LAST_FIRED": "Seneste affyring", + "LAST_GARBAGECOLLECTOR_DURATION": "Den seneste affaldsopsamlervarighed", + "LAST_HOUR": "Den seneste time", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Den seneste modificeriing", + "LAST_MONTH": "Den seneste måned", + "LAST_SEEN": "Senest set", + "LAST_TRIGGER": "Seneste affyring", + "LAST_WEEK": "Den seneste uge", + "LAST_YEAR": "Det seneste år", + "LATITUDE": "Breddegrad", + "LEFT": "Venstre", + "LEVEL": "Niveau", + "LIBRARY_VERSION": "Biblioteksversion", + "LINE": "Linje", + "LINEAR": "Lineær", + "LINE_CHART": "Linjediagram", + "LOAD": "Indsaml", + "LOADED": "Indsamlet", + "LOADING": "Indsamler...", + "LOCATION": "Geografisk placering", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login-besked", + "LOGS": "Logbøger", + "LOG_DIRECTION": "Log-retning", + "LOG_IN": "Log Ind", + "LOG_LEVEL": "Logge-niveau", + "LOG_OUT": "Log Ud", + "LONGITUDE": "Længdegrad", + "LOWER": "Nedre", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Maks", + "MAXIMUM_BLOCK_SIZE": "Maksimal blokkestørrelse", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Beskedindhold", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Beskeden indeholder", + "MESSAGE_TYPE": "Beskedtype", + "METRIC": "Metrisk", + "METRICS": "Talmateriale", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Talmaterialemotor", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "Du er nu ved at skifte indstillinger for talmaterialemotoren.
Denne handling will føre til tab af data. Læs brugermanualen for yderligere information.
MyController kan ikke importere/eksportere talmateriale efter skiftet!", + "METRIC_TYPE": "Metrisk type", + "MILLISECONDS": "Millisekunder", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum højde", + "MINIMUM_WIDTH": "Minimum bredde", + "MINUTES": "minutter", + "MIN_MAX": "min/maks", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modificer kort over sensorvariabler", + "MONOTONE": "Monoton", + "MQTT_BROKER": "MQTT-broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Du er nu ved at ændre indstillingerne for den MQTT-broker.
Denne handling afføder, at MQTT-broker-servicen genstarter med de nye indstillinger.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT-broker indstillinger", + "MQTT_BROKER_HOST_EXAMPLE": "Eksempel: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Eksempel: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Eksempel: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Eksempel: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Logbog for MyController server", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Navn", + "NETWORK": "Netværk", + "NETWORK_TYPE": "Netværkstype", + "NEVER": "Aldrig", + "NEW": "Ny", + "NEW_DASHBOARD": "Nyt instrumentbord", + "NEW_PASSWORD": "Nyt kodeord", + "NEXT_EXECUTION": "Next execution", + "NO": "Nej", + "NODE": "Node", + "NODES": "Noder", + "NODES_ALIVE_CHECK_INTERVAL": "Interval for kontrol af noder", + "NODES_DETAIL": "Nodedetaljer", + "NODE_DETAILS": "Nodedetaljer", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node-ID", + "NODE_NAME": "Nodenavn", + "NODE_STATUS": "Nodestatus", + "NODE_TYPE": "Nodetype", + "NON_HEAP_MEMORY": "Non Heap-hukommelse", + "NOTHING_SELECTED": "Intet markeret", + "NOTIFICATIONS": "Beskeder", + "NOT_SET": "Ej sat", + "NO_ACK": "Ingen bekræftigelse", + "NO_BACKUPS_SETUP": "Ingen backups sat op.", + "NO_DATA_AVAILABLE": "Ingen data til rådighed.", + "NO_EXTERNAL_SERVERS_SETUP": "Ingen eksterne servere tilføjet.", + "NO_FIRMWARES_SETUP": "Ingen firmware tilføjet.", + "NO_FIRMWARE_TYPES_SETUP": "Ingen firmwaretype indsat.", + "NO_FIRMWARE_VERSIONS_SETUP": "Ingen firmware-versioner indsat", + "NO_FORWARD_PAYLOADS_SETUP": "Ingen fremsendte nyttelaster indsat.", + "NO_GATEWAYS_SETUP": "Ingen gateways tilføjet.", + "NO_ITEMS_IN_FILTER": "Ups! Ingen resultater fundet. Modificer din forespørgsel.", + "NO_ITEMS_SETUP": "Ingen punkter tilføjet!", + "NO_LOGS_AVAILABLE": "Ingen logbøger tilgængelige.", + "NO_NODES_SETUP": "Ingen noder tilføjet.", + "NO_OPERATIONS_SETUP": "Ingen operationer tilføjet.", + "NO_RESOURCES_DATA_SETUP": "Ingen resource-data tilføjet.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Ingen resourcer forbundet til denne gruppe.", + "NO_RESOURCE_GROUPS_SETUP": "Ingen resource-grupper tilføjet.", + "NO_ROOMS_SETUP": "Ingen områder tilføjet.", + "NO_RULES_SETUP": "Ingen regler tilføjet.", + "NO_SCRIPTS_SETUP": "Ingen scripts tilføjet.", + "NO_SENSORS_SETUP": "Ingen sensorer tilføjet.", + "NO_TEMPLATES_SETUP": "Ingen skabeloner tilføjet.", + "NO_TIMERS_SETUP": "Ingen timere tilføjet.", + "NO_UID_TAGS_SETUP": "Ingen UID-mærkater tilføjet.", + "NO_VARIABLES_SETUP": "Ingen variabler tilføjet.", + "OCCURRENCES": "Forekomster", + "OFF": "SLUK", + "OFFSET": "Offset", + "ON": "TÆND", + "ONE_DAY_DATA": "Een-dags data", + "ONE_HOUR_DATA": "Een-times data", + "ONE_MINUTE_DATA": "Eet-minuts data", + "OPERATING_SYSTEM": "Operativsystem", + "OPERATION": "Operation", + "OPERATIONS": "Operationer", + "OPERATIONS_DETAIL": "Operationsdetaljer", + "OPERATION_NAME": "Operationsnavn", + "OPERATION_TYPE": "Operationstype", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Andre", + "PARENT": "Fader", + "PARENT_NODE_EUI": "Fadernode EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Kodeord", + "PATTERN": "Mønster", + "PAYLOAD": "Nyttelast", + "PAYLOAD_DELAY": "Nyttelast / forsinkelse", + "PAYLOAD_OFF": "Nyttelast SLUK", + "PAYLOAD_ON": "Nyttelast TÆND", + "PEAK": "Spids", + "PERCENTAGE": "Procent-andel", + "PERMISSION": "Klasseficering", + "PHONE_NUMBERS": "Telefonnumre", + "PHONE_NUMBERS_COMMA_SEPARATED": "Telefonnumre listet med kommaseperator", + "PHYSICAL_MEMORY": "Fri hukommelse", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Prøvefrekvens (minutter)", + "PORT": "Port", + "PORT_NAME": "Portnavn", + "PRIORITY": "Prioritet", + "PRIVATE": "Privat", + "PRIVATE_KEY": "Privat nøgle", + "PROCESS_CPU": "Tråde CPU", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil succesfuldt opdateret", + "PROPERTIES": "Egenskaber", + "PUBLIC": "Offentlig", + "PUBLIC_ACCESS": "Offentlig adgang", + "PUBLIC_KEY": "Offentlig nøgle", + "PURGE": "Udrader", + "PURGE_BEFORE": "Udrader før", + "PURGE_DONE_SUCCESSFULLY": "Udradering afsluttet succesfuldt.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Udrader resource-logbøger", + "PURGE_SENSOR_VARIABLE": "Udrader sensorvariabler", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ADVARSEL: Hvis du ikke markere nogle parametre, så vil denne handling slette alt!", + "PURGING": "Udradering", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Maksimalt en gang (0)", + "QOS_1": "Mindst en gang (1)", + "QOS_2": "Præcis en gang (2)", + "RAW_DATA": "Rå data", + "READ_ONLY": "Skrivebeskyttet", + "REALTIME": "Real-tid", + "REBOOT": "Genstart", + "REBOOT_CONFIRMATION_MESSAGE": "Du er nu ved at genstarte de markerede punkter
Klik 'Genstart' for at udføre.", + "REBOOT_CONFIRMATION_TITLE": "Genstart", + "REBOOT_INITIATED": "Genstart påbegyndt for markerede punkter.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Opdater", + "REFRESH_NODES_INFO": "Opdater nodernes information", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Opdater nodernes infomation' påbegyndt succesfuldt.", + "REFRESH_TIME_SECONDS": "Opdateringstid (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Automatisk registrering af noder", + "REGISTRATION_STATUS": "Registreringsstatus", + "RELEASES": "Udgivelser", + "RELOAD": "Genindlæs", + "RELOAD_INITIATED_SUCCESSFULLY": "Genindlæsning påbegyndt succesfuldt", + "RESOURCE": "Resource", + "RESOURCES": "Resourcer", + "RESOURCES_DATA": "Resource-data", + "RESOURCES_DATA_DETAIL": "Detalje for resourcernes data", + "RESOURCES_GROUPS": "Grupper for Resourcer", + "RESOURCES_LOGS": "Logbog over resourcer", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Logbog over resourcer i detaljer", + "RESOURCES_LOG_LEVEL": "Logningsniveau af resourcer", + "RESOURCES_LOG_RETENTION_DURATION": "Logningshistorik af resourcer", + "RESOURCE_GROUPS_DETAIL": "Detalje for resourcegrupper", + "RESOURCE_GROUPS_MAPS_DETAIL": "Detalje for resourcegrupper, kort", + "RESOURCE_GROUPS_TURNED_OFF": "Resourcegrupper SLUKKET", + "RESOURCE_GROUPS_TURNED_ON": "Resourcegrupper TÆNDT", + "RESOURCE_GROUP_TURNED_OFF": "Resourcegruppe SLUKKET", + "RESOURCE_GROUP_TURNED_ON": "Resourcegruppe TÆNDT", + "RESOURCE_TYPE": "Resourcetype", + "RESTORE": "Gendan", + "RESTORE_CONFIRMATION_MESSAGE": "Du er nu ved at gendanne systemet til '{{name}}'.
Gendannefunktionen fjerner den nuværende data/konfiguration fuldstændig og systemet skifter til '{{name}}'-tilstand!
Klik 'Gendan' for at fortsætte.
NOTE: Efter succesfuld gendannelse skal du selv starte serveren manuelt fra kommandolinjen", + "RESTORE_CONFIRMATION_TITLE": "Gendan systemet til '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Gendannelse påbegyndt succesfuldt.", + "RESULT": "Resultat", + "RETAIN_MAX": "Bibehold maksimalt #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Du er nu ved at ændre måledataenes vedholdenhesindstilling.
Denne handling kan føre til datatab. Læs brugermanualen for yderligere information.
Det anbefales på det kraftigste at lave en komplet backup af systemet før denne handling fortsættes!", + "RETENTION_DIALOG_TITLE": "Læs omhyggeligt før der fortsættes", + "RE_ENABLE": "Genetabler", + "RIGHT": "Højre", + "ROLES": "Roller", + "ROLES_DETAIL": "Rolledetaljer", + "ROOM": "Område", + "ROOMS": "Områder", + "ROOMS_DETAIL": "Områdeoversigt", + "ROOM_NAME": "Områdenavn", + "RULES": "Regler", + "RULES_DETAIL": "Regeldetaljer", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Regelnavn", + "RUN": "Kør", + "RUNNING": "Afvikler...", + "RUN_BACKUP": "Kør backup", + "RUN_GARBAGE_COLLECTION": "Kør affaldsopsamling", + "RUN_NOW": "Kør nu", + "SAVE": "Gem", + "SAVE_CHANGES": "Gem ændringer", + "SAVING": "Gemmer...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scriptdetaljer", + "SCRIPT_BINDINGS": "Scriptbindinger", + "SCRIPT_ENGINES": "Script-motor", + "SCRIPT_FILES": "Scriptfiler", + "SEARCH": "Søg", + "SECONDS": "Sekunder", + "SELECT": "Marker", + "SEND": "Send", + "SENDING": "Sender...", + "SEND_RAW_MESSAGE": "Send rå besked", + "SENSOR": "Sensor", + "SENSORS": "Sensorer", + "SENSORS_ACTION": "Sensor-data", + "SENSORS_AND_VARIABLES_MAPPING": "Sensorer og variablers tilhørsforhold", + "SENSORS_DETAIL": "Sensordetaljer", + "SENSOR_DETAILS": "Sensordetaljer", + "SENSOR_ID": "Sensor-ID", + "SENSOR_NAME": "Sensornavn", + "SENSOR_TYPE": "Sensortype", + "SENSOR_VARIABLE": "Sensorvariabel", + "SENSOR_VARIABLES": "Sensorvariabler", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variabletype", + "SERIAL_BAUD_RATE_EXAMPLE": "Eksempel: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Eksempel: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Eksempel: 120", + "SETTINGS": "Indstillinger", + "SHOW_ICON": "Vis ikon", + "SHOW_LEGENDS": "Vis signaturforklaring", + "SHOW_MENU": "Vis menu", + "SIX_HOURS_DATA": "Seks-timers data", + "SMART_SLEEP_ENABLED": "Smart-sleep tilmeldt", + "SMS": "SMS", + "SMTP_HOST": "SMTP-vært", + "SMTP_PASSWORD": "SMTP-kodeord", + "SMTP_PORT": "SMTP-port", + "SMTP_USERNAME": "SMTP-brugernavn", + "SOURCE": "Oprindelsessted", + "SOURCE_CODE": "Kildekode", + "SOURCE_ID": "Kilde-id", + "SPECIFICATION_VENDOR": "Oplyst leverandør", + "SPECIFICATION_VERSION": "Oplyst version", + "STACKED_AREA_CHART": "Stakket areal-diagram", + "STATION_ID": "Stations-ID", + "STATION_PASSWORD": "Stationskodeord", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Statusbesked", + "STATUS_SINCE": "Status siden", + "STEP_AFTER": "Trin efter", + "STEP_BEFORE": "Trin før", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Emne", + "SUB_TYPE": "Undertype", + "SUNRISE": "Solopgang", + "SUNSET": "Solnedgang", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Frit Swap-område", + "SYNTAX_ERROR": "Syntaxfejl", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "CPU-belastning (system)", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Middelbelastning (system)", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Du er nu ved at begynde opdatering af konfigurationen af 'Sensorvariabel'.
Under opdatering af konfigurationen vil en ændring af 'Metrisk type' foresage, at alle data for denne sensorvariabel rydes!", + "S_VARIABLE_DIALOG_TITLE": "Opdater 'Sensorvariabel'-konfigurationer", + "TABLE_ROWS_LIMIT": "Tabelrækkebegrænsning", + "TAGS": "Mærkater", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Skabelon", + "TEMPLATES": "Skabeloner", + "TEMPLATES_DETAIL": "Skabelondetaljer", + "TEMPLATE_BINDINGS": "Skabelonsbindinger", + "TENANT": "Lejer", + "TESTING": "Tester...", + "TEST_CONNECTION": "Test forbindelse", + "TEXT": "Text", + "THREADS_COUNT": "Antal tråde", + "THRESHOLD_VALUE": "Grænseværdi", + "THRESHOLD_VALUE_HIGH": "Øvre grænseværdi", + "THRESHOLD_VALUE_LOW": "Nedre grænseværdi", + "TIME": "Tidspunkt", + "TIMERS": "Timerer", + "TIMERS_DETAIL": "Timer-detaljer", + "TIMER_NAME": "Timernavn", + "TIMER_TYPE": "Timertype", + "TIME_FORMAT": "Ur-format", + "TIME_HH_MM_SS": "Tid(tt:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Tidsforskydning (tt:mm:ss)", + "TIME_RANGE": "Tidsspand", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Titel", + "TO": "Til", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Emner publiseret", + "TOPICS_SUBSCRIBE": "Emner tilmeldt", + "TOPIC_PUBLISH": "Emne publiseret", + "TOPIC_SUBSCRIBE": "Emne tilmeldt", + "TOPOLOGY": "Topologi", + "TOTAL": "Total", + "TOTAL_LOADED": "Total indlæst", + "TOTAL_STARTED": "Total startet", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Affyr når", + "TRUST_HOST": "Trust host", + "TURN_OFF": "SLUK", + "TURN_ON": "TÆND", + "TWELVE_HOURS_DATA": "Tolv-timers data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Typer", + "TYPE_ID": "Type-id", + "UID": "UID", + "UID_TAGS": "UID-mærkat", + "UID_TAGS_DETAIL": "UID-mærkatdetaljer", + "UNAVAILABLE": "Ikke tilgængelig", + "UNDO_CHANGES": "Tilbagefør ændringer", + "UNIT": "Enhed", + "UNITS": "Enheder", + "UNITS_CONFIGURATION": "Sensordatakonfiguration", + "UNITS_METRICS_IMPERIAL": "Enheder [Metrisk/Imperisk]", + "UNLOADED": "Ikke hentet", + "UP": "Op", + "UPDATE": "Opdater", + "UPDATED_SUCCESSFULLY": "Succesfuldt opdateret", + "UPDATE_AN_ENTRY": "Opdater et punkt", + "UPDATE_EXTERNAL_SERVER": "Opdater ekstern server", + "UPDATE_FIRMWARE": "Opdater firmware", + "UPDATE_FIRMWARE_TYPE": "Opdater firmware-type", + "UPDATE_FIRMWARE_VERSION": "Opdater firmware-version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Opdater fremsendt nyttelast", + "UPDATE_GATEWAY": "Opdater gateway", + "UPDATE_NODE": "Opdater node", + "UPDATE_OPERATION": "Opdater operation", + "UPDATE_RESOURCE": "Opdater resource", + "UPDATE_RESOURCES_GROUP": "Opdater resourcerne for gruppe", + "UPDATE_ROOM": "Opdater område", + "UPDATE_RULE": "Opdater regel", + "UPDATE_SCRIPT": "Opdater script", + "UPDATE_SENSOR": "Opdater sensor", + "UPDATE_SENSOR_VARIABLE": "Opdater sensorvariabel", + "UPDATE_TEMPLATE": "Opdater skabelon", + "UPDATE_TIMER": "Opdater timer", + "UPDATE_UID_TAG_ENTRY": "Opdater punkt for UID-mærkat", + "UPDATE_USER": "Opdater bruger", + "UPDATE_VARIABLE": "Opdater variabel", + "UPLOADED_ON": "Uploaded på", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Øvre grænse", + "UP_TIME": "Oppetid", + "URL": "URL", + "USE": "Brug", + "USED": "Brugt", + "USERNAME": "Brugernavn", + "USERS": "Brugere", + "USERS_DETAIL": "Detalje for brugere", + "USER_WORKING_DIRECTORY": "Applikationens arbejdsfolder", + "USE_GLOBAL": "Brug global", + "USE_INTERACTIVE_GUIDE_LINE": "Brug interaktiv rettesnor", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Ingen tilgængelig plads.", + "VALIDATION_ERROR_NUMBER": "Den indtastede værdi er ikke et tal.", + "VALIDITY": "Gyldighed", + "VALUE": "Værdi", + "VALUE2": "Værdi #2", + "VALUE3": "Værdi #3", + "VARIABLES": "Variabler", + "VARIABLES_DETAIL": "Variablerdetaljer", + "VARIABLES_GRAPHICAL_VIEW": "Grafisk visualisering af variabler", + "VARIABLES_MAPPER": "Variabelparring", + "VARIABLES_REPOSITORY": "Variabelbibliotek", + "VARIABLE_TYPES": "Variabeltyper", + "VENDOR": "Leverandør", + "VERSION": "Version", + "VERSIONS": "Versioner", + "VERSION_ID": "Versions-id", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "Se detaljer", + "VM_NAME": "VM-navn", + "VM_VENDOR": "VM-leverandør", + "VM_VERSION": "VM-version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget-image filers placering på disk", + "WRITE_API_KEY": "Skriv API-nøgle", + "YEARS": "år", + "YES": "Ja" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-de_de.json b/www/languages/mc_locale_gui-de_de.json new file mode 100644 index 0000000..08a180b --- /dev/null +++ b/www/languages/mc_locale_gui-de_de.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 Stunden", + "24_HOURS": "24 Stunden", + "ABOUT": "Über", + "ACCESS": "Zugriff", + "ACCESS_TOKEN": "Zugangstoken", + "ACK": "ACK", + "ACKNOWLEDGE": "Bestätigen", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "ACK-Anfrage", + "ACK_RESPONSE": "ACK-Antwort", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Aktionen", + "ACTION_BOARD": "Aktionstafel", + "ACTIVE": "Aktiv", + "ADD": "Add", + "ADD_AN_ENTRY": "Eintrag hinzufügen", + "ADD_EXTERNAL_SERVER": "Externen Server hinzufügen", + "ADD_FIRMWARE": "Firmware hinzufügen", + "ADD_FIRMWARE_TYPE": "Firmwaretyp hinzufügen", + "ADD_FIRMWARE_VERSION": "Firmwareversion hinzufügen", + "ADD_FORWARD_PAYLOAD_ENTRY": "Forward-Nutzdaten-Eintrag hinzufügen", + "ADD_GATEWAY": "Gateway hinzufügen", + "ADD_GROUP": "Gruppe hinzufügen", + "ADD_NEW_WIDGET": "Neues Widget hinzufügen", + "ADD_NODE": "Sensorknoten hinzufügen", + "ADD_OPERATION": "Operation hinzufügen", + "ADD_RESOURCE": "Ressource hinzufügen", + "ADD_RESOURCES_GROUP": "Ressourcen-Gruppe hinzufügen", + "ADD_ROLE": "Rolle hinzufügen", + "ADD_ROOM": "Raum hinzufügen", + "ADD_RULE": "Regel hinzufügen", + "ADD_SCRIPT": "Skript hinzufügen", + "ADD_SENSOR": "Sensor hinzufügen", + "ADD_TEMPLATE": "Vorlage hinzufügen", + "ADD_TIMER": "Timer hinzufügen", + "ADD_UID_TAG_ENTRY": "UID-Tag-Eintrag hinzufügen", + "ADD_USER": "Benutzer hinzufügen", + "ADD_VARIABLE": "Variable hinzufügen", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Nach", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Lebensüberprüfungsfrequenz (Sekunden)", + "ALLOW_ANONYMOUS": "Anonym zulassen", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "Der Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "Melden Sie sich bei MYCONTROLLER.ORG an", + "APP.WELCOME_MESSAGE": "Willkommen bei MyController.org! Der Open-Source-Controller.", + "ARCHITECTURE": "Architektur", + "AREA": "Bereich", + "AUTH_ID_SID": "ID/SID der Authentifikation", + "AUTH_TOKEN": "Authentifikations-Token", + "AUTOMATIC_BACKUP_SETTINGS": "Einstelllungen automatisches Backup", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Automatisch Generieren", + "AVAILABLE_PROCESS": "Verfügbarer Prozess", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backups Details", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup wurde erfolgreich abgeschlossen.", + "BACKUP_EVERY": "Backup jeden", + "BACKUP_FILE_PREFIX": "Backup-Dateipräfix", + "BACKUP_LOCATION": "Backup-Verzeichniss", + "BACKUP_ON": "Sicherung an", + "BACKUP_SETTINGS": "Backup-Einstellungen", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis geschlossen", + "BASIS_OPEN": "Basis offen", + "BATTERY": "Batterie", + "BATTERY_LEVEL": "Batterie-Ladestand", + "BATTERY_USAGE": "Batterieverbrauch", + "BAUD_RATE": "Baudrate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "An Adresse binden", + "BLOCKS": "Blöcke", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker Host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build-Werkzeug", + "BUILT_ON": "Gebaut auf", + "BUNDLE": "Bündel", + "BUTTON_SETTINGS": "Button-Einstellungen:", + "CANCEL": "Abbrechen", + "CARDINAL": "Kardinal", + "CARDINAL_CLOSED": "Kardinal geschlossen", + "CARDINAL_OPEN": "Kardinal offen", + "CHANNEL_TAGS": "Kanal-Tags", + "CHANNEL_TAGS_COMMA_SEPARATED": "Kanal-Tags durch Komma getrennt", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Klasse Lade-Details", + "CLIENT_ID": "Client-ID", + "CLONE": "Klonen", + "COLLECTION_COUNT": "Anzahl in Kollektion", + "COLLECTION_TIME": "Zeit der Kollektion", + "COLOR": "Farbe", + "COMMAND": "Command", + "COMMITTED": "Zugesichert", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Übergebene Virtuelle Speichergröße", + "CONDITION": "Bedingung", + "CONDITION_TYPE": "Bedingungsart", + "CONNECTION_DETAILS": "Verbindungsdetails", + "CONTENT": "Inhalt", + "CONTINUE": "Weiter", + "COUNT": "Anzahl", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "CRON Ausdruck", + "CSS_FILES": "CSS-Dateien", + "CURRENT": "Aktuell", + "CURRENT_PASSWORD": "Aktuelles Passwort", + "CUSTOM_MESSAGE": "Benutzerdefinierte Meldung", + "DAEMON": "Dienst", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dämpfung", + "DAMPENING_TYPE": "Dämpfungstyp", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Dashboard-Limit", + "DATA": "Data", + "DATABASE": "Datenbank", + "DATABASE_SCHEMA_REVISION": "Datenbank-Schema-Überarbeitung", + "DATABASE_TYPE": "Datenbanktyp", + "DATABASE_VERSION": "Datenbank-Version", + "DATA_RETENTION_SETTINGS": "Einstellungen für die Aufbewahrung von Daten", + "DATA_TYPE": "Datentyp", + "DATA_UNAVAILABLE": "Daten nicht verfügbar!", + "DATE_PATTERN": "Datumsformat", + "DATE_RANGE": "Zeitraum", + "DAY": "Tag", + "DAYS": "Tage", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Standard-Firmware", + "DEFAULT_TIME_RANGE": "Standard-Zeitbereich", + "DELAY_TIME_IN_SECONDS": "Verzögerung in Sekunden", + "DELETE": "Löschen", + "DELETE_DASHBOARD": "Dashboard löschen", + "DELETE_ITEMS": "Objekt(e) löschen", + "DELETE_MESSAGE": "Sie sind im Begriff, die ausgewählten Objekte zu löschen.
Alle Daten werden komplett gelöscht!
Klicken Sie auf 'Löschen', um fortzufahren.", + "DESCRIPTION": "Beschreibung", + "DESTINATION": "Ziel", + "DESTINATION_ID": "Ziel ID", + "DETAILS": "Details", + "DEVICES": "Geräte", + "DEVICE_IDENS": "Gerät iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Gerät Idens Komma getrennt", + "DIRECTION": "Richtung", + "DISABLE": "Deaktivieren", + "DISABLED": "Deaktiviert", + "DISABLE_WHEN_TRIGGER": "Deaktivieren bei Auslösung", + "DISCOVER": "Discover-Modus", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover-Modus erfolgreich initiiert", + "DISPLAY_NAMES": "Anzeigenamen", + "DOCUMENTS": "Dokumente", + "DOUBLE": "Double", + "DOWN": "inaktiv", + "DRIVER": "Treiber", + "EDIT": "Bearbeiten", + "EDIT_DASHBOARD": "Dashboard bearbeiten", + "EMAIL": "E-Mail", + "EMAILS": "E-Mails", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "E-Mail-Adressen (kommagetrennt)", + "ENABLE": "Aktivieren", + "ENABLED": "Aktiviert", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Standard-Firmware verwenden", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Ist diese Option ausgewählt, wird die Standard-Firmware verwendet, wenn die gewünschte Firmware auf dem System nicht verfügbar ist.", + "ENABLE_EDIT_MODE": "Bearbeitungsmodus aktivieren", + "ENABLE_MIN_MAX": "Min/Max aktivieren", + "ENABLE_SSL": "SSL aktivieren", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Konfiguration löschen", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Sie sind dabei, die vollständige Konfiguration der ausgewählten Elemente zu löschen.
Klicken Sie auf 'Konfiguration löschen' um fortzufahren.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Konfiguration löschen", + "ERASE_CONFIGURATION_INITIATED": "Löschen der Konfiguration für ausgewählte Elemente initiiert", + "ERROR_ITEMS_NOT_AVAILABLE": "Ausgewählte(s) Objekt(e) nicht verfügbar!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Beispiel: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Beispiel: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Beispiel: 5003", + "EUI": "EUI", + "EVALUATIONS": "Auswertungen", + "EXECUTE_DISCOVER_INTERVAL": "Intervall zum entdecken ausführen", + "EXTENSION": "Erweiterung", + "EXTENSIONS": "Erweiterungen", + "EXTERNAL_SERVERS": "Externe Server", + "EXTERNAL_SERVERS_DETAIL": "Externe Server Details", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Datei", + "FILE_NAME": "Dateiname", + "FILE_SIZE": "Dateigröße", + "FILTER_BY_BLOCKS": "Filtern nach Blöcken", + "FILTER_BY_CONDITION_TYPE": "Filtern nach Bedingungsart", + "FILTER_BY_DAMPENING_TYPE": "Filtern nach Dämpfungstyp", + "FILTER_BY_DESCRIPTION": "Filtern nach Beschreibung", + "FILTER_BY_DESTINATION_ID": "Filtern nach Ziel-ID", + "FILTER_BY_DIRECTION": "Filtern nach Richtung", + "FILTER_BY_EMAIL": "Filtern nach E-Mail", + "FILTER_BY_ENABLED": "Filter nach Aktivieriert", + "FILTER_BY_EUI": "Filtern nach EUI", + "FILTER_BY_EXTENSION": "Filtern nach Erweiterung", + "FILTER_BY_FILE_NAME": "Filtern nach Dateiname", + "FILTER_BY_FREQUENCY": "Filtern nach Frequenz", + "FILTER_BY_FULL_NAME": "Filtern nach vollständiger Name", + "FILTER_BY_KEY": "Filtern nach Schlüssel", + "FILTER_BY_LEVEL": "Filtern nach Level", + "FILTER_BY_LIBRARY_VERSION": "Filtern nach Bibliotheksversion", + "FILTER_BY_MESSAGE": "Filtern nach Nachricht", + "FILTER_BY_MESSGAE_TYPE": "Filtern nach Nachrichtentyp", + "FILTER_BY_NAME": "Filtern nach Name", + "FILTER_BY_NETWORK_TYPE": "Filtern nach Netzwerktyp", + "FILTER_BY_NODE_ID": "Filtern nach Sensorknoten-ID", + "FILTER_BY_OPERATION": "Filtern nach Operation", + "FILTER_BY_OPERATION_TYPE": "Filtern nach Operationstyp", + "FILTER_BY_PAYLOAD_OFF": "Filtern nach Nutzlast aus", + "FILTER_BY_PAYLOAD_ON": "Filtern nach Nutzlast an", + "FILTER_BY_PERMISSION": "Filtern nach Erlaubnis", + "FILTER_BY_PUBLIC_ACCESS": "Filtern nach öffentlicher Zugriff", + "FILTER_BY_RESOURCE": "Filtern nach Ressource", + "FILTER_BY_RESOURCE_TYPE": "Filtern nach Ressourcentyp", + "FILTER_BY_SENSOR_ID": "Filtern nach Sensor-ID", + "FILTER_BY_SENSOR_NAME": "Filtern nach Sensorname", + "FILTER_BY_SENSOR_TYPE": "Filtern nach Sensortyp", + "FILTER_BY_SENSOR_VARIABLES": "Filtern nach Sensors Variablen", + "FILTER_BY_SOURCE_ID": "Filtern nach Quellen-ID", + "FILTER_BY_STATUS": "Filtern nach Status", + "FILTER_BY_STATUS_MESSAGE": "Filtern nach Statusmeldung", + "FILTER_BY_TYPE": "Filtern nach Typ", + "FILTER_BY_TYPE_ID": "Filtern nach Typ-ID", + "FILTER_BY_UID": "Filtern nach UID", + "FILTER_BY_USERNAME": "Filtern nach Benutzername", + "FILTER_BY_VALUE": "Filtern nach Wert", + "FILTER_BY_VALUE2": "Filtern Sie nach Wert #2", + "FILTER_BY_VALUE3": "Filtern Sie nach Wert #3", + "FILTER_BY_VARIABLE_TYPES": "Filtern von Variablentypen", + "FILTER_BY_VERSION": "Filtern nach Version", + "FILTER_BY_VERSION_ID": "Filtern nach Versions-ID", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmware Details", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware Typen Details", + "FIRMWARE_TYPE_NAME": "Firmware Typ Name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware-Upload für ausgewählte Elemente initiiert.", + "FIRMWARE_VERSION": "Firmware Version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware-Versionen-Details", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Fünf Minuten Daten", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Nutzdaten senden", + "FORWARD_PAYLOADS_DETAIL": "Nutzdaten senden Details", + "FREE": "Frei", + "FREQUENCY": "Frequenz", + "FROM": "Von", + "FROM_ADDRESS": "Von Adressse", + "FROM_PHONE_NUMBER": "Von Telefonnummer", + "FULL_NAME": "Voller Name", + "FULL_PATH": "Vollständiger Pfad", + "GARBAGE_COLLECTOR": "Müllsammler", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways Detail", + "GATEWAY_DETAILS": "Gateway Details", + "GATEWAY_NAME": "Gateway Name", + "GATEWAY_TYPE": "Gateway Typ", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Globale Seiten Aktualisierungszeit", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Gewähren des Zugriffs auf untergeordneten Ressourcen (in Rollen)", + "GRAPHS_SETTINGS": "Grafiken-Einstellungen", + "GRAPH_SETTINGS": "Grafikeinstellungen", + "GROUPS": "Gruppen", + "GROUP_NAME": "Gruppenname", + "HEAP_MEMORY": "Heap Speicher", + "HEIGHT": "Höhe", + "HIDE_MENU": "Menü ausblenden", + "HISTORICAL_BAR_CHART": "Historisches Balkendiagramm", + "HOST_NAME": "Hostname", + "HOURS": "Stunden", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Zusätzliche HTML-Header", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Groß-/Kleinschreibung ignorieren", + "IGNORE_DUPLICATE": "Ignoriere Duplikate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Hohe Schwelle einfügen", + "INCLUDE_THRESHOLD_LOW": "Niedrige Schwelle einfügen", + "INDIVIDUAL_SETTINGS": "Individuelle Einstellungen", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolieren Typ", + "INTERVAL": "Zeitraum", + "INTERVAL_IN_SECONDS": "Intervall in Sekunden", + "INVALID_USERNAME_OR_PASSWORD": "Ungültiger Benutzername oder Passwort!", + "IN_RANGE": "In Reichweite", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Objekt(e) erfolgreich gelöscht", + "ITEMS_DISABLED_SUCCESSFULLY": "Objekt(e) erfolgreich deaktiviert", + "ITEMS_ENABLED_SUCCESSFULLY": "Objekt(e) erfolgreich aktiviert", + "ITEMS_PER_ROW": "Objekte je Zeile", + "ITEM_CREATED_SUCCESSFULLY": "Objekt erfolgreich erstellt", + "ITEM_UPDATED_SUCCESSFULLY": "Objekt erfolgreich aktualisiert", + "JAVA_HOME": "Java Heimverzeichniss", + "JAVA_VENDOR_URL": "Java Anbieter URL", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtuelle Machine Spezifikation", + "JSON": "JSON", + "KEY": "Schlüssel", + "KEY_FORMAT": "Schlüsselformat", + "LANGUAGE": "Sprache", + "LANGUAGE_VERSION": "Sprachversion", + "LAST_5_MINUTES": "Letzten 5 Minuten", + "LAST_6_HOURS": "Letzten 6 Stunden", + "LAST_12_HOURS": "Letzten 12 Stunden", + "LAST_DAY": "Letzter Tag", + "LAST_EXECUTION": "Letzte Ausführung", + "LAST_FIRED": "Zuletzt gefeuert", + "LAST_GARBAGECOLLECTOR_DURATION": "Letzte Dauer Müllsammler", + "LAST_HOUR": "Letzte Stunde", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Zuletzt geändert", + "LAST_MONTH": "Letzter Monat", + "LAST_SEEN": "Zuletzt gesehen", + "LAST_TRIGGER": "Letzter Auslöser", + "LAST_WEEK": "Letzte Woche", + "LAST_YEAR": "Letztes Jahr", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Library-Version", + "LINE": "Linie", + "LINEAR": "Linear", + "LINE_CHART": "Liniendiagramm", + "LOAD": "Laden", + "LOADED": "Geladen", + "LOADING": "Laden...", + "LOCATION": "Lage", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login Nachricht", + "LOGS": "Protokolle", + "LOG_DIRECTION": "Protokoll-Richtung", + "LOG_IN": "Einloggen", + "LOG_LEVEL": "Protokollebene", + "LOG_OUT": "Ausloggen", + "LONGITUDE": "Längengrad", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Spezifikation Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximale Blockgröße", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Nachricht", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Nachricht enthält", + "MESSAGE_TYPE": "Nachrichten Typ", + "METRIC": "Metrisch", + "METRICS": "Metriken", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metrischen Typ", + "MILLISECONDS": "Millisekunden", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Mindesthöhe", + "MINIMUM_WIDTH": "Minimale Breite", + "MINUTES": "Minuten", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Ändern von Sensor und Variablen zuordnen", + "MONOTONE": "Monoton", + "MQTT_BROKER": "MQTT Makler", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Sie sind dabei die MQTT Makler Einstellungen zu ändern.
Diese Aktion führt dazu, den MQTT Makler Dienst mit den neuen Einstellungen neu zu starten.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT Makler Einstellungen", + "MQTT_BROKER_HOST_EXAMPLE": "Beispiel: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Beispiel: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Beispiel: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Beispiel: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController Serverlog", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Netzwerk", + "NETWORK_TYPE": "Netzwerktyp", + "NEVER": "Niemals", + "NEW": "New", + "NEW_DASHBOARD": "Neues Dashboard", + "NEW_PASSWORD": "Neues Passwort", + "NEXT_EXECUTION": "Next execution", + "NO": "Nein", + "NODE": "Sensorknoten", + "NODES": "Sensorknoten", + "NODES_ALIVE_CHECK_INTERVAL": "Intervall des Knoten-Aktivitätschecks", + "NODES_DETAIL": "Sensorknoten-Details", + "NODE_DETAILS": "Sensorknoten-Details", + "NODE_EUI": "Sensorknoten EUI", + "NODE_ID": "Sensorknoten-ID", + "NODE_NAME": "Sensorknoten-Name", + "NODE_STATUS": "Sensorknoten-Status", + "NODE_TYPE": "Sensorknoten-Typ", + "NON_HEAP_MEMORY": "Non-Heap Speicher", + "NOTHING_SELECTED": "Keine Auswahl", + "NOTIFICATIONS": "Benachrichtigungen", + "NOT_SET": "Nicht festgelegt", + "NO_ACK": "Kein ACK", + "NO_BACKUPS_SETUP": "Keine Sicherungen eingerichtet.", + "NO_DATA_AVAILABLE": "Keine Daten verfügbar.", + "NO_EXTERNAL_SERVERS_SETUP": "Kein externer Server Setup.", + "NO_FIRMWARES_SETUP": "Keine Firmware eingerichtet.", + "NO_FIRMWARE_TYPES_SETUP": "Kein Firmware-Typen eingerichtet..", + "NO_FIRMWARE_VERSIONS_SETUP": "Keine Firmware-Versionen eingerichtet.", + "NO_FORWARD_PAYLOADS_SETUP": "Nutzdaten senden nicht eingerichtet", + "NO_GATEWAYS_SETUP": "Keine Gateways eingerichtet.", + "NO_ITEMS_IN_FILTER": "Hoppla! Keine Ergebnisse gefunden. Ändern Sie Ihre Abfrage.", + "NO_ITEMS_SETUP": "Keine Elemente eingerichtet!", + "NO_LOGS_AVAILABLE": "Keine Protokolle zur Verfügung.", + "NO_NODES_SETUP": "Keine Senssorpunkte eingerichtet.", + "NO_OPERATIONS_SETUP": "Keine Operationen eingerichtet.", + "NO_RESOURCES_DATA_SETUP": "Keine Ressourcen Daten Einrichtung.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Keine Ressourcen, sind mit dieser Gruppe zugeordnet.", + "NO_RESOURCE_GROUPS_SETUP": "Keine Ressourcengruppen eingerichtet.", + "NO_ROOMS_SETUP": "Keine Zimmer eingerichtet.", + "NO_RULES_SETUP": "Keine Regeln eingerichtet.", + "NO_SCRIPTS_SETUP": "Keine Skripte eingerichtet.", + "NO_SENSORS_SETUP": "Keine Sensoren eingerichtet.", + "NO_TEMPLATES_SETUP": "Keine Vorlagen eingerichtet.", + "NO_TIMERS_SETUP": "Keine Timer eingerichtet.", + "NO_UID_TAGS_SETUP": "Keine UID-Markierungen eingerichtet.", + "NO_VARIABLES_SETUP": "Keine Variablen eingerichtet.", + "OCCURRENCES": "Vorkommen", + "OFF": "AUS", + "OFFSET": "Ausgeglichen", + "ON": "AN", + "ONE_DAY_DATA": "Ein-Tages-Daten", + "ONE_HOUR_DATA": "Ein-Stunden-Daten", + "ONE_MINUTE_DATA": "Ein-Minuten-Daten", + "OPERATING_SYSTEM": "Betriebssystem", + "OPERATION": "Operation", + "OPERATIONS": "Operationen", + "OPERATIONS_DETAIL": "Operations-Details", + "OPERATION_NAME": "Operations-Name", + "OPERATION_TYPE": "Operations-Typ", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Übergeordneten", + "PARENT_NODE_EUI": "Übergeordneten Knoten EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Passwort", + "PATTERN": "Muster", + "PAYLOAD": "Nutzdaten", + "PAYLOAD_DELAY": "Nutzldaten-Verzögerung", + "PAYLOAD_OFF": "Nutzdaten aus", + "PAYLOAD_ON": "Nutzdaten an", + "PEAK": "Spitze", + "PERCENTAGE": "Prozentsatz", + "PERMISSION": "Berechtigung", + "PHONE_NUMBERS": "Telefonnummer(n)", + "PHONE_NUMBERS_COMMA_SEPARATED": "Kommagetrennte Telefonnummer(n)", + "PHYSICAL_MEMORY": "Physikalischer Speicher (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Abfrage-Frequenz (Minuten)", + "PORT": "Port", + "PORT_NAME": "Portname", + "PRIORITY": "Priorität", + "PRIVATE": "Privat", + "PRIVATE_KEY": "Privater Schlüssel", + "PROCESS_CPU": "Prozess CPU", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil erfolgreich aktualisiert", + "PROPERTIES": "Eigenschaften", + "PUBLIC": "Öffentlich", + "PUBLIC_ACCESS": "Öffentlicher Zugriff", + "PUBLIC_KEY": "Öffentlicher Schlüssel", + "PURGE": "Säuberung", + "PURGE_BEFORE": "Vor dem Löschen", + "PURGE_DONE_SUCCESSFULLY": "Säuberung wurde erfolgreich abgeschlossen.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Ressourcen-Protokolle löschen", + "PURGE_SENSOR_VARIABLE": "Sensorvariable zurücksetzen", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNUNG: Wenn Sie keinen Parameter auswählen, wird dieser Prozess alles löschen!", + "PURGING": "Säubern", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Höchstens einmal (0)", + "QOS_1": "Mindestens einmal (1)", + "QOS_2": "Genau einmal (2)", + "RAW_DATA": "Rohdaten", + "READ_ONLY": "Nur lesen", + "REALTIME": "Echtzeit", + "REBOOT": "Neustart", + "REBOOT_CONFIRMATION_MESSAGE": "Sie sind dabei, die ausgewählten Elemente neu zu starten
Klicken Sie auf 'Neustart' um fortzufahren.", + "REBOOT_CONFIRMATION_TITLE": "Neustart", + "REBOOT_INITIATED": "Neustart für ausgewählte Elemente initiiert.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Aufzeichnungslimit", + "REFRESH": "Aktualisieren", + "REFRESH_NODES_INFO": "Aktualisieren Sensorpunkt info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "\"Aktualisieren Sensorpunkt Info\", erfolgreich initiiert.", + "REFRESH_TIME_SECONDS": "Zeit bis zum Aktualisieren (Sekunden)", + "REGISTER_NODES_AUTOMATICALLY": "Knoten automatisch registrieren", + "REGISTRATION_STATUS": "Registrierungsstatus", + "RELEASES": "Releases", + "RELOAD": "Neuladen", + "RELOAD_INITIATED_SUCCESSFULLY": "Neuladen erfolgreich initiiert", + "RESOURCE": "Ressource", + "RESOURCES": "Ressourcen", + "RESOURCES_DATA": "Ressourcendaten", + "RESOURCES_DATA_DETAIL": "Ressourcen-Daten-detail", + "RESOURCES_GROUPS": "Ressourcen-Gruppen", + "RESOURCES_LOGS": "Ressourcen-Protokolle", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Ressourcen-Protokoll-Details", + "RESOURCES_LOG_LEVEL": "Ressourcen-Protokoll-Ebene", + "RESOURCES_LOG_RETENTION_DURATION": "Ressourcen-Protokolle Retention Dauer", + "RESOURCE_GROUPS_DETAIL": "Ressourcengruppen-Details", + "RESOURCE_GROUPS_MAPS_DETAIL": "Ressourcengruppen-Kartendetails", + "RESOURCE_GROUPS_TURNED_OFF": "Ressourcengruppen ausgeschaltet", + "RESOURCE_GROUPS_TURNED_ON": "Ressourcengruppen eingeschaltet", + "RESOURCE_GROUP_TURNED_OFF": "Ressourcengruppe ausgeschaltet", + "RESOURCE_GROUP_TURNED_ON": "Ressourcengruppe eingeschaltet", + "RESOURCE_TYPE": "Ressourcetyp", + "RESTORE": "Wiederherstellen", + "RESTORE_CONFIRMATION_MESSAGE": "Sie sind dabei, das System auf den Stand '{{Name}}' zurückzusetzen.
Die Wiederherstellung entfernt aktuelle Daten und die Konfiguration vollständig und setzt das System auf den Stand '{{Name}}' zurück.
Klicken Sie auf 'Wiederherstellen', um fortzufahren.
Hinweis: Nach der erfolgreichen Wiederherstellung müssen Sie den Server manuell von der Kommandozeile aus starten.", + "RESTORE_CONFIRMATION_TITLE": "Zurücksetzen des System auf den Stand '{{Name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Wiederherstellung erfolgreich initiiert.", + "RESULT": "Ergebnis", + "RETAIN_MAX": "Aufbewahrungsmaximum", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Sie sind dabei, die Einstellungen für die Aufbewahrung von Metriken-Daten zu ändern.
Diese Maßnahme kann zu Datenverlust führen. Lesen Sie bitte das Benutzerhandbuch für weitere Details.
Vor Durchführung wird das Erstellen eines Backups empfohlen.", + "RETENTION_DIALOG_TITLE": "Bitte sorgfältig lesen, bevor Sie fortfahren", + "RE_ENABLE": "Wieder aktivieren", + "RIGHT": "Right", + "ROLES": "Rollen", + "ROLES_DETAIL": "Rollen-Detail", + "ROOM": "Raum", + "ROOMS": "Räume", + "ROOMS_DETAIL": "Raum-Details", + "ROOM_NAME": "Raum-Name", + "RULES": "Regeln", + "RULES_DETAIL": "Regel-Details", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Regel-Name", + "RUN": "starten", + "RUNNING": "Wird ausgeführt...", + "RUN_BACKUP": "Systemsicherung durchführen", + "RUN_GARBAGE_COLLECTION": "Garbage Collection ausführen", + "RUN_NOW": "Jetzt ausführen", + "SAVE": "Speichern", + "SAVE_CHANGES": "Änderungen speichern", + "SAVING": "Speichern...", + "SCRIPT": "Skript", + "SCRIPTS": "Skripte", + "SCRIPTS_DETAIL": "Skript-Details", + "SCRIPT_BINDINGS": "Skript-Bindings", + "SCRIPT_ENGINES": "Skript-Tool", + "SCRIPT_FILES": "Skript-Dateien", + "SEARCH": "Suchen", + "SECONDS": "Sekunden", + "SELECT": "Auswählen", + "SEND": "Senden", + "SENDING": "Sende...", + "SEND_RAW_MESSAGE": "Roh-Nachricht senden", + "SENSOR": "Sensor", + "SENSORS": "Sensoren", + "SENSORS_ACTION": "Sensor-Aktionen", + "SENSORS_AND_VARIABLES_MAPPING": "Zuordnung von Sensoren und Variablen", + "SENSORS_DETAIL": "Sensor-Details", + "SENSOR_DETAILS": "Sensor-Informationen", + "SENSOR_ID": "Sensor-ID", + "SENSOR_NAME": "Sensorname", + "SENSOR_TYPE": "Sensortyp", + "SENSOR_VARIABLE": "Sensor-Variable", + "SENSOR_VARIABLES": "Sensor-Variablen", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor-Variablen-Typ", + "SERIAL_BAUD_RATE_EXAMPLE": "Beispiel: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Beispiel: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Beispiel: 120", + "SETTINGS": "Einstellungen", + "SHOW_ICON": "Symbol anzeigen", + "SHOW_LEGENDS": "Legende anzeigen", + "SHOW_MENU": "Menü anzeigen", + "SIX_HOURS_DATA": "Sechs-Stunden-Daten", + "SMART_SLEEP_ENABLED": "Smart sleep aktiviert", + "SMS": "SMS", + "SMTP_HOST": "SMTP Host", + "SMTP_PASSWORD": "SMTP-Passwort", + "SMTP_PORT": "SMTP-Port", + "SMTP_USERNAME": "SMTP-Benutzername", + "SOURCE": "Quelle", + "SOURCE_CODE": "Quellcode", + "SOURCE_ID": "Quellen-ID", + "SPECIFICATION_VENDOR": "Spezifikations-Anbieter", + "SPECIFICATION_VERSION": "Spezifikations-Version", + "STACKED_AREA_CHART": "Gestapeltes Flächendiagramm", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Statusnachricht", + "STATUS_SINCE": "Status seit", + "STEP_AFTER": "Schritt nach", + "STEP_BEFORE": "Schritt vor", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Betreff", + "SUB_TYPE": "Untertyp", + "SUNRISE": "Sonnenaufgang", + "SUNSET": "Sonnenuntergang", + "SUPPORT": "Unterstützung", + "SWAP": "Auslagern", + "SWAP_SPACE": "Auslagerungsspeicher", + "SYNTAX_ERROR": "Syntax-Fehler", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "CPU-Auslastung des Systems", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Durchschnittliche Systemauslastung", + "SYSTEM_STATUS": "Systemstatus", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Sie sind dabei, eine Sensorvariable zu verändern.
Falls Sie dabei die Maßeinheit ändern, werden alle existierenden Daten dieses Sensors gelöscht!", + "S_VARIABLE_DIALOG_TITLE": "\"Sensor-Variable\" Konfigurationen aktualisieren", + "TABLE_ROWS_LIMIT": "Tabellenzeilen begrenzen", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Vorlage", + "TEMPLATES": "Vorlagen", + "TEMPLATES_DETAIL": "Vorlagen-Details", + "TEMPLATE_BINDINGS": "Vorlage-Bindungen", + "TENANT": "Tenant", + "TESTING": "Wird getestet...", + "TEST_CONNECTION": "Verbindungstest", + "TEXT": "Text", + "THREADS_COUNT": "Themenanzahl", + "THRESHOLD_VALUE": "Schwellenwert", + "THRESHOLD_VALUE_HIGH": "Oberer Schwellenwert", + "THRESHOLD_VALUE_LOW": "Unterer Schwellenwert", + "TIME": "Zeit", + "TIMERS": "Timer", + "TIMERS_DETAIL": "Timer-Details", + "TIMER_NAME": "Timer-Name", + "TIMER_TYPE": "Timer-Typ", + "TIME_FORMAT": "Zeitformat", + "TIME_HH_MM_SS": "Zeit (HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Zeitversatz (HH:mm:ss)", + "TIME_RANGE": "Zeitbereich", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Titel", + "TO": "An", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Themen veröffentlichen", + "TOPICS_SUBSCRIBE": "Themen abonnieren", + "TOPIC_PUBLISH": "Zu veröffentliches Thema", + "TOPIC_SUBSCRIBE": "Zu abonnierendes Thema", + "TOPOLOGY": "Topologie", + "TOTAL": "Gesamt", + "TOTAL_LOADED": "Gesamt geladen", + "TOTAL_STARTED": "Gesamt gestartet", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Auslösen bei", + "TRUST_HOST": "Host vertrauen", + "TURN_OFF": "Ausschalten", + "TURN_ON": "Einschalten", + "TWELVE_HOURS_DATA": "Zwölf-Stunden-Daten", + "TWILIO": "Twilio", + "TYPE": "Typ", + "TYPES": "Typen", + "TYPE_ID": "Typ-ID", + "UID": "UID", + "UID_TAGS": "UID-Markierungen", + "UID_TAGS_DETAIL": "UID-Markierunges-Detail", + "UNAVAILABLE": "Nicht verfügbar", + "UNDO_CHANGES": "Änderungen rückgängig machen", + "UNIT": "Einheit", + "UNITS": "Einheiten", + "UNITS_CONFIGURATION": "Einheiten-Konfiguration", + "UNITS_METRICS_IMPERIAL": "Einheiten [Metrisch/Imperial]", + "UNLOADED": "Nicht geaden", + "UP": "aktiv", + "UPDATE": "Aktualisieren", + "UPDATED_SUCCESSFULLY": "Erfolgreich aktualisiert.", + "UPDATE_AN_ENTRY": "Aktualisieren eines Eintrags", + "UPDATE_EXTERNAL_SERVER": "Externen Server aktuallisiren", + "UPDATE_FIRMWARE": "Firmware aktualisieren", + "UPDATE_FIRMWARE_TYPE": "Firmware-Typ aktualisieren", + "UPDATE_FIRMWARE_VERSION": "Firmwareversion aktualisieren", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Nutzdaten-Weiterleitungseintrag aktualisieren", + "UPDATE_GATEWAY": "Gateway aktualisieren", + "UPDATE_NODE": "Sensorknoten aktualisieren", + "UPDATE_OPERATION": "Operation aktualisieren", + "UPDATE_RESOURCE": "Ressource Aktualisieren", + "UPDATE_RESOURCES_GROUP": "Resourcengruppe aktualisieren", + "UPDATE_ROOM": "Raum aktualisieren", + "UPDATE_RULE": "Regel aktualisieren", + "UPDATE_SCRIPT": "Skript aktualisieren", + "UPDATE_SENSOR": "Sensor aktualisieren", + "UPDATE_SENSOR_VARIABLE": "Sensorvariable aktualisieren", + "UPDATE_TEMPLATE": "Update-Vorlage", + "UPDATE_TIMER": "Timer aktualisieren", + "UPDATE_UID_TAG_ENTRY": "UID-Element-Eintrag aktualisieren", + "UPDATE_USER": "Benutzer aktualisieren", + "UPDATE_VARIABLE": "Variable aktualisieren", + "UPLOADED_ON": "Hochgeladen am", + "UPLOAD_FIRMWARE": "Firmware hochladen", + "UPPER": "Upper", + "UPPER_LIMIT": "Obere Grenze", + "UP_TIME": "Betriebszeit", + "URL": "URL", + "USE": "Verwendung", + "USED": "Verwendet", + "USERNAME": "Benutzername", + "USERS": "Benutzer", + "USERS_DETAIL": "Benutzer-Details", + "USER_WORKING_DIRECTORY": "Benutzer-Arbeitsverzeichnis", + "USE_GLOBAL": "Allgemeine Nutzung", + "USE_INTERACTIVE_GUIDE_LINE": "Verwenden Sie die interaktive Anleitung", + "UTILITIES": "Dienstprogramme", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Keine Leerzeichen zulässig.", + "VALIDATION_ERROR_NUMBER": "Der eingegebene Wert ist keine Zahl.", + "VALIDITY": "Gültigkeit", + "VALUE": "Wert", + "VALUE2": "Wert #2", + "VALUE3": "Wert #3", + "VARIABLES": "Variablen", + "VARIABLES_DETAIL": "Variablen-Details", + "VARIABLES_GRAPHICAL_VIEW": "Grafische Darstellung von Variablen", + "VARIABLES_MAPPER": "Variablen-Zuordnung", + "VARIABLES_REPOSITORY": "Variablen-Repository", + "VARIABLE_TYPES": "Variablentypen", + "VENDOR": "Anbieter", + "VERSION": "Version", + "VERSIONS": "Versionen", + "VERSION_ID": "Versions-ID", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "Details anzeigen", + "VM_NAME": "VM-Name", + "VM_VENDOR": "VM-Anbieter", + "VM_VERSION": "VM-Version", + "WEBSOCKET_PORT": "Websocket-Port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Ort der Widget-Bild-Dateien auf der Festplatte", + "WRITE_API_KEY": "API-Schlüssel schreiben", + "YEARS": "Jahre", + "YES": "Ja" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-el_gr.json b/www/languages/mc_locale_gui-el_gr.json new file mode 100644 index 0000000..202c8a4 --- /dev/null +++ b/www/languages/mc_locale_gui-el_gr.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 hours", + "24_HOURS": "24 hours", + "ABOUT": "About", + "ACCESS": "Access", + "ACCESS_TOKEN": "Access token", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Actions", + "ACTION_BOARD": "Action board", + "ACTIVE": "Active", + "ADD": "Add", + "ADD_AN_ENTRY": "Add an entry", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Add firmware", + "ADD_FIRMWARE_TYPE": "Add firmware type", + "ADD_FIRMWARE_VERSION": "Add firmware version", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Add gateway", + "ADD_GROUP": "Add group", + "ADD_NEW_WIDGET": "Add new widget", + "ADD_NODE": "Add node", + "ADD_OPERATION": "Add operation", + "ADD_RESOURCE": "Add resource", + "ADD_RESOURCES_GROUP": "Add resources group", + "ADD_ROLE": "Add role", + "ADD_ROOM": "Add room", + "ADD_RULE": "Add rule", + "ADD_SCRIPT": "Add script", + "ADD_SENSOR": "Add sensor", + "ADD_TEMPLATE": "Add template", + "ADD_TIMER": "Add timer", + "ADD_UID_TAG_ENTRY": "Add UID tag entry", + "ADD_USER": "Add user", + "ADD_VARIABLE": "Add variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architecture", + "AREA": "Area", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatic backup settings", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generate", + "AVAILABLE_PROCESS": "Available Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backups detail", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completed successfully.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Backup location", + "BACKUP_ON": "Backup on", + "BACKUP_SETTINGS": "Backup settings", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis closed", + "BASIS_OPEN": "Basis open", + "BATTERY": "Battery", + "BATTERY_LEVEL": "Battery level", + "BATTERY_USAGE": "Battery usage", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Cancel", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "Client id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "Condition", + "CONDITION_TYPE": "Condition type", + "CONNECTION_DETAILS": "Connection details", + "CONTENT": "Content", + "CONTINUE": "Continue", + "COUNT": "Count", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "Current", + "CURRENT_PASSWORD": "Current password", + "CUSTOM_MESSAGE": "Custom message", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database version", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data unavailable!", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Day", + "DAYS": "Days", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "Delete", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Delete item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Description", + "DESTINATION": "Destination", + "DESTINATION_ID": "Destination id", + "DETAILS": "Details", + "DEVICES": "Devices", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": "Disable", + "DISABLED": "Disabled", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Edit", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "Enable", + "ENABLED": "Enabled", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Example: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Example: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Example: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Free", + "FREQUENCY": "Frequency", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Full name", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Groups", + "GROUP_NAME": "Group name", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Height", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Hours", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "Invalid username or password!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Language", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Last 6 hours", + "LAST_12_HOURS": "Last 12 hours", + "LAST_DAY": "Last day", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Last hour", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Last modified", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Last seen", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Last week", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Library version", + "LINE": "Line", + "LINEAR": "Linear", + "LINE_CHART": "Line chart", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "Loading...", + "LOCATION": "Location", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Log In", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Message", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Message type", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "Minutes", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "Never", + "NEW": "New", + "NEW_DASHBOARD": "New dashboard", + "NEW_PASSWORD": "New password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node name", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating System", + "OPERATION": "Operation", + "OPERATIONS": "Operations", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Password", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Percentage", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Phone numbers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical Memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Port name", + "PRIORITY": "Priority", + "PRIVATE": "Private", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Profile", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Refresh", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Room", + "ROOMS": "Rooms", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Room name", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "Save", + "SAVE_CHANGES": "Save changes", + "SAVING": "Saving...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Seconds", + "SELECT": "Select", + "SEND": "Send", + "SENDING": "Sending...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensor details", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor name", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variables", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "Example: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Example: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Example: 120", + "SETTINGS": "Settings", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Sunrise", + "SUNSET": "Sunset", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Time", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Turn OFF", + "TURN_ON": "Turn ON", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Up", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Update user", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "Used", + "USERNAME": "Username", + "USERS": "Users", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validity", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Variable types", + "VENDOR": "Vendor", + "VERSION": "Version", + "VERSIONS": "Versions", + "VERSION_ID": "Version id", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "View details", + "VM_NAME": "VM Name", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "VM Version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Years", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-en_us.json b/www/languages/mc_locale_gui-en_us.json new file mode 100644 index 0000000..a4970d5 --- /dev/null +++ b/www/languages/mc_locale_gui-en_us.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 hours", + "24_HOURS": "24 hours", + "ABOUT": "About", + "ACCESS": "Access", + "ACCESS_TOKEN": "Access token", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Actions", + "ACTION_BOARD": "Action board", + "ACTIVE": "Active", + "ADD": "Add", + "ADD_AN_ENTRY": "Add an entry", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Add firmware", + "ADD_FIRMWARE_TYPE": "Add firmware type", + "ADD_FIRMWARE_VERSION": "Add firmware version", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Add gateway", + "ADD_GROUP": "Add group", + "ADD_NEW_WIDGET": "Add new widget", + "ADD_NODE": "Add node", + "ADD_OPERATION": "Add operation", + "ADD_RESOURCE": "Add resource", + "ADD_RESOURCES_GROUP": "Add resources group", + "ADD_ROLE": "Add role", + "ADD_ROOM": "Add room", + "ADD_RULE": "Add rule", + "ADD_SCRIPT": "Add script", + "ADD_SENSOR": "Add sensor", + "ADD_TEMPLATE": "Add template", + "ADD_TIMER": "Add timer", + "ADD_UID_TAG_ENTRY": "Add UID tag entry", + "ADD_USER": "Add user", + "ADD_VARIABLE": "Add variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architecture", + "AREA": "Area", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatic backup settings", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generate", + "AVAILABLE_PROCESS": "Available process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backups detail", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completed successfully.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Backup location", + "BACKUP_ON": "Backup on", + "BACKUP_SETTINGS": "Backup settings", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis closed", + "BASIS_OPEN": "Basis open", + "BATTERY": "Battery", + "BATTERY_LEVEL": "Battery level", + "BATTERY_USAGE": "Battery usage", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Cancel", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class loading details", + "CLIENT_ID": "Client id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed virtual memory size", + "CONDITION": "Condition", + "CONDITION_TYPE": "Condition type", + "CONNECTION_DETAILS": "Connection details", + "CONTENT": "Content", + "CONTINUE": "Continue", + "COUNT": "Count", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "Current", + "CURRENT_PASSWORD": "Current password", + "CUSTOM_MESSAGE": "Custom message", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database version", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data unavailable!", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Day", + "DAYS": "Days", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "Delete", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Delete item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Description", + "DESTINATION": "Destination", + "DESTINATION_ID": "Destination id", + "DETAILS": "Details", + "DEVICES": "Devices", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": "Disable", + "DISABLED": "Disabled", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Edit", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "Enable", + "ENABLED": "Enabled", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Example: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Example: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Example: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Free", + "FREQUENCY": "Frequency", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Full name", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Groups", + "GROUP_NAME": "Group name", + "HEAP_MEMORY": "Heap memory", + "HEIGHT": "Height", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Hours", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "Invalid username or password!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java home", + "JAVA_VENDOR_URL": "Java vendor url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java virtual machine specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Language", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Last 6 hours", + "LAST_12_HOURS": "Last 12 hours", + "LAST_DAY": "Last day", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Last hour", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Last modified", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Last seen", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Last week", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Library version", + "LINE": "Line", + "LINEAR": "Linear", + "LINE_CHART": "Line chart", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "Loading...", + "LOCATION": "Location", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Log In", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management specification version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Message", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Message type", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "Minutes", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "Never", + "NEW": "New", + "NEW_DASHBOARD": "New dashboard", + "NEW_PASSWORD": "New password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node name", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non heap memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating system", + "OPERATION": "Operation", + "OPERATIONS": "Operations", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Password", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Percentage", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Phone numbers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Port name", + "PRIORITY": "Priority", + "PRIVATE": "Private", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process cpu", + "PROFILE": "Profile", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Refresh", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Room", + "ROOMS": "Rooms", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Room name", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "Save", + "SAVE_CHANGES": "Save changes", + "SAVING": "Saving...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Seconds", + "SELECT": "Select", + "SEND": "Send", + "SENDING": "Sending...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensor details", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor name", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variables", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "Example: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Example: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Example: 120", + "SETTINGS": "Settings", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification vendor", + "SPECIFICATION_VERSION": "Specification version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Sunrise", + "SUNSET": "Sunset", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Swap space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System cpu load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System load average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Time", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Turn OFF", + "TURN_ON": "Turn ON", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Up", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Update user", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up time", + "URL": "URL", + "USE": "Use", + "USED": "Used", + "USERNAME": "Username", + "USERS": "Users", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validity", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Variable types", + "VENDOR": "Vendor", + "VERSION": "Version", + "VERSIONS": "Versions", + "VERSION_ID": "Version id", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "View details", + "VM_NAME": "VM name", + "VM_VENDOR": "VM vendor", + "VM_VERSION": "VM version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Years", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-es_ar.json b/www/languages/mc_locale_gui-es_ar.json new file mode 100644 index 0000000..a68cb49 --- /dev/null +++ b/www/languages/mc_locale_gui-es_ar.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 horas", + "24_HOURS": "24 horas", + "ABOUT": "Acerca de", + "ACCESS": "Acceso", + "ACCESS_TOKEN": "Token de acceso", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Acciones", + "ACTION_BOARD": "Tablero de acción", + "ACTIVE": "Activo", + "ADD": "Add", + "ADD_AN_ENTRY": "Agregar una entrada", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Agregar firmware", + "ADD_FIRMWARE_TYPE": "Agregar tipo de firmware", + "ADD_FIRMWARE_VERSION": "Agregar versión de firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Agregar entrada de reenvío de carga", + "ADD_GATEWAY": "Agregar puerta de enlace", + "ADD_GROUP": "Agregar grupo", + "ADD_NEW_WIDGET": "Agregar nuevo 'widget'", + "ADD_NODE": "Agregar nodo", + "ADD_OPERATION": "Agregar operación", + "ADD_RESOURCE": "Agregar recurso", + "ADD_RESOURCES_GROUP": "Agregar grupo de recursos", + "ADD_ROLE": "Agregar rol", + "ADD_ROOM": "Agregar sala", + "ADD_RULE": "Agregar regla", + "ADD_SCRIPT": "Agregar script", + "ADD_SENSOR": "Agregar sensor", + "ADD_TEMPLATE": "Agregar template", + "ADD_TIMER": "Agregar temporizador", + "ADD_UID_TAG_ENTRY": "Agregar entrada de tag UID", + "ADD_USER": "Agregar usuario", + "ADD_VARIABLE": "Agregar variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Frecuencia de verificación de vida (segundos)", + "ALLOW_ANONYMOUS": "Permitir anónimo", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "El controlador de código abierto", + "APP.LOG_IN_TO_MESSAGE": "INICIAR SESIÓN EN MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Bienvenido a MyController.org! El controlador de código abierto.", + "ARCHITECTURE": "Arquitectura", + "AREA": "Área", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Token de autenticacón", + "AUTOMATIC_BACKUP_SETTINGS": "Configuración automática de Backup", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Autogenerar", + "AVAILABLE_PROCESS": "Proceso disponible", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Detalle de Backup", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completado con éxito.", + "BACKUP_EVERY": "Realizar backup cada", + "BACKUP_FILE_PREFIX": "Prefijo de archivo de backup", + "BACKUP_LOCATION": "Ubicación de Backup", + "BACKUP_ON": "Backup en", + "BACKUP_SETTINGS": "Configuración de backup", + "BAR": "Barra", + "BASIS": "Base", + "BASIS_CLOSED": "Base cerrada", + "BASIS_OPEN": "Base abierta", + "BATTERY": "Batería", + "BATTERY_LEVEL": "Nivel de batería", + "BATTERY_USAGE": "Uso de batería", + "BAUD_RATE": "Velocidad de transmisión", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Asociar dirección", + "BLOCKS": "Bloques", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Envoltorio", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Cancelar", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal cerrado", + "CARDINAL_OPEN": "Cardinal abierto", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Detalle de carga de clases", + "CLIENT_ID": "ID de cliente", + "CLONE": "Clone", + "COLLECTION_COUNT": "Cantidad de recolecciones", + "COLLECTION_TIME": "Hora de recolección", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Confirmado", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Tamaño de Memoria Virtual confirmada", + "CONDITION": "Condición", + "CONDITION_TYPE": "Tipo de condición", + "CONNECTION_DETAILS": "Detalles de conexión", + "CONTENT": "Contenido", + "CONTINUE": "Continuar", + "COUNT": "Cantidad", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Expresión Cron", + "CSS_FILES": "Archivos CSS", + "CURRENT": "Actual", + "CURRENT_PASSWORD": "Contraseña actual", + "CUSTOM_MESSAGE": "Mensaje personalizado", + "DAEMON": "Demonio", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Efecto", + "DAMPENING_TYPE": "Tipo de efecto", + "DASHBOARDS": "Tableros", + "DASHBOARD_LIMIT": "Cant. máx. de tableros permitidos", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Versión de base de datos", + "DATA_RETENTION_SETTINGS": "Configuración de retención de datos", + "DATA_TYPE": "Tipo de dato", + "DATA_UNAVAILABLE": "Datos no disponibles!", + "DATE_PATTERN": "Formato de fecha", + "DATE_RANGE": "Date range", + "DAY": "Día", + "DAYS": "Días", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Firmware por defecto", + "DEFAULT_TIME_RANGE": "Rango de tiempo por defecto", + "DELAY_TIME_IN_SECONDS": "Tiempo de retraso en segundos", + "DELETE": "Eliminar", + "DELETE_DASHBOARD": "Eliminar tablero", + "DELETE_ITEMS": "Eliminar item(s)", + "DELETE_MESSAGE": "Estás por eliminar el/los item/s seleccionados
Este proceso eliminará por completo estos items!
Seleccione 'Eliminar' para continuar.", + "DESCRIPTION": "Descripción", + "DESTINATION": "Destino", + "DESTINATION_ID": "ID de destino", + "DETAILS": "Detalles", + "DEVICES": "Dispositivos", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Dirección", + "DISABLE": "Deshabilitar", + "DISABLED": "Deshabilitado", + "DISABLE_WHEN_TRIGGER": "Deshabilitar cuando se dispare", + "DISCOVER": "Descubrir", + "DISCOVER_INITIATED_SUCCESSFULLY": "Descubrimiento iniciado correctamente", + "DISPLAY_NAMES": "Nombre visible", + "DOCUMENTS": "Documentos", + "DOUBLE": "Double", + "DOWN": "Abajo", + "DRIVER": "Driver", + "EDIT": "Modificar", + "EDIT_DASHBOARD": "Modificar tablero", + "EMAIL": "Email", + "EMAILS": "Emails(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Direcciones de email separadas por coma", + "ENABLE": "Habilitar", + "ENABLED": "Habilitado", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Habilitar por defecto cuando no haya firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Cuando se habilita esta opción, se usa el firmware por defecto cuando el firmware requerido no se encuentra disponible en el sistema", + "ENABLE_EDIT_MODE": "Habilitar modo de edición", + "ENABLE_MIN_MAX": "Habilitar Min/Máx", + "ENABLE_SSL": "Habilitar SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Borrar configuración", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Estas por eliminar completamente la configuración de los items seleccionados.
Seleccione 'Borrar configuración' para continuar.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Borrar configuración", + "ERASE_CONFIGURATION_INITIATED": "Borrar configuración iniciada para los items seleccionados", + "ERROR_ITEMS_NOT_AVAILABLE": "Items seleccionados no disponibles!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Ejemplo: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Ejemplo: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Ejemplo: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluaciones", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extensión", + "EXTENSIONS": "Extensiones", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Archivo", + "FILE_NAME": "Nombre de archivo", + "FILE_SIZE": "Tamaño de archivo", + "FILTER_BY_BLOCKS": "Filtrar por Bloques", + "FILTER_BY_CONDITION_TYPE": "Filtrar por Tipo de condición", + "FILTER_BY_DAMPENING_TYPE": "Filtrar por Tipo de efecto", + "FILTER_BY_DESCRIPTION": "Filtrar por Descripción", + "FILTER_BY_DESTINATION_ID": "Filtrar por ID Destino", + "FILTER_BY_DIRECTION": "Filtrar por Dirección", + "FILTER_BY_EMAIL": "Filtrar por Email", + "FILTER_BY_ENABLED": "Filtrar por Habilitado", + "FILTER_BY_EUI": "Filtrar por EUI", + "FILTER_BY_EXTENSION": "Filtrar por Extensión", + "FILTER_BY_FILE_NAME": "Filtrar por Nombre de archivo", + "FILTER_BY_FREQUENCY": "Filtrar por Frecuencia", + "FILTER_BY_FULL_NAME": "Filtrar por Nombre completo", + "FILTER_BY_KEY": "Filtrar por Key", + "FILTER_BY_LEVEL": "Filtrar por Nivel", + "FILTER_BY_LIBRARY_VERSION": "Filtrar por Versión de librería", + "FILTER_BY_MESSAGE": "Filtrar por Mensaje", + "FILTER_BY_MESSGAE_TYPE": "Filtrar por Tipo de mensaje", + "FILTER_BY_NAME": "Filtrar por Nombre", + "FILTER_BY_NETWORK_TYPE": "Filtrar por Tipo de red", + "FILTER_BY_NODE_ID": "Filtrar por ID de Nodo", + "FILTER_BY_OPERATION": "Filtrar por Operación", + "FILTER_BY_OPERATION_TYPE": "Filtrar por Tipo de operación", + "FILTER_BY_PAYLOAD_OFF": "Filtrar por Carga apagada", + "FILTER_BY_PAYLOAD_ON": "Filtrar por Carga encendida", + "FILTER_BY_PERMISSION": "Filtrar por Permiso", + "FILTER_BY_PUBLIC_ACCESS": "Filtrar por Acceso público", + "FILTER_BY_RESOURCE": "Filtrar por Recurso", + "FILTER_BY_RESOURCE_TYPE": "Filtrar por Tipo de recurso", + "FILTER_BY_SENSOR_ID": "Filtrar por ID de Sensor", + "FILTER_BY_SENSOR_NAME": "Filtrar por Nombre de sensor", + "FILTER_BY_SENSOR_TYPE": "Filtrar por Tipo de sensor", + "FILTER_BY_SENSOR_VARIABLES": "Filtrar por variables de sensor", + "FILTER_BY_SOURCE_ID": "Filtrar por ID de orígen", + "FILTER_BY_STATUS": "Filtrar por Estado", + "FILTER_BY_STATUS_MESSAGE": "Filtrar por Mensaje de estado", + "FILTER_BY_TYPE": "Filtrar por Tipo", + "FILTER_BY_TYPE_ID": "Filtrar por ID de Tipo", + "FILTER_BY_UID": "Filtrar por UID", + "FILTER_BY_USERNAME": "Filtrar por Nombre de usuario", + "FILTER_BY_VALUE": "Filtrar por Valor", + "FILTER_BY_VALUE2": "Filtrar por Valor #2", + "FILTER_BY_VALUE3": "Filtrar por Valor #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrar por Tipos de Variable", + "FILTER_BY_VERSION": "Filtrar por Versión", + "FILTER_BY_VERSION_ID": "Filtrar por ID de Versión", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Detalle de Firmwares", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Detalle de tipos de firmwares", + "FIRMWARE_TYPE_NAME": "Nombre de Tipo de Firware", + "FIRMWARE_UPLOAD_INITIATED": "Subida de firmware iniciada para los items seleccionados.", + "FIRMWARE_VERSION": "Versión de Firmware", + "FIRMWARE_VERSIONS_DETAIL": "Detalle de Versiones de Firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Datos de cinco minutos", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Reenviar mensaje", + "FORWARD_PAYLOADS_DETAIL": "Detalle de reenvío de mensaje", + "FREE": "Gratis", + "FREQUENCY": "Frecuencia", + "FROM": "From", + "FROM_ADDRESS": "Dirección origen", + "FROM_PHONE_NUMBER": "Número de teléfono de origen", + "FULL_NAME": "Nombre completo", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Recolector de basura", + "GATEWAY": "Puerta de enlace", + "GATEWAYS": "Puertas de enlace", + "GATEWAYS_DETAIL": "Detalle de puertas de enlace", + "GATEWAY_DETAILS": "Detalle de puerta de enlace", + "GATEWAY_NAME": "Nombre de puerta de enlace", + "GATEWAY_TYPE": "Tipo de puerta de enlace", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Tiempo global de refresco de página", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Permitir el acceso a los recursos hijos (en roles)", + "GRAPHS_SETTINGS": "Configuración de gráficos", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Grupos", + "GROUP_NAME": "Nombre de grupo", + "HEAP_MEMORY": "Memoria de almacenamiento dinámico", + "HEIGHT": "Altura", + "HIDE_MENU": "Ocultar menú", + "HISTORICAL_BAR_CHART": "Gráfico de barras histórico", + "HOST_NAME": "Nombre de Host", + "HOURS": "Horas", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Encabezados HTML extras", + "HTTP_PORT": "Puerto HTTP", + "ID": "Id", + "IDEN": "Identificación", + "IGNORE_CASE": "Ignorar mayúsculas", + "IGNORE_DUPLICATE": "Ignorar duplicados", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Incluir umbral alto", + "INCLUDE_THRESHOLD_LOW": "Incluir umbral bajo", + "INDIVIDUAL_SETTINGS": "Configuraciones individuales", + "INIT": "Iniciar", + "INTERPOLATE_TYPE": "Tipo de interpolación", + "INTERVAL": "Intervalo", + "INTERVAL_IN_SECONDS": "Intervalo en segundos", + "INVALID_USERNAME_OR_PASSWORD": "Nombre de usuario o contraseña inválido!", + "IN_RANGE": "En el rango", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) eliminadas correctamente", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) deshabilitados correctamente", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) habilitados correctamente", + "ITEMS_PER_ROW": "Items por fila", + "ITEM_CREATED_SUCCESSFULLY": "Item creado correctamente", + "ITEM_UPDATED_SUCCESSFULLY": "Item actualizado correctamente", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vender Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Especificación de Máquina Virtual de Java", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Idioma", + "LANGUAGE_VERSION": "Versión de idioma", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Últimas 6 horas", + "LAST_12_HOURS": "Últimas 12 horas", + "LAST_DAY": "Último día", + "LAST_EXECUTION": "Última ejecución", + "LAST_FIRED": "Último disparo", + "LAST_GARBAGECOLLECTOR_DURATION": "Última duración de GC", + "LAST_HOUR": "Última hora", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Última modificación", + "LAST_MONTH": "Último mes", + "LAST_SEEN": "Visto por última vez", + "LAST_TRIGGER": "Último disparo", + "LAST_WEEK": "Última semana", + "LAST_YEAR": "Último año", + "LATITUDE": "Latitud", + "LEFT": "Left", + "LEVEL": "Nivel", + "LIBRARY_VERSION": "Versión de librería", + "LINE": "Línea", + "LINEAR": "Lineal", + "LINE_CHART": "Gráfico de lineas", + "LOAD": "Cargar", + "LOADED": "Cargado", + "LOADING": "Cargando...", + "LOCATION": "Ubicación", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Mensaje de inicio de sesión", + "LOGS": "Registros", + "LOG_DIRECTION": "Registrar dirección", + "LOG_IN": "Iniciar sesión", + "LOG_LEVEL": "Registrar nivel", + "LOG_OUT": "Cerrar sesión", + "LONGITUDE": "Longitud", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Máx", + "MAXIMUM_BLOCK_SIZE": "Tamaño de bloque máximo", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Mensaje", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "El mensaje contiene", + "MESSAGE_TYPE": "Tipo de mensaje", + "METRIC": "Métrica", + "METRICS": "Métricas", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Altura mínima", + "MINIMUM_WIDTH": "Ancho mínimo", + "MINUTES": "Minutos", + "MIN_MAX": "Min/Máx", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modificar mapeo de sensor y variables", + "MONOTONE": "Monotono", + "MQTT_BROKER": "MQTT Broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Estás por cambiar las configuraciones del broker MQTT
Esta acción implica reiniciar el servicio para tomar las nuevas configuraciones", + "MQTT_BROKER_EDIT_DIALOG": "Configuraciones de MQTT Broker", + "MQTT_BROKER_HOST_EXAMPLE": "Ejemplo: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Ejemplo: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Ejemplo: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Ejemplo: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Registros del servidor MyController", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nombre", + "NETWORK": "Red", + "NETWORK_TYPE": "Tipo de red", + "NEVER": "Nunca", + "NEW": "New", + "NEW_DASHBOARD": "Nuevo tablero", + "NEW_PASSWORD": "Nueva contraseña", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Nodo", + "NODES": "Nodos", + "NODES_ALIVE_CHECK_INTERVAL": "Intervalo de verificación de vida de nodos", + "NODES_DETAIL": "Detalle de nodos", + "NODE_DETAILS": "Detalle de nodo", + "NODE_EUI": "Nodo EUI", + "NODE_ID": "ID Nodo", + "NODE_NAME": "Nombre de nodo", + "NODE_STATUS": "Estado de nodo", + "NODE_TYPE": "Tipo de nodo", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Sin selección", + "NOTIFICATIONS": "Notificaciones", + "NOT_SET": "Sin configuración", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No hay backups configurados.", + "NO_DATA_AVAILABLE": "No hay datos disponibles.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No hay firmwares configurados.", + "NO_FIRMWARE_TYPES_SETUP": "No hay tipos de firmware configurados.", + "NO_FIRMWARE_VERSIONS_SETUP": "No hay versiones de firmware establecidas.", + "NO_FORWARD_PAYLOADS_SETUP": "No hay reenvíos de carga configurados.", + "NO_GATEWAYS_SETUP": "No hay puertas de enlace configuradas.", + "NO_ITEMS_IN_FILTER": "Ups! No se encontraron resultados. Modifique su consulta.", + "NO_ITEMS_SETUP": "No hay items configurados!", + "NO_LOGS_AVAILABLE": "No hay registros disponibles.", + "NO_NODES_SETUP": "No hay nodos configurados.", + "NO_OPERATIONS_SETUP": "No hay operaciones configuradas.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No hay recursos mapeados con este grupo.", + "NO_RESOURCE_GROUPS_SETUP": "No hay grupo de recursos configurados.", + "NO_ROOMS_SETUP": "No hay salas configuradas.", + "NO_RULES_SETUP": "No hay reglas configuradas.", + "NO_SCRIPTS_SETUP": "No hay scripts configurados.", + "NO_SENSORS_SETUP": "No hay sensores configurados.", + "NO_TEMPLATES_SETUP": "No hay templates configurados.", + "NO_TIMERS_SETUP": "No hay temporizadores establecidos.", + "NO_UID_TAGS_SETUP": "No hay tags UID configurados.", + "NO_VARIABLES_SETUP": "No hay variables configuradas.", + "OCCURRENCES": "Ocurrencias", + "OFF": "Apagado", + "OFFSET": "Offset", + "ON": "Encendido", + "ONE_DAY_DATA": "Datos de un día", + "ONE_HOUR_DATA": "Datos de una hora", + "ONE_MINUTE_DATA": "Datos de un minuto", + "OPERATING_SYSTEM": "Sistema operativo", + "OPERATION": "Operación", + "OPERATIONS": "Operaciones", + "OPERATIONS_DETAIL": "Detalle de operaciones", + "OPERATION_NAME": "Nombre de operación", + "OPERATION_TYPE": "Tipo de operación", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Padre", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Contraseña", + "PATTERN": "Formato", + "PAYLOAD": "Mensaje", + "PAYLOAD_DELAY": "Mensaje / Retraso", + "PAYLOAD_OFF": "Mensaje OFF", + "PAYLOAD_ON": "Mensaje ON", + "PEAK": "Pico", + "PERCENTAGE": "Porcentaje", + "PERMISSION": "Permiso", + "PHONE_NUMBERS": "Números de teléfono", + "PHONE_NUMBERS_COMMA_SEPARATED": "Números telefónicos separados por coma", + "PHYSICAL_MEMORY": "Memoria Física (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Puerto", + "PORT_NAME": "Nombre de puerto", + "PRIORITY": "Priority", + "PRIVATE": "Privado", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Proceso CPU", + "PROFILE": "Perfil", + "PROFILE_UPDATED_SUCCESSFULLY": "Perfil actualizado correctamente", + "PROPERTIES": "Properties", + "PUBLIC": "Público", + "PUBLIC_ACCESS": "Acceso público", + "PUBLIC_KEY": "Public key", + "PURGE": "Limpiar", + "PURGE_BEFORE": "Limpiar antes", + "PURGE_DONE_SUCCESSFULLY": "Limpieza finalizada correctamente", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Limpiar registro de recursos", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ATENCIÓN: Si no seleccionas ningún parámetro, este proceso eliminará todo!", + "PURGING": "Limpiando", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Datos en bruto", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reiniciar", + "REBOOT_CONFIRMATION_MESSAGE": "Estás por reiniciar lo items seleccionados
Presiona 'Reiniciar' para proceder.", + "REBOOT_CONFIRMATION_TITLE": "Reiniciar", + "REBOOT_INITIATED": "Reinicio iniciado para los items seleccionados.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Actualizar", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Tiempo de refrezco (segundos)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Lanzamientos", + "RELOAD": "Recargar", + "RELOAD_INITIATED_SUCCESSFULLY": "Recarga iniciada correctamente", + "RESOURCE": "Recurso", + "RESOURCES": "Recursos", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Grupos de recursos", + "RESOURCES_LOGS": "Registros de recursos", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Detalle de registro de recursos", + "RESOURCES_LOG_LEVEL": "Nivel de registros de recursos", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Detalle de grupo de recursos", + "RESOURCE_GROUPS_MAPS_DETAIL": "Detalle de los mapas de grupos de recursos", + "RESOURCE_GROUPS_TURNED_OFF": "Grupo de recursos apagado", + "RESOURCE_GROUPS_TURNED_ON": "Grupos de recursos encendido", + "RESOURCE_GROUP_TURNED_OFF": "Grupo de recursos apagado", + "RESOURCE_GROUP_TURNED_ON": "Grupo de recursos encendido", + "RESOURCE_TYPE": "Tipo de recurso", + "RESTORE": "Restaurar", + "RESTORE_CONFIRMATION_MESSAGE": "Estás a punto de restaurar el sistema a '{{name}}'.
La restauración elimina completamente la información y la configuración actual y el sistema pasa al estado '{{name}}'!
Seleccione 'Restaurar' para continuar.
NOTA: Después de una restauración exitosamente, debes iniciar el servidor manualmente desde la línea de comandos", + "RESTORE_CONFIRMATION_TITLE": "Restaurar sistema a '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restauración iniciada correctamente.", + "RESULT": "Resultado", + "RETAIN_MAX": "Conservar máximo #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Estás a punto de cambiar la configuración de conservación de métricas.
Esta acción podría causar pérdida de información. Lea el manual de usuario para mayour información.
Es altamente recomendable realizar un backup del sistema antes de continuar!", + "RETENTION_DIALOG_TITLE": "Lea cuidadosamente antes de continuar", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Detalle de roles", + "ROOM": "Sala", + "ROOMS": "Salas", + "ROOMS_DETAIL": "Detalle de salas", + "ROOM_NAME": "Nombre de sala", + "RULES": "Reglas", + "RULES_DETAIL": "Detalle de reglas", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nombre de regla", + "RUN": "Ejecutar", + "RUNNING": "Corriendo...", + "RUN_BACKUP": "Correr backup", + "RUN_GARBAGE_COLLECTION": "Ejecutar recolector de basura", + "RUN_NOW": "Ejecutar ahora", + "SAVE": "Guardar", + "SAVE_CHANGES": "Guardar cambios", + "SAVING": "Guardando...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Detalle de Scripts", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Archivos de scripts", + "SEARCH": "Buscar", + "SECONDS": "Segundos", + "SELECT": "Seleccionar", + "SEND": "Enviar", + "SENDING": "Enviando...", + "SEND_RAW_MESSAGE": "Enviar mensaje plano", + "SENSOR": "Sensor", + "SENSORS": "Sensores", + "SENSORS_ACTION": "Acción de sensores", + "SENSORS_AND_VARIABLES_MAPPING": "Mapeo de sensores y variables", + "SENSORS_DETAIL": "Detalle de sensores", + "SENSOR_DETAILS": "Detalle de sensor", + "SENSOR_ID": "ID de Sensor", + "SENSOR_NAME": "Nombre de sensor", + "SENSOR_TYPE": "Tipo de sensor", + "SENSOR_VARIABLE": "Variable de sensor", + "SENSOR_VARIABLES": "Variables de sensor", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Tipo de variable de sensor", + "SERIAL_BAUD_RATE_EXAMPLE": "Ejemplo: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Ejemplo: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Ejemplo: 120", + "SETTINGS": "Configuraciones", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Mostrar etiquetas", + "SHOW_MENU": "Mostrar menú", + "SIX_HOURS_DATA": "Datos de seis horas", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "Host SMTP", + "SMTP_PASSWORD": "Contraseña SMTP", + "SMTP_PORT": "Puerto SMTP", + "SMTP_USERNAME": "Nombre de usuario de SMTP", + "SOURCE": "Orígen", + "SOURCE_CODE": "Código fuente", + "SOURCE_ID": "ID de Orígen", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Gráfico de área apilado", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Estado", + "STATUS_MESSAGE": "Mensaje de estado", + "STATUS_SINCE": "Estado desde", + "STEP_AFTER": "Paso siguiente", + "STEP_BEFORE": "Paso anterior", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Asunto", + "SUB_TYPE": "Subtipo", + "SUNRISE": "Amanecer", + "SUNSET": "Ocaso", + "SUPPORT": "Soporte", + "SWAP": "Intercambio", + "SWAP_SPACE": "Espacio de intercambio", + "SYNTAX_ERROR": "Error de sintaxis", + "SYSTEM": "Sistema", + "SYSTEM_CPU_LOAD": "Carga de CPU del sistema", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Carga promedio del sistea", + "SYSTEM_STATUS": "Estado del sistema", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Límite de filas", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Detalle de templates", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Comprobando...", + "TEST_CONNECTION": "Probar conección", + "TEXT": "Text", + "THREADS_COUNT": "Cantidad de hilos", + "THRESHOLD_VALUE": "Umbral", + "THRESHOLD_VALUE_HIGH": "Valor máximo del umbral", + "THRESHOLD_VALUE_LOW": "Valor mínimo del umbral", + "TIME": "Hora", + "TIMERS": "Temporizadores", + "TIMERS_DETAIL": "Detalle de temporizadores", + "TIMER_NAME": "Nombre de temporizador", + "TIMER_TYPE": "Tipo de temporizador", + "TIME_FORMAT": "Formato de hora", + "TIME_HH_MM_SS": "Hora (HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Diferencia horaria (HH:mm:ss)", + "TIME_RANGE": "Rango de horas", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Título", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Tópicos publicados", + "TOPICS_SUBSCRIBE": "Tópicos subscritos", + "TOPIC_PUBLISH": "Tópico publicado", + "TOPIC_SUBSCRIBE": "Tópico subscripto", + "TOPOLOGY": "Topología", + "TOTAL": "Total", + "TOTAL_LOADED": "Total cargado", + "TOTAL_STARTED": "Total comenzado", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Disparar cuando", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Apagar", + "TURN_ON": "Encender", + "TWELVE_HOURS_DATA": "Datos de doce horas", + "TWILIO": "Twilio", + "TYPE": "Tipo", + "TYPES": "Tipos", + "TYPE_ID": "ID de tipo", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "Detalle de tags UID", + "UNAVAILABLE": "No disponible", + "UNDO_CHANGES": "Deshacer cambios", + "UNIT": "Unit", + "UNITS": "Unidades", + "UNITS_CONFIGURATION": "Configuración de unidades", + "UNITS_METRICS_IMPERIAL": "Unidades [Métrica/Imperial]", + "UNLOADED": "Descargado", + "UP": "Arriba", + "UPDATE": "Actualizar", + "UPDATED_SUCCESSFULLY": "Actualizado correctamente.", + "UPDATE_AN_ENTRY": "Actualizar una entradda", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Actualizar firmware", + "UPDATE_FIRMWARE_TYPE": "Actualizar tipo de firmware", + "UPDATE_FIRMWARE_VERSION": "Actualizar versión de firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Actualizar entrada de reenvío de carga", + "UPDATE_GATEWAY": "Actualizar puerta de enlace", + "UPDATE_NODE": "Actualizar nodo", + "UPDATE_OPERATION": "Actualizar operación", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Actualizar grupo de recursos", + "UPDATE_ROOM": "Actualizar sala", + "UPDATE_RULE": "Actualizar regla", + "UPDATE_SCRIPT": "Actualizar script", + "UPDATE_SENSOR": "Actualizar sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Actualizar template", + "UPDATE_TIMER": "Actualizar temporizador", + "UPDATE_UID_TAG_ENTRY": "Actualizar entrada de tag UID", + "UPDATE_USER": "Actualizar usuario", + "UPDATE_VARIABLE": "Actualizar variable", + "UPLOADED_ON": "Actualizado en", + "UPLOAD_FIRMWARE": "Subir firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Límite superior", + "UP_TIME": "Tiempo", + "URL": "URL", + "USE": "Uso", + "USED": "Usado", + "USERNAME": "Nombre de usuario", + "USERS": "Usuarios", + "USERS_DETAIL": "Detalle de usuarios", + "USER_WORKING_DIRECTORY": "Directorio de trabajo del usuario", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Utilizar la línea de guía interactiva", + "UTILITIES": "Utilidades", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No hay espacio suficiente.", + "VALIDATION_ERROR_NUMBER": "El valor ingresado no es un número.", + "VALIDITY": "Validez", + "VALUE": "Valor", + "VALUE2": "Valor #2", + "VALUE3": "Valor #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Detalle de variables", + "VARIABLES_GRAPHICAL_VIEW": "Vista gráfica de variables", + "VARIABLES_MAPPER": "Mapeador", + "VARIABLES_REPOSITORY": "Repositorio de variables", + "VARIABLE_TYPES": "Tipos de variables", + "VENDOR": "Proveedor", + "VERSION": "Versión", + "VERSIONS": "Versiones", + "VERSION_ID": "ID de Versión", + "VERSION_KERNEL": "Versión/Kernel", + "VIEW_DETAILS": "Ver detalles", + "VM_NAME": "Nombre de VM", + "VM_VENDOR": "Proovedor de VM", + "VM_VERSION": "Versión de Vm", + "WEBSOCKET_PORT": "Puerto de Websocket", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Ubicaciòn de archivos de imágenes de Widgets", + "WRITE_API_KEY": "Write API key", + "YEARS": "Años", + "YES": "Si" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-es_es.json b/www/languages/mc_locale_gui-es_es.json new file mode 100644 index 0000000..cc8eeac --- /dev/null +++ b/www/languages/mc_locale_gui-es_es.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 horas", + "24_HOURS": "24 horas", + "ABOUT": "Acerca de", + "ACCESS": "Acceso", + "ACCESS_TOKEN": "Token de acceso", + "ACK": "Ack", + "ACKNOWLEDGE": "Reconocido", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Acciones", + "ACTION_BOARD": "Tablero de acción", + "ACTIVE": "Activo", + "ADD": "Add", + "ADD_AN_ENTRY": "Agregar entrada", + "ADD_EXTERNAL_SERVER": "Agregar servidor externo", + "ADD_FIRMWARE": "Agregar firmware", + "ADD_FIRMWARE_TYPE": "Agregar tipo de firmware", + "ADD_FIRMWARE_VERSION": "Agregar versión de firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Agregar entrada de la carga hacia delante", + "ADD_GATEWAY": "Agregar puerta de enlace", + "ADD_GROUP": "Agregar grupo", + "ADD_NEW_WIDGET": "Añadir nuevo widget", + "ADD_NODE": "Agregar nodo", + "ADD_OPERATION": "Agregar operación", + "ADD_RESOURCE": "Agregar recurso", + "ADD_RESOURCES_GROUP": "Agregar grupo de recursos", + "ADD_ROLE": "Agregar role", + "ADD_ROOM": "Agregar sala", + "ADD_RULE": "Agregar role", + "ADD_SCRIPT": "Agregar script", + "ADD_SENSOR": "Agregar sensor", + "ADD_TEMPLATE": "Añadir plantilla", + "ADD_TIMER": "Agregar contador", + "ADD_UID_TAG_ENTRY": "Agregar UID tag", + "ADD_USER": "Agregar usuario", + "ADD_VARIABLE": "Agregar variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Después", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Frequencia de chequeo de vida (segundos)", + "ALLOW_ANONYMOUS": "Permitir anónimos", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "Controladores personalizados AngularJS", + "APP.DESCRIPTION": "El Controlador de Código Abierto", + "APP.LOG_IN_TO_MESSAGE": "Ingrese a MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Bienvenido a MyController.org! El Controlador de Código Abierto.", + "ARCHITECTURE": "Arquitectura", + "AREA": "Zona", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Token de autenticación", + "AUTOMATIC_BACKUP_SETTINGS": "Configuración de copia de seguridad automática", + "AUTORIZED_USER": "Usuario autorizado", + "AUTO_GENERATE": "Auto generar", + "AVAILABLE_PROCESS": "Proceso disposible", + "AVERAGE_TIME": "Average time", + "BACKUP": "Copia de seguridad", + "BACKUPS_DETAIL": "Detalle de copias de seguridad", + "BACKUP_COMPLETED_SUCCESSFULLY": "Copia de seguridad completada con éxito.", + "BACKUP_EVERY": "Copia de seguridad cada", + "BACKUP_FILE_PREFIX": "Prefijo de la copia de seguridad", + "BACKUP_LOCATION": "Ubicación de backup", + "BACKUP_ON": "Copia de seguridad en", + "BACKUP_SETTINGS": "Configuración de copia de seguridad", + "BAR": "Barra", + "BASIS": "Base", + "BASIS_CLOSED": "Base cerrada", + "BASIS_OPEN": "Base abierta", + "BATTERY": "Batería", + "BATTERY_LEVEL": "Nivel de batería", + "BATTERY_USAGE": "Uso de la batería", + "BAUD_RATE": "Velocidad bps.", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Enlazar la dirección", + "BLOCKS": "Bloques de", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Huésped intermediario", + "BUILD_JDK": "Construir JDK", + "BUILD_TOOL": "Construir herramientas", + "BUILT_ON": "Construido", + "BUNDLE": "Paquete", + "BUTTON_SETTINGS": "Configuración de botón:", + "CANCEL": "Cancelar", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal cerrado", + "CARDINAL_OPEN": "Cardinal abierto", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Cargando detalles de la clase", + "CLIENT_ID": "Id de cliente", + "CLONE": "Clonar", + "COLLECTION_COUNT": "Cuenta de colección", + "COLLECTION_TIME": "Tiempo de colección", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Cambios almacenados", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Tamaño de memoria Virtual almacenada", + "CONDITION": "Condición", + "CONDITION_TYPE": "Tipo de condición", + "CONNECTION_DETAILS": "Detalles de conexión", + "CONTENT": "Contenido", + "CONTINUE": "Continuar", + "COUNT": "Contar", + "COUNTER": "Contador", + "CRC": "CRC", + "CRON_EXPRESSION": "Expresión cron", + "CSS_FILES": "Archivos CSS", + "CURRENT": "Corriente", + "CURRENT_PASSWORD": "Contraseña actual", + "CUSTOM_MESSAGE": "Mensaje personalizado", + "DAEMON": "Demonio", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Efecto de", + "DAMPENING_TYPE": "Tipo de Dampening", + "DASHBOARDS": "Paneles", + "DASHBOARD_LIMIT": "Paneles de control máximo permitidos", + "DATA": "Datos", + "DATABASE": "Base de datos", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Tipo de base de datos", + "DATABASE_VERSION": "Versión de la base de datos", + "DATA_RETENTION_SETTINGS": "Configuración de retención de datos", + "DATA_TYPE": "Tipo de datos", + "DATA_UNAVAILABLE": "Datos no disponibles!", + "DATE_PATTERN": "Modelo de fecha", + "DATE_RANGE": "Date range", + "DAY": "Día", + "DAYS": "Días", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Firmware predeterminado", + "DEFAULT_TIME_RANGE": "Intervalo de tiempo predeterminado", + "DELAY_TIME_IN_SECONDS": "Tiempo de retardo en segundos", + "DELETE": "Eliminar", + "DELETE_DASHBOARD": "Eliminar panel", + "DELETE_ITEMS": "Eliminar articulo (s)", + "DELETE_MESSAGE": "Usted está a punto de eliminar elementos seleccionados
eliminación proceso quita la traza completa de este artículo (s)!
Haga clic en 'Borrar' para proceder.", + "DESCRIPTION": "Descripción", + "DESTINATION": "Destino", + "DESTINATION_ID": "Id de destino", + "DETAILS": "Detalles", + "DEVICES": "Dispositivos", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Dirección", + "DISABLE": "Desactivar", + "DISABLED": "Desactivado", + "DISABLE_WHEN_TRIGGER": "Desactivar disparo", + "DISCOVER": "Descubrir", + "DISCOVER_INITIATED_SUCCESSFULLY": "Descubrir inició con éxito", + "DISPLAY_NAMES": "Mostrar nombres", + "DOCUMENTS": "Documentos", + "DOUBLE": "Double", + "DOWN": "Abajo", + "DRIVER": "Controlador", + "EDIT": "Editar", + "EDIT_DASHBOARD": "Editar panel", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Dirección de Email separado por coma", + "ENABLE": "Activar", + "ENABLED": "Activado", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Activar por defecto en ningún firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Cuando está activada esta opción, usar el firmware por defecto, donde firmware solicitada no está disponible en el sistema", + "ENABLE_EDIT_MODE": "Activar el modo de edición", + "ENABLE_MIN_MAX": "Activar Min/Max", + "ENABLE_SSL": "Activar SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Borrar configuración", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Estás a punto de borrar la configuración completa de los elementos seleccionados.
Haga clic en 'Borrar configuración' para seguir adelante.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Borrar configuración", + "ERASE_CONFIGURATION_INITIATED": "Borrar la configuración para los elementos seleccionados", + "ERROR_ITEMS_NOT_AVAILABLE": "Elementos seleccionados no está disponibles!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Ejemplo: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Ejemplo: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Ejemplo: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluaciones", + "EXECUTE_DISCOVER_INTERVAL": "Ejecutar intervalo de descuvrimiento", + "EXTENSION": "Extensión", + "EXTENSIONS": "Extensiones", + "EXTERNAL_SERVERS": "Servidores externos", + "EXTERNAL_SERVERS_DETAIL": "Detalle de servidores externos", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Archivo", + "FILE_NAME": "Nombre de archivo", + "FILE_SIZE": "Tamaño del archivo", + "FILTER_BY_BLOCKS": "Filtrar por bloques", + "FILTER_BY_CONDITION_TYPE": "Filtrar por tipo de Condición", + "FILTER_BY_DAMPENING_TYPE": "Filtrar por Dampening", + "FILTER_BY_DESCRIPTION": "Filtrar por Descripción", + "FILTER_BY_DESTINATION_ID": "Filtro por id de destino", + "FILTER_BY_DIRECTION": "Filtrar por dirección", + "FILTER_BY_EMAIL": "Filtrar por Email", + "FILTER_BY_ENABLED": "Filtro por activo", + "FILTER_BY_EUI": "Filtrar por EUI", + "FILTER_BY_EXTENSION": "Filtrar por extensión", + "FILTER_BY_FILE_NAME": "Filtrar por nombre de archivo", + "FILTER_BY_FREQUENCY": "Filtrar por frecuencia", + "FILTER_BY_FULL_NAME": "Filtrar por nombre completo", + "FILTER_BY_KEY": "Filtrar por clave", + "FILTER_BY_LEVEL": "Filtrar por nivel", + "FILTER_BY_LIBRARY_VERSION": "Filtrar por versión de la biblioteca", + "FILTER_BY_MESSAGE": "Filtrar por mensaje", + "FILTER_BY_MESSGAE_TYPE": "Filtrar por tipo de mensaje", + "FILTER_BY_NAME": "Filtrar por nombre", + "FILTER_BY_NETWORK_TYPE": "Filtrar por tipo de red", + "FILTER_BY_NODE_ID": "Filtro por id de nodo", + "FILTER_BY_OPERATION": "Filtrar por operación", + "FILTER_BY_OPERATION_TYPE": "Filtrar por tipo de operación", + "FILTER_BY_PAYLOAD_OFF": "Filtrar por carga de", + "FILTER_BY_PAYLOAD_ON": "Filtrar por carga en", + "FILTER_BY_PERMISSION": "Filtrar por permiso", + "FILTER_BY_PUBLIC_ACCESS": "Filtrar por acceso público", + "FILTER_BY_RESOURCE": "Filtrar por recursos", + "FILTER_BY_RESOURCE_TYPE": "Filtrar por tipo de recurso", + "FILTER_BY_SENSOR_ID": "Filtrar por Sensor id", + "FILTER_BY_SENSOR_NAME": "Filtrar por nombre de Sensor", + "FILTER_BY_SENSOR_TYPE": "Filtrar por tipo de Sensor", + "FILTER_BY_SENSOR_VARIABLES": "Filtrar por las variables del Sensor", + "FILTER_BY_SOURCE_ID": "Filtro por id de fuente", + "FILTER_BY_STATUS": "Filtrar por estado", + "FILTER_BY_STATUS_MESSAGE": "Filtro de mensaje de estado", + "FILTER_BY_TYPE": "Filtrar por tipo", + "FILTER_BY_TYPE_ID": "Filtro por id de tipo", + "FILTER_BY_UID": "Filtrar por UID", + "FILTER_BY_USERNAME": "Filtrar por nombre de usuario", + "FILTER_BY_VALUE": "Filtrar por valor", + "FILTER_BY_VALUE2": "Filtrar por valor #2", + "FILTER_BY_VALUE3": "Filtrar por valor #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrar por tipos de variables", + "FILTER_BY_VERSION": "Filtrar por versión", + "FILTER_BY_VERSION_ID": "Filtrar por id de versión", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Detalle de firmwares", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Detalle de tipos de firmware", + "FIRMWARE_TYPE_NAME": "Nombre del tipo de firmware", + "FIRMWARE_UPLOAD_INITIATED": "Carga de firmware para los elementos seleccionados.", + "FIRMWARE_VERSION": "Versión de firmware", + "FIRMWARE_VERSIONS_DETAIL": "Detalle de las versiones de firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Datos de cinco minutos", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Carga hacia delante", + "FORWARD_PAYLOADS_DETAIL": "Detalle de cargas hacia adelante", + "FREE": "Libre", + "FREQUENCY": "Frecuencia", + "FROM": "From", + "FROM_ADDRESS": "De la dirección", + "FROM_PHONE_NUMBER": "De número de teléfono", + "FULL_NAME": "Nombre completo", + "FULL_PATH": "Ruta completa", + "GARBAGE_COLLECTOR": "Recolector de basura", + "GATEWAY": "Puerta de enlace", + "GATEWAYS": "Puertas de enlace", + "GATEWAYS_DETAIL": "Detalle de puertas de enalce", + "GATEWAY_DETAILS": "Detalles de puerta de enlace", + "GATEWAY_NAME": "Nombre de puerta de enlace", + "GATEWAY_TYPE": "Tipo de puerta de enlace", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit: rama", + "GLOBAL_PAGE_REFRESH_TIME": "Tiempo de refresco de página global", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Otorgar acceso a los recursos hijo (en funciones)", + "GRAPHS_SETTINGS": "Configuración de gráficos", + "GRAPH_SETTINGS": "Ajustes de gráfico", + "GROUPS": "Grupos", + "GROUP_NAME": "Nombre del grupo", + "HEAP_MEMORY": "Memoria de montón", + "HEIGHT": "Altura", + "HIDE_MENU": "Ocultar menú", + "HISTORICAL_BAR_CHART": "Histórico de gráficas de barras", + "HOST_NAME": "Nombre de host", + "HOURS": "Horas", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Encabezados adicionales HTML", + "HTTP_PORT": "Puerto HTTP", + "ID": "ID", + "IDEN": "Identidad", + "IGNORE_CASE": "Ignorar caso", + "IGNORE_DUPLICATE": "Ignorar duplicados", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Incluir umbral alto", + "INCLUDE_THRESHOLD_LOW": "Incluir umbral bajo", + "INDIVIDUAL_SETTINGS": "Configuración individual", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolación de tipo", + "INTERVAL": "Intervalo", + "INTERVAL_IN_SECONDS": "Intervalo en segundos", + "INVALID_USERNAME_OR_PASSWORD": "Nombre de usuario o contraseña no válido!", + "IN_RANGE": "En rango", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Elementos eliminados con éxito", + "ITEMS_DISABLED_SUCCESSFULLY": "Elemento(s) desactivados con éxito\n", + "ITEMS_ENABLED_SUCCESSFULLY": "Elementos(s) activados con éxito", + "ITEMS_PER_ROW": "Elementos por fila", + "ITEM_CREATED_SUCCESSFULLY": "Elemento creado con éxito", + "ITEM_UPDATED_SUCCESSFULLY": "Elemento actualizado con éxito", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Proveedor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Especificación de máquina Virtual de Java", + "JSON": "JSON", + "KEY": "Clave", + "KEY_FORMAT": "Formato de clave", + "LANGUAGE": "Idioma", + "LANGUAGE_VERSION": "Versión en idioma", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Últimas 6 horas", + "LAST_12_HOURS": "Últimas 12 horas", + "LAST_DAY": "Último día", + "LAST_EXECUTION": "Última ejecución", + "LAST_FIRED": "Último lanzado", + "LAST_GARBAGECOLLECTOR_DURATION": "Última duración GC", + "LAST_HOUR": "Última hora", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Último modificado", + "LAST_MONTH": "Mes pasado", + "LAST_SEEN": "Visto por última vez", + "LAST_TRIGGER": "Último disparo", + "LAST_WEEK": "La semana pasada", + "LAST_YEAR": "Año pasado", + "LATITUDE": "Latitud", + "LEFT": "Left", + "LEVEL": "Nivel", + "LIBRARY_VERSION": "Versión de la biblioteca", + "LINE": "Línea", + "LINEAR": "Lineal", + "LINE_CHART": "Gráfico de líneas", + "LOAD": "Carga", + "LOADED": "Cargado", + "LOADING": "Cargando...", + "LOCATION": "Ubicación", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Mensaje de inicio de sesión", + "LOGS": "Logs", + "LOG_DIRECTION": "Dirección de Log", + "LOG_IN": "Inicia sesión", + "LOG_LEVEL": "Nivel de registro", + "LOG_OUT": "Cerrar la sesión", + "LONGITUDE": "Longitud", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Versión de la especificación de gestión", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Tamaño de bloque máximo", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Mensaje", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "El mensaje contiene", + "MESSAGE_TYPE": "Tipo de mensaje", + "METRIC": "Métrica", + "METRICS": "Métricas de", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Tipo métrico", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Altura mínima", + "MINIMUM_WIDTH": "Anchura mínima", + "MINUTES": "Minutos", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modificar sensor y asignación de variables", + "MONOTONE": "Monotono", + "MQTT_BROKER": "Broker MQTT", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Estás a punto de cambiar configuración de agente MQTT.
Esta acción conduce, reinicio del servicio MQTT broker con una nueva configuración.", + "MQTT_BROKER_EDIT_DIALOG": "Configuración del Broker MQTT", + "MQTT_BROKER_HOST_EXAMPLE": "Ejemplo: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Ejemplo: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Ejemplo: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Ejemplo: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Registro del servidor MyController", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nombre", + "NETWORK": "Red", + "NETWORK_TYPE": "Tipo de red", + "NEVER": "Nunca", + "NEW": "New", + "NEW_DASHBOARD": "Nuevo panel", + "NEW_PASSWORD": "Nueva contraseña", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Nodo", + "NODES": "Nodos", + "NODES_ALIVE_CHECK_INTERVAL": "Intervalo de comprobaciones de Nodos", + "NODES_DETAIL": "Detalle de los nodos", + "NODE_DETAILS": "Detalles del nodo", + "NODE_EUI": "Nodo EUI", + "NODE_ID": "Nodo Id", + "NODE_NAME": "Nombre de nodo", + "NODE_STATUS": "Detalles del nodo", + "NODE_TYPE": "Tipo de Nodo", + "NON_HEAP_MEMORY": "No hay Memoria de montón", + "NOTHING_SELECTED": "Nada seleccionado", + "NOTIFICATIONS": "Notificaciones", + "NOT_SET": "No establecido", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No hay backups configurados.", + "NO_DATA_AVAILABLE": "No hay datos disponibles.", + "NO_EXTERNAL_SERVERS_SETUP": "No hay servidores externos configurados.", + "NO_FIRMWARES_SETUP": "No hay firmware configurados.", + "NO_FIRMWARE_TYPES_SETUP": "No hay tipos de firmware configurados.", + "NO_FIRMWARE_VERSIONS_SETUP": "No hay versiones de firmware configurados", + "NO_FORWARD_PAYLOADS_SETUP": "No hay configuradas cargas hacia adelante", + "NO_GATEWAYS_SETUP": "No hay gateways configurados.", + "NO_ITEMS_IN_FILTER": "¡ Uy! No se encontraron resultados. Modificar la consulta.", + "NO_ITEMS_SETUP": "No hay elementos configurarados!", + "NO_LOGS_AVAILABLE": "No hay Logs disponibles.", + "NO_NODES_SETUP": "No hay Nodos creados.", + "NO_OPERATIONS_SETUP": "No hay ninguna operación.", + "NO_RESOURCES_DATA_SETUP": "No hay grupos de recursos establecido.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Sin recursos con este grupo.", + "NO_RESOURCE_GROUPS_SETUP": "No hay grupos de recursos establecido.", + "NO_ROOMS_SETUP": "Hay habitaciones creado.", + "NO_RULES_SETUP": "No hay reglas establecidas.", + "NO_SCRIPTS_SETUP": "No hay scripts configurados", + "NO_SENSORS_SETUP": "No hay sensores configurados.", + "NO_TEMPLATES_SETUP": "No hay plantillas establecidas", + "NO_TIMERS_SETUP": "No hay temporizadores configurados.", + "NO_UID_TAGS_SETUP": "No hay UID configurados.", + "NO_VARIABLES_SETUP": "No hay variables establecidas.", + "OCCURRENCES": "Ocurrencias", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "Datos de un día", + "ONE_HOUR_DATA": "Datos de una hora", + "ONE_MINUTE_DATA": "Datos de un minuto", + "OPERATING_SYSTEM": "Sistema operativo", + "OPERATION": "Operación", + "OPERATIONS": "Operaciones", + "OPERATIONS_DETAIL": "Detalle de las operaciones", + "OPERATION_NAME": "Nombre de operación", + "OPERATION_TYPE": "Tipo de operación", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Padres", + "PARENT_NODE_EUI": "Nodo padre EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Contraseña", + "PATTERN": "Patrón", + "PAYLOAD": "Capacidad de carga", + "PAYLOAD_DELAY": "Carga útil / Delay", + "PAYLOAD_OFF": "Capacidad de carga OFF", + "PAYLOAD_ON": "Capacidad de carga ON", + "PEAK": "Pico", + "PERCENTAGE": "Porcentaje", + "PERMISSION": "Permiso", + "PHONE_NUMBERS": "Números de teléfono", + "PHONE_NUMBERS_COMMA_SEPARATED": "Teléfono números separados por comas", + "PHYSICAL_MEMORY": "Memoria física (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Frecuencia de sondeo (minutos)", + "PORT": "Puerto", + "PORT_NAME": "Nombre del puerto", + "PRIORITY": "Prioridad", + "PRIVATE": "Privado", + "PRIVATE_KEY": "Clave privada", + "PROCESS_CPU": "Proceso de Cpu", + "PROFILE": "Perfil", + "PROFILE_UPDATED_SUCCESSFULLY": "Perfil actualizado correctamente", + "PROPERTIES": "Properties", + "PUBLIC": "Público", + "PUBLIC_ACCESS": "Acceso público", + "PUBLIC_KEY": "Clave pública", + "PURGE": "Vaciar", + "PURGE_BEFORE": "Vaciar antes", + "PURGE_DONE_SUCCESSFULLY": "El Vaciado se ha completado con éxito.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Vaciado de los registros de Logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ADVERTENCIA: Si no selecciona ningún parámetro, este proceso eliminará todo!", + "PURGING": "Vaciando", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Datos en bruto", + "READ_ONLY": "De sólo lectura", + "REALTIME": "En tiempo real", + "REBOOT": "Reiniciar el sistema", + "REBOOT_CONFIRMATION_MESSAGE": "Está a punto de reiniciar los elementos seleccionado(s)
haga clic en 'Reiniciar' para proceder.", + "REBOOT_CONFIRMATION_TITLE": "Reiniciar", + "REBOOT_INITIATED": "Reiniciar iniciado para los elementos seleccionados.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Límite de registros", + "REFRESH": "Actualizar", + "REFRESH_NODES_INFO": "Actualizar información de nodos", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Actualizar información de nodos' inició con éxito.", + "REFRESH_TIME_SECONDS": "Tiempo de refresco (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Registrar automáticamente los nodos de", + "REGISTRATION_STATUS": "Estado de registro", + "RELEASES": "Versiones", + "RELOAD": "Volver a cargar", + "RELOAD_INITIATED_SUCCESSFULLY": "Recarga iniciada con éxito", + "RESOURCE": "Recurso", + "RESOURCES": "Recursos", + "RESOURCES_DATA": "Datos de recursos", + "RESOURCES_DATA_DETAIL": "Detalle de datos de recursos", + "RESOURCES_GROUPS": "Grupos de recursos", + "RESOURCES_LOGS": "Registros de recursos", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Detalle de los registros de recursos", + "RESOURCES_LOG_LEVEL": "Nivel de registros de recursos", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Detalle de grupos de recursos", + "RESOURCE_GROUPS_MAPS_DETAIL": "Detalle de los mapas de grupos de recursos", + "RESOURCE_GROUPS_TURNED_OFF": "Grupos de recursos apagado", + "RESOURCE_GROUPS_TURNED_ON": "Grupos de recursos activados", + "RESOURCE_GROUP_TURNED_OFF": "Grupo de recursos apagados", + "RESOURCE_GROUP_TURNED_ON": "Grupo de recursos activados", + "RESOURCE_TYPE": "Tipo de recurso", + "RESTORE": "Restaurar", + "RESTORE_CONFIRMATION_MESSAGE": "Estás a punto de restaurar sistema a '{{nombre}}'.
Restore elimina la configuración y los datos actuales totalmente y el sistema pasa al estado '{{nombre}}'!
Haga clic en 'restaurar' para proceder.
Nota: después de la restauración tienes que iniciar el servidor manualmente desde línea de comandos", + "RESTORE_CONFIRMATION_TITLE": "Restaurar sistema a '{{nombre}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restauración iniciada con éxito.", + "RESULT": "Resultado", + "RETAIN_MAX": "# Máximo de conservar", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Estás a punto de cambiar la configuración de retención de datos de métricas.
Esta acción puede provocar pérdida de datos. Lea el manual del usuario para más detalles.
Es recomiendo un backup del sistema antes de seguir adelante!", + "RETENTION_DIALOG_TITLE": "Lea cuidadosamente antes de seguir adelante", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Funciones", + "ROLES_DETAIL": "Detalle de funciones", + "ROOM": "Sala de", + "ROOMS": "Salas", + "ROOMS_DETAIL": "Detalle de las Salas", + "ROOM_NAME": "Nombre de la Sala", + "RULES": "Roles", + "RULES_DETAIL": "Detalle de los roles", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nombre del Rol", + "RUN": "Ejecutar", + "RUNNING": "Corriendo...", + "RUN_BACKUP": "Ejecutar copia de seguridad", + "RUN_GARBAGE_COLLECTION": "Ejecutar la recolección de basura", + "RUN_NOW": "Ejecutar ahora", + "SAVE": "Guardar", + "SAVE_CHANGES": "Guardar los cambios", + "SAVING": "Guardando...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Detalle del script", + "SCRIPT_BINDINGS": "Enlaces de secuencias de comandos", + "SCRIPT_ENGINES": "Motores de script", + "SCRIPT_FILES": "Archivos de script", + "SEARCH": "Búsqueda de", + "SECONDS": "Segundos", + "SELECT": "Seleccione", + "SEND": "Enviar", + "SENDING": "Enviar...", + "SEND_RAW_MESSAGE": "Enviar mensaje completo", + "SENSOR": "Sensor", + "SENSORS": "Sensores", + "SENSORS_ACTION": "Acción de sensores", + "SENSORS_AND_VARIABLES_MAPPING": "Sensores y variables de asignación", + "SENSORS_DETAIL": "Detalle de los sensores", + "SENSOR_DETAILS": "Datos de sensor", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Nombre del sensor", + "SENSOR_TYPE": "Tipo de sensor", + "SENSOR_VARIABLE": "Variable del sensor", + "SENSOR_VARIABLES": "Variables del sensor", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Tipos de variable de Sensor", + "SERIAL_BAUD_RATE_EXAMPLE": "Ejemplo: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Ejemplo: / dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Ejemplo: 120", + "SETTINGS": "Configuración", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Mostrar leyenda", + "SHOW_MENU": "Mostrar menú", + "SIX_HOURS_DATA": "Datos de seis horas", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "Host SMTP", + "SMTP_PASSWORD": "Contraseña de SMTP", + "SMTP_PORT": "Puerto SMTP", + "SMTP_USERNAME": "Nombre de usuario SMTP", + "SOURCE": "Fuente", + "SOURCE_CODE": "Código fuente", + "SOURCE_ID": "Identificación de la fuente", + "SPECIFICATION_VENDOR": "Especificación proveedor", + "SPECIFICATION_VERSION": "Especificación de la Versión", + "STACKED_AREA_CHART": "Gráfico de áreas apiladas", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Estado", + "STATUS_MESSAGE": "Mensaje de estado", + "STATUS_SINCE": "Estado desde", + "STEP_AFTER": "Paso después de", + "STEP_BEFORE": "Paso antes de", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Asunto", + "SUB_TYPE": "Sub tipo", + "SUNRISE": "Salida del sol", + "SUNSET": "Puesta de sol", + "SUPPORT": "Soporte", + "SWAP": "Intercambio", + "SWAP_SPACE": "Espacio de intercambio", + "SYNTAX_ERROR": "Error de sintaxis", + "SYSTEM": "Sistema de", + "SYSTEM_CPU_LOAD": "Carga de Cpu del sistema", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Promedio de carga del sistema", + "SYSTEM_STATUS": "Estado del sistema", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Estás a punto de actualizar las configuraciones de una 'variable Sensor'.
Al actualizar configuraciones, si hay un cambio en 'Tipo de métrica', todos los datos existentes se eliminarán de esta variable de' Sensor'.", + "S_VARIABLE_DIALOG_TITLE": "Actualizar configuraciones de 'variable Sensor'", + "TABLE_ROWS_LIMIT": "Límite de filas", + "TAGS": "Etiquetas", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Plantilla", + "TEMPLATES": "Plantillas", + "TEMPLATES_DETAIL": "Detalle de las plantillas", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Pruebas...", + "TEST_CONNECTION": "Probar conexión", + "TEXT": "Text", + "THREADS_COUNT": "Cuenta hilos", + "THRESHOLD_VALUE": "Valor de umbral", + "THRESHOLD_VALUE_HIGH": "Valor de umbral alto", + "THRESHOLD_VALUE_LOW": "Valor de umbral bajo", + "TIME": "Tiempo", + "TIMERS": "Contadores de tiempo", + "TIMERS_DETAIL": "Detalle de temporizadores", + "TIMER_NAME": "Nombre del contador de tiempo", + "TIMER_TYPE": "Tipo de temporizador", + "TIME_FORMAT": "Formato de hora", + "TIME_HH_MM_SS": "Time(HH:mm:SS)", + "TIME_OFFSET_HH_MM_SS": "Offset de tiempo (HH)", + "TIME_RANGE": "Rango de tiempo", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Título", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Tópicos publicados", + "TOPICS_SUBSCRIBE": "Tópicos suscritos", + "TOPIC_PUBLISH": "Tópico publicado", + "TOPIC_SUBSCRIBE": "Tópico suscrito", + "TOPOLOGY": "Topología", + "TOTAL": "Total", + "TOTAL_LOADED": "Total cargado", + "TOTAL_STARTED": "Total iniciado", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Activar cuando", + "TRUST_HOST": "Host de confianza", + "TURN_OFF": "Apagar", + "TURN_ON": "Encender", + "TWELVE_HOURS_DATA": "Datos de doce horas", + "TWILIO": "Twilio", + "TYPE": "Tipo", + "TYPES": "Tipos", + "TYPE_ID": "Identificador de tipo", + "UID": "UID", + "UID_TAGS": "Etiquetas de la UID", + "UID_TAGS_DETAIL": "UID etiquetas detalle", + "UNAVAILABLE": "No disponible", + "UNDO_CHANGES": "Deshacer cambios", + "UNIT": "Unidad", + "UNITS": "Unidades", + "UNITS_CONFIGURATION": "Configuración de unidades", + "UNITS_METRICS_IMPERIAL": "Unidades [métricas/Imperial]", + "UNLOADED": "Descargado", + "UP": "Subir", + "UPDATE": "Actualización", + "UPDATED_SUCCESSFULLY": "Actualizado correctamente.", + "UPDATE_AN_ENTRY": "Entrada actualizada", + "UPDATE_EXTERNAL_SERVER": "Actualizar Servidor externo", + "UPDATE_FIRMWARE": "Actualización de firmware", + "UPDATE_FIRMWARE_TYPE": "Actualización tipo firmware", + "UPDATE_FIRMWARE_VERSION": "ACtualizar versión de firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Actualización de entrada de la carga hacia delante", + "UPDATE_GATEWAY": "Actualizar gateway", + "UPDATE_NODE": "Actualizar nodo", + "UPDATE_OPERATION": "Operación de actualización", + "UPDATE_RESOURCE": "Actualizar recursos", + "UPDATE_RESOURCES_GROUP": "Acutalizar grupo de recursos", + "UPDATE_ROOM": "Acutalizar habitación", + "UPDATE_RULE": "Actualizar regla", + "UPDATE_SCRIPT": "Actualizar script", + "UPDATE_SENSOR": "Acutalizar sensor", + "UPDATE_SENSOR_VARIABLE": "Actualizar variable del sensor", + "UPDATE_TEMPLATE": "Actualizar plantilla", + "UPDATE_TIMER": "Acutalizar reloj", + "UPDATE_UID_TAG_ENTRY": "Actualización de entrada de etiqueta UID", + "UPDATE_USER": "Acutalizar usuario", + "UPDATE_VARIABLE": "Actualizar variable", + "UPLOADED_ON": "Acutalizado en", + "UPLOAD_FIRMWARE": "Subir firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Límite superior", + "UP_TIME": "Tiempo", + "URL": "URL", + "USE": "Uso", + "USED": "Utilizado", + "USERNAME": "Nombre de usuario", + "USERS": "Usuarios", + "USERS_DETAIL": "Detalle de los usuarios", + "USER_WORKING_DIRECTORY": "Directorio de trabajo del usuario", + "USE_GLOBAL": "Uso global", + "USE_INTERACTIVE_GUIDE_LINE": "Utilizar la línea de guía intractiva", + "UTILITIES": "Utilidades", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No hay suficiente espacio.", + "VALIDATION_ERROR_NUMBER": "El valor introducido no es un número.", + "VALIDITY": "Validez", + "VALUE": "Valor", + "VALUE2": "Valor #2", + "VALUE3": "Valor #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Detalle de las variables", + "VARIABLES_GRAPHICAL_VIEW": "Vista gráfica de las variables", + "VARIABLES_MAPPER": "Mapeador de variables", + "VARIABLES_REPOSITORY": "Repositorio de variables", + "VARIABLE_TYPES": "Tipos de variables", + "VENDOR": "Proveedor", + "VERSION": "Versión", + "VERSIONS": "Versiones", + "VERSION_ID": "Identificador de versión", + "VERSION_KERNEL": "Versión/núcleo", + "VIEW_DETAILS": "Ver más detalles", + "VM_NAME": "Nombre de la VM", + "VM_VENDOR": "Proveedor VM", + "VM_VERSION": "Versión VM", + "WEBSOCKET_PORT": "Puerto de WebSocket", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Ubicación de los archivos de imagen widget", + "WRITE_API_KEY": "Escriba la clave de API", + "YEARS": "Años", + "YES": "Sí" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-fr_fr.json b/www/languages/mc_locale_gui-fr_fr.json new file mode 100644 index 0000000..77098b7 --- /dev/null +++ b/www/languages/mc_locale_gui-fr_fr.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 heures", + "24_HOURS": "24 heures", + "ABOUT": "À propos", + "ACCESS": "Accès", + "ACCESS_TOKEN": "Clé d'authentification", + "ACK": "Ack", + "ACKNOWLEDGE": "Acquittement", + "ACK_ENABLED": "Ack activé", + "ACK_REQUEST": "Demande Ack", + "ACK_RESPONSE": "Réponse Ack", + "ACK_WAIT_TIME": "Ack délai", + "ACTIONS": "Actions", + "ACTION_BOARD": "Panneau de contrôle", + "ACTIVE": "Actif", + "ADD": "Ajouter", + "ADD_AN_ENTRY": "Ajouter une entrée", + "ADD_EXTERNAL_SERVER": "Ajouter serveur externe", + "ADD_FIRMWARE": "Ajouter firmware", + "ADD_FIRMWARE_TYPE": "Ajouter un type de firmware", + "ADD_FIRMWARE_VERSION": "Ajouter une version de firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Ajouter un transfert de valeur", + "ADD_GATEWAY": "Ajouter une passerelle", + "ADD_GROUP": "Ajouter un groupe", + "ADD_NEW_WIDGET": "Ajouter un nouveau widget", + "ADD_NODE": "Ajouter un nœud", + "ADD_OPERATION": "Ajouter une opération", + "ADD_RESOURCE": "Ajouter une ressource", + "ADD_RESOURCES_GROUP": "Ajouter un groupe de ressources", + "ADD_ROLE": "Ajouter un rôle", + "ADD_ROOM": "Ajouter une pièce", + "ADD_RULE": "Ajouter une règle", + "ADD_SCRIPT": "Ajouter un script", + "ADD_SENSOR": "Ajouter un capteur", + "ADD_TEMPLATE": "Ajouter un modèle", + "ADD_TIMER": "Ajouter un timer", + "ADD_UID_TAG_ENTRY": "Ajouter une balise UID", + "ADD_USER": "Ajouter un utilisateur", + "ADD_VARIABLE": "Ajouter une variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Après", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Vérification du fonctionnement (en secondes)", + "ALLOW_ANONYMOUS": "Autoriser les connexions anonymes", + "ALPHABETICAL_KEY_CASE": "Par ordre alphabétique", + "ANGULARJS_CUSTOM_CONTROLLERS": "Contrôleurs personnalisés AngularJS", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "Se connecter à MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Bienvenue sur MyController.org! Le Contrôleur Open Source.", + "ARCHITECTURE": "Architecture", + "AREA": "Zone", + "AUTH_ID_SID": "Auth ID", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Sauvegarde automatique", + "AUTORIZED_USER": "Utilisateur autorisé", + "AUTO_GENERATE": "Générer automatiquement", + "AVAILABLE_PROCESS": "Processus disponible", + "AVERAGE_TIME": "Temps moyen", + "BACKUP": "Sauvegarde", + "BACKUPS_DETAIL": "Détail des sauvegardes", + "BACKUP_COMPLETED_SUCCESSFULLY": "Sauvegarde terminée avec succès.", + "BACKUP_EVERY": "Fréquence des sauvegardes", + "BACKUP_FILE_PREFIX": "Préfixe fichier de sauvegarde", + "BACKUP_LOCATION": "Emplacement des sauvegardes", + "BACKUP_ON": "Sauvegardé le", + "BACKUP_SETTINGS": "Paramètres des sauvegardes", + "BAR": "Bar", + "BASIS": "Base", + "BASIS_CLOSED": "Base fermée", + "BASIS_OPEN": "Base ouverte", + "BATTERY": "Batterie", + "BATTERY_LEVEL": "Charge batterie", + "BATTERY_USAGE": "Utilisation batterie", + "BAUD_RATE": "Vitesse de transmission", + "BINARY_DATA": "Donnée binaire", + "BIND_ADDRESS": "Adresse de liaison", + "BLOCKS": "Blocs", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bas", + "BROKET_HOST": "Hôte broker", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Outil de compilation", + "BUILT_ON": "Compilé le", + "BUNDLE": "Paquet", + "BUTTON_SETTINGS": "Réglage des boutons", + "CANCEL": "Annuler", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal fermé", + "CARDINAL_OPEN": "Cardinal ouvert", + "CHANNEL_TAGS": "Canal étiquette(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Canal étiquettes séparés par une virgule", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Détails chargement classe", + "CLIENT_ID": "ID Client", + "CLONE": "Dupliquer", + "COLLECTION_COUNT": "Nombre de collections", + "COLLECTION_TIME": "Date de la collection", + "COLOR": "Couleur", + "COMMAND": "Command", + "COMMITTED": "Déclenché", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Mémoire virtuelle utilisée", + "CONDITION": "Condition", + "CONDITION_TYPE": "Type condition", + "CONNECTION_DETAILS": "Détail de connexion", + "CONTENT": "Contenu", + "CONTINUE": "Continuer", + "COUNT": "Total", + "COUNTER": "Compteur", + "CRC": "CRC", + "CRON_EXPRESSION": "Expression Cron", + "CSS_FILES": "Fichiers CSS", + "CURRENT": "Courant", + "CURRENT_PASSWORD": "Mot de passe actuel", + "CUSTOM_MESSAGE": "Message personnalisé", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Pondération", + "DAMPENING_TYPE": "Type de pondération", + "DASHBOARDS": "Tableaux de bord", + "DASHBOARD_LIMIT": "Nb maxi de tableaux de bord", + "DATA": "Donnée", + "DATABASE": "Base de données", + "DATABASE_SCHEMA_REVISION": "Version du schéma de la base de données", + "DATABASE_TYPE": "Type de base de données", + "DATABASE_VERSION": "Version de la base de données", + "DATA_RETENTION_SETTINGS": "Conservation des données", + "DATA_TYPE": "Type de données", + "DATA_UNAVAILABLE": "Donnée non disponible !", + "DATE_PATTERN": "Format date", + "DATE_RANGE": "Intervalle date", + "DAY": "Jour", + "DAYS": "Jours", + "DEFAULT": "Défaut", + "DEFAULT_FIRMWARE": "Firmware par défaut", + "DEFAULT_TIME_RANGE": "Intervalle de temps par défaut", + "DELAY_TIME_IN_SECONDS": "Temps de retard en secondes", + "DELETE": "Supprimer", + "DELETE_DASHBOARD": "Supprimer tableau de bord", + "DELETE_ITEMS": "Supprimer l'(les) élément(s)", + "DELETE_MESSAGE": "Vous êtes sur le point de supprimer le(s) élément(s) sélectionnés
Cette action est irréversible !
Cliquer sur 'Supprimer' pour confirmer.", + "DESCRIPTION": "Description", + "DESTINATION": "Destination", + "DESTINATION_ID": "ID Destination", + "DETAILS": "Détails", + "DEVICES": "Appareils", + "DEVICE_IDENS": "ID appareil(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "ID appareils séparés par une virgule", + "DIRECTION": "Direction", + "DISABLE": "Désactiver", + "DISABLED": "Désactivé", + "DISABLE_WHEN_TRIGGER": "Désactiver au déclenchement", + "DISCOVER": "Recherche", + "DISCOVER_INITIATED_SUCCESSFULLY": "Recherche démarrée avec succès", + "DISPLAY_NAMES": "Afficher les noms", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Inactif", + "DRIVER": "Pilote", + "EDIT": "Modifier", + "EDIT_DASHBOARD": "Modifier tableau de bord", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Adresses email séparées par une virgule", + "ENABLE": "Activer", + "ENABLED": "Activé", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Utiliser le firmware par défaut si non spécifié", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Si cette option est activée, utiliser le firmware par défaut lorsqu'il n'est pas disponible dans le système", + "ENABLE_EDIT_MODE": "Activer mode d'édition", + "ENABLE_MIN_MAX": "Activer Mini/Maxi", + "ENABLE_SSL": "Activer SSL", + "ENABLE_UNIQUE_NAME": "Activer nom unique", + "ERASE_CONFIGURATION": "Effacer la configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Vous êtes sur le point de supprimer complètement la configuration des éléments sélectionnés.
Cliquer sur 'Effacer la configuration' pour valider.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Effacer la configuration", + "ERASE_CONFIGURATION_INITIATED": "Effacement de la configuration démarrée pour les éléments sélectionnés", + "ERROR_ITEMS_NOT_AVAILABLE": "Élément(s) sélectionné(s) non valide(s)", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Exemple : 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Exemple : 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Exemple : 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Intervalle découverte", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "Serveurs externes", + "EXTERNAL_SERVERS_DETAIL": "Détails serveurs externes", + "FAILED_RETRY_COUNT": "Total renvois erronés", + "FAILURE_COUNT": "Total échecs", + "FILE": "Fichier", + "FILE_NAME": "Nom de fichier", + "FILE_SIZE": "Taille de fichier", + "FILTER_BY_BLOCKS": "Filtrer par blocs", + "FILTER_BY_CONDITION_TYPE": "Filtrer par type de condition", + "FILTER_BY_DAMPENING_TYPE": "Filtrer par type de pondération", + "FILTER_BY_DESCRIPTION": "Filtrer par description", + "FILTER_BY_DESTINATION_ID": "Filtrer par ID destination", + "FILTER_BY_DIRECTION": "Filtrer par direction", + "FILTER_BY_EMAIL": "Filtrer par email", + "FILTER_BY_ENABLED": "Filtrer par actifs", + "FILTER_BY_EUI": "Filtrer par EUI", + "FILTER_BY_EXTENSION": "Filtrer par extension", + "FILTER_BY_FILE_NAME": "Filtrer par nom de fichier", + "FILTER_BY_FREQUENCY": "Filtrer par fréquence", + "FILTER_BY_FULL_NAME": "Filtrer par nom complet", + "FILTER_BY_KEY": "Filtrer par clé", + "FILTER_BY_LEVEL": "Filtrer par niveau", + "FILTER_BY_LIBRARY_VERSION": "Filtrer par version de bibliothèque", + "FILTER_BY_MESSAGE": "Filtrer par message", + "FILTER_BY_MESSGAE_TYPE": "Filtrer par type de message", + "FILTER_BY_NAME": "Filtrer par nom", + "FILTER_BY_NETWORK_TYPE": "Filtrer par type de réseau", + "FILTER_BY_NODE_ID": "Filtrer par ID de nœud", + "FILTER_BY_OPERATION": "Filtrer par opération", + "FILTER_BY_OPERATION_TYPE": "Filtrer par type d'opération", + "FILTER_BY_PAYLOAD_OFF": "Filtrer par valeur OFF", + "FILTER_BY_PAYLOAD_ON": "Filtrer par valeur ON", + "FILTER_BY_PERMISSION": "Filtrer par permission", + "FILTER_BY_PUBLIC_ACCESS": "Filtrer par accès public", + "FILTER_BY_RESOURCE": "Filtrer par ressource", + "FILTER_BY_RESOURCE_TYPE": "Filtrer par type de ressource", + "FILTER_BY_SENSOR_ID": "Filtrer par ID capteur", + "FILTER_BY_SENSOR_NAME": "Filtrer par nom capteur", + "FILTER_BY_SENSOR_TYPE": "Filtrer par type de capteur", + "FILTER_BY_SENSOR_VARIABLES": "Filtrer par variables capteur", + "FILTER_BY_SOURCE_ID": "Filtrer par ID source", + "FILTER_BY_STATUS": "Filtrer par état", + "FILTER_BY_STATUS_MESSAGE": "Filtrer par message d'état", + "FILTER_BY_TYPE": "Filtrer par type", + "FILTER_BY_TYPE_ID": "Filtrer par ID type", + "FILTER_BY_UID": "Filtrer par UID", + "FILTER_BY_USERNAME": "Filtrer par nom d'utilisateur", + "FILTER_BY_VALUE": "Filtrer par valeur", + "FILTER_BY_VALUE2": "Filtrer par valeur #2", + "FILTER_BY_VALUE3": "Filtrer par valeur #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrer par types de variable", + "FILTER_BY_VERSION": "Filtrer par version", + "FILTER_BY_VERSION_ID": "Filtrer par ID version", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Détail des firmwares", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Détail des types de firmware", + "FIRMWARE_TYPE_NAME": "Nom de type de firmware", + "FIRMWARE_UPLOAD_INITIATED": "Chargement du firmware démarré pour les éléments sélectionnés.", + "FIRMWARE_VERSION": "Version de firmware", + "FIRMWARE_VERSIONS_DETAIL": "Détail des versions de firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Une donnée toutes les 5 minutes", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Transfert de valeur", + "FORWARD_PAYLOADS_DETAIL": "Transferts de valeurs", + "FREE": "Libre", + "FREQUENCY": "Fréquence", + "FROM": "De", + "FROM_ADDRESS": "Depuis l'adresse", + "FROM_PHONE_NUMBER": "Depuis le N° de téléphone", + "FULL_NAME": "Nom complet", + "FULL_PATH": "Chemin complet", + "GARBAGE_COLLECTOR": "Poubelle", + "GATEWAY": "Passerelle", + "GATEWAYS": "Passerelles", + "GATEWAYS_DETAIL": "Détail passerelles", + "GATEWAY_DETAILS": "Détails passerelle", + "GATEWAY_NAME": "Nom de la passerelle", + "GATEWAY_TYPE": "Type de passerelle", + "GITTER_MESSAGING": "Message Gitter", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Délai de rafraîchissement global des pages", + "GPS_DATA": "Données GPS", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Accorder l’accès aux ressources enfants (rôles)", + "GRAPHS_SETTINGS": "Réglages graphiques", + "GRAPH_SETTINGS": "Réglages graphique", + "GROUPS": "Groupes", + "GROUP_NAME": "Nom de groupe", + "HEAP_MEMORY": "Mémoire paginée", + "HEIGHT": "Hauteur", + "HIDE_MENU": "Cacher le menu", + "HISTORICAL_BAR_CHART": "Historique diagramme à barres", + "HOST_NAME": "Nom d'hôte", + "HOURS": "Heures", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Entêtes HTML additionnels", + "HTTP_PORT": "Port HTTP", + "ID": "ID", + "IDEN": "Identifiant", + "IGNORE_CASE": "Ignorer la casse", + "IGNORE_DUPLICATE": "Ignorer doublons", + "IMPERIAL": "Impérial", + "INCLUDE_THRESHOLD_HIGH": "Inclure seuil haut", + "INCLUDE_THRESHOLD_LOW": "Inclure seuil bas", + "INDIVIDUAL_SETTINGS": "Réglages individuels", + "INIT": "Initier", + "INTERPOLATE_TYPE": "Type interpolation", + "INTERVAL": "Intervalle", + "INTERVAL_IN_SECONDS": "Intervalle en secondes", + "INVALID_USERNAME_OR_PASSWORD": "Nom d'utilisateur ou mot de passe invalide !", + "IN_RANGE": "Dans l'intervalle", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Élément(s) supprimé(s) avec succès", + "ITEMS_DISABLED_SUCCESSFULLY": "Élément(s) désactivé(s) avec succès", + "ITEMS_ENABLED_SUCCESSFULLY": "Élément(s) activé(s) avec succès", + "ITEMS_PER_ROW": "Éléments par ligne", + "ITEM_CREATED_SUCCESSFULLY": "Élément crée avec succès", + "ITEM_UPDATED_SUCCESSFULLY": "Élément mis à jour avec succès", + "JAVA_HOME": "Accueil Java", + "JAVA_VENDOR_URL": "URL fournisseur Java", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Description Machine Virtuelle Java", + "JSON": "JSON", + "KEY": "Clé", + "KEY_FORMAT": "Format clé", + "LANGUAGE": "Langue", + "LANGUAGE_VERSION": "Version langue", + "LAST_5_MINUTES": "5 dernières minutes", + "LAST_6_HOURS": "6 dernières heures", + "LAST_12_HOURS": "12 dernières heures", + "LAST_DAY": "Dernier jour", + "LAST_EXECUTION": "Dernière exécution", + "LAST_FIRED": "Dernier déclenchement", + "LAST_GARBAGECOLLECTOR_DURATION": "Durée du dernier nettoyage de la mémoire", + "LAST_HOUR": "Dernière heure", + "LAST_MESSAGE": "Dernier message", + "LAST_MINUTE_AVERAGE": "Moyenne dernière minute", + "LAST_MINUTE_RATE": "Fréquence dernière minute", + "LAST_MODIFIED": "Dernière modification", + "LAST_MONTH": "Dernier mois", + "LAST_SEEN": "Dernière vue", + "LAST_TRIGGER": "Dernier déclenchement", + "LAST_WEEK": "Dernière semaine", + "LAST_YEAR": "Dernière année", + "LATITUDE": "Latitude", + "LEFT": "Gauche", + "LEVEL": "Niveau", + "LIBRARY_VERSION": "Version bibliothèque", + "LINE": "Ligne", + "LINEAR": "Linéaire", + "LINE_CHART": "Graphique en ligne", + "LOAD": "Charge", + "LOADED": "Chargé", + "LOADING": "Chargement...", + "LOCATION": "Emplacement", + "LOCATION_IP": "Emplacement IP", + "LOCATION_NAME": "Nom emplacement", + "LOGIN_MESSAGE": "Message d'identification", + "LOGS": "Logs", + "LOG_DIRECTION": "Sens log", + "LOG_IN": "Se connecter", + "LOG_LEVEL": "Classe log", + "LOG_OUT": "Se déconnecter", + "LONGITUDE": "Longitude", + "LOWER": "Inférieur", + "MANAGEMENT_SPECIFICATION_VERSION": "Version gestionnaire", + "MARGIN": "Marge", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Taille bloc maximal", + "MEASUREMENT": "Mesure", + "MERGE_STATIONS": "Fusionner les stations", + "MESSAGE": "Message", + "MESSAGES_IN_QUEUE": "Messages en file d'attente", + "MESSAGE_CONTAINS": "Message contient", + "MESSAGE_TYPE": "Type message", + "METRIC": "Métrique", + "METRICS": "Métrique", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Moteur de données métriques", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "Vous êtes sur le point de modifier le moteur des données métriques.
Cette action conduira à la perte de données. Lisez le manuel pour plus de détail.
MyController n'importera ou exportera pas les données métriques après avoir changé le moteur !", + "METRIC_TYPE": "Type métrique", + "MILLISECONDS": "Millisecondes", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Hauteur minimale", + "MINIMUM_WIDTH": "Largeur minimale", + "MINUTES": "Minutes", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modifier mappage des capteurs et variables", + "MONOTONE": "Monotone", + "MQTT_BROKER": "Broker MQTT", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker a été désactivé en arrière plan. Vous pouvez l'activer dans le fichier : conf/mycontroller.properties et redémarrer le serveur MyController.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Vous êtes sur le point de changer les paramètres du broker MQTT.
Cette action conduit au redémarrage du broker MQTT avec les nouveaux paramètres.", + "MQTT_BROKER_EDIT_DIALOG": "Paramètres broker MQTT", + "MQTT_BROKER_HOST_EXAMPLE": "Exemple: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Exemple: mycontroller-mqtt-client", + "MQTT_PORT": "Port MQTT", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Exemple: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Exemple: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nom", + "NETWORK": "Réseau", + "NETWORK_TYPE": "Type réseau", + "NEVER": "Jamais", + "NEW": "Nouveau", + "NEW_DASHBOARD": "Nouveau tableau de bord", + "NEW_PASSWORD": "Nouveau mot de passe", + "NEXT_EXECUTION": "Prochaine exécution", + "NO": "Non", + "NODE": "Nœud", + "NODES": "Nœuds", + "NODES_ALIVE_CHECK_INTERVAL": "Délai vérification signe de vie nœuds", + "NODES_DETAIL": "Détail des nœuds", + "NODE_DETAILS": "Détails du nœud", + "NODE_EUI": "EUI du nœud", + "NODE_ID": "ID du nœud", + "NODE_NAME": "Nom du nœud", + "NODE_STATUS": "État du nœud", + "NODE_TYPE": "Type de nœud", + "NON_HEAP_MEMORY": "Mémoire non paginée", + "NOTHING_SELECTED": "Aucune sélection", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Non défini", + "NO_ACK": "Sans ack", + "NO_BACKUPS_SETUP": "Aucun backup configuré", + "NO_DATA_AVAILABLE": "Aucune donnée disponible.", + "NO_EXTERNAL_SERVERS_SETUP": "Aucun serveur externe configuré", + "NO_FIRMWARES_SETUP": "Aucun firmware configuré", + "NO_FIRMWARE_TYPES_SETUP": "Aucun type de firmware configuré.", + "NO_FIRMWARE_VERSIONS_SETUP": "Aucune version de firmware configuré", + "NO_FORWARD_PAYLOADS_SETUP": "Aucun transfert de valeur ajouté", + "NO_GATEWAYS_SETUP": "Aucune passerelle configurée", + "NO_ITEMS_IN_FILTER": "Oups! Aucun résultat. Modifier votre requête.", + "NO_ITEMS_SETUP": "Aucun élément configuré!", + "NO_LOGS_AVAILABLE": "Aucun log disponible.", + "NO_NODES_SETUP": "Aucun nœud configuré.", + "NO_OPERATIONS_SETUP": "Aucune opération configurée.", + "NO_RESOURCES_DATA_SETUP": "Aucune donnée de ressources configuré.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Aucune ressource mappée avec ce groupe.", + "NO_RESOURCE_GROUPS_SETUP": "Aucun groupe de ressource configuré.", + "NO_ROOMS_SETUP": "Aucune pièce configurée.", + "NO_RULES_SETUP": "Aucune règle configurée.", + "NO_SCRIPTS_SETUP": "Aucun script configuré.", + "NO_SENSORS_SETUP": "Aucun capteur configuré.", + "NO_TEMPLATES_SETUP": "Aucun modèle configuré.", + "NO_TIMERS_SETUP": "Aucun timer configuré.", + "NO_UID_TAGS_SETUP": "Aucune étiquette UID configurée.", + "NO_VARIABLES_SETUP": "Aucune variable configurée.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "Une donnée par jour", + "ONE_HOUR_DATA": "Une donnée par heure", + "ONE_MINUTE_DATA": "Une donnée par minute", + "OPERATING_SYSTEM": "Système d'exploitation", + "OPERATION": "Opération", + "OPERATIONS": "Opérations", + "OPERATIONS_DETAIL": "Détail des opérations", + "OPERATION_NAME": "Nom opération", + "OPERATION_TYPE": "Type opération", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Autres", + "PARENT": "Parent", + "PARENT_NODE_EUI": "EUI nœud parent ", + "PARSE_MODE": "Parse mode", + "PASSWORD": "mot de passe", + "PATTERN": "modèle", + "PAYLOAD": "Valeur", + "PAYLOAD_DELAY": "Valeur / Délai", + "PAYLOAD_OFF": "Valeur OFF", + "PAYLOAD_ON": "Valeur ON", + "PEAK": "Pic", + "PERCENTAGE": "Pourcentage", + "PERMISSION": "Autorisation", + "PHONE_NUMBERS": "Numéros de téléphone", + "PHONE_NUMBERS_COMMA_SEPARATED": "Numéros de téléphone, séparés par une virgule", + "PHYSICAL_MEMORY": "Mémoire physique (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Fréquence scrutation (minutes)", + "PORT": "Port", + "PORT_NAME": "Nom port", + "PRIORITY": "Priorité", + "PRIVATE": "Privé", + "PRIVATE_KEY": "Clé privée", + "PROCESS_CPU": "Utilisation CPU", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil mis à jour avec succès", + "PROPERTIES": "Propriétés", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Accès public", + "PUBLIC_KEY": "Clé publique", + "PURGE": "Purger", + "PURGE_BEFORE": "Purger avant", + "PURGE_DONE_SUCCESSFULLY": "Purge terminée avec succès.", + "PURGE_EXISTING_DATA": "Effacer les données existantes", + "PURGE_RESOURCES_LOGS": "Purger logs des ressources", + "PURGE_SENSOR_VARIABLE": "Purger variable capteur", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "AVERTISSEMENT : Si vous ne sélectionnez aucun paramètre, cette procédure va tout supprimer !", + "PURGING": "Nettoyage", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Au plus une fois (0)", + "QOS_1": "Au moins une fois (1)", + "QOS_2": "Une fois exactement (2)", + "RAW_DATA": "Données brutes", + "READ_ONLY": "Lecture seule", + "REALTIME": "Temps-réel", + "REBOOT": "Redémarrer", + "REBOOT_CONFIRMATION_MESSAGE": "Vous êtes sur le point de redémarrer les éléments sélectionnés
cliquez sur « Redémarrer » pour continuer.", + "REBOOT_CONFIRMATION_TITLE": "Redémarrer", + "REBOOT_INITIATED": "Redémarrage commencé pour les éléments sélectionnés", + "RECONNECT_DELAY": "Délai de reconnexion", + "RECORDS_LIMIT": "Limite enregistrements", + "REFRESH": "Rafraîchir", + "REFRESH_NODES_INFO": "Rafraîchir infos nœuds", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Rafraîchir infos nœuds' lancé avec succès", + "REFRESH_TIME_SECONDS": "Temps de rafraîchissement (secondes)", + "REGISTER_NODES_AUTOMATICALLY": "Inscrire nœuds automatiquement", + "REGISTRATION_STATUS": "État inscription", + "RELEASES": "Releases", + "RELOAD": "Recharger", + "RELOAD_INITIATED_SUCCESSFULLY": "Rechargement lancé avec succès", + "RESOURCE": "Ressource", + "RESOURCES": "Ressources", + "RESOURCES_DATA": "Données de ressources", + "RESOURCES_DATA_DETAIL": "Détail des données de ressources", + "RESOURCES_GROUPS": "Groupes de ressources", + "RESOURCES_LOGS": "Journaux des ressources", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Détail des journaux des ressources", + "RESOURCES_LOG_LEVEL": "Niveau des journaux des ressources", + "RESOURCES_LOG_RETENTION_DURATION": "Durée conservation des journaux de ressources", + "RESOURCE_GROUPS_DETAIL": "Détails des groupes de ressources", + "RESOURCE_GROUPS_MAPS_DETAIL": "Détails des ressources du groupe", + "RESOURCE_GROUPS_TURNED_OFF": "Groupes désactivés", + "RESOURCE_GROUPS_TURNED_ON": "Groupes activés", + "RESOURCE_GROUP_TURNED_OFF": "Groupe désactivé", + "RESOURCE_GROUP_TURNED_ON": "Groupe activé", + "RESOURCE_TYPE": "Type de ressource", + "RESTORE": "Restaurer", + "RESTORE_CONFIRMATION_MESSAGE": "Vous êtes sur le point de restaurer le système vers '{{name}}'.
La restauration supprime complètement les données et la configuration et le système retournera à '{{name}}!
Cliquer sur 'Restaurer' pour procéder.
NOTE: Après une restauration réussie, vous devez redémarrer manuellement le serveur avec une ligne de commande. ", + "RESTORE_CONFIRMATION_TITLE": "Restaurer le système vers '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restauration lancé avec succès.", + "RESULT": "Résultat", + "RETAIN_MAX": "Nb fichiers maxi.", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Vous êtes sur le point de changer les réglages de conservation des données métriques.
Cette action peut conduire à une perte de données. Veuillez lire le manuel utilisateur pour plus de détails.
Il est fortement recommandé d'effectuer une sauvegarde système avant de continuer !", + "RETENTION_DIALOG_TITLE": "Lire attentivement avant d'aller de l'avant", + "RE_ENABLE": "Réactiver", + "RIGHT": "Droite", + "ROLES": "Rôles", + "ROLES_DETAIL": "Détail des rôles", + "ROOM": "Pièce", + "ROOMS": "Pièces", + "ROOMS_DETAIL": "Détail pièces", + "ROOM_NAME": "Nom pièce", + "RULES": "Règles", + "RULES_DETAIL": "Détail des règles", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nom règle", + "RUN": "Exécuter", + "RUNNING": "En exécution...", + "RUN_BACKUP": "Exécuter la sauvegarde", + "RUN_GARBAGE_COLLECTION": "Lancer le nettoyage de la mémoire", + "RUN_NOW": "Exécuter maintenant", + "SAVE": "Enregistrer", + "SAVE_CHANGES": "Enregistrer les modifications", + "SAVING": "Enregistrement...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Détail des scripts", + "SCRIPT_BINDINGS": "Liaisons de script", + "SCRIPT_ENGINES": "Moteurs de script", + "SCRIPT_FILES": "Fichiers de script", + "SEARCH": "Rechercher", + "SECONDS": "Secondes", + "SELECT": "Sélectionner", + "SEND": "Envoyer", + "SENDING": "Envoi en cours...", + "SEND_RAW_MESSAGE": "Envoyer message brut", + "SENSOR": "Capteur", + "SENSORS": "Capteurs", + "SENSORS_ACTION": "État des capteurs", + "SENSORS_AND_VARIABLES_MAPPING": "Mappage capteurs et variables", + "SENSORS_DETAIL": "Détail des capteurs", + "SENSOR_DETAILS": "Détails capteur", + "SENSOR_ID": "ID capteur", + "SENSOR_NAME": "Nom capteur", + "SENSOR_TYPE": "Type capteur", + "SENSOR_VARIABLE": "Variable capteur", + "SENSOR_VARIABLES": "Variables capteur", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Type de variable capteur", + "SERIAL_BAUD_RATE_EXAMPLE": "Exemple : 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Exemple: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Exemple : 120", + "SETTINGS": "Paramètres", + "SHOW_ICON": "Afficher l'icône", + "SHOW_LEGENDS": "Afficher les légendes", + "SHOW_MENU": "Afficher le menu", + "SIX_HOURS_DATA": "Une donnée toutes les six heures", + "SMART_SLEEP_ENABLED": "Mise en sommeil intelligent activé", + "SMS": "SMS", + "SMTP_HOST": "Hôte SMTP", + "SMTP_PASSWORD": "Mot de passe SMTP", + "SMTP_PORT": "Port SMTP", + "SMTP_USERNAME": "Nom d’utilisateur SMTP", + "SOURCE": "Source", + "SOURCE_CODE": "Code source", + "SOURCE_ID": "ID source", + "SPECIFICATION_VENDOR": "Description fournisseur", + "SPECIFICATION_VERSION": "Description version", + "STACKED_AREA_CHART": "Graphique en aires empilées", + "STATION_ID": "ID Station", + "STATION_PASSWORD": "Mot de passe Station", + "STATISTICS": "Statistiques", + "STATUS": "État", + "STATUS_MESSAGE": "Message d’état", + "STATUS_SINCE": "État depuis", + "STEP_AFTER": "Étape suivante", + "STEP_BEFORE": "Étape précédente", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Sujet", + "SUB_TYPE": "Sous-type", + "SUNRISE": "Lever du soleil", + "SUNSET": "Coucher de soleil", + "SUPPORT": "Support", + "SWAP": "Échanger", + "SWAP_SPACE": "Espace d'échange", + "SYNTAX_ERROR": "Erreur de syntaxe", + "SYSTEM": "Système", + "SYSTEM_CPU_LOAD": "Charge système", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Moyenne charge système", + "SYSTEM_STATUS": "État du système", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Vous êtes sur le point de mettre à jour la configuration d'une 'Variable capteur'.
A la mise à jour des configurations, en cas de changement de 'Type métrique', toutes les données existantes de cette 'variable capteur' seront effacées !", + "S_VARIABLE_DIALOG_TITLE": "Mettre à jour la configuration de la 'variable capteur'", + "TABLE_ROWS_LIMIT": "Limite lignes table", + "TAGS": "Étiquettes", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Modèle", + "TEMPLATES": "Modèles", + "TEMPLATES_DETAIL": "Détail modèles", + "TEMPLATE_BINDINGS": "Liaisons de modèles", + "TENANT": "Tenant", + "TESTING": "Test en cours...", + "TEST_CONNECTION": "Tester la connection", + "TEXT": "Texte", + "THREADS_COUNT": "Nombre de threads", + "THRESHOLD_VALUE": "Valeur seuil", + "THRESHOLD_VALUE_HIGH": "Valeur de seuil haut", + "THRESHOLD_VALUE_LOW": "Valeur de seuil bas", + "TIME": "Date", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Détail timers", + "TIMER_NAME": "Nom timer", + "TIMER_TYPE": "Type timer", + "TIME_FORMAT": "Format heure", + "TIME_HH_MM_SS": "Heure(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Décalage horaire (HH:mm:ss)", + "TIME_RANGE": "Intervalle de temps", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Titre", + "TO": "Vers", + "TOKEN": "Token", + "TOP": "Haut", + "TOPICS_PUBLISH": "Publications des rubriques", + "TOPICS_SUBSCRIBE": "Souscription rubrique", + "TOPIC_PUBLISH": "Publication rubrique", + "TOPIC_SUBSCRIBE": "Souscription rubrique", + "TOPOLOGY": "Topologie", + "TOTAL": "Total", + "TOTAL_LOADED": "Total chargé", + "TOTAL_STARTED": "Total démarré", + "TRANSMIT_DELAY": "Délai transmission", + "TRIGGER_WHEN": "Déclencher quand", + "TRUST_HOST": "Hôte", + "TURN_OFF": "Éteindre", + "TURN_ON": "Allumer", + "TWELVE_HOURS_DATA": "Une donnée toutes les 12 heures", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type ID", + "UID": "Identifiant unique UID", + "UID_TAGS": "Étiquettes", + "UID_TAGS_DETAIL": "Détail étiquettes UID", + "UNAVAILABLE": "Indisponible", + "UNDO_CHANGES": "Annuler les changements", + "UNIT": "Unité", + "UNITS": "Unités", + "UNITS_CONFIGURATION": "Configuration des unités", + "UNITS_METRICS_IMPERIAL": "Unités [Métriques/Impériales]", + "UNLOADED": "Non chargé", + "UP": "Actif", + "UPDATE": "Actualiser", + "UPDATED_SUCCESSFULLY": "Mise à jour terminée", + "UPDATE_AN_ENTRY": "Actualiser une entrée", + "UPDATE_EXTERNAL_SERVER": "Mettre à jour serveur externe", + "UPDATE_FIRMWARE": "Mise-à-jour micrologiciel", + "UPDATE_FIRMWARE_TYPE": "Mise-à-jour type de micrologiciel", + "UPDATE_FIRMWARE_VERSION": "Mise-à-jour version micrologicielle", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Actualiser entrée de transfert de valeur", + "UPDATE_GATEWAY": "Actualiser la passerelle", + "UPDATE_NODE": "Actualiser le nœud", + "UPDATE_OPERATION": "Actualiser une opération", + "UPDATE_RESOURCE": "Actualiser ressource", + "UPDATE_RESOURCES_GROUP": "Actualiser le groupe de ressources", + "UPDATE_ROOM": "Actualiser la pièce", + "UPDATE_RULE": "Actualiser la règle", + "UPDATE_SCRIPT": "Actualiser le script", + "UPDATE_SENSOR": "Actualiser le capteur", + "UPDATE_SENSOR_VARIABLE": "Actualiser la variable capteur", + "UPDATE_TEMPLATE": "Modifier le modèle", + "UPDATE_TIMER": "Modifier un timer", + "UPDATE_UID_TAG_ENTRY": "Actualiser l'étiquette UID", + "UPDATE_USER": "Modifier un utilisateur", + "UPDATE_VARIABLE": "Modifier une variable", + "UPLOADED_ON": "Téléchargé le", + "UPLOAD_FIRMWARE": "Modifier un firmware", + "UPPER": "Supérieur", + "UPPER_LIMIT": "Limite haute", + "UP_TIME": "Temps de fonction", + "URL": "URL", + "USE": "Utiliser", + "USED": "Utilisé", + "USERNAME": "Nom d'utilisateur", + "USERS": "Utilisateurs", + "USERS_DETAIL": "Détail des utilisateurs", + "USER_WORKING_DIRECTORY": "Dossier de travail utilisateur", + "USE_GLOBAL": "Par défaut", + "USE_INTERACTIVE_GUIDE_LINE": "Utiliser le guide interactif", + "UTILITIES": "Utilitaires", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Pas d'espace autorisé", + "VALIDATION_ERROR_NUMBER": "La valeur entrée n'est pas un nombre", + "VALIDITY": "Validité", + "VALUE": "Valeur", + "VALUE2": "Valeur #2", + "VALUE3": "Valeur #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Détails des variables", + "VARIABLES_GRAPHICAL_VIEW": "Graphique des variables", + "VARIABLES_MAPPER": "Cartographie des variables", + "VARIABLES_REPOSITORY": "Déclaration de variables", + "VARIABLE_TYPES": "Types de variable", + "VENDOR": "Opérateur de réseau", + "VERSION": "Version", + "VERSIONS": "Versions", + "VERSION_ID": "ID version", + "VERSION_KERNEL": "Version/Noyau", + "VIEW_DETAILS": "Voir détails", + "VM_NAME": "Nom VM", + "VM_VENDOR": "Fournisseur VM", + "VM_VERSION": "Version VM", + "WEBSOCKET_PORT": "Port websocket", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Emplacement fichiers image widget", + "WRITE_API_KEY": "Écrire clé API", + "YEARS": "Années", + "YES": "Oui" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-he_il.json b/www/languages/mc_locale_gui-he_il.json new file mode 100644 index 0000000..efc1baf --- /dev/null +++ b/www/languages/mc_locale_gui-he_il.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 שעות", + "24_HOURS": "24 שעות", + "ABOUT": "אודות", + "ACCESS": "גישה", + "ACCESS_TOKEN": "הרשאת גישה", + "ACK": "אישור", + "ACKNOWLEDGE": "להכיר", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "בקשת ACK", + "ACK_RESPONSE": "תגובת Ack", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "פעולות", + "ACTION_BOARD": "לוח פעולה", + "ACTIVE": "פעיל", + "ADD": "Add", + "ADD_AN_ENTRY": "הוספת רשומה", + "ADD_EXTERNAL_SERVER": "הוספת שרת חיצוני", + "ADD_FIRMWARE": "הוספת קושחה", + "ADD_FIRMWARE_TYPE": "הוספת סוג קושחה", + "ADD_FIRMWARE_VERSION": "הוספת גרסת קושחה", + "ADD_FORWARD_PAYLOAD_ENTRY": "הוסף רשומה של Forward Payload", + "ADD_GATEWAY": "הוספת gateway", + "ADD_GROUP": "הוספת קבוצה", + "ADD_NEW_WIDGET": "הוספת יישומון חדש", + "ADD_NODE": "הוספת צומת", + "ADD_OPERATION": "הוספת תפעול", + "ADD_RESOURCE": "הוספת משאב", + "ADD_RESOURCES_GROUP": "הוספת קבוצת משאבים", + "ADD_ROLE": "הוספת תפקיד", + "ADD_ROOM": "הוספת חדר", + "ADD_RULE": "הוספת כלל", + "ADD_SCRIPT": "הוספת סקריפט", + "ADD_SENSOR": "הוספת חיישן", + "ADD_TEMPLATE": "הוספת תבנית", + "ADD_TIMER": "הוספת טיימר", + "ADD_UID_TAG_ENTRY": "הוספת ערך של תג UID", + "ADD_USER": "הוספת משתמש", + "ADD_VARIABLE": "הוספת משתנה", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "אחרי", + "ALIAS": "כינוי", + "ALIVE_TEST_FREQUENCY": "תדירות בדיקת ALIVE (שניות)", + "ALLOW_ANONYMOUS": "אפשר אנונימי", + "ALPHABETICAL_KEY_CASE": "מפתח אלפביתי", + "ANGULARJS_CUSTOM_CONTROLLERS": "בקרי AngularJS מותאמים אישית", + "APP.DESCRIPTION": "בקר קוד פתוח", + "APP.LOG_IN_TO_MESSAGE": "היכנס אל MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "ברוכים הבאים אל MyController.org הבקר בקוד פתוח", + "ARCHITECTURE": "ארכיטקטורה", + "AREA": "אזור", + "AUTH_ID_SID": "מזהה הרשאה", + "AUTH_TOKEN": " Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "הגדרות גיבוי אוטומטי", + "AUTORIZED_USER": "משתמש מאושר", + "AUTO_GENERATE": "מחולל אוטומטי", + "AVAILABLE_PROCESS": "תהליך זמין", + "AVERAGE_TIME": "Average time", + "BACKUP": "גיבוי", + "BACKUPS_DETAIL": "פרטי הגיבוי", + "BACKUP_COMPLETED_SUCCESSFULLY": "הגיבוי בוצע בהצלחה", + "BACKUP_EVERY": "גבה הכל", + "BACKUP_FILE_PREFIX": "קידומת קובץ גיבוי", + "BACKUP_LOCATION": "מיקום גיבוי", + "BACKUP_ON": "גיבוי פעיל", + "BACKUP_SETTINGS": "הגדרות גיבוי", + "BAR": "בר", + "BASIS": "בסיס", + "BASIS_CLOSED": "בסיס סגור", + "BASIS_OPEN": "בסיס פתוח", + "BATTERY": "סוללה", + "BATTERY_LEVEL": "רמת הסוללה", + "BATTERY_USAGE": "שימוש בסוללה", + "BAUD_RATE": "קצב שידור", + "BINARY_DATA": "נתונים בינאריים", + "BIND_ADDRESS": "לאגד כתובת", + "BLOCKS": "רחובות", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "ברוקר מארח", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "כלי Build", + "BUILT_ON": "מובנה", + "BUNDLE": "חבילה", + "BUTTON_SETTINGS": "הגדרות לחצן", + "CANCEL": "ביטול", + "CARDINAL": "קרדינל", + "CARDINAL_CLOSED": "קרדינל סגור", + "CARDINAL_OPEN": "קרדינל פתוח", + "CHANNEL_TAGS": "תגיות ערוצים", + "CHANNEL_TAGS_COMMA_SEPARATED": "תגי ערוץ מופרדים בפסיק", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "פרטי טעינת מחלקה", + "CLIENT_ID": "מזהה לקוח", + "CLONE": "שיבוט", + "COLLECTION_COUNT": "מניית אוספים", + "COLLECTION_TIME": "זמן איסוף", + "COLOR": "צבע", + "COMMAND": "Command", + "COMMITTED": "מחוייב", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "גודל זיכרון מחוייב", + "CONDITION": "תנאי", + "CONDITION_TYPE": "סוג תנאי", + "CONNECTION_DETAILS": "פרטי החיבור", + "CONTENT": "תוכן", + "CONTINUE": "המשך", + "COUNT": "ספירה", + "COUNTER": "מונה", + "CRC": "CRC", + "CRON_EXPRESSION": "ביטוי קרון", + "CSS_FILES": "קבצי CSS", + "CURRENT": "נוכחי", + "CURRENT_PASSWORD": "סיסמא נוכחית", + "CUSTOM_MESSAGE": "הודעה מותאמת", + "DAEMON": "דימון", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "סוג Dampening ", + "DASHBOARDS": "לוח מחוונים", + "DASHBOARD_LIMIT": "מקסימום לוחות מחוונים מותרים", + "DATA": "מידע", + "DATABASE": "מסד נתונים", + "DATABASE_SCHEMA_REVISION": "סכימת מסד נתונים", + "DATABASE_TYPE": "סוג מסד נתונים", + "DATABASE_VERSION": "גירסת מסד נתונים", + "DATA_RETENTION_SETTINGS": "הגדרות שמירת נתונים", + "DATA_TYPE": "סוג מידע", + "DATA_UNAVAILABLE": "הנתונים אינם זמינים!", + "DATE_PATTERN": "תבנית תאריך", + "DATE_RANGE": "טווח תאריכים", + "DAY": "יום", + "DAYS": "ימים", + "DEFAULT": "ברירת מחדל", + "DEFAULT_FIRMWARE": "קושחה ברירת מחדל", + "DEFAULT_TIME_RANGE": "טווח זמן ברירת מחדל", + "DELAY_TIME_IN_SECONDS": "זמן עיכוב בשניות", + "DELETE": "מחיקה", + "DELETE_DASHBOARD": "מחיקת לוח מחוונים", + "DELETE_ITEMS": "מחיקת פריטים", + "DELETE_MESSAGE": "אתה עומד למחוק פריטים נבחרים, תהליך המחיקה יסיר באופן מלא עקבות של פריטים אלו! לחץ על 'מחק' כדי להמשיך.", + "DESCRIPTION": "תיאור", + "DESTINATION": "יעד", + "DESTINATION_ID": "מזהה יעד", + "DETAILS": "פרטים", + "DEVICES": "מכשירים", + "DEVICE_IDENS": "מזהה מכשירים", + "DEVICE_IDENS_COMMA_SEPARATED": "מזהי מכשירי מופרדים בפסיקים", + "DIRECTION": "כיוון", + "DISABLE": "השבת", + "DISABLED": "מושבת", + "DISABLE_WHEN_TRIGGER": "השבת בעת טריגר", + "DISCOVER": "לגלות", + "DISCOVER_INITIATED_SUCCESSFULLY": "גילוי יזום הצליח", + "DISPLAY_NAMES": "הצג שמות", + "DOCUMENTS": "מסמכים", + "DOUBLE": "כפול", + "DOWN": "למטה", + "DRIVER": "התקן", + "EDIT": "עריכה", + "EDIT_DASHBOARD": "עריכת לוח מחוונים", + "EMAIL": "דוא\"ל", + "EMAILS": "דוא\"ל", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "כתובות דוא\"ל מופרדות בפסיק", + "ENABLE": "אפשר", + "ENABLED": "מאופשר", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "הפעל ברירת מחדל ללא קושחה", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "כאשר אפשרות זו מופעלת, השתמש בקושחה המוגדרת ברירת מחדל, כאשר הקושחה המבוקשת אינה זמינה במערכת.", + "ENABLE_EDIT_MODE": "הפעל מצב עריכה", + "ENABLE_MIN_MAX": "הפעל מינימום/מקסימום", + "ENABLE_SSL": "הפעל SSL", + "ENABLE_UNIQUE_NAME": "הפעל שם ייחודי", + "ERASE_CONFIGURATION": "מחק את התצורה", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "אתה עומד למחוק תצורה מלאה של פריטים נבחרים. לחץ על 'מחק תצורה' כדי להמשיך הלאה.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "מחק את התצורה", + "ERASE_CONFIGURATION_INITIATED": "מחיקת תצורה שיוזמה לפריטים שנבחרו", + "ERROR_ITEMS_NOT_AVAILABLE": "פריטים שנבחרו אינם זמינים!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "לדוגמא: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "לדוגמא: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "לדוגמא: 5003", + "EUI": "EUI", + "EVALUATIONS": "הערכות", + "EXECUTE_DISCOVER_INTERVAL": "בצע מרווח גילוי", + "EXTENSION": "הרחבה", + "EXTENSIONS": "הרחבות", + "EXTERNAL_SERVERS": "הרחבות שרתים", + "EXTERNAL_SERVERS_DETAIL": "הרחבת פרטי שרתים", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "קובץ", + "FILE_NAME": "שם הקובץ", + "FILE_SIZE": "גודל הקובץ", + "FILTER_BY_BLOCKS": "סינון לפי בלוקים", + "FILTER_BY_CONDITION_TYPE": "סנן לפי סוג תנאי", + "FILTER_BY_DAMPENING_TYPE": "סנן לפי סוג הדחה", + "FILTER_BY_DESCRIPTION": "סנן לפי תיאור", + "FILTER_BY_DESTINATION_ID": "סנן לפי מזהה יעד", + "FILTER_BY_DIRECTION": "סנן לפי כיוון", + "FILTER_BY_EMAIL": "סנן לפי דוא\"ל", + "FILTER_BY_ENABLED": "סנן לפי מאופשר", + "FILTER_BY_EUI": "סנן לפי EUI", + "FILTER_BY_EXTENSION": "סנן לפי תוסף", + "FILTER_BY_FILE_NAME": "סנן לפי שם קובץ", + "FILTER_BY_FREQUENCY": "סנן לפי תדר", + "FILTER_BY_FULL_NAME": "סנן לפי שם מלא", + "FILTER_BY_KEY": "סנן לפי מפתח", + "FILTER_BY_LEVEL": "סנן לפי רמה", + "FILTER_BY_LIBRARY_VERSION": "סנן לפי גירסת ספרייה", + "FILTER_BY_MESSAGE": "סנן לפי הודעה", + "FILTER_BY_MESSGAE_TYPE": "סנן לפי סוג הודעה", + "FILTER_BY_NAME": "סנן לפי שם", + "FILTER_BY_NETWORK_TYPE": "סנן לפי סוג רשת", + "FILTER_BY_NODE_ID": "סנן לפי מזהה צומת", + "FILTER_BY_OPERATION": "סנן לפי תפעול", + "FILTER_BY_OPERATION_TYPE": "סנן לפי סוג תפעול", + "FILTER_BY_PAYLOAD_OFF": "סנן לפי מטען כבוי", + "FILTER_BY_PAYLOAD_ON": "סנן לפי מטען עובד", + "FILTER_BY_PERMISSION": "סנן לפי הרשאות", + "FILTER_BY_PUBLIC_ACCESS": "סנן לפי גישה ציבורית", + "FILTER_BY_RESOURCE": "סנן לפי משאב", + "FILTER_BY_RESOURCE_TYPE": "סנן לפי סוג משאב", + "FILTER_BY_SENSOR_ID": "סנן לפי מזהה חיישן", + "FILTER_BY_SENSOR_NAME": "סנן לפי שם חיישן", + "FILTER_BY_SENSOR_TYPE": "סנן לפי סוג חיישן", + "FILTER_BY_SENSOR_VARIABLES": "סנן לפי משתנה חיישן", + "FILTER_BY_SOURCE_ID": "סנן לפי מזהה מקור", + "FILTER_BY_STATUS": "סנן לפי סטטוס", + "FILTER_BY_STATUS_MESSAGE": "סנן לפי הודעת סטטוס", + "FILTER_BY_TYPE": "סנן לפי סוג", + "FILTER_BY_TYPE_ID": "סנן לפי מזהה סוג", + "FILTER_BY_UID": "סנן לפי UID", + "FILTER_BY_USERNAME": "סנן לפי שם משתמש", + "FILTER_BY_VALUE": "סנן לפי ערך", + "FILTER_BY_VALUE2": "סנן לפי ערך #2", + "FILTER_BY_VALUE3": "סנן לפי ערך #3", + "FILTER_BY_VARIABLE_TYPES": "סנן לפי סוג משתנה", + "FILTER_BY_VERSION": "סנן לפי גירסה", + "FILTER_BY_VERSION_ID": "סנן לפי מזהה גירסה", + "FIRMWARE": "קושחה", + "FIRMWARES": "קושחות", + "FIRMWARES_DETAIL": "פרטי קושחה", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "פירוט סוגי הקושחה", + "FIRMWARE_TYPE_NAME": "שם סוג הקושחה", + "FIRMWARE_UPLOAD_INITIATED": "טעינה של קושחה מופעלת עבור פריטים נבחרים.", + "FIRMWARE_VERSION": "גרסת קושחה", + "FIRMWARE_VERSIONS_DETAIL": "פרטי גירסת קושחה", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "נתונים של חמש דקות ", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "העברת Payload", + "FORWARD_PAYLOADS_DETAIL": "העברת פרטי Payload", + "FREE": "פנוי", + "FREQUENCY": "תדר", + "FROM": "מ", + "FROM_ADDRESS": "מכתובת", + "FROM_PHONE_NUMBER": "ממספר טלפון", + "FULL_NAME": "שם מלא", + "FULL_PATH": "נתיב מלא", + "GARBAGE_COLLECTOR": "אוסף זבל", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "פירוט ה - Gateways", + "GATEWAY_DETAILS": "פרטי ה - Gateway", + "GATEWAY_NAME": "שם ה - Gateway", + "GATEWAY_TYPE": "סוג ה - Gateway", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "זמן רענון גלובלי של הדף", + "GPS_DATA": "נתוני GPS", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "הענקת גישה למשאבי הילד (בתפקידים)", + "GRAPHS_SETTINGS": "הגדרות גרפים", + "GRAPH_SETTINGS": "הגדרת גרף", + "GROUPS": "קבוצות", + "GROUP_NAME": "שם הקבוצה", + "HEAP_MEMORY": "זיכרון", + "HEIGHT": "גובה", + "HIDE_MENU": "הסתר תפריט", + "HISTORICAL_BAR_CHART": "תרשים בר היסטורי", + "HOST_NAME": "שם מארח", + "HOURS": "שעות", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "כותרות נוספות של HTML", + "HTTP_PORT": "פורט HTTP", + "ID": "מזהה", + "IDEN": "iden", + "IGNORE_CASE": "התעלם במקרה", + "IGNORE_DUPLICATE": "התעלם משכפול", + "IMPERIAL": "מלכותי", + "INCLUDE_THRESHOLD_HIGH": "כלול סף גבוה", + "INCLUDE_THRESHOLD_LOW": "כלול סף נמוך", + "INDIVIDUAL_SETTINGS": "הגדרות אישיות", + "INIT": "ראשית", + "INTERPOLATE_TYPE": "סוג אינטרפולציה", + "INTERVAL": "מרווח", + "INTERVAL_IN_SECONDS": "מרווח בשניות", + "INVALID_USERNAME_OR_PASSWORD": "שם משתמש או סיסמא לא חוקיים", + "IN_RANGE": "בטווח", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "הפריט(ים) נמחקו בהצלחה", + "ITEMS_DISABLED_SUCCESSFULLY": "הפריט(ים) הושבתו בהצלחה", + "ITEMS_ENABLED_SUCCESSFULLY": "הפריט(ים) אופשרו בהצלחה", + "ITEMS_PER_ROW": "פריטים לשורה", + "ITEM_CREATED_SUCCESSFULLY": "פריט נוצר בהצלחה", + "ITEM_UPDATED_SUCCESSFULLY": "פריט עודכן בהצלחה", + "JAVA_HOME": "דף הבית של JAVA", + "JAVA_VENDOR_URL": "כתובת ספר של JAVA", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "מפרט מכונה וירטואלית של JAVA", + "JSON": "JSON", + "KEY": "מפתח", + "KEY_FORMAT": "פורמט מפתח", + "LANGUAGE": "שפה", + "LANGUAGE_VERSION": "גירסת שפה", + "LAST_5_MINUTES": "5 דקות האחרונות", + "LAST_6_HOURS": "6 שעות האחרונות", + "LAST_12_HOURS": "12 שעות האחרונות", + "LAST_DAY": "אתמול", + "LAST_EXECUTION": "ביצוע האחרון", + "LAST_FIRED": "נורה לאחורנה", + "LAST_GARBAGECOLLECTOR_DURATION": "משך GC האחרון", + "LAST_HOUR": "השעה האחרונה", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "שונה לאחורנה", + "LAST_MONTH": "החודש האחרון", + "LAST_SEEN": "נראה לאחרונה", + "LAST_TRIGGER": "הטריגר האחרון", + "LAST_WEEK": "השבוע האחרו", + "LAST_YEAR": "השנה האחרונה", + "LATITUDE": "קו רוחב", + "LEFT": "Left", + "LEVEL": "רמה", + "LIBRARY_VERSION": "גירסת סיפרייה", + "LINE": "קו", + "LINEAR": "לינארי", + "LINE_CHART": "תרשים קו", + "LOAD": "טען", + "LOADED": "נטען", + "LOADING": "טוען", + "LOCATION": "מיקום", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "הודעת התחברות", + "LOGS": "לוגים", + "LOG_DIRECTION": "לוג כיוון", + "LOG_IN": "התחברות", + "LOG_LEVEL": "רמת לוג", + "LOG_OUT": "התנתקות", + "LONGITUDE": "קו אורך", + "LOWER": "נמוך יותר", + "MANAGEMENT_SPECIFICATION_VERSION": "גרסה מפרט ניהול", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "מקסימלי", + "MAXIMUM_BLOCK_SIZE": "גודל בלוק מקסימלי", + "MEASUREMENT": "מדידות", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "הודעות", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "ההודעה מכילה", + "MESSAGE_TYPE": "סוג הודעה", + "METRIC": "מטרית", + "METRICS": "ערכים", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "מנוע מטרי", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "אתה עומד לשנות את הגדרות נתוני המידע של מנוע Backend. פעולה זו תוביל לאיבוד נתונים. קרא מדריך משתמש לפרטים נוספים. MyController לא ייצא\\ייבא נתוני מטרי בעת החלפת למנוע מטרי!", + "METRIC_TYPE": "סוג מטרי", + "MILLISECONDS": "מילישניות", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "גובה מינימלי", + "MINIMUM_WIDTH": "רוחב מינימלי", + "MINUTES": "דקות", + "MIN_MAX": "מינימום/מקסימום", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "שינוי חיישן ומיפוי משתנים", + "MONOTONE": "טון בודד", + "MQTT_BROKER": "MQTT ברוקר", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "אתה עומד לשנות את הגדרות ברוקר MQTT . פעולה זו תוביל לאתחול ההגדורת מחדש ב-MQTT.", + "MQTT_BROKER_EDIT_DIALOG": "הגדרות ברוקר MQTT", + "MQTT_BROKER_HOST_EXAMPLE": "לדוגמא: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "דוגמא: MyController-MQTT-Client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "דוגמא: MyGateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "דוגמא: MyGateway-out", + "MYCONTROLLER_SERVER_LOG": "לוג של שרת MyController", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "שם", + "NETWORK": "רשת", + "NETWORK_TYPE": "סוג רשת", + "NEVER": "אף פעם", + "NEW": "New", + "NEW_DASHBOARD": "לוח מחוונים חדש", + "NEW_PASSWORD": "סיסמא חדשה", + "NEXT_EXECUTION": "Next execution", + "NO": "לא", + "NODE": "צומת", + "NODES": "צמתים", + "NODES_ALIVE_CHECK_INTERVAL": "מרווח בין בדיקת חיות לצמתים", + "NODES_DETAIL": "פרטי הצמתים", + "NODE_DETAILS": "פרטי הצומת", + "NODE_EUI": "צומת EUI", + "NODE_ID": "מזהה צומת", + "NODE_NAME": "שם הצומת", + "NODE_STATUS": "מצב הצומת", + "NODE_TYPE": "סוג הצומת", + "NON_HEAP_MEMORY": "לא זיכרון Heap", + "NOTHING_SELECTED": "לא נבחר דבר", + "NOTIFICATIONS": "התראות", + "NOT_SET": "לא הוגדר", + "NO_ACK": "אין ACK", + "NO_BACKUPS_SETUP": "לא הוגדרו גיבויים", + "NO_DATA_AVAILABLE": "המידע אינו זמין", + "NO_EXTERNAL_SERVERS_SETUP": "לא הוגדרו שרתים חיצוניים", + "NO_FIRMWARES_SETUP": "לא הוגדרו קושחות", + "NO_FIRMWARE_TYPES_SETUP": "לא הוגדרו סוגי קושחות", + "NO_FIRMWARE_VERSIONS_SETUP": "לא הוגדרו גירסאות קושחה", + "NO_FORWARD_PAYLOADS_SETUP": "לא הוגדר Forward Payload", + "NO_GATEWAYS_SETUP": "לא הוגדר Gateway", + "NO_ITEMS_IN_FILTER": "אופס! לא נמצאו תוצאות, ערוך את השאילתה שלך.", + "NO_ITEMS_SETUP": "אין פריטים מוגדרים!", + "NO_LOGS_AVAILABLE": "אין לוגים זמינים.", + "NO_NODES_SETUP": "לא הוגדרו צמתים.", + "NO_OPERATIONS_SETUP": "לא הוגדרו פעולות.", + "NO_RESOURCES_DATA_SETUP": "לא הוגדרו נתוני משאבים", + "NO_RESOURCE_GROUPS_MAP_SETUP": "המשאבים לא מופו בקבוצה זו.", + "NO_RESOURCE_GROUPS_SETUP": "לא הוגדרו קבוצות משאבים.", + "NO_ROOMS_SETUP": "לא הוגדרו חדרים", + "NO_RULES_SETUP": "לא הוגדרות כללים.", + "NO_SCRIPTS_SETUP": "לא הוגדרו סקריפטים.", + "NO_SENSORS_SETUP": "לא הוגדרות חיישנים.", + "NO_TEMPLATES_SETUP": "לא הוגדרו תבניות.", + "NO_TIMERS_SETUP": "לא הוגדרו טיימרים.", + "NO_UID_TAGS_SETUP": "לא הוגדרו תגי UID", + "NO_VARIABLES_SETUP": "לא הוגדרו משתנים.", + "OCCURRENCES": "התרחשויות", + "OFF": "כבוי", + "OFFSET": "קיזוז", + "ON": "פועל", + "ONE_DAY_DATA": "נתונים של יום אחד", + "ONE_HOUR_DATA": "נתונים של שעה אחת", + "ONE_MINUTE_DATA": "נתונים של דקה", + "OPERATING_SYSTEM": "מערכת הפעלה", + "OPERATION": "הפעלה", + "OPERATIONS": "פעולות", + "OPERATIONS_DETAIL": "פרטי הפעולות", + "OPERATION_NAME": "שם הפעולה", + "OPERATION_TYPE": "סוג הפעולה", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "אחרים", + "PARENT": "הורה", + "PARENT_NODE_EUI": "הורה צומת EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "סיסמא", + "PATTERN": "תבנית", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "השייה \\ Payload", + "PAYLOAD_OFF": "Payload כבוי", + "PAYLOAD_ON": "Payload דלוק", + "PEAK": "הצצה", + "PERCENTAGE": "אחוזים", + "PERMISSION": "הרשאות", + "PHONE_NUMBERS": "מספרי טלפון", + "PHONE_NUMBERS_COMMA_SEPARATED": "מספרי טלפון מופרדים בפסיק", + "PHYSICAL_MEMORY": "זיכרון פיזי (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "תדירות סקריה (דקות)", + "PORT": "פורט", + "PORT_NAME": "שם פורט", + "PRIORITY": "עדיפות", + "PRIVATE": "פרט", + "PRIVATE_KEY": "מפתח פרטי", + "PROCESS_CPU": "מעבד CPU", + "PROFILE": "פרופיל", + "PROFILE_UPDATED_SUCCESSFULLY": "הפרופיל עודכן בהצלחה", + "PROPERTIES": "מאפיינים", + "PUBLIC": "ציבורי", + "PUBLIC_ACCESS": "גישה ציבורית", + "PUBLIC_KEY": "מפתח ציבורי", + "PURGE": "טיהור", + "PURGE_BEFORE": "טיהור לפני", + "PURGE_DONE_SUCCESSFULLY": "הטיהור הושלם בהצלחה.", + "PURGE_EXISTING_DATA": "טיהור נתונים קיימים", + "PURGE_RESOURCES_LOGS": "טיהור לוג משאבים", + "PURGE_SENSOR_VARIABLE": "טיהור משתנה חיישן", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "אזהרה: אם לא בחרת פרמטר, תהליך זה ימחוק הכל!", + "PURGING": "מטהר", + "PUSHBULLET": "Pushbullet", + "QOS": "Qos", + "QOS_0": "לכל היותר פעם (0)", + "QOS_1": "לפחות אחד (1)", + "QOS_2": "בדיוק אחד (2)", + "RAW_DATA": "נתונים גולמיים", + "READ_ONLY": "לקריאה בלבד", + "REALTIME": "בזמן אמת", + "REBOOT": "הפעלה מחדש", + "REBOOT_CONFIRMATION_MESSAGE": "אתה עומד לאתחל את הפריטים הנבחרים לחץ 'אתחול' לביצוע.", + "REBOOT_CONFIRMATION_TITLE": "הפעלה מחדש", + "REBOOT_INITIATED": "אתחול מחדש עבור פריטים נבחרים.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "הגבלת רשומות", + "REFRESH": "רענן", + "REFRESH_NODES_INFO": "רענן פרטי צמתים", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'רענון פרטי צמתים' בוצע בהצלחה", + "REFRESH_TIME_SECONDS": "זמן רענון (שניות)", + "REGISTER_NODES_AUTOMATICALLY": "רישום אוטומטי של צמתים", + "REGISTRATION_STATUS": "מצב הרשמה", + "RELEASES": "שחרור", + "RELOAD": "לטעון מחדש", + "RELOAD_INITIATED_SUCCESSFULLY": "טעינה מחדש יזומה הצליחה", + "RESOURCE": "משאב", + "RESOURCES": "משאבים", + "RESOURCES_DATA": "נתוני משאבים", + "RESOURCES_DATA_DETAIL": "פרטי נתוני משאבים", + "RESOURCES_GROUPS": "קבוצות משאבים", + "RESOURCES_LOGS": "לוגים של המשאבים", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "פרטי לוגים של המשאבים", + "RESOURCES_LOG_LEVEL": "רמת לוגים של המשאבים", + "RESOURCES_LOG_RETENTION_DURATION": "משך שימור לוגים של המשאבים", + "RESOURCE_GROUPS_DETAIL": "פירוט קבוצות המשאבים", + "RESOURCE_GROUPS_MAPS_DETAIL": "פירוט מיפוי קבוצות המשאבים", + "RESOURCE_GROUPS_TURNED_OFF": "קבוצות משאבים במצב כבוי", + "RESOURCE_GROUPS_TURNED_ON": "קבוצות משאבים במצב דולק", + "RESOURCE_GROUP_TURNED_OFF": "קבוצת משאבים במצב כבוי", + "RESOURCE_GROUP_TURNED_ON": "קבוצת משאבים במצב דולק", + "RESOURCE_TYPE": "סוג משאב", + "RESTORE": "שיחזור", + "RESTORE_CONFIRMATION_MESSAGE": "אתה עומד לשחזר את המערכת ל - '{{name}}'. השחזור מסיר לחלוטין את הנתונים / התצורה הנוכחיים והמערכת עוברת למצב '{{name}}'! לחץ על 'שחזר' כדי להמשיך. שיב לב: לאחר שחזור מוצלח יש להפעיל את השרת באופן ידני משורת הפקודה.", + "RESTORE_CONFIRMATION_TITLE": "שחזור מערכת ל '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "השחזור בוצע בהצלחה.", + "RESULT": "תוצאה", + "RETAIN_MAX": "שמור מספר מקסימלי", + "RETENTION_DIALOG_CONFIRMATION_MSG": "אתה עומד לשנות את הגדרות שמירת הנתונים של ערכי הנתונים. פעולה זו עלולה להוביל לאובדן נתונים. עיין במדריך למשתמש לקבלת פרטים נוספים. מומלץ מאוד לבצע גיבוי למערכת לפני התקדמות!", + "RETENTION_DIALOG_TITLE": "קרא בעיון לפני התקדמות", + "RE_ENABLE": "איפשור מחדש", + "RIGHT": "Right", + "ROLES": "תפקידים", + "ROLES_DETAIL": "פרטי התפקידים", + "ROOM": "חדר", + "ROOMS": "חדרים", + "ROOMS_DETAIL": "פרטי החדרים", + "ROOM_NAME": "שם החדר", + "RULES": "כללים", + "RULES_DETAIL": "פירוט הכללים", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "שם הכלל", + "RUN": "הפעל", + "RUNNING": "פועל...", + "RUN_BACKUP": "הפעל גיבוי", + "RUN_GARBAGE_COLLECTION": "הפעל איסוף אשפה", + "RUN_NOW": "הפעל עכשיו", + "SAVE": "שמור", + "SAVE_CHANGES": "שמור שינויים", + "SAVING": "שומר...", + "SCRIPT": "סקריפט", + "SCRIPTS": "סקריפטים", + "SCRIPTS_DETAIL": "פרטי הסקריפטים", + "SCRIPT_BINDINGS": "כריכות סקריפט", + "SCRIPT_ENGINES": "מנועי סקריפט", + "SCRIPT_FILES": "קבצי הסקריפט", + "SEARCH": "חיפוש", + "SECONDS": "שניות", + "SELECT": "בחר", + "SEND": "שלח", + "SENDING": "שולח...", + "SEND_RAW_MESSAGE": "שלח הודעה גולמית", + "SENSOR": "חיישן", + "SENSORS": "חיישנים", + "SENSORS_ACTION": "פעולת חיישנים", + "SENSORS_AND_VARIABLES_MAPPING": "מיפוי חיישנים ומשתנים", + "SENSORS_DETAIL": "פרטי החיישנים", + "SENSOR_DETAILS": "פרטי החיישן", + "SENSOR_ID": "מזהה החיישן", + "SENSOR_NAME": "שם החיישן", + "SENSOR_TYPE": "סוג החיישן", + "SENSOR_VARIABLE": "משתנה החיישן", + "SENSOR_VARIABLES": "משנתי החיישן", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "סוג משתנה החיישן", + "SERIAL_BAUD_RATE_EXAMPLE": "לדוגמא: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "לדוגמא /dev/ttUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "לדוגמא: 120", + "SETTINGS": "הגדרות", + "SHOW_ICON": "הצג סמל", + "SHOW_LEGENDS": "הצג legends", + "SHOW_MENU": "הצג תפריט", + "SIX_HOURS_DATA": "שמונה שעות מידע", + "SMART_SLEEP_ENABLED": "אפשור שנה חכמה", + "SMS": "SMS", + "SMTP_HOST": "לקוח SMTP", + "SMTP_PASSWORD": "סיסמא SMTP", + "SMTP_PORT": "פורט SMTP", + "SMTP_USERNAME": "שם משתמש SMTP", + "SOURCE": "מקור", + "SOURCE_CODE": "קוד מקור", + "SOURCE_ID": "מזהה מקור", + "SPECIFICATION_VENDOR": "מפרט ספק", + "SPECIFICATION_VERSION": "מפרט גירסה", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "מזהה תחנה", + "STATION_PASSWORD": "סיסמאת תחנה", + "STATISTICS": "Statistics", + "STATUS": "סטטוס", + "STATUS_MESSAGE": "הודעת סטטוס", + "STATUS_SINCE": "סטטוס מאז", + "STEP_AFTER": "לאחר מכן", + "STEP_BEFORE": "לפני כן", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "נושא", + "SUB_TYPE": "סוג משנה", + "SUNRISE": "זריחה", + "SUNSET": "שקיעה", + "SUPPORT": "תמיכה", + "SWAP": "החלפה", + "SWAP_SPACE": "שטח החלפה", + "SYNTAX_ERROR": "שגיאת תחביר", + "SYSTEM": "מערכת", + "SYSTEM_CPU_LOAD": "עומס על מעבד המערכת", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "ממוצע עומס המערכת", + "SYSTEM_STATUS": "סטטוס המערכת", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "עדכן תצורות של 'משתנה חיישן' ", + "TABLE_ROWS_LIMIT": "שורות טבלה מוגבלות", + "TAGS": "תגים", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "תבנית", + "TEMPLATES": "תבניות", + "TEMPLATES_DETAIL": "פרטי התבניות", + "TEMPLATE_BINDINGS": "כריכות תבנית", + "TENANT": "Tenant", + "TESTING": "בבדיקה..", + "TEST_CONNECTION": "בדיקת חיבור", + "TEXT": "Text", + "THREADS_COUNT": "ספירת Threads", + "THRESHOLD_VALUE": "ערף סף", + "THRESHOLD_VALUE_HIGH": "ערך סף עליון", + "THRESHOLD_VALUE_LOW": "ערך סף תחתון", + "TIME": "זמן", + "TIMERS": "טיימרים", + "TIMERS_DETAIL": "פרטי הטיימרים", + "TIMER_NAME": "שם הטיימר", + "TIMER_TYPE": "סוג הטיימר", + "TIME_FORMAT": "פורמט הזמן", + "TIME_HH_MM_SS": "זמן(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "קיזוז זמן (HH:mm:ss)", + "TIME_RANGE": "טווח זמן", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "כותרת", + "TO": "ל", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "נושאים לפרסם", + "TOPICS_SUBSCRIBE": "נושאים להירשם כמנוי", + "TOPIC_PUBLISH": "נושא פרסום", + "TOPIC_SUBSCRIBE": "נושא מנוי", + "TOPOLOGY": "טופולוגיה", + "TOTAL": "סה\"כ", + "TOTAL_LOADED": "סה\"כ נטען", + "TOTAL_STARTED": "סה\"כ התחיל", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "הפעל כאשר", + "TRUST_HOST": "מארח אמין", + "TURN_OFF": "כבה", + "TURN_ON": "הפעל", + "TWELVE_HOURS_DATA": "נתונים של שתיים עשרה שעות", + "TWILIO": "Twilio", + "TYPE": "סוג", + "TYPES": "סוגים", + "TYPE_ID": "מזהה סוג", + "UID": "UID", + "UID_TAGS": "תג UID", + "UID_TAGS_DETAIL": "פרטי תג UID", + "UNAVAILABLE": "לא זמין", + "UNDO_CHANGES": "בטל שינויים", + "UNIT": "יחידה", + "UNITS": "יחידות", + "UNITS_CONFIGURATION": "הגדרת יחידות", + "UNITS_METRICS_IMPERIAL": "יחידות [מטר/אימפריאליים]", + "UNLOADED": "נפרק", + "UP": "למעלה", + "UPDATE": "עדכון", + "UPDATED_SUCCESSFULLY": "עודכן בהצלחה", + "UPDATE_AN_ENTRY": "עדכן רשומה", + "UPDATE_EXTERNAL_SERVER": "עדכן שרת חיצוני", + "UPDATE_FIRMWARE": "עדכון קושחה", + "UPDATE_FIRMWARE_TYPE": "עדכון סוג קושחה", + "UPDATE_FIRMWARE_VERSION": "עדכון גרסת קושחה", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "עדכן רשומה של Forward Payload", + "UPDATE_GATEWAY": "עדכון Gateway", + "UPDATE_NODE": "עדכון צומת", + "UPDATE_OPERATION": "עדכון פעולה", + "UPDATE_RESOURCE": "עדכון משאב", + "UPDATE_RESOURCES_GROUP": "עדכון קבוצת משאבים", + "UPDATE_ROOM": "עדכון חדר", + "UPDATE_RULE": "עדכון כלל", + "UPDATE_SCRIPT": "עדכון סקריפט", + "UPDATE_SENSOR": "עדכון חיישן", + "UPDATE_SENSOR_VARIABLE": "עדכון משתנה חיישן", + "UPDATE_TEMPLATE": "עדכון תבנית", + "UPDATE_TIMER": "עדכון טיימר", + "UPDATE_UID_TAG_ENTRY": "עדכון רשומה ב UID", + "UPDATE_USER": "עדכון משתמש", + "UPDATE_VARIABLE": "עדכון משתנה", + "UPLOADED_ON": "הועלה בתאריך", + "UPLOAD_FIRMWARE": "העלה קושחה", + "UPPER": "עליון", + "UPPER_LIMIT": "גבול עליון", + "UP_TIME": "זמן עליה", + "URL": "URL", + "USE": "השתמש", + "USED": "שומש", + "USERNAME": "שם משתמש", + "USERS": "משתמשים", + "USERS_DETAIL": "פרטי משתמשים", + "USER_WORKING_DIRECTORY": "ספריית העבודה של המשתמש", + "USE_GLOBAL": "השתמש גלובלי", + "USE_INTERACTIVE_GUIDE_LINE": "השתמש בקו מנחה אינטראקטיבי", + "UTILITIES": "כלי עזר", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "רווח לא מאושר.", + "VALIDATION_ERROR_NUMBER": "הערך שהוכנס אינו מספר.", + "VALIDITY": "תוקף", + "VALUE": "ער", + "VALUE2": "ערך #2", + "VALUE3": "ערך #3", + "VARIABLES": "משתנים", + "VARIABLES_DETAIL": "פרטי המשתנים", + "VARIABLES_GRAPHICAL_VIEW": "תצוגה גרפית של המשתנים", + "VARIABLES_MAPPER": "ממפה משתנים", + "VARIABLES_REPOSITORY": "מאגר משתנים", + "VARIABLE_TYPES": "סוגי משתנים", + "VENDOR": "Vendor", + "VERSION": "גירסה", + "VERSIONS": "גירסאות", + "VERSION_ID": "מזהה גירסה", + "VERSION_KERNEL": "גירסה\\קרנל", + "VIEW_DETAILS": "הצג פרטים", + "VM_NAME": "שם VM", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "גירסה VM", + "WEBSOCKET_PORT": "פורט של Websocket", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "מיקום בדיסק של קובץ תמונה של יישומון", + "WRITE_API_KEY": "כתוב מפתח API", + "YEARS": "שנים", + "YES": "כן" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-hu_hu.json b/www/languages/mc_locale_gui-hu_hu.json new file mode 100644 index 0000000..22ce651 --- /dev/null +++ b/www/languages/mc_locale_gui-hu_hu.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 Óra", + "24_HOURS": "24 Óra", + "ABOUT": "Megközelítőleg", + "ACCESS": "Hozzáférés", + "ACCESS_TOKEN": "Hozzáférési Token", + "ACK": "Nyugtázás", + "ACKNOWLEDGE": "Nyugtáz", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Nyugtázási kérelem", + "ACK_RESPONSE": "Nyugtázási válasz", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Műveletek", + "ACTION_BOARD": "Action board", + "ACTIVE": "Aktív", + "ADD": "Add", + "ADD_AN_ENTRY": " Bejegyzés hozzáadása", + "ADD_EXTERNAL_SERVER": "Külső szerver hozzáadása", + "ADD_FIRMWARE": "Firmware hozzáadása", + "ADD_FIRMWARE_TYPE": "Firmware típus megadása", + "ADD_FIRMWARE_VERSION": "Firmware verzió megadása", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Gateway hozzáadása", + "ADD_GROUP": "Csoport hozzáadása", + "ADD_NEW_WIDGET": "Új Widget hozzáadása", + "ADD_NODE": "Jegyzet hozzáadás", + "ADD_OPERATION": "Művelet hozzáadás", + "ADD_RESOURCE": "Forrás hozzáadása", + "ADD_RESOURCES_GROUP": "Forrás csoport hozzáadása", + "ADD_ROLE": "Feladat hozzáadása", + "ADD_ROOM": "Szoba hozzáadása", + "ADD_RULE": "Szabály hozzáadása", + "ADD_SCRIPT": "Script hozzáadása", + "ADD_SENSOR": "Szenzor hozzáadása", + "ADD_TEMPLATE": "Template hozzáadása", + "ADD_TIMER": "Időzítő hozzáadása", + "ADD_UID_TAG_ENTRY": "UID tag hozzáadása", + "ADD_USER": "Felhasználó hozzáadása", + "ADD_VARIABLE": "Változó hozzáadása", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Utána", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architektúra", + "AREA": "Felület", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatikus biztonsági mentés beállítások", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Automatikusan generált", + "AVAILABLE_PROCESS": "Available Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Biztonsági mentés", + "BACKUPS_DETAIL": "Biztonsági mentés részletek", + "BACKUP_COMPLETED_SUCCESSFULLY": "Biztonsági mentés sikeres.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Biztonsági mentés hely", + "BACKUP_ON": "Biztonsági mentés be", + "BACKUP_SETTINGS": "Biztonsági mentés beállítások", + "BAR": "Sáv", + "BASIS": "Alap", + "BASIS_CLOSED": "Alap zárva", + "BASIS_OPEN": "Alap nyitva", + "BATTERY": "Elem", + "BATTERY_LEVEL": "Töltöttségi szint", + "BATTERY_USAGE": "Elem használat", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Gomb beállítások", + "CANCEL": "Mégsem", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "Client id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Szín", + "COMMAND": "Command", + "COMMITTED": "Foglalt", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Elfoglalt virtuális memória méret", + "CONDITION": "Feltétel", + "CONDITION_TYPE": "Feltétel típus", + "CONNECTION_DETAILS": "Kapcsolat részletek", + "CONTENT": "Tartalom", + "CONTINUE": "Folytatás", + "COUNT": "Count", + "COUNTER": "Számláló", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS fájlok", + "CURRENT": "Jelenlegi", + "CURRENT_PASSWORD": "Jelenlegi jelszó", + "CUSTOM_MESSAGE": "Egyedi üzenet", + "DAEMON": "Deamon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Kezelőpult", + "DASHBOARD_LIMIT": "Maximális kezelőpultok", + "DATA": "Adat", + "DATABASE": "Adatbázis", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Adatbázis típus", + "DATABASE_VERSION": "Adatbázis verzió", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Adat típus", + "DATA_UNAVAILABLE": "Nem érhető el adat!", + "DATE_PATTERN": "Adat minta", + "DATE_RANGE": "Adat intervallum", + "DAY": "Nap", + "DAYS": "Napok", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Alapértelmezett firmware", + "DEFAULT_TIME_RANGE": "Alapértelmezett idő intervallum", + "DELAY_TIME_IN_SECONDS": "Késleltetési idő másodpercben", + "DELETE": "Törlés", + "DELETE_DASHBOARD": "Kezelőpult törlés", + "DELETE_ITEMS": "Elem(ek) törlése", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Leírás", + "DESTINATION": "Destination", + "DESTINATION_ID": "Destination id", + "DETAILS": "Részletek", + "DEVICES": "Eszközök", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": "Kikapcsol", + "DISABLED": "Kikapcsolva", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Felfedez", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Szerkesztés", + "EDIT_DASHBOARD": "Kezelőpult szerkeztés", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "Enable", + "ENABLED": "Enabled", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Példa: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Példa: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Példa: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Szabad", + "FREQUENCY": "Frekvencia", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Teljes név", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS adat", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Csoportok", + "GROUP_NAME": "Csoport név", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Height", + "HIDE_MENU": "Menü elrejtés", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Órák", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "Invalid username or password!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Kulcs", + "KEY_FORMAT": "Kulcs fomátum", + "LANGUAGE": "Nyelv", + "LANGUAGE_VERSION": "Nyelv verzió", + "LAST_5_MINUTES": "Legutóbbi 5 perc", + "LAST_6_HOURS": "Legutóbbi 6 óra", + "LAST_12_HOURS": "Legutóbbi 12 Óra", + "LAST_DAY": "Legutóbbi nap", + "LAST_EXECUTION": "Legutóbbi végrehajtás", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Legutóbbi Óra", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Utoljára módosítva", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Utoljára láttuk", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Múlt hét", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Szint", + "LIBRARY_VERSION": "Könyvtár verzió", + "LINE": "Vonal", + "LINEAR": "Egyenes", + "LINE_CHART": "Vonal diagram", + "LOAD": "Tölt", + "LOADED": "Töltve", + "LOADING": "Töltés...", + "LOCATION": "Location", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Bejelentkezés", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Kijelentkezés", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Üzenet", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Üzenet típus", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "Percek", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "Soha", + "NEW": "New", + "NEW_DASHBOARD": "Új kezelőpult", + "NEW_PASSWORD": "Új jelszó", + "NEXT_EXECUTION": "Next execution", + "NO": "Nem", + "NODE": "Node", + "NODES": "Node-ok", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node Név", + "NODE_STATUS": "Node Státusz", + "NODE_TYPE": "Node Típus", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "KI", + "OFFSET": "Offset", + "ON": "BE", + "ONE_DAY_DATA": "Napi adat", + "ONE_HOUR_DATA": "Óránkénti adat", + "ONE_MINUTE_DATA": "Percenkénti adat", + "OPERATING_SYSTEM": "Operációs Rendszer", + "OPERATION": "Művelet", + "OPERATIONS": "Műveletek", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Jelszó", + "PATTERN": "Minta", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "csúcs", + "PERCENTAGE": "százalék", + "PERMISSION": "engedély", + "PHONE_NUMBERS": "Telefonszámok", + "PHONE_NUMBERS_COMMA_SEPARATED": "Telefon számok veszővel elválasztva", + "PHYSICAL_MEMORY": "Fizikai memória (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Mintavételezési frekvencia (perc)", + "PORT": "Port", + "PORT_NAME": "Port név", + "PRIORITY": "Prioritás", + "PRIVATE": "Privát", + "PRIVATE_KEY": "Privát kulcs", + "PROCESS_CPU": "CPU művelet", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil sikeresen frissítve", + "PROPERTIES": "Tulajdonságok", + "PUBLIC": "Nyilvános", + "PUBLIC_ACCESS": "Nyilvános hozzáférés", + "PUBLIC_KEY": "Nyilvános kulcs", + "PURGE": "Tisztítás", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "nyers adat", + "READ_ONLY": "Csak olvasható", + "REALTIME": "valós idejű", + "REBOOT": "Újraindítás", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Újraindítás", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Frissítés", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Újratöltés", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Visszaállítás", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Eredmény", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Szoba", + "ROOMS": "Szobák", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Szoba név", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Futtatás", + "RUNNING": "Fut...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Futtatás most", + "SAVE": "Mentés", + "SAVE_CHANGES": "Változtatások mentése", + "SAVING": "Mentés...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Keresés", + "SECONDS": "Másodperc", + "SELECT": "Kijelöl", + "SEND": "Küld", + "SENDING": "Küldés...", + "SEND_RAW_MESSAGE": "Nyers üzenet küldés", + "SENSOR": "Szenzor", + "SENSORS": "Szenzorok", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Szenzorok részletei", + "SENSOR_DETAILS": "Szenzor részletek", + "SENSOR_ID": "Szenzor id", + "SENSOR_NAME": "Szenzor név", + "SENSOR_TYPE": "Szenzor típus", + "SENSOR_VARIABLE": "Szenzor változó", + "SENSOR_VARIABLES": "Szenzor változók", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Szenzor változó típus", + "SERIAL_BAUD_RATE_EXAMPLE": "Példa: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Példa: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Példa: 120", + "SETTINGS": "Beállítások", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP kiszolgáló", + "SMTP_PASSWORD": "SMTP jelszó", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP felhasználói név", + "SOURCE": "Forrás", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Állapot", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Napkelte", + "SUNSET": "Napnyugta", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "Rendszer állapot", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Tesztelés...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Idő", + "TIMERS": "Időzítők", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Idő formátum", + "TIME_HH_MM_SS": "Idő(ÓÓ:pp:mm)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Kikapcsol", + "TURN_ON": "Bekapcsol", + "TWELVE_HOURS_DATA": "12 órányi adat", + "TWILIO": "Twilio", + "TYPE": "Típus", + "TYPES": "Típusok", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Fel", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Update user", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Használ", + "USED": "Használt", + "USERNAME": "Felhasználói név", + "USERS": "Felhasználók", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validity", + "VALUE": "Érték", + "VALUE2": "Érték #2", + "VALUE3": "Érték #3", + "VARIABLES": "Változók", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Változó típusok", + "VENDOR": "Eladó", + "VERSION": "Verzió", + "VERSIONS": "Verziók", + "VERSION_ID": "Verzió id", + "VERSION_KERNEL": "Verzió/Kernel", + "VIEW_DETAILS": "Részletek megtekintése", + "VM_NAME": "VM Név", + "VM_VENDOR": "VM Eladó", + "VM_VERSION": "VM Verzió", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Év", + "YES": "Igen" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-id_id.json b/www/languages/mc_locale_gui-id_id.json new file mode 100644 index 0000000..3054b98 --- /dev/null +++ b/www/languages/mc_locale_gui-id_id.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 jam", + "24_HOURS": "24 jam", + "ABOUT": "Tentang", + "ACCESS": "Akses", + "ACCESS_TOKEN": "Akses token", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack aktif", + "ACK_REQUEST": "Permintaan ack", + "ACK_RESPONSE": "Respon ack", + "ACK_WAIT_TIME": "Waktu tunggu ack", + "ACTIONS": "Aksi", + "ACTION_BOARD": "Papan aksi", + "ACTIVE": "Aktif", + "ADD": "Tambah", + "ADD_AN_ENTRY": "Tambah entri", + "ADD_EXTERNAL_SERVER": "Tambah server eksternal", + "ADD_FIRMWARE": "Tambah firmware", + "ADD_FIRMWARE_TYPE": "Tambah tipe firmware", + "ADD_FIRMWARE_VERSION": "Tambah versi firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Tambah entri forward payload", + "ADD_GATEWAY": "Tambah gateway", + "ADD_GROUP": "Tambah grup", + "ADD_NEW_WIDGET": "Tambah widget baru", + "ADD_NODE": "Tambah node", + "ADD_OPERATION": "Tambah operasi", + "ADD_RESOURCE": "Tambah resource", + "ADD_RESOURCES_GROUP": "Tambah grup resource", + "ADD_ROLE": "Tambah role", + "ADD_ROOM": "Tambah room", + "ADD_RULE": "Tambah rule", + "ADD_SCRIPT": "Tambah script", + "ADD_SENSOR": "Tambah sensor", + "ADD_TEMPLATE": "Tambah template", + "ADD_TIMER": "Tambah timer", + "ADD_UID_TAG_ENTRY": "Tambah entri tag UID ", + "ADD_USER": "Tambah user", + "ADD_VARIABLE": "Tambah variabel", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Setelah", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Frekuensi alive check (detik)", + "ALLOW_ANONYMOUS": "Ijinkan anonymous", + "ALPHABETICAL_KEY_CASE": "Huruf besar abjad", + "ANGULARJS_CUSTOM_CONTROLLERS": "Custom controller AngularJS", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Arsitektur", + "AREA": "Area", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Pengaturan backup otomatis", + "AUTORIZED_USER": "Authorized user", + "AUTO_GENERATE": "Generate otomatis", + "AVAILABLE_PROCESS": "Proses tersedia", + "AVERAGE_TIME": "Waktu rata-rata", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Detil backup", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup sukses.", + "BACKUP_EVERY": "Backup setiap", + "BACKUP_FILE_PREFIX": "Prefix file backup", + "BACKUP_LOCATION": "Lokasi backup", + "BACKUP_ON": "Backup aktif", + "BACKUP_SETTINGS": "Pengaturan backup", + "BAR": "Batang", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis tertutup", + "BASIS_OPEN": "Basis terbuka", + "BATTERY": "Baterai", + "BATTERY_LEVEL": "Level baterai", + "BATTERY_USAGE": "Penggunaan baterai", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Data biner", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blok", + "BLOCKS_SENT": "Blok terkirim", + "BOTTOM": "Bawah", + "BROKET_HOST": "Host broker", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundel", + "BUTTON_SETTINGS": "Pengaturan tombol:", + "CANCEL": "Batal", + "CARDINAL": "Kardinal", + "CARDINAL_CLOSED": "Kardinal tertutup", + "CARDINAL_OPEN": "Kardinal terbuka", + "CHANNEL_TAGS": "Channel tag", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tag terpisahkan koma", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Detil Class Loading", + "CLIENT_ID": "Id Klien", + "CLONE": "Klon", + "COLLECTION_COUNT": "Jumlah Collection", + "COLLECTION_TIME": "Waktu collection", + "COLOR": "Warna", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Ukuran Committed Virtual Memori", + "CONDITION": "Kondisi", + "CONDITION_TYPE": "Tipe kondisi", + "CONNECTION_DETAILS": "Detil koneksi", + "CONTENT": "Isi", + "CONTINUE": "Lanjutkan", + "COUNT": "Jumlah", + "COUNTER": "Penghitung", + "CRC": "CRC", + "CRON_EXPRESSION": "Ekspresi Cron", + "CSS_FILES": "File CSS", + "CURRENT": "Arus", + "CURRENT_PASSWORD": "Password saat ini", + "CUSTOM_MESSAGE": "Pesan custom", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Tipe dampening", + "DASHBOARDS": "Dashboard", + "DASHBOARD_LIMIT": "Maksimum dashboard yang diijinkan", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Revisi schema database", + "DATABASE_TYPE": "Tipe database", + "DATABASE_VERSION": "Versi database", + "DATA_RETENTION_SETTINGS": "Pengaturan retensi data", + "DATA_TYPE": "Tipe data", + "DATA_UNAVAILABLE": "Data tidak tersedia", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Day", + "DAYS": "Days", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "Delete", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Delete item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Description", + "DESTINATION": "Destination", + "DESTINATION_ID": "Destination id", + "DETAILS": "Details", + "DEVICES": "Devices", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": "Disable", + "DISABLED": "Disabled", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Edit", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "Enable", + "ENABLED": "Enabled", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Example: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Example: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Example: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Free", + "FREQUENCY": "Frequency", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Full name", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Groups", + "GROUP_NAME": "Group name", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Height", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Hours", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "Invalid username or password!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Language", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Last 6 hours", + "LAST_12_HOURS": "Last 12 hours", + "LAST_DAY": "Last day", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Last hour", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Last modified", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Last seen", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Last week", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Library version", + "LINE": "Line", + "LINEAR": "Linear", + "LINE_CHART": "Line chart", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "Loading...", + "LOCATION": "Location", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Log In", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Message", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Message type", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "Minutes", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "Never", + "NEW": "New", + "NEW_DASHBOARD": "New dashboard", + "NEW_PASSWORD": "New password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node name", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating System", + "OPERATION": "Operation", + "OPERATIONS": "Operations", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Password", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Percentage", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Phone numbers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical Memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Port name", + "PRIORITY": "Priority", + "PRIVATE": "Private", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Profile", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Refresh", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Room", + "ROOMS": "Rooms", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Room name", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "Save", + "SAVE_CHANGES": "Save changes", + "SAVING": "Saving...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Seconds", + "SELECT": "Select", + "SEND": "Send", + "SENDING": "Sending...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensor details", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor name", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variables", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "Example: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Example: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Example: 120", + "SETTINGS": "Settings", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Sunrise", + "SUNSET": "Sunset", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Time", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Turn OFF", + "TURN_ON": "Turn ON", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Up", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Update user", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "Used", + "USERNAME": "Username", + "USERS": "Users", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validity", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Variable types", + "VENDOR": "Vendor", + "VERSION": "Version", + "VERSIONS": "Versions", + "VERSION_ID": "Version id", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "View details", + "VM_NAME": "VM Name", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "VM Version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Years", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-it_it.json b/www/languages/mc_locale_gui-it_it.json new file mode 100644 index 0000000..51c2131 --- /dev/null +++ b/www/languages/mc_locale_gui-it_it.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 ore", + "24_HOURS": "24 ore", + "ABOUT": "Info", + "ACCESS": "Accesso", + "ACCESS_TOKEN": "Token di accesso", + "ACK": "Ack", + "ACKNOWLEDGE": "Accettare", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Richiesta ack", + "ACK_RESPONSE": "Risposta Ack", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Azioni", + "ACTION_BOARD": "Pannello Comandi", + "ACTIVE": "Attivo", + "ADD": "Aggiungi", + "ADD_AN_ENTRY": "Aggiungi una voce", + "ADD_EXTERNAL_SERVER": "Aggiungi server esterno", + "ADD_FIRMWARE": "Aggiungi firmware", + "ADD_FIRMWARE_TYPE": "Aggiungi tipo di firmware", + "ADD_FIRMWARE_VERSION": "Aggiungi versione firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Aggiungi voce payload", + "ADD_GATEWAY": "Aggiungi gateway", + "ADD_GROUP": "Aggiungi gruppo", + "ADD_NEW_WIDGET": "Aggiungi widget", + "ADD_NODE": "Aggiungi nodo", + "ADD_OPERATION": "Aggiungi operazione", + "ADD_RESOURCE": "Aggiungi risorsa", + "ADD_RESOURCES_GROUP": "Aggiungi gruppo risorse", + "ADD_ROLE": "Aggiungi ruolo", + "ADD_ROOM": "Aggiungi stanza", + "ADD_RULE": "Aggiungi regola", + "ADD_SCRIPT": "Aggiungi script", + "ADD_SENSOR": "Aggiungi sensore", + "ADD_TEMPLATE": "Aggiungi template", + "ADD_TIMER": "Aggiungi timer", + "ADD_UID_TAG_ENTRY": "Aggiungi voce tag UID", + "ADD_USER": "Aggiungi utente", + "ADD_VARIABLE": "Aggiungi variabile", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Dopo", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Frequenza di controllo in vita (secondi)", + "ALLOW_ANONYMOUS": "Consenti anonimi", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "controller personalizzato angularJS", + "APP.DESCRIPTION": "Il Controller Open Source", + "APP.LOG_IN_TO_MESSAGE": "ACCEDI A MYCONTROLLER.ORG ", + "APP.WELCOME_MESSAGE": "Benvenuto su MyController.org ! Il Controller Open Source", + "ARCHITECTURE": "Architettura", + "AREA": "Area", + "AUTH_ID_SID": "Autenticazione id/sid", + "AUTH_TOKEN": "gettone di Autenticazione", + "AUTOMATIC_BACKUP_SETTINGS": "Impostazioni di salvataggio automatico", + "AUTORIZED_USER": "Utente autorizzato", + "AUTO_GENERATE": "Genera automaticamente", + "AVAILABLE_PROCESS": "Processo disponibile", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Dettaglio backup", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completato correttamente.", + "BACKUP_EVERY": "Backup ogni", + "BACKUP_FILE_PREFIX": "Prefisso file backup", + "BACKUP_LOCATION": "Ubicazione backup", + "BACKUP_ON": "Backup su", + "BACKUP_SETTINGS": "Impostazioni backup", + "BAR": "Barra", + "BASIS": "Base", + "BASIS_CLOSED": "Base chiusa", + "BASIS_OPEN": "Base aperta", + "BATTERY": "Batteria", + "BATTERY_LEVEL": "Livello batteria", + "BATTERY_USAGE": "Utilizzo batteria", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Dati binari", + "BIND_ADDRESS": "Indirizzo binario", + "BLOCKS": "Blocchi", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Parte inferiore", + "BROKET_HOST": "Host Broker", + "BUILD_JDK": "build JDK", + "BUILD_TOOL": "Strumento build", + "BUILT_ON": "Costruita su", + "BUNDLE": "Pacchetto", + "BUTTON_SETTINGS": "Pulsante impostazioni:", + "CANCEL": "Annulla", + "CARDINAL": "Cardinale", + "CARDINAL_CLOSED": "Cardinale chiuso", + "CARDINAL_OPEN": "Cardinale aperto", + "CHANNEL_TAGS": "Canale tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Canale tags separati da virgola", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Dettagli caricamento classe", + "CLIENT_ID": "Id del Client", + "CLONE": "Clona", + "COLLECTION_COUNT": "Conteggio collezione", + "COLLECTION_TIME": "Ora conteggio", + "COLOR": "Colore", + "COMMAND": "Command", + "COMMITTED": "Impegnato", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Dimensioni di memoria virtuale impegnata", + "CONDITION": "Condizione", + "CONDITION_TYPE": "Tipo condizione", + "CONNECTION_DETAILS": "Dettagli connessione", + "CONTENT": "Contenuto", + "CONTINUE": "continua", + "COUNT": "Conteggio", + "COUNTER": "Contatore", + "CRC": "CRC", + "CRON_EXPRESSION": "Espressione Cron", + "CSS_FILES": "Files CSS", + "CURRENT": "Corrente", + "CURRENT_PASSWORD": "Password corrente", + "CUSTOM_MESSAGE": "Messaggio personalizzato", + "DAEMON": "Demone", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Smorzamento", + "DAMPENING_TYPE": "Tipo smorzamento", + "DASHBOARDS": "Cruscotto", + "DASHBOARD_LIMIT": "Cruscotti massimi consentiti", + "DATA": "Dati", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Revisione schema Database", + "DATABASE_TYPE": "Tipo database", + "DATABASE_VERSION": "Versione database", + "DATA_RETENTION_SETTINGS": "Impostazioni ritenzione dati", + "DATA_TYPE": "Tipo di dati", + "DATA_UNAVAILABLE": "Dati non disponibili!", + "DATE_PATTERN": "Modello di data", + "DATE_RANGE": "Intervallo date", + "DAY": "Giorno", + "DAYS": "Giorni", + "DEFAULT": "Predefinito", + "DEFAULT_FIRMWARE": "Firmware predefinito", + "DEFAULT_TIME_RANGE": "Intervallo ora predefinito", + "DELAY_TIME_IN_SECONDS": "Intervallo di tempo in secondi", + "DELETE": "Cancella", + "DELETE_DASHBOARD": "Cancella cruscotto", + "DELETE_ITEMS": "Cancella oggetto(i)", + "DELETE_MESSAGE": "Stai per cancellare l'oggetto(i) selezionato(i)
Il processo di cancellerà ogni traccia dell'oggetto(i)!
Fai click su 'Elimina' per procedere.", + "DESCRIPTION": "Descrizione", + "DESTINATION": "Destinazione", + "DESTINATION_ID": "Id di destinazione", + "DETAILS": "Dettagli", + "DEVICES": "Dispositivi", + "DEVICE_IDENS": "Iden(s) dispositivo", + "DEVICE_IDENS_COMMA_SEPARATED": "Idens dispositivo separati da virgola", + "DIRECTION": "Direzione", + "DISABLE": "Disabilita", + "DISABLED": "Disabilitato", + "DISABLE_WHEN_TRIGGER": "Disabilita con trigger", + "DISCOVER": "Scoprire", + "DISCOVER_INITIATED_SUCCESSFULLY": "Esplorazione iniziata correttamente", + "DISPLAY_NAMES": "Visualizza nomi", + "DOCUMENTS": "Documenti", + "DOUBLE": "Doppio", + "DOWN": "Giù", + "DRIVER": "Driver", + "EDIT": "Modifica", + "EDIT_DASHBOARD": "Modifica cruscotto", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Indirizzi Email separati da virgola", + "ENABLE": "Abilita", + "ENABLED": "Abilitato", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Abilita predefinito su no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Quando questa opzione è abilitata, usa il firmware predefinito, quando il firmware richiesto non è disponibile nel file system", + "ENABLE_EDIT_MODE": "Abilita modalità modifica", + "ENABLE_MIN_MAX": "Abilita min/max", + "ENABLE_SSL": "Abilita SSL", + "ENABLE_UNIQUE_NAME": "Abilita nome unico", + "ERASE_CONFIGURATION": "Cancella configurazione", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Sei sicuro di eliminare completamente la configurazione degli oggetto selezionati
Fai click su 'Elimina configurazione' per procedere.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Elimina configurazione", + "ERASE_CONFIGURATION_INITIATED": "Elimina configurazione iniziata per gli oggetti selezionati", + "ERROR_ITEMS_NOT_AVAILABLE": "Gli oggetti selezionati non sono disponibili", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Esempio: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Esempio: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Esempio: 5003", + "EUI": "EUI", + "EVALUATIONS": "Valutazioni", + "EXECUTE_DISCOVER_INTERVAL": "Intervallo di esecuzione esplorazione", + "EXTENSION": "Estensione", + "EXTENSIONS": "Estensioni", + "EXTERNAL_SERVERS": "Servers esterni", + "EXTERNAL_SERVERS_DETAIL": "Dettaglio servers esterni", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "Nome file", + "FILE_SIZE": "Dimensione file", + "FILTER_BY_BLOCKS": "Filtra per Blocchi", + "FILTER_BY_CONDITION_TYPE": "Filtra per tipo condizione", + "FILTER_BY_DAMPENING_TYPE": "Filtra per tipo smorzamento", + "FILTER_BY_DESCRIPTION": "Filtra per descrizione", + "FILTER_BY_DESTINATION_ID": "Filtra per id di destinazione", + "FILTER_BY_DIRECTION": "Filtra per direzione", + "FILTER_BY_EMAIL": "Filtra per Email", + "FILTER_BY_ENABLED": "Filtra per Abilitati", + "FILTER_BY_EUI": "Filtra per EUI", + "FILTER_BY_EXTENSION": "Filtra per estensione", + "FILTER_BY_FILE_NAME": "Filtra per Nome file", + "FILTER_BY_FREQUENCY": "Filtra per Frequenza", + "FILTER_BY_FULL_NAME": "Filtra per Nome completo", + "FILTER_BY_KEY": "Filtra per Chiave", + "FILTER_BY_LEVEL": "Filtra per Livello", + "FILTER_BY_LIBRARY_VERSION": "Filtra per versione Libreria", + "FILTER_BY_MESSAGE": "Filtra per Messaggio", + "FILTER_BY_MESSGAE_TYPE": "Filtra per Messaggio", + "FILTER_BY_NAME": "Filtra per Nome", + "FILTER_BY_NETWORK_TYPE": "Filtra per tipo di Rete", + "FILTER_BY_NODE_ID": "Filtra per id Nodo", + "FILTER_BY_OPERATION": "Filtra per Operazione", + "FILTER_BY_OPERATION_TYPE": "Filtra per tipo Operazione", + "FILTER_BY_PAYLOAD_OFF": "Filtra per Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filtra per Payload ON", + "FILTER_BY_PERMISSION": "Filtra per Permesso", + "FILTER_BY_PUBLIC_ACCESS": "Filtra per accesso Pubblico", + "FILTER_BY_RESOURCE": "Filtra per Risorsa", + "FILTER_BY_RESOURCE_TYPE": "Filtra per tipo Risorsa", + "FILTER_BY_SENSOR_ID": "Filtra per id Sensore", + "FILTER_BY_SENSOR_NAME": "Filtra per nome Sensore", + "FILTER_BY_SENSOR_TYPE": "Filtra per Tipo sensore", + "FILTER_BY_SENSOR_VARIABLES": "Filtra per Variabili Sensore", + "FILTER_BY_SOURCE_ID": "Filtra per ID Sorgente", + "FILTER_BY_STATUS": "Filtra per Stato", + "FILTER_BY_STATUS_MESSAGE": "Filtra per Messaggio di Stato", + "FILTER_BY_TYPE": "Filtra per Tipo", + "FILTER_BY_TYPE_ID": "Filtra per ID Tipo", + "FILTER_BY_UID": "Filtra per UID", + "FILTER_BY_USERNAME": "Filtra per Username", + "FILTER_BY_VALUE": "Filtra per Valore", + "FILTER_BY_VALUE2": "Filtra per Valore #2", + "FILTER_BY_VALUE3": "Filtra per Valore #3", + "FILTER_BY_VARIABLE_TYPES": "Filtra per Tipo Variabile", + "FILTER_BY_VERSION": "Filtra per Versione", + "FILTER_BY_VERSION_ID": "Filtra per ID Versione", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Dettaglio firmware", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Dettaglio tipi di firmware", + "FIRMWARE_TYPE_NAME": "Nome tipo firmware", + "FIRMWARE_UPLOAD_INITIATED": "Caricamento firmware iniziato per gli oggetti selezionati", + "FIRMWARE_VERSION": "Versione firmware", + "FIRMWARE_VERSIONS_DETAIL": "Dettaglio versioni firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Dati di cinque minuti", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Inoltra payload", + "FORWARD_PAYLOADS_DETAIL": "Inoltra dettaglio payloads", + "FREE": "Libero", + "FREQUENCY": "Frequenza", + "FROM": "Da", + "FROM_ADDRESS": "Da indirizzo", + "FROM_PHONE_NUMBER": "Da numero di telefono", + "FULL_NAME": "Nome Completo", + "FULL_PATH": "Percorso completo", + "GARBAGE_COLLECTOR": "Gestore pulizia", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Dettaglio gateways", + "GATEWAY_DETAILS": "Dettagli gateways", + "GATEWAY_NAME": "Nome gateway", + "GATEWAY_TYPE": "Tipo gateway", + "GITTER_MESSAGING": "Messaggistica Gitter", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Tempo di refresh pagina", + "GPS_DATA": "Dati GPS", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Concedi accesso alle risorse dei figli (in ruoli)", + "GRAPHS_SETTINGS": "Impostazioni Grafici", + "GRAPH_SETTINGS": "Impostazioni Grafico", + "GROUPS": "Gruppi", + "GROUP_NAME": "Nome Gruppo", + "HEAP_MEMORY": "Memoria Heap", + "HEIGHT": "Altezza", + "HIDE_MENU": "Nascondi Menu", + "HISTORICAL_BAR_CHART": "Grafico a barre storico", + "HOST_NAME": "Nome host", + "HOURS": "Ore", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Headers addizionali HTML", + "HTTP_PORT": "Porta HTTP", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignora case", + "IGNORE_DUPLICATE": "Ignora duplicato", + "IMPERIAL": "Imperiale", + "INCLUDE_THRESHOLD_HIGH": "Soglia alta inclusione", + "INCLUDE_THRESHOLD_LOW": "Soglia bassa inclusione", + "INDIVIDUAL_SETTINGS": "Impostazioni individuali", + "INIT": "Inizia", + "INTERPOLATE_TYPE": "Tipo interpolazione", + "INTERVAL": "Intervallo", + "INTERVAL_IN_SECONDS": "Intervallo in secondi", + "INVALID_USERNAME_OR_PASSWORD": "Username o password non validi!", + "IN_RANGE": "Nell' intervallo", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Oggetto(o) cancellato correttamente.", + "ITEMS_DISABLED_SUCCESSFULLY": "Oggetto(i) disabilitato correttamente", + "ITEMS_ENABLED_SUCCESSFULLY": "Oggetto(o) abilitato correttamente", + "ITEMS_PER_ROW": "Oggetti per riga", + "ITEM_CREATED_SUCCESSFULLY": "Oggetto creato correttamente", + "ITEM_UPDATED_SUCCESSFULLY": "Oggetto aggiornato correttamente", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendori Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Specifiche Java Virtual Machine", + "JSON": "JSON", + "KEY": "Chiave", + "KEY_FORMAT": "Formato chiave", + "LANGUAGE": "Lingua", + "LANGUAGE_VERSION": "Versione lingua", + "LAST_5_MINUTES": "Ultimi 5 minuti", + "LAST_6_HOURS": "Ultime 6 ore", + "LAST_12_HOURS": "Ultime 12 ore", + "LAST_DAY": "Ultimo giorno", + "LAST_EXECUTION": "Ultima esecuzione", + "LAST_FIRED": "Ultimo sparato", + "LAST_GARBAGECOLLECTOR_DURATION": "Durata ultimo GC", + "LAST_HOUR": "Ultima ora", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Ultima modifica", + "LAST_MONTH": "Ultimo mese", + "LAST_SEEN": "Ultima volta visto", + "LAST_TRIGGER": "Ultimo trigger", + "LAST_WEEK": "Ultima settimana", + "LAST_YEAR": "Ultimo anno", + "LATITUDE": "Latitudine", + "LEFT": "Sinistra", + "LEVEL": "Livello", + "LIBRARY_VERSION": "Versione libreria", + "LINE": "Linea", + "LINEAR": "Lineare", + "LINE_CHART": "Linea grafico", + "LOAD": "Carica", + "LOADED": "Caricato", + "LOADING": "Caricamento...", + "LOCATION": "Luogo", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Nome luogo", + "LOGIN_MESSAGE": "Messaggio di login", + "LOGS": "Logs", + "LOG_DIRECTION": "Direzione Log", + "LOG_IN": "Log in", + "LOG_LEVEL": "Livello Log", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitudine", + "LOWER": "Inferiore", + "MANAGEMENT_SPECIFICATION_VERSION": "Versione Management Specification", + "MARGIN": "Margine", + "MARKDOWN": "Markdown", + "MAX": "Massimo", + "MAXIMUM_BLOCK_SIZE": "Dimensioni massime blocco", + "MEASUREMENT": "Misurazione", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Messaggio", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Messaggio contiene", + "MESSAGE_TYPE": "Tipo messaggio", + "METRIC": "Metrica", + "METRICS": "Metriche", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Motore metrica", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "Stai per cambiare le impostazioni del motore di back-up (metriche). 1 Questa azione provoca la perdita di dati. Leggere il manuale dell'utente per ulteriori dettagli. 2 MyController non importerà / esporta i dati metrici quando si cambia il motore metrico!", + "METRIC_TYPE": "Tipo metrica", + "MILLISECONDS": "Millisecondi", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Altezza minima", + "MINIMUM_WIDTH": "Larghezza minima", + "MINUTES": "Minuti", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modifica sensore e mappatura variabili", + "MONOTONE": "Monotono", + "MQTT_BROKER": "Broker MQTT", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Stai per modificare le impostazioni del broker MQTT.
Il servizio broker MQTT si riavvierà con le nuove impostazione.", + "MQTT_BROKER_EDIT_DIALOG": "Impostazioni broker MQTT", + "MQTT_BROKER_HOST_EXAMPLE": "Esempio: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Esempio: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Esempio: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Esempio: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Log server MyController ", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nome", + "NETWORK": "Rete", + "NETWORK_TYPE": "Tipo rete", + "NEVER": "Più nuovo", + "NEW": "Nuovo", + "NEW_DASHBOARD": "Nuovo cruscotto", + "NEW_PASSWORD": "Nuova password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Nodo", + "NODES": "Nodi", + "NODES_ALIVE_CHECK_INTERVAL": "Intervallo di verifica vita nodo", + "NODES_DETAIL": "Dettaglio nodi", + "NODE_DETAILS": "Dettagli nodo", + "NODE_EUI": "Nodo EUI", + "NODE_ID": "Id Nodo", + "NODE_NAME": "Nome nodo", + "NODE_STATUS": "Stato nodo", + "NODE_TYPE": "Tipo nodo", + "NON_HEAP_MEMORY": "Memoria non heap", + "NOTHING_SELECTED": "Nessuno selezionato", + "NOTIFICATIONS": "Notifiche", + "NOT_SET": "Non impostato", + "NO_ACK": "Non ack", + "NO_BACKUPS_SETUP": "Nessun backup impostato", + "NO_DATA_AVAILABLE": "Nessun dato disponibile", + "NO_EXTERNAL_SERVERS_SETUP": "Non ci sono servers esterni impostati", + "NO_FIRMWARES_SETUP": "Non ci sono firmware impostati", + "NO_FIRMWARE_TYPES_SETUP": "Non ci sono tipi di firmware impostati", + "NO_FIRMWARE_VERSIONS_SETUP": "Non ci sono versioni di firmware impostati", + "NO_FORWARD_PAYLOADS_SETUP": "Non ci sono inoltri di payload impostati", + "NO_GATEWAYS_SETUP": "Non ci sono gateways impostati", + "NO_ITEMS_IN_FILTER": "Oops! Nessun risultato. Modifica la tua query.", + "NO_ITEMS_SETUP": "Non ci sono oggetti impostati.", + "NO_LOGS_AVAILABLE": "Non ci sono logs disponibili", + "NO_NODES_SETUP": "Non ci sono nodi impostati", + "NO_OPERATIONS_SETUP": "Non ci sono operazioni impostate", + "NO_RESOURCES_DATA_SETUP": "Non ci sono dati di risorse impostati", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Non ci sono risorse mappate con questo gruppo", + "NO_RESOURCE_GROUPS_SETUP": "Non ci sono gruppi risorse impostati", + "NO_ROOMS_SETUP": "Non ci sono stanze impostate", + "NO_RULES_SETUP": "Non ci sono sono regole impostate", + "NO_SCRIPTS_SETUP": "Non ci sono scripts impostati", + "NO_SENSORS_SETUP": "Non ci sono sensori impostati", + "NO_TEMPLATES_SETUP": "Non ci sono templates impostati", + "NO_TIMERS_SETUP": "Non ci sono timers impostati", + "NO_UID_TAGS_SETUP": "Non ci sono tags UID impostati", + "NO_VARIABLES_SETUP": "Non ci sono variabili impostate", + "OCCURRENCES": "Occorrenze", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "Dati un giorno", + "ONE_HOUR_DATA": "Dati Dati un ora", + "ONE_MINUTE_DATA": "Dati un minuto", + "OPERATING_SYSTEM": "Sistema operativo", + "OPERATION": "Operazione", + "OPERATIONS": "Operazioni", + "OPERATIONS_DETAIL": "Dettagli operazioni", + "OPERATION_NAME": "Nome operazioni", + "OPERATION_TYPE": "Tipo operazione", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Altri", + "PARENT": "Genitore", + "PARENT_NODE_EUI": "Nodo EUI genitore", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Password", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / ritardo", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Picco", + "PERCENTAGE": "Percentuale", + "PERMISSION": "Permesso", + "PHONE_NUMBERS": "Numeri di telefono", + "PHONE_NUMBERS_COMMA_SEPARATED": "Numeri di telefono separati da virgole", + "PHYSICAL_MEMORY": "Memoria fisica (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Frequenza Poll (minuti)", + "PORT": "Porta", + "PORT_NAME": "Nome porta", + "PRIORITY": "Priorità", + "PRIVATE": "Privato", + "PRIVATE_KEY": "Chiave privata", + "PROCESS_CPU": "Processo CPU", + "PROFILE": "Profilo", + "PROFILE_UPDATED_SUCCESSFULLY": "Profilo aggiornato correttamente", + "PROPERTIES": "Proprietà", + "PUBLIC": "Pubblico", + "PUBLIC_ACCESS": "Accesso pubblico", + "PUBLIC_KEY": "Chiave pubblica", + "PURGE": "Elimina definitivamente", + "PURGE_BEFORE": "Elimina definitivamente prima", + "PURGE_DONE_SUCCESSFULLY": "Eliminazione definitiva effettuata correttamente", + "PURGE_EXISTING_DATA": "Elimina definitivamente i dati esistenti", + "PURGE_RESOURCES_LOGS": "Elimina definitivamente logs risorse", + "PURGE_SENSOR_VARIABLE": "Elimina definitivamente variabile sensore", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ATTENZIONE: Se non selezioni un parametro, questo processo cancellerà tutto.", + "PURGING": "Eliminazione definitiva in corso", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Una volta al massimo (0)", + "QOS_1": "Almeno una volta (1)", + "QOS_2": "Esattamente una volta (2)", + "RAW_DATA": "Dati raw", + "READ_ONLY": "Sola lettura", + "REALTIME": "Tempo reale", + "REBOOT": "Riavvia", + "REBOOT_CONFIRMATION_MESSAGE": "Stai per riavviare l'oggetto selezionato
Clicca su 'Riavvia' per procedere", + "REBOOT_CONFIRMATION_TITLE": "Riavvia", + "REBOOT_INITIATED": "Riavvio iniziato per gli oggetto selezionato", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Limite records", + "REFRESH": "Aggiorna", + "REFRESH_NODES_INFO": "Aggiorna info nodi", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Aggiornamento info nodi' iniziato correttamente", + "REFRESH_TIME_SECONDS": "Tempo di aggiornamento (secondi)", + "REGISTER_NODES_AUTOMATICALLY": "Registra nodi automaticamente", + "REGISTRATION_STATUS": "Stato registrazione", + "RELEASES": "Rilasci", + "RELOAD": "Ricarica", + "RELOAD_INITIATED_SUCCESSFULLY": "Ricarica iniziata correttamente", + "RESOURCE": "Risorsa", + "RESOURCES": "Risorse", + "RESOURCES_DATA": "Dati risorse", + "RESOURCES_DATA_DETAIL": "Dettaglio dati risorse", + "RESOURCES_GROUPS": "Gruppi risorse", + "RESOURCES_LOGS": "Logs risorse", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Dettaglio log risorse", + "RESOURCES_LOG_LEVEL": "Livello logs risorse", + "RESOURCES_LOG_RETENTION_DURATION": "Durata ritenzione log risorse", + "RESOURCE_GROUPS_DETAIL": "Dettaglio gruppi risorse", + "RESOURCE_GROUPS_MAPS_DETAIL": "Dettaglio mappa gruppi risorse", + "RESOURCE_GROUPS_TURNED_OFF": "Gruppi risorsa OFF", + "RESOURCE_GROUPS_TURNED_ON": "Gruppi risorsa ON", + "RESOURCE_GROUP_TURNED_OFF": "Gruppo risorsa OFF", + "RESOURCE_GROUP_TURNED_ON": "Gruppo risorsa ON", + "RESOURCE_TYPE": "Tipo risorsa", + "RESTORE": "Ripristino", + "RESTORE_CONFIRMATION_MESSAGE": "Stai per ripristinare il sistema a '{{name}}.
Il ripristino rimuoverà i correnti dati/configurazione completamente il il sistema si porrà nello stato '{{name}}!
Clicca su 'Ripristina' per procedere.
NOTA: Dopo il ripristino devi avviare il server manualmente.", + "RESTORE_CONFIRMATION_TITLE": "ripristino sistema a '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Ripristino iniziato correttamente", + "RESULT": "Risultato", + "RETAIN_MAX": "Mantieni il massimo #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Stai cambiando le impostazioni di ritenzione dei dati metrici.
Quest'azione può provocare perdita di dati. Leggere il manuale utente per ulteriori dettagli.
E' altamente consigliabile di effettuare un backup prima di procedere!", + "RETENTION_DIALOG_TITLE": "Leggi attentamente prima di andare avanti", + "RE_ENABLE": "Riabilita", + "RIGHT": "Destra", + "ROLES": "Ruoli", + "ROLES_DETAIL": "Dettaglio ruoli", + "ROOM": "Stanza", + "ROOMS": "Stanze", + "ROOMS_DETAIL": "Dettaglio stanze", + "ROOM_NAME": "Nome stanza", + "RULES": "Regole", + "RULES_DETAIL": "Dettaglio regole", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nome regola", + "RUN": "Esegui", + "RUNNING": "Esecuzione in corso...", + "RUN_BACKUP": "Esegui backup", + "RUN_GARBAGE_COLLECTION": "Esegui garbage collection", + "RUN_NOW": "Esegui ora", + "SAVE": "Salva", + "SAVE_CHANGES": "Salva cambiamenti", + "SAVING": "Salvataggio in corso...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Dettaglio script", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Motori scripts", + "SCRIPT_FILES": "Files scrip", + "SEARCH": "Cerca", + "SECONDS": "Secondi", + "SELECT": "Seleziona", + "SEND": "Invia", + "SENDING": "Invio in corso...", + "SEND_RAW_MESSAGE": "Invia messaggio raw", + "SENSOR": "Sensore", + "SENSORS": "Sensori", + "SENSORS_ACTION": "Azione sensori", + "SENSORS_AND_VARIABLES_MAPPING": "Mappatura sensori e variabili", + "SENSORS_DETAIL": "Dettaglio sensori", + "SENSOR_DETAILS": "Dettaglio sensore", + "SENSOR_ID": "Id sensore", + "SENSOR_NAME": "Nome sensore", + "SENSOR_TYPE": "Tipo sensore", + "SENSOR_VARIABLE": "Variabile sensore", + "SENSOR_VARIABLES": "Variabili sensori", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Tipo variabile sensore", + "SERIAL_BAUD_RATE_EXAMPLE": "Esempio: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Esempio: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Esempio: 120", + "SETTINGS": "Impostazioni", + "SHOW_ICON": "Mostra icona", + "SHOW_LEGENDS": "Mostra legenda", + "SHOW_MENU": "Mostra menu", + "SIX_HOURS_DATA": "Dati sei ore", + "SMART_SLEEP_ENABLED": "Abilita smart sleep", + "SMS": "SMS", + "SMTP_HOST": "host SMTP", + "SMTP_PASSWORD": "Password SMTP", + "SMTP_PORT": "Porta SMTP", + "SMTP_USERNAME": "Username SMTP", + "SOURCE": "Sorgente", + "SOURCE_CODE": "Codice sorgente", + "SOURCE_ID": "Id sorgente", + "SPECIFICATION_VENDOR": "Vendor specs", + "SPECIFICATION_VERSION": "Version specs", + "STACKED_AREA_CHART": "Area Grafico a Pila", + "STATION_ID": "Id stazione", + "STATION_PASSWORD": "Password stazione", + "STATISTICS": "Statistics", + "STATUS": "Stato", + "STATUS_MESSAGE": "Messaggio di stato", + "STATUS_SINCE": "Stato dal ", + "STEP_AFTER": "Passo successivo", + "STEP_BEFORE": "Passo precedente", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Oggetto", + "SUB_TYPE": "Sottotipo", + "SUNRISE": "Alba", + "SUNSET": "Tramonto", + "SUPPORT": "Supporto", + "SWAP": "Swap", + "SWAP_SPACE": "Spazio swap", + "SYNTAX_ERROR": "Errore sintassi", + "SYSTEM": "Sistema", + "SYSTEM_CPU_LOAD": "Carico CPU sistema", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Carico medio sistema", + "SYSTEM_STATUS": "Stato sistema", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Stai cercando di aggiornare le configurazioni di un 'Sensor variable'.
Aggiornandole verrà modificato il 'Metric type', tutto i dati esistenti saranno rimossi da 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Aggiorna configurazioni 'Variabile Sensore'", + "TABLE_ROWS_LIMIT": "Limite righe tabella", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Dettaglio templates", + "TEMPLATE_BINDINGS": "Tempalte bindings", + "TENANT": "Locatario", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connessione", + "TEXT": "Text", + "THREADS_COUNT": "Conteggio threads", + "THRESHOLD_VALUE": "Valore soglia", + "THRESHOLD_VALUE_HIGH": "Valore alto di soglia", + "THRESHOLD_VALUE_LOW": "Valore basso di soglia", + "TIME": "Orario", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Dettaglio timers", + "TIMER_NAME": "Nome timer", + "TIMER_TYPE": "Tipo timer", + "TIME_FORMAT": "Formato ora", + "TIME_HH_MM_SS": "Ora (HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Offset ora (HH:mm:ss)", + "TIME_RANGE": "Intervallo di tempo", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Titolo", + "TO": "a", + "TOKEN": "Token", + "TOP": "Sopra", + "TOPICS_PUBLISH": "Pubblica Topics", + "TOPICS_SUBSCRIBE": "Sottoscrivi topics", + "TOPIC_PUBLISH": "Pubblica Topic", + "TOPIC_SUBSCRIBE": "Sottoscrivi topic", + "TOPOLOGY": "Tipologia", + "TOTAL": "Totale", + "TOTAL_LOADED": "Totale caricato", + "TOTAL_STARTED": "Totale avviato", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger quando", + "TRUST_HOST": "Trust questo host", + "TURN_OFF": "Spegni ", + "TURN_ON": "Accendi", + "TWELVE_HOURS_DATA": "Dati dodici ore", + "TWILIO": "Twilio", + "TYPE": "Tipo", + "TYPES": "Tipi", + "TYPE_ID": "Id Tipo", + "UID": "UID", + "UID_TAGS": "Tags UID", + "UID_TAGS_DETAIL": "Dettaglio tags UID", + "UNAVAILABLE": "Non disponibile", + "UNDO_CHANGES": "Annulla cambiamenti", + "UNIT": "Unità", + "UNITS": "Unità", + "UNITS_CONFIGURATION": "Configurazione unità", + "UNITS_METRICS_IMPERIAL": "Unità [Metrics/imperial]", + "UNLOADED": "Non caricato", + "UP": "Attivo", + "UPDATE": "Aggiorna", + "UPDATED_SUCCESSFULLY": "Aggiornato correttamente.", + "UPDATE_AN_ENTRY": "Aggiorna una voce", + "UPDATE_EXTERNAL_SERVER": "Aggiorna server esterno", + "UPDATE_FIRMWARE": "Aggiorna firmware", + "UPDATE_FIRMWARE_TYPE": "Aggiorna tipo di firmware", + "UPDATE_FIRMWARE_VERSION": "Aggiorna versione di firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Aggiorna voce di inoltro payload", + "UPDATE_GATEWAY": "Aggiorna gateway", + "UPDATE_NODE": "Aggiorna nodo", + "UPDATE_OPERATION": "Operazione di aggiornamento", + "UPDATE_RESOURCE": "Aggiorna risorsa", + "UPDATE_RESOURCES_GROUP": "Aggiorna gruppo risorse", + "UPDATE_ROOM": "Aggiorna stanza", + "UPDATE_RULE": "Aggiorna regola", + "UPDATE_SCRIPT": "Aggiorna script", + "UPDATE_SENSOR": "Aggiorna sensore", + "UPDATE_SENSOR_VARIABLE": "Aggiorna variabile sensore", + "UPDATE_TEMPLATE": "Aggiorna template", + "UPDATE_TIMER": "Aggiorna timer", + "UPDATE_UID_TAG_ENTRY": "giorna voce tag UID", + "UPDATE_USER": "Aggiorna utente", + "UPDATE_VARIABLE": "Aggiorna variabile", + "UPLOADED_ON": "Caricato su", + "UPLOAD_FIRMWARE": "Carica firmware", + "UPPER": "Superiore", + "UPPER_LIMIT": "Limite superiore", + "UP_TIME": "Tempo", + "URL": "URL", + "USE": "Uso", + "USED": "Usato", + "USERNAME": "Username", + "USERS": "Utenti", + "USERS_DETAIL": "Dettaglio utenti", + "USER_WORKING_DIRECTORY": "Directory di lavoro utente", + "USE_GLOBAL": "Uso globale", + "USE_INTERACTIVE_GUIDE_LINE": "Uso linea guida interattiva", + "UTILITIES": "Utilità", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Spazio insufficiente", + "VALIDATION_ERROR_NUMBER": "Il valore immesso non è un numero", + "VALIDITY": "Validità", + "VALUE": "Valore", + "VALUE2": "Valore #2", + "VALUE3": "Valore #3", + "VARIABLES": "Variabili", + "VARIABLES_DETAIL": "Dettaglio variabili", + "VARIABLES_GRAPHICAL_VIEW": "Vista grafica variabili", + "VARIABLES_MAPPER": "Mappatura variabili", + "VARIABLES_REPOSITORY": "Deposito variabili", + "VARIABLE_TYPES": "Tipi di variabile", + "VENDOR": "Produttore", + "VERSION": "Versione", + "VERSIONS": "Versioni", + "VERSION_ID": "Id Versione", + "VERSION_KERNEL": "Versione/Kernel", + "VIEW_DETAILS": "Dettagli vista", + "VM_NAME": "Nome VM", + "VM_VENDOR": "Produttore VM", + "VM_VERSION": "Versione VM", + "WEBSOCKET_PORT": "Porta Websocket", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Posizione su disco immagine widget", + "WRITE_API_KEY": "Scrivi chiave API", + "YEARS": "Anni", + "YES": "Sì" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-mk_mk.json b/www/languages/mc_locale_gui-mk_mk.json new file mode 100644 index 0000000..7fa0d06 --- /dev/null +++ b/www/languages/mc_locale_gui-mk_mk.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 часа", + "24_HOURS": "24 часа", + "ABOUT": "За нас", + "ACCESS": "Пристап", + "ACCESS_TOKEN": "Access token", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Акција", + "ACTION_BOARD": "Акциона табла", + "ACTIVE": "Активен", + "ADD": "Add", + "ADD_AN_ENTRY": "Add an entry", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Add firmware", + "ADD_FIRMWARE_TYPE": "Add firmware type", + "ADD_FIRMWARE_VERSION": "Add firmware version", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Додај gateway", + "ADD_GROUP": "Додај Група", + "ADD_NEW_WIDGET": "Add new widget", + "ADD_NODE": "Add node", + "ADD_OPERATION": "Додај операција", + "ADD_RESOURCE": "Add resource", + "ADD_RESOURCES_GROUP": "Add resources group", + "ADD_ROLE": "Add role", + "ADD_ROOM": "Додај Соба", + "ADD_RULE": "Add rule", + "ADD_SCRIPT": "Додај скрипта", + "ADD_SENSOR": "Додај сензор", + "ADD_TEMPLATE": "Add template", + "ADD_TIMER": "Додај тајмер", + "ADD_UID_TAG_ENTRY": "Add UID tag entry", + "ADD_USER": "Додај Корисник", + "ADD_VARIABLE": "Add variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Архитектура", + "AREA": "Area", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatic backup settings", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generate", + "AVAILABLE_PROCESS": "Available Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backups detail", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completed successfully.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Backup location", + "BACKUP_ON": "Backup on", + "BACKUP_SETTINGS": "Backup settings", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis closed", + "BASIS_OPEN": "Basis open", + "BATTERY": "Батерија", + "BATTERY_LEVEL": "Батерија ниво", + "BATTERY_USAGE": "Батерија искористено", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Откажи", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "Клиент id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Боја", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "Condition", + "CONDITION_TYPE": "Condition type", + "CONNECTION_DETAILS": "Connection details", + "CONTENT": "Content", + "CONTINUE": "Продолжи", + "COUNT": "Бројач", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "Тековен", + "CURRENT_PASSWORD": "Тековна лозинка", + "CUSTOM_MESSAGE": "Сопствена порака", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database version", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data unavailable!", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Ден", + "DAYS": "Денови", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "Бриши", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Delete item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Опис", + "DESTINATION": "Дестинација", + "DESTINATION_ID": "Дестинација id", + "DETAILS": "Детали", + "DEVICES": "Уреди", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Правец", + "DISABLE": "Оневозможи", + "DISABLED": "Оневозможено", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Документи", + "DOUBLE": "Double", + "DOWN": "Доле", + "DRIVER": "Driver", + "EDIT": "Уредување", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Emajl(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email адреса одвоена со запирка", + "ENABLE": "Овозможи", + "ENABLED": "Овозможено", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Избриши конфигурација", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "На Пример: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "На Пример: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "На Пример: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Слободно", + "FREQUENCY": "Фрекфренција", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Цел Назив", + "FULL_PATH": "Цела патека", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways детал", + "GATEWAY_DETAILS": "Gateway детали", + "GATEWAY_NAME": "Gateway назив", + "GATEWAY_TYPE": "Gateway тип", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Групи", + "GROUP_NAME": "Назив на група", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Висина", + "HIDE_MENU": "Сокриј мени", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Часови", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Игнорирај дупликати", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Интервал", + "INTERVAL_IN_SECONDS": "Интервал во секунди", + "INVALID_USERNAME_OR_PASSWORD": "Погрешно корисничко име или лозинка", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Клуч", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Јазик", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Последни 6 часа", + "LAST_12_HOURS": "Последни 12 часа", + "LAST_DAY": "Последен ден", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Последен час", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Последна промена", + "LAST_MONTH": "Последен месец", + "LAST_SEEN": "Последно видено", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Последна недела", + "LAST_YEAR": "Последна година", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Ниво", + "LIBRARY_VERSION": "Библиотека верзија", + "LINE": "Линија", + "LINEAR": "Линеарно", + "LINE_CHART": "Линијски график", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "Loading...", + "LOCATION": "Локација", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Log In", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Одјави се", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Мах", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Порака", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Пораката содржи", + "MESSAGE_TYPE": "Порака тип", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Минимална висина", + "MINIMUM_WIDTH": "Минимална ширина", + "MINUTES": "Минути", + "MIN_MAX": "Мин/Мах", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Назив", + "NETWORK": "Мрежа", + "NETWORK_TYPE": "Тип на мрежа", + "NEVER": "Никогаш", + "NEW": "New", + "NEW_DASHBOARD": "Нова контролна табла", + "NEW_PASSWORD": "Нова лозинка", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Јазол", + "NODES": "Јазли", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Јазол детал", + "NODE_DETAILS": "Јазол детали", + "NODE_EUI": "Јазол EUI", + "NODE_ID": "Јазол Id", + "NODE_NAME": "Јазол назив", + "NODE_STATUS": "Јазол статус", + "NODE_TYPE": "Јазол тип", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "Исклучено", + "OFFSET": "Offset", + "ON": "Вклучено", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating System", + "OPERATION": "Операција", + "OPERATIONS": "Операции", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Родител", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Лозинка", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Процент", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Телефонски број", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical Memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Порта", + "PORT_NAME": "Порта назив", + "PRIORITY": "Priority", + "PRIVATE": "Приватно", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Профил", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Јавен", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Освежи", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Соба", + "ROOMS": "Соби", + "ROOMS_DETAIL": "Соба детали", + "ROOM_NAME": "Соба назив", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Стартувај сега", + "SAVE": "Зачувај", + "SAVE_CHANGES": "Зачувај промени", + "SAVING": "Зачувај...", + "SCRIPT": "Скрипта", + "SCRIPTS": "Скрипти", + "SCRIPTS_DETAIL": "Скрипта детали", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Секунди", + "SELECT": "Одбери", + "SEND": "Испрати", + "SENDING": "Испраќање...", + "SEND_RAW_MESSAGE": "Испрати порака", + "SENSOR": "Sensor", + "SENSORS": "Сензори", + "SENSORS_ACTION": "Сензор акција", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Сензор детал", + "SENSOR_DETAILS": "Сензор детали", + "SENSOR_ID": "Сензор id", + "SENSOR_NAME": "Назив на сензорот", + "SENSOR_TYPE": "Тип на сензорот", + "SENSOR_VARIABLE": "Сензорска вариабла", + "SENSOR_VARIABLES": "Сензорска вариабла", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Сензорска вариабла тип", + "SERIAL_BAUD_RATE_EXAMPLE": "На пример: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "На пример: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "На пример: 120", + "SETTINGS": "Нагодувања", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Прикажи легенда", + "SHOW_MENU": "Прикажи мени", + "SIX_HOURS_DATA": "Шес часовен податок", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP хост", + "SMTP_PASSWORD": "SMTP лозинка", + "SMTP_PORT": "SMTP порта", + "SMTP_USERNAME": "SMTP корисник", + "SOURCE": "Изворен", + "SOURCE_CODE": "Изворен код", + "SOURCE_ID": "Извор Id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Статус", + "STATUS_MESSAGE": "Статус на пораката", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Чекор после", + "STEP_BEFORE": "Чекор пред", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Субјект", + "SUB_TYPE": "Под тип", + "SUNRISE": "Заоѓа", + "SUNSET": "Изгрева", + "SUPPORT": "Подршка", + "SWAP": "Замени", + "SWAP_SPACE": "Замени празно", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "Систем", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "Статус на системот", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Тестирај конекција", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Време", + "TIMERS": "Тармери", + "TIMERS_DETAIL": "Детали за тајмерот", + "TIMER_NAME": "Тајмер назив", + "TIMER_TYPE": "Тајмер тип", + "TIME_FORMAT": "Формат на време", + "TIME_HH_MM_SS": "Време(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Временски интервал", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Наслов", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Вкупно", + "TOTAL_LOADED": "Вкупно вчитано", + "TOTAL_STARTED": "Вкупно стартувано", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Исклучи", + "TURN_ON": "Вклучи", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Тип", + "TYPES": "Типови", + "TYPE_ID": "Id тип", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Недостапно", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Конфигурирање на мерни единици", + "UNITS_METRICS_IMPERIAL": "Мери [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Горе", + "UPDATE": "Ажурирај", + "UPDATED_SUCCESSFULLY": "Ажурирањето е успешно", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Ажурирај gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Ажурирај соба", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Ажурирај скрипта", + "UPDATE_SENSOR": "Ажурирај сензор", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Ажурирај тајмер", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Ажурирај корисник", + "UPDATE_VARIABLE": "Ажурирај променлива", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Горен лимит", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "Се Користи", + "USERNAME": "Корисничко Име", + "USERS": "Корисници", + "USERS_DETAIL": "Кориснички детали", + "USER_WORKING_DIRECTORY": "Кориснички работен директориум", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Утилити", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Валиден", + "VALUE": "Вредност", + "VALUE2": "Вредност #2", + "VALUE3": "Вредност #3", + "VARIABLES": "Променливи", + "VARIABLES_DETAIL": "Вариабла детали", + "VARIABLES_GRAPHICAL_VIEW": "Вариабла графички приказ", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Променлива тип", + "VENDOR": "Добавувач", + "VERSION": "Верзија", + "VERSIONS": "Верзии", + "VERSION_ID": "Верзија id", + "VERSION_KERNEL": "Верзија/Кернел", + "VIEW_DETAILS": "Види детали", + "VM_NAME": "VM Назив", + "VM_VENDOR": "VM добавувач", + "VM_VERSION": "VM Верзија", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Години", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-nl_nl.json b/www/languages/mc_locale_gui-nl_nl.json new file mode 100644 index 0000000..778f2f5 --- /dev/null +++ b/www/languages/mc_locale_gui-nl_nl.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 uur", + "24_HOURS": "24 uur", + "ABOUT": "Over", + "ACCESS": "Toegang", + "ACCESS_TOKEN": "Toegangs token", + "ACK": "Ack", + "ACKNOWLEDGE": "Bevestiging", + "ACK_ENABLED": "Ack aan", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "ACK wacht tijd", + "ACTIONS": "Acties", + "ACTION_BOARD": "Controle paneel", + "ACTIVE": "Actief", + "ADD": "Toevoegen", + "ADD_AN_ENTRY": "Regel toevoegen", + "ADD_EXTERNAL_SERVER": "Externe server toevoegen", + "ADD_FIRMWARE": "Firmware toevoegen", + "ADD_FIRMWARE_TYPE": "Firmware type toevoegen", + "ADD_FIRMWARE_VERSION": "Firmware versie toevoegen", + "ADD_FORWARD_PAYLOAD_ENTRY": "Voeg doorstuur payload regel toe", + "ADD_GATEWAY": "Gateway toevoegen", + "ADD_GROUP": "Groep toevoegen", + "ADD_NEW_WIDGET": "Widget toevoegen", + "ADD_NODE": "Node toevoegen", + "ADD_OPERATION": "Bewerking toevoegen", + "ADD_RESOURCE": "Bron toevoegen", + "ADD_RESOURCES_GROUP": "Brongroep toevoegen", + "ADD_ROLE": "Rol toevoegen", + "ADD_ROOM": "Kamer toevoegen", + "ADD_RULE": "Rol toevoegen", + "ADD_SCRIPT": "Script toevoegen", + "ADD_SENSOR": "Sensor toevoegen", + "ADD_TEMPLATE": "Template toevoegen", + "ADD_TIMER": "Klok toevoegen", + "ADD_UID_TAG_ENTRY": "Voeg UID label toe", + "ADD_USER": "Gebruiker toevoegen", + "ADD_VARIABLE": "Variable toevoegen", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Na", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Bereikbaarheid verificatie frequentie (seconden)", + "ALLOW_ANONYMOUS": "Anonymous toelaten", + "ALPHABETICAL_KEY_CASE": "Alfabetische key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "Angular JS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "AANMELDEN OPMYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welkom bij MyController.org! The Open Source Controller", + "ARCHITECTURE": "Architectuur", + "AREA": "Omgeving", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatische backup instellingen", + "AUTORIZED_USER": "Geautoriseerde gebruiker", + "AUTO_GENERATE": "Automatisch aanmaken", + "AVAILABLE_PROCESS": "Beschikbare Processen", + "AVERAGE_TIME": "Gemiddelde tijd", + "BACKUP": "Herstelpunt", + "BACKUPS_DETAIL": "Herstel details", + "BACKUP_COMPLETED_SUCCESSFULLY": "Herstelpunt succesvol", + "BACKUP_EVERY": "Herstelpunt elke", + "BACKUP_FILE_PREFIX": "Herstelpunt bestand voorvoegsel", + "BACKUP_LOCATION": "Herstelpunt lokatie", + "BACKUP_ON": "Herstelpunt aan", + "BACKUP_SETTINGS": "Herstelpunt instellingen", + "BAR": "Staaf", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis gesloten", + "BASIS_OPEN": "Basis open", + "BATTERY": "Batterij", + "BATTERY_LEVEL": "Batterij status", + "BATTERY_USAGE": "Batterij gebruik", + "BAUD_RATE": "Verbindings snelheid", + "BINARY_DATA": "Binaire data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blokken", + "BLOCKS_SENT": "Blokken verzonden", + "BOTTOM": "Onder", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundel", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Afbreken", + "CARDINAL": "Kardinaal", + "CARDINAL_CLOSED": "Kardinaal gesloten", + "CARDINAL_OPEN": "Kardinaal open", + "CHANNEL_TAGS": "Kanaal label(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Kanaal labels komma gescheiden", + "CHANNEL_USERNAME": "Channel gebruikersnaam", + "CLASS_LOADING_DETAILS": "Klasse Laad Details", + "CLIENT_ID": "Klant id", + "CLONE": "Kopieeren", + "COLLECTION_COUNT": "Aantal collecties", + "COLLECTION_TIME": "Collectie tijd", + "COLOR": "Kleur", + "COMMAND": "Command", + "COMMITTED": "Toegewezen", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Hoeveelheid Toegewezen Virtueel Geheugen", + "CONDITION": "Conditie", + "CONDITION_TYPE": "Type voorwaarde", + "CONNECTION_DETAILS": "Verbindings eigenschappen", + "CONTENT": "Inhoud", + "CONTINUE": "Doorgaan", + "COUNT": "Aantal", + "COUNTER": "Teller", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expressie", + "CSS_FILES": "CSS bestanden", + "CURRENT": "Stroom", + "CURRENT_PASSWORD": "Huidig wachtwoord", + "CUSTOM_MESSAGE": "Aangepast bericht", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dempend", + "DAMPENING_TYPE": "Type demping", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximaal aantal dashboards toegestaan", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database versie", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database versie", + "DATA_RETENTION_SETTINGS": "Gegevens bewaar instellingen", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data niet beschikbaar!", + "DATE_PATTERN": "Datum instellingen", + "DATE_RANGE": "Datum periode", + "DAY": "Dag", + "DAYS": "Dagen", + "DEFAULT": "Standaard", + "DEFAULT_FIRMWARE": "Standaard firmware", + "DEFAULT_TIME_RANGE": "Standaard tijdsduur", + "DELAY_TIME_IN_SECONDS": "Vertraging in seconden", + "DELETE": "Verwijderen", + "DELETE_DASHBOARD": "Dashboard verwijderen", + "DELETE_ITEMS": "Item(s) verwijderen", + "DELETE_MESSAGE": "U staat op het punt de geselecteerde item(s) te verwijderenDit proces is onomkeerbaar en zal elk spoor hiervan verwijderen!
Klik op 'Verwijderen' om door te gaan.", + "DESCRIPTION": "Beschrijving", + "DESTINATION": "Lokatieatie", + "DESTINATION_ID": "Lokatie id", + "DETAILS": "Details", + "DEVICES": "Apparaten", + "DEVICE_IDENS": "Apparaat id(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Apparaat id's komma gescheiden", + "DIRECTION": "Richting", + "DISABLE": "Uitzetten", + "DISABLED": "Uitgezet", + "DISABLE_WHEN_TRIGGER": "Uitzetten als getriggered", + "DISCOVER": "Ontdekken", + "DISCOVER_INITIATED_SUCCESSFULLY": "Ontdekken succesvol gestart", + "DISPLAY_NAMES": "Geef namen weer", + "DOCUMENTS": "Documenten", + "DOUBLE": "Dubbel", + "DOWN": "Onbereikbaar", + "DRIVER": "Stuurprogramma", + "EDIT": "Bewerken", + "EDIT_DASHBOARD": "Dashboard bewerken", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "E-mail adressen door komma's gescheiden", + "ENABLE": "Aanzetten", + "ENABLED": "Aangezet", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Gebruik de standaard firmware als er geen firmware beschikbaar is", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Als deze optie aanstaat, zal de standaard firmware gebruikt worden wanneer de gevraagde firmware niet beschikbaar is op het systeem", + "ENABLE_EDIT_MODE": "Edit mode aanzetten", + "ENABLE_MIN_MAX": "Min/Max Aanzetten", + "ENABLE_SSL": "SSL gebruiken", + "ENABLE_UNIQUE_NAME": "Unieke naam inschakelen", + "ERASE_CONFIGURATION": "Configuratie wissen", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "U staat op het punt de configuratie te verwijderen van de geselecteerde items.
Klik op 'Verwijder configuratie' om door te gaan.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Configuratie verwijderen", + "ERASE_CONFIGURATION_INITIATED": "Verwijderen configuratie gestart voor geselecteerde items", + "ERROR_ITEMS_NOT_AVAILABLE": "Geselecteerde item(s) niet beschikbaar", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Bijvoorbeeld: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Bijvoorbeeld: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Bijvoorbeeld: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluaties", + "EXECUTE_DISCOVER_INTERVAL": "Discover interval uitvoeren", + "EXTENSION": "Achtervoegsel", + "EXTENSIONS": "Uitbreidingen", + "EXTERNAL_SERVERS": "Externe servers", + "EXTERNAL_SERVERS_DETAIL": "Externe servers detail", + "FAILED_RETRY_COUNT": "Mislukte pogingen om opnieuw te proberen", + "FAILURE_COUNT": "Fouten aantal", + "FILE": "Bestand", + "FILE_NAME": "Bestandsnaam", + "FILE_SIZE": "Bestandsgrootte", + "FILTER_BY_BLOCKS": "Filter per Blokken", + "FILTER_BY_CONDITION_TYPE": "Filter op Voorwaarde type", + "FILTER_BY_DAMPENING_TYPE": "Filter op Demping type", + "FILTER_BY_DESCRIPTION": "Filter op Omschrijving", + "FILTER_BY_DESTINATION_ID": "Filter op Bestemmings id", + "FILTER_BY_DIRECTION": "Filter op Richting", + "FILTER_BY_EMAIL": "Filter op Email", + "FILTER_BY_ENABLED": "Filter op Ingeschakeld", + "FILTER_BY_EUI": "Filter op EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter op Bestandsnaam", + "FILTER_BY_FREQUENCY": "Filter op Frequentie", + "FILTER_BY_FULL_NAME": "Filter op Volledige naam", + "FILTER_BY_KEY": "Filter op sleutel", + "FILTER_BY_LEVEL": "Filter op Niveau", + "FILTER_BY_LIBRARY_VERSION": "Filter op Bibliotheek versie", + "FILTER_BY_MESSAGE": "Filter op Bericht", + "FILTER_BY_MESSGAE_TYPE": "Filter op Bericht type", + "FILTER_BY_NAME": "Filter op Naam", + "FILTER_BY_NETWORK_TYPE": "Filter op Netwerk type", + "FILTER_BY_NODE_ID": "Filter op Node id", + "FILTER_BY_OPERATION": "Filter op Bewerking", + "FILTER_BY_OPERATION_TYPE": "Filter op Bewerkings type", + "FILTER_BY_PAYLOAD_OFF": "Filter op Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter op Payload ON", + "FILTER_BY_PERMISSION": "Filter op Permissie", + "FILTER_BY_PUBLIC_ACCESS": "Filter op Publieke toegang", + "FILTER_BY_RESOURCE": "Filter op Bron", + "FILTER_BY_RESOURCE_TYPE": "Filter op Bron type", + "FILTER_BY_SENSOR_ID": "Filter op Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter op Sensor naam", + "FILTER_BY_SENSOR_TYPE": "Filter op Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter op Sensor variable", + "FILTER_BY_SOURCE_ID": "Filter op Source id", + "FILTER_BY_STATUS": "Filter op Status", + "FILTER_BY_STATUS_MESSAGE": "Filter op Status bericht", + "FILTER_BY_TYPE": "Filter op Type", + "FILTER_BY_TYPE_ID": "Filter op Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter op Gebruikersnaam", + "FILTER_BY_VALUE": "FIlter op Waarde", + "FILTER_BY_VALUE2": "Filter op Waarde #2", + "FILTER_BY_VALUE3": "Filter op Waarde #3", + "FILTER_BY_VARIABLE_TYPES": "Filter op Variabel type", + "FILTER_BY_VERSION": "Filter op Versie", + "FILTER_BY_VERSION_ID": "Filter op Versie nummer", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware type detail", + "FIRMWARE_TYPE_NAME": "Firmware type naam", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload gestart voor de geselecteerde items", + "FIRMWARE_VERSION": "Firmware versie", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versies detail", + "FIRST_NAME": "Voornaam", + "FIVE_MINUTES_DATA": "Vijf minuut data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Payload doorsturen", + "FORWARD_PAYLOADS_DETAIL": "Payload doorsturen detail", + "FREE": "Beschikbaar", + "FREQUENCY": "Frequency", + "FROM": "Van", + "FROM_ADDRESS": "Van adres", + "FROM_PHONE_NUMBER": "Van telefoonnummer", + "FULL_NAME": "Volledige naam", + "FULL_PATH": "Volledig pad", + "GARBAGE_COLLECTOR": "Vuilnisman", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway naam", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Gir commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Pagina ververs tijd", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Toegang verlenen tot afgeleide bron (in rollen)", + "GRAPHS_SETTINGS": "Grafiek instellingen", + "GRAPH_SETTINGS": "Grafiek instellingen", + "GROUPS": "Groepen", + "GROUP_NAME": "Groep naam", + "HEAP_MEMORY": "Heap geheugen", + "HEIGHT": "Hoogte", + "HIDE_MENU": "Menu verbergen", + "HISTORICAL_BAR_CHART": "Historische Staaf Diagram", + "HOST_NAME": "Systeem naam", + "HOURS": "Uren", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP poort", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Negeer hoofd/kleine letters", + "IGNORE_DUPLICATE": "Negeer duplicaat", + "IMPERIAL": "Imperiaal", + "INCLUDE_THRESHOLD_HIGH": "Voeg drempel waarde hoog toe", + "INCLUDE_THRESHOLD_LOW": "Voeg drempel waarde laag toe", + "INDIVIDUAL_SETTINGS": "Individuele instellingen", + "INIT": "Init", + "INTERPOLATE_TYPE": "Soort interpolatie", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconden", + "INVALID_USERNAME_OR_PASSWORD": "Incorrecte gebruikersnaam of password", + "IN_RANGE": "Binnen bereik", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Items(s) succesvol verwijderd", + "ITEMS_DISABLED_SUCCESSFULLY": "Items(s) succesvol uitgezet", + "ITEMS_ENABLED_SUCCESSFULLY": "Items(s) succesvol aangezet", + "ITEMS_PER_ROW": "Items(s) per regel", + "ITEM_CREATED_SUCCESSFULLY": "Item(s) succesvol aangemaakt", + "ITEM_UPDATED_SUCCESSFULLY": "Items(s) succesvol bijgewerkt", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java leverancier Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java virtueel Machine Specificaties", + "JSON": "JSON", + "KEY": "Sleutel", + "KEY_FORMAT": "Sleutel formaat", + "LANGUAGE": "Taal", + "LANGUAGE_VERSION": "Taal versie", + "LAST_5_MINUTES": "Laatste 5 minuten", + "LAST_6_HOURS": "Afgelopen 6 uur", + "LAST_12_HOURS": "Afgelopen 12 uur", + "LAST_DAY": "Afgelopen dag", + "LAST_EXECUTION": "Laatste keer uitgevoerd", + "LAST_FIRED": "Laatste keer aangeroepen", + "LAST_GARBAGECOLLECTOR_DURATION": "Laatste GC duur", + "LAST_HOUR": "Afgelopen uur", + "LAST_MESSAGE": "Laatste bericht", + "LAST_MINUTE_AVERAGE": "Gemiddelde laatste minuut", + "LAST_MINUTE_RATE": "Laatse minuut aantal", + "LAST_MODIFIED": "Laatste wijziging", + "LAST_MONTH": "Afgelopen maand", + "LAST_SEEN": "Laatste keer gezien", + "LAST_TRIGGER": "Laatste trigger", + "LAST_WEEK": "Afgelopen week", + "LAST_YEAR": "Afgelopen jaar", + "LATITUDE": "breedtegraad", + "LEFT": "Links", + "LEVEL": "Level", + "LIBRARY_VERSION": "Bibliotheek versie", + "LINE": "Regel", + "LINEAR": "Lineair", + "LINE_CHART": "Lijn grafiek", + "LOAD": "Belasting", + "LOADED": "Ingeladen", + "LOADING": "Laden...", + "LOCATION": "Locatie", + "LOCATION_IP": "Lokatie IP", + "LOCATION_NAME": "Locatie naam", + "LOGIN_MESSAGE": "Aanmeld boodschap", + "LOGS": "Logs", + "LOG_DIRECTION": "Log richting", + "LOG_IN": "Aanmelden", + "LOG_LEVEL": "Log niveau", + "LOG_OUT": "Uitloggen", + "LONGITUDE": "Lengtegraad", + "LOWER": "Laagste", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specificatie Versie", + "MARGIN": "Marge", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block groote", + "MEASUREMENT": "Meting", + "MERGE_STATIONS": "Stations samenvoegen", + "MESSAGE": "Bericht", + "MESSAGES_IN_QUEUE": "Berichten in de queue", + "MESSAGE_CONTAINS": "Bericht bevat", + "MESSAGE_TYPE": "Bericht type", + "METRIC": "Metriek", + "METRICS": "Metriek", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "U staat op het punt om de metrics database backend engine instellingen aan te passen.
Deze actie resulteerd in dataverlies. Raadpleeg de gebuikershandleiding voor verdere details.
MyController zal geen data importeren/exporteren bij het veranderen van de metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconden", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimale hoogte", + "MINIMUM_WIDTH": "Minimale breedte", + "MINUTES": "Minuten", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Wijzig sensor en variabelen mapping", + "MONOTONE": "Monotoon", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker staat niet aan, de MQTT broker kan aangezet worden in de file: conf/mycontroller.properties Na het veranderen van de file, restart Mycontroller server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "U staat op het punt de MQTT broker instellingen te veranderen,
door deze actie zal de MQTT broker opstarten met de nieuwe instellingen.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker instellingen", + "MQTT_BROKER_HOST_EXAMPLE": "Voorbeeld: tcp://localhost:1301", + "MQTT_CLIENT_ID_EXAMPLE": "Voorbeeld: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT poort", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Voorbeeld: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Voorbeeld: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Mycontroller server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Naam", + "NETWORK": "Netwerk", + "NETWORK_TYPE": "Netwerk type", + "NEVER": "Nooit", + "NEW": "Nieuw", + "NEW_DASHBOARD": "Nieuw dashboard", + "NEW_PASSWORD": "Nieuw paswoord", + "NEXT_EXECUTION": "Volgende start", + "NO": "Nee", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes bereikbaarheid interval test", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node naam", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap geheugen", + "NOTHING_SELECTED": "Niets geselecteerd", + "NOTIFICATIONS": "Berichten", + "NOT_SET": "Niet ingesteld", + "NO_ACK": "Geen Ack", + "NO_BACKUPS_SETUP": "Geen herstelpunt ingesteld.", + "NO_DATA_AVAILABLE": "Geen data beschikbaar.", + "NO_EXTERNAL_SERVERS_SETUP": "Geen externe servers ingesteld", + "NO_FIRMWARES_SETUP": "Geen firmware ingesteld.", + "NO_FIRMWARE_TYPES_SETUP": "Geen firmware types ingesteld.", + "NO_FIRMWARE_VERSIONS_SETUP": "Geen firmware versies ingesteld.", + "NO_FORWARD_PAYLOADS_SETUP": "Geen doorstuur payloads opgezet.", + "NO_GATEWAYS_SETUP": "Geen gateways ingesteld.", + "NO_ITEMS_IN_FILTER": "Oops! Geen resultaten gevonden. Pas de query aan.", + "NO_ITEMS_SETUP": "Geen items ingesteld!", + "NO_LOGS_AVAILABLE": "Geen logs beschikbaar.", + "NO_NODES_SETUP": "Geen nodes ingesteld.", + "NO_OPERATIONS_SETUP": "Geen bewerking ingesteld", + "NO_RESOURCES_DATA_SETUP": "Geen bronnen ingesteld.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Geen bron aan deze groep gekoppeld", + "NO_RESOURCE_GROUPS_SETUP": "Geen brongroepen ingesteld.", + "NO_ROOMS_SETUP": "Geen kamers ingesteld.", + "NO_RULES_SETUP": "Geen regels ingesteld", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "Geen sensors ingesteld.", + "NO_TEMPLATES_SETUP": "Geen template ingesteld", + "NO_TIMERS_SETUP": "Geen klokken ingesteld.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "Geen variables ingesteld", + "OCCURRENCES": "Gebeurtenissen", + "OFF": "UIT", + "OFFSET": "Offset", + "ON": "AAN", + "ONE_DAY_DATA": "Eén dag data", + "ONE_HOUR_DATA": "Eén uur data", + "ONE_MINUTE_DATA": "Eén minuut data", + "OPERATING_SYSTEM": "Besturings systeem", + "OPERATION": "Bewerking", + "OPERATIONS": "Bewerkingen", + "OPERATIONS_DETAIL": "Bewerkings detail", + "OPERATION_NAME": "Naam van de bewerking", + "OPERATION_TYPE": "Bewerkings type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Wilt U het volgende commando uitvoeren op het MyController server operating system?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Operating system commando uitvoeren", + "OTHERS": "Andere", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Wachtwoord", + "PATTERN": "Patroon", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Vertraging", + "PAYLOAD_OFF": "Payload UIT", + "PAYLOAD_ON": "Payload AAN", + "PEAK": "Piek", + "PERCENTAGE": "Percentage", + "PERMISSION": "Toestemming", + "PHONE_NUMBERS": "Telefoonnummers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Telefoonnummers komma gescheiden", + "PHYSICAL_MEMORY": "Fysiek Geheugen (RAM)", + "PLIVO": "PLivo", + "POLL_FREQUENCY_MINUTES": "Poll frequentie (minuten)", + "PORT": "Poort", + "PORT_NAME": "Poort naam", + "PRIORITY": "Prioriteit", + "PRIVATE": "Privaat", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Proces CPU", + "PROFILE": "Profiel", + "PROFILE_UPDATED_SUCCESSFULLY": "Profiel succesvol aangepast", + "PROPERTIES": "Eigenschappen", + "PUBLIC": "Publiek", + "PUBLIC_ACCESS": "Publieke toegang", + "PUBLIC_KEY": "Public key", + "PURGE": "Opschonen", + "PURGE_BEFORE": "Opschonen voor", + "PURGE_DONE_SUCCESSFULLY": "Opschonen succesvol afgerond", + "PURGE_EXISTING_DATA": "Bestaande data opschonen", + "PURGE_RESOURCES_LOGS": "Bron logboek opschonen", + "PURGE_SENSOR_VARIABLE": "Sensor variable opschonen", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "LET OP: Als u geen parameter selecteerd, zal alles verwijderd worden", + "PURGING": "Bezig met opschonen", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Maximaal 1 keer (0)", + "QOS_1": "Minimaal 1 keer (1)", + "QOS_2": "Exact 1 keer (2)", + "RAW_DATA": "Ruwe data", + "READ_ONLY": "Alleen lezen", + "REALTIME": "Realtime", + "REBOOT": "Opnieuw opstarten", + "REBOOT_CONFIRMATION_MESSAGE": "U staat op het punt om de geselecteerde items opnieuw op te starten
Klik 'Opnieuw opstarten' om door te gaan.", + "REBOOT_CONFIRMATION_TITLE": "Opnieuw opstarten", + "REBOOT_INITIATED": "'Opnieuw opstarten' gestart voor de geselecteerde items.", + "RECONNECT_DELAY": "Opnieuw verbinden vertraging", + "RECORDS_LIMIT": "Records limiet", + "REFRESH": "Verversen", + "REFRESH_NODES_INFO": "Nodes informatie verversen", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Nodes informatie verversen' successvol gestart", + "REFRESH_TIME_SECONDS": "Verversingstijd (seconden)", + "REGISTER_NODES_AUTOMATICALLY": "Nodes automatisch registreren", + "REGISTRATION_STATUS": "Registratie status", + "RELEASES": "Versies", + "RELOAD": "Opnieuw inlezen", + "RELOAD_INITIATED_SUCCESSFULLY": "Opnieuw inlezen succesvol gestart", + "RESOURCE": "Bron", + "RESOURCES": "Bronnen", + "RESOURCES_DATA": "Bronnen data", + "RESOURCES_DATA_DETAIL": "Bronnen data detail", + "RESOURCES_GROUPS": "Bron groepen", + "RESOURCES_LOGS": "Bron logboek", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Bron logboek detail", + "RESOURCES_LOG_LEVEL": "Bron logboek niveau", + "RESOURCES_LOG_RETENTION_DURATION": "Bronnen logboek bewaar tijd", + "RESOURCE_GROUPS_DETAIL": "Bron groepen detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Bron groepen kaart detail", + "RESOURCE_GROUPS_TURNED_OFF": "Bron groepen UIT", + "RESOURCE_GROUPS_TURNED_ON": "Bron groepen AAN", + "RESOURCE_GROUP_TURNED_OFF": "Bron groep UIT", + "RESOURCE_GROUP_TURNED_ON": "Bron groep AAN", + "RESOURCE_TYPE": "Bron type", + "RESTORE": "Herstellen", + "RESTORE_CONFIRMATION_MESSAGE": "U staat op het punt het systeem te herstellen naar '{{naam}}'.
Herstellen verwijdert de huidige data / configuratie volledig en het systeem gaat naar '{{naam}}' status
Klik op 'Herstellen' om verder te gaan.
NB: Na het succesvol te herstellen moet u de server handmatig starten vanaf de command line ", + "RESTORE_CONFIRMATION_TITLE": "Systeem herstellen naar '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Herstellen succesvol gestart.", + "RESULT": "Resultaat", + "RETAIN_MAX": "Behoud maximaal #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "U staat op het punt het bewaren van statistiek gegevens te wijzigen.
Deze actie kan tot het verlies van gegevens leiden. Lees de gebruiksaanwijzing voor verdere details.
Het is ten zeerste aanbevolen een systeem herstelpunt te maken voordat u verder gaat", + "RETENTION_DIALOG_TITLE": "Lees aandachtig voor dat u verder gaat", + "RE_ENABLE": "Opnieuw aanzetten", + "RIGHT": "Rechts", + "ROLES": "Rollen", + "ROLES_DETAIL": "Rol details", + "ROOM": "Kamer", + "ROOMS": "Kamers", + "ROOMS_DETAIL": "Kamers detail", + "ROOM_NAME": "Kamer naam", + "RULES": "Regels", + "RULES_DETAIL": "Regels detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Regel naam", + "RUN": "Uitvoeren", + "RUNNING": "Bezig......", + "RUN_BACKUP": "Maak Herstelpunt", + "RUN_GARBAGE_COLLECTION": "Opschonen uitvoeren", + "RUN_NOW": "Nu uitvoeren", + "SAVE": "Opslaan", + "SAVE_CHANGES": "Veranderingen opslaan", + "SAVING": "Bezig met opslaan...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script connecties", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script bestanden", + "SEARCH": "Zoeken", + "SECONDS": "Seconden", + "SELECT": "Kiezen", + "SEND": "Sturen", + "SENDING": "Sturen...", + "SEND_RAW_MESSAGE": "Stuur onbewerkt bericht", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Sensors actie", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors en variabelen mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensors details .", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor naam", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variablen", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "Voorbeeld: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Voorbeeld: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Voorbeeld: 120", + "SETTINGS": "Instellingen", + "SHOW_ICON": "Toon icon", + "SHOW_LEGENDS": "Toon legende", + "SHOW_MENU": "Menu", + "SIX_HOURS_DATA": "Zes uur data", + "SMART_SLEEP_ENABLED": "Smart sleep aan", + "SMS": "SMS", + "SMTP_HOST": "SMTP systeem", + "SMTP_PASSWORD": "SMTP paswoord", + "SMTP_PORT": "SMTP poort", + "SMTP_USERNAME": "SMTP gebruikersnaam", + "SOURCE": "Bron", + "SOURCE_CODE": "Bron code", + "SOURCE_ID": "Bron id", + "SPECIFICATION_VENDOR": "Specificatie Leverancier", + "SPECIFICATION_VERSION": "Specificatie Versie", + "STACKED_AREA_CHART": "Gestapelde staaf diagram", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistieken", + "STATUS": "Status", + "STATUS_MESSAGE": "Status melding", + "STATUS_SINCE": "Status sinds", + "STEP_AFTER": "Stap na", + "STEP_BEFORE": "Stap voor", + "STREAM_ACK_ENABLED": "Stream ack aan", + "SUBJECT": "Onderwerp", + "SUB_TYPE": "Sub type", + "SUNRISE": "Zonsopgang", + "SUNSET": "Zonsondergang", + "SUPPORT": "Ondersteuning", + "SWAP": "Swap", + "SWAP_SPACE": "Swap ruimte", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "Systeem", + "SYSTEM_CPU_LOAD": "Systeem processor load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Systeem Gemiddelde Load", + "SYSTEM_STATUS": "Systeem Status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "U staat op het punt om de configuratie van een 'Sensor variable' aan te passen.
Als er een verandering is in het 'Metric type', zal alle data verwijderd worden van de 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configuratie", + "TABLE_ROWS_LIMIT": "Tabel rij limiet", + "TAGS": "Labels", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindingen", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test verbinding", + "TEXT": "Text", + "THREADS_COUNT": "Threads aantal", + "THRESHOLD_VALUE": "Drempelwaarde", + "THRESHOLD_VALUE_HIGH": "Drempel waarde hoog", + "THRESHOLD_VALUE_LOW": "Drempel waarde laag", + "TIME": "Klok", + "TIMERS": "Klokken", + "TIMERS_DETAIL": "Klokken detail", + "TIMER_NAME": "Klok naam", + "TIMER_TYPE": "Klok type", + "TIME_FORMAT": "Tijd notatie", + "TIME_HH_MM_SS": "Tijd(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Tijd compensatie (HH:mm:ss)", + "TIME_RANGE": "Tijdschaal", + "TIME_TAKEN_LAST_UPDATE": "Laatste update(tijdsduur)", + "TITLE": "Titel", + "TO": "Naar", + "TOKEN": "Token", + "TOP": "Boven", + "TOPICS_PUBLISH": "Onderwerpen publiceren", + "TOPICS_SUBSCRIBE": "Onderwerpen abonneren", + "TOPIC_PUBLISH": "Onderwerp publiceren", + "TOPIC_SUBSCRIBE": "Onderwerp abonneren", + "TOPOLOGY": "Topologie", + "TOTAL": "Totaal", + "TOTAL_LOADED": "Totaal geladen", + "TOTAL_STARTED": "Totaal gestart", + "TRANSMIT_DELAY": "Fouten aantal", + "TRIGGER_WHEN": "Trigger wanneer", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Uitzetten", + "TURN_ON": "Aanzetten", + "TWELVE_HOURS_DATA": "Twaalf uur data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Niet beschikbaar", + "UNDO_CHANGES": "Veranderingen ongedaan maken", + "UNIT": "Eenheid", + "UNITS": "Eenheden", + "UNITS_CONFIGURATION": "Eenheden instellen", + "UNITS_METRICS_IMPERIAL": "Eenheden [Metrisch/Imperiaal]", + "UNLOADED": "Niet geladen", + "UP": "Op", + "UPDATE": "Bijwerken", + "UPDATED_SUCCESSFULLY": "Succesvol aangepast", + "UPDATE_AN_ENTRY": "Pas een regel aan", + "UPDATE_EXTERNAL_SERVER": "Externe server bijwerken", + "UPDATE_FIRMWARE": "Firmware aanpassen", + "UPDATE_FIRMWARE_TYPE": "Pas het firmware type aan", + "UPDATE_FIRMWARE_VERSION": "Pas de firmware versie aan", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Pas de doorstuur payload aan", + "UPDATE_GATEWAY": "Gateway aanpassen", + "UPDATE_NODE": "Node aanpassen", + "UPDATE_OPERATION": "Bewerking bijwerken", + "UPDATE_RESOURCE": "Bron bijwerken", + "UPDATE_RESOURCES_GROUP": "Bron groep aanpassen", + "UPDATE_ROOM": "Kamer aanpassen", + "UPDATE_RULE": "Regel bijwerken", + "UPDATE_SCRIPT": "Bijwerken script", + "UPDATE_SENSOR": "Sensor aanpassen", + "UPDATE_SENSOR_VARIABLE": "Sensor variable bijwerken", + "UPDATE_TEMPLATE": "Template updaten", + "UPDATE_TIMER": "Klok aanpassen", + "UPDATE_UID_TAG_ENTRY": "Aanpassen UID tag entry", + "UPDATE_USER": "Gebruiker aanpassen", + "UPDATE_VARIABLE": "Variable updaten", + "UPLOADED_ON": "Geüpload op", + "UPLOAD_FIRMWARE": "Firmware uploaden", + "UPPER": "Hoogste", + "UPPER_LIMIT": "Bovengrens", + "UP_TIME": "Tijd op", + "URL": "URL", + "USE": "Gebruiken", + "USED": "Gebruikt", + "USERNAME": "Gebruikersnaam", + "USERS": "Gebruikers", + "USERS_DETAIL": "Gebruikers detail", + "USER_WORKING_DIRECTORY": "Gebuikers werk directory", + "USE_GLOBAL": "Globaal gebruiken", + "USE_INTERACTIVE_GUIDE_LINE": "Gebruik interactieve hulplijn", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Geen spatie mogelijk", + "VALIDATION_ERROR_NUMBER": "De gebruikte waarde is geen nummer", + "VALIDITY": "Validiteit", + "VALUE": "Waarde", + "VALUE2": "Waarde #2", + "VALUE3": "Waarde #3", + "VARIABLES": "Variabelen", + "VARIABLES_DETAIL": "Variable detail", + "VARIABLES_GRAPHICAL_VIEW": "Variabelen grafisch weergeven", + "VARIABLES_MAPPER": "Variabelen mapper", + "VARIABLES_REPOSITORY": "Variable bibliotheek", + "VARIABLE_TYPES": "Variabelen type", + "VENDOR": "Leverancier", + "VERSION": "Versie", + "VERSIONS": "Versies", + "VERSION_ID": "Versie Id", + "VERSION_KERNEL": "Versie/Kernel", + "VIEW_DETAILS": "Details weergeven", + "VM_NAME": "VM naam", + "VM_VENDOR": "VM Leverancier", + "VM_VERSION": "VM versie", + "WEBSOCKET_PORT": "Websocket poort", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget afbeeldings bestanden locatie op disk", + "WRITE_API_KEY": "API sleutel schrijven", + "YEARS": "Jaren", + "YES": "Ja" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-no_no.json b/www/languages/mc_locale_gui-no_no.json new file mode 100644 index 0000000..640d465 --- /dev/null +++ b/www/languages/mc_locale_gui-no_no.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 timer", + "24_HOURS": "24 timer", + "ABOUT": "Om", + "ACCESS": "Adgang", + "ACCESS_TOKEN": "Tilgangstoken", + "ACK": "Ack", + "ACKNOWLEDGE": "Anerkjenne", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack forespørsel", + "ACK_RESPONSE": "Ack svar", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Handlinger", + "ACTION_BOARD": "Handling bord", + "ACTIVE": "Aktiv", + "ADD": "Add", + "ADD_AN_ENTRY": "Legg til en oppføring", + "ADD_EXTERNAL_SERVER": "Legg til ekstern server", + "ADD_FIRMWARE": "Legg til firmware", + "ADD_FIRMWARE_TYPE": "Legg til firmware type", + "ADD_FIRMWARE_VERSION": "Legg til firmware versjon", + "ADD_FORWARD_PAYLOAD_ENTRY": "Legg frem nyttelast oppføring", + "ADD_GATEWAY": "Legg til gateway", + "ADD_GROUP": "Legg til gruppe", + "ADD_NEW_WIDGET": "Legg til ny widget", + "ADD_NODE": "Legg til node", + "ADD_OPERATION": "Legg til operasjon", + "ADD_RESOURCE": "Legg til ressurs", + "ADD_RESOURCES_GROUP": "Legg til ressurs gruppe", + "ADD_ROLE": "Legg til rolle", + "ADD_ROOM": "Legg til rom", + "ADD_RULE": "Legg til regel", + "ADD_SCRIPT": "Legg til script", + "ADD_SENSOR": "Legg til sensor", + "ADD_TEMPLATE": "Legg til mal", + "ADD_TIMER": "Legg til timer", + "ADD_UID_TAG_ENTRY": "Legg til UID tag oppføring", + "ADD_USER": "Legg til bruker", + "ADD_VARIABLE": "Legg til variabel", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "Etter", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Online sjekk frekvens (sekunder)", + "ALLOW_ANONYMOUS": "Tillat anonym", + "ALPHABETICAL_KEY_CASE": "Alfabetisk nøkkelen sak", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS tilpassede kontrollere", + "APP.DESCRIPTION": "Den Åpne Kildekode Kontrolleren", + "APP.LOG_IN_TO_MESSAGE": "Logg inn på MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Velkommen til MyController.org! Den Åpne Kildekode Kontrolleren", + "ARCHITECTURE": "Arkitektur", + "AREA": "Område", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Autoriseringstoken", + "AUTOMATIC_BACKUP_SETTINGS": "Automatisk backup innstilinger", + "AUTORIZED_USER": "Autorisert bruker", + "AUTO_GENERATE": "Auto generer", + "AVAILABLE_PROCESS": "Tilgjengelig Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Sikkerhetskopi", + "BACKUPS_DETAIL": "Sikkerhetskopi detaljer", + "BACKUP_COMPLETED_SUCCESSFULLY": "Sikkerhetskopi fullført", + "BACKUP_EVERY": "Sikkerhetskopier hver", + "BACKUP_FILE_PREFIX": "Sikkerhetskopi fil prefiks", + "BACKUP_LOCATION": "Sikkerhetskopi plassering", + "BACKUP_ON": "Sikkerhetskopier på", + "BACKUP_SETTINGS": "Sikkerhetskopi innstillinger", + "BAR": "Bar", + "BASIS": "Grunnlag", + "BASIS_CLOSED": "Grunnlag stengt", + "BASIS_OPEN": "Grunnlag åpen", + "BATTERY": "Batteri", + "BATTERY_LEVEL": "Batterinivå", + "BATTERY_USAGE": "Batteribruk", + "BAUD_RATE": "Overføringshastighet", + "BINARY_DATA": "Binær data", + "BIND_ADDRESS": "Binde adresse", + "BLOCKS": "Blokker", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Blokker vert", + "BUILD_JDK": "Bygg JDK", + "BUILD_TOOL": "Bygg verktøy", + "BUILT_ON": "Bygd på", + "BUNDLE": "Sammen", + "BUTTON_SETTINGS": "Bryter innstillinger:", + "CANCEL": "Avbryt", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal åpen", + "CHANNEL_TAGS": "Kanal stikkord", + "CHANNEL_TAGS_COMMA_SEPARATED": "Kanal stikkord separert med komma", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Klasse Laster inn detaljer", + "CLIENT_ID": "Klient-iD", + "CLONE": "Klone", + "COLLECTION_COUNT": "Samling teller", + "COLLECTION_TIME": "Samling tid", + "COLOR": "Farge", + "COMMAND": "Command", + "COMMITTED": "Forpliktet", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Forpliktet Virtuell Minnestørrelse", + "CONDITION": "Betingelse", + "CONDITION_TYPE": "Betingelse typr", + "CONNECTION_DETAILS": "Tilkobling detaljer", + "CONTENT": "Innhold", + "CONTINUE": "Fortsett", + "COUNT": "Telle", + "COUNTER": "Teller", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron uttrykk", + "CSS_FILES": "CSS filer", + "CURRENT": "Nåværende", + "CURRENT_PASSWORD": "Nåværende passord", + "CUSTOM_MESSAGE": "Tilpasset melding", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dempende", + "DAMPENING_TYPE": "Dempende type", + "DASHBOARDS": "Oversikter", + "DASHBOARD_LIMIT": "Maksimum oversikter tillatt", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Databaseskjema revisjon", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database versjon", + "DATA_RETENTION_SETTINGS": "Datalagring innstillinger", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data utilgjengelig!", + "DATE_PATTERN": "Dato mønster", + "DATE_RANGE": "Datointervall", + "DAY": "Dag", + "DAYS": "Dager", + "DEFAULT": "Standard", + "DEFAULT_FIRMWARE": "Standard firmware", + "DEFAULT_TIME_RANGE": "Standard tidsramme", + "DELAY_TIME_IN_SECONDS": "Forsinkelse i sekunder", + "DELETE": "Slett", + "DELETE_DASHBOARD": "Slett oversikt", + "DELETE_ITEMS": "Slett element(er)", + "DELETE_MESSAGE": "Du er i ferd med å slette valgte elementet(er)
Slette prosessen vil fjerne alle spor av dette elementet(ene)!
Klikk 'Slett' for å fortsette.", + "DESCRIPTION": "Beskrivelse", + "DESTINATION": "Destinasjon", + "DESTINATION_ID": "Destinasjon id", + "DETAILS": "Detaljer", + "DEVICES": "Enheter", + "DEVICE_IDENS": "Enhet iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Enhet idens separert med komma", + "DIRECTION": "Retning", + "DISABLE": "Deaktiver", + "DISABLED": "Deaktivert", + "DISABLE_WHEN_TRIGGER": "Deaktiver når utløst", + "DISCOVER": "Oppdag", + "DISCOVER_INITIATED_SUCCESSFULLY": "Oppdag igangsatt vellykket", + "DISPLAY_NAMES": "Vis navn", + "DOCUMENTS": "Dokumenter", + "DOUBLE": "Dobbel", + "DOWN": "Ned", + "DRIVER": "Driver", + "EDIT": "Rediger", + "EDIT_DASHBOARD": "Rediger oversikt", + "EMAIL": "E-post", + "EMAILS": "E-post(er)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "E-post adresser separert med komma", + "ENABLE": "Aktiver", + "ENABLED": "Aktivert", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Aktiver standard på ingen firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Når aktivert, bruk standard firmware, når anmodet firmware ikke er tilgjengelig i systemet", + "ENABLE_EDIT_MODE": "Aktiver rediger modus", + "ENABLE_MIN_MAX": "Aktiver Min/max", + "ENABLE_SSL": "Aktiver SSL", + "ENABLE_UNIQUE_NAME": "Aktiver unike navn", + "ERASE_CONFIGURATION": "Slett konfigurasjon", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Du er i ferd med å slette fullstendig konfigurasjon av valgte enheter.
klikk 'Slett konfigurasjon' for å fortsette", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Slett konfigurasjon", + "ERASE_CONFIGURATION_INITIATED": "Slett konfigurasjon startet for valgte enheter", + "ERROR_ITEMS_NOT_AVAILABLE": "Valgt enhet(er) er ikke tilgjengelig!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Eksempel: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Eksempel: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Eksempel: 3003", + "EUI": "EUI", + "EVALUATIONS": "Evalueringer", + "EXECUTE_DISCOVER_INTERVAL": "Utfør Discover intervall", + "EXTENSION": "Utvidelse", + "EXTENSIONS": "Utvidelser", + "EXTERNAL_SERVERS": "Skstern server", + "EXTERNAL_SERVERS_DETAIL": "Eksterne servere detaljer", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Fil", + "FILE_NAME": "Filnavn", + "FILE_SIZE": "Filstørrelse", + "FILTER_BY_BLOCKS": "Filtrer etter blokker", + "FILTER_BY_CONDITION_TYPE": "Filtrer etter betingelse type", + "FILTER_BY_DAMPENING_TYPE": "Filtrer etter dempende type", + "FILTER_BY_DESCRIPTION": "Filtrer etter beskrivelse", + "FILTER_BY_DESTINATION_ID": "Filtrer etter distinasjon id", + "FILTER_BY_DIRECTION": "Filtrer etter retning", + "FILTER_BY_EMAIL": "Filtrer etter E-post", + "FILTER_BY_ENABLED": "Filtrer etter Aktivert", + "FILTER_BY_EUI": "Filtrer etter EUI", + "FILTER_BY_EXTENSION": "Filtrer etter Utvidelse", + "FILTER_BY_FILE_NAME": "Filtrer etter Filnavn", + "FILTER_BY_FREQUENCY": "Filtrer etter Frekvens", + "FILTER_BY_FULL_NAME": "Filtrer etter Fullt navn", + "FILTER_BY_KEY": "Filtret etter nøkkel", + "FILTER_BY_LEVEL": "Filtrer etter Level", + "FILTER_BY_LIBRARY_VERSION": "Filtrer etter Bibliotek versjon", + "FILTER_BY_MESSAGE": "Filtrer etter Melding", + "FILTER_BY_MESSGAE_TYPE": "Filtrer etter Melding type", + "FILTER_BY_NAME": "Filtrer etter Navn", + "FILTER_BY_NETWORK_TYPE": "Filtrer etter Nettverk type", + "FILTER_BY_NODE_ID": "Filtrer etter Node id ", + "FILTER_BY_OPERATION": "Filtrer etter Operasjon", + "FILTER_BY_OPERATION_TYPE": "Filtrer etter Operasjons type", + "FILTER_BY_PAYLOAD_OFF": "Filtrer ", + "FILTER_BY_PAYLOAD_ON": "Filtrer etter Nyttelast PÅ", + "FILTER_BY_PERMISSION": "Filtrer etter Tillatelse", + "FILTER_BY_PUBLIC_ACCESS": "Filtrer etter Offentlig tilgang", + "FILTER_BY_RESOURCE": "Filtrer etter ressurs", + "FILTER_BY_RESOURCE_TYPE": "Filtrer etter Ressurs type", + "FILTER_BY_SENSOR_ID": "Filtrer etter Sensor id", + "FILTER_BY_SENSOR_NAME": "Filtrer etter Sensor navn", + "FILTER_BY_SENSOR_TYPE": "Filtrer etter Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filtrer etter Sensor variabler", + "FILTER_BY_SOURCE_ID": "Filtrer etter Kilde id", + "FILTER_BY_STATUS": "Filtrer etter Status", + "FILTER_BY_STATUS_MESSAGE": "Filtrer etter Status melding", + "FILTER_BY_TYPE": "Filtrer etter Type", + "FILTER_BY_TYPE_ID": "Filtrer etter Type id", + "FILTER_BY_UID": "Filtrer etter UID", + "FILTER_BY_USERNAME": "Filtrer etter Brukernavn", + "FILTER_BY_VALUE": "Filtrer etter Verdi", + "FILTER_BY_VALUE2": "Filtrer etter Verdi #2", + "FILTER_BY_VALUE3": "Filtrer etter Verdi #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrer etter Variabel typer", + "FILTER_BY_VERSION": "Filtrer etter Versjon", + "FILTER_BY_VERSION_ID": "Filtrer etter Versjon id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detaljer", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware typer detalj", + "FIRMWARE_TYPE_NAME": "Firmware type navn", + "FIRMWARE_UPLOAD_INITIATED": "Firmware opplasting startet for valgte enheter.", + "FIRMWARE_VERSION": "Firmware versjon", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versjoner detalj", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Fem minutter data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Frem nyttelast", + "FORWARD_PAYLOADS_DETAIL": "Frem nyttelast detalj", + "FREE": "Tilgjengelig", + "FREQUENCY": "Frekvens", + "FROM": "Fra", + "FROM_ADDRESS": "Fra adresse", + "FROM_PHONE_NUMBER": "Fra telefonnummer", + "FULL_NAME": "Fullt navn", + "FULL_PATH": "Full bane", + "GARBAGE_COLLECTOR": "Søppel Samler", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateway detalj", + "GATEWAY_DETAILS": "Gateway detaljer", + "GATEWAY_NAME": "Gateway navn", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global side oppdaterings tid", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Gi tilgang til under ressurser (i roller)", + "GRAPHS_SETTINGS": "Grafer innstillinger", + "GRAPH_SETTINGS": "Graf innstillinger", + "GROUPS": "Grupper", + "GROUP_NAME": "Gruppenavn", + "HEAP_MEMORY": "Heap Minne", + "HEIGHT": "Høyde", + "HIDE_MENU": "Skjul meny", + "HISTORICAL_BAR_CHART": "Historisk Bar Diagram", + "HOST_NAME": "Vertsnavn", + "HOURS": "Timer", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML tilleggs topptekster", + "HTTP_PORT": "HTTP port", + "ID": "id", + "IDEN": "Id'en", + "IGNORE_CASE": "Ignorer sak", + "IGNORE_DUPLICATE": "Ignorer duplisert", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Inkluder terskel høy", + "INCLUDE_THRESHOLD_LOW": "Inkluder terskel lav", + "INDIVIDUAL_SETTINGS": "Individuelle innstillinger", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Intervall", + "INTERVAL_IN_SECONDS": "Intervall i sekunder", + "INVALID_USERNAME_OR_PASSWORD": "Ugyldig brukernavn og/eller passord!", + "IN_RANGE": "Innen rekkevidde", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Enhet(er) Slettet", + "ITEMS_DISABLED_SUCCESSFULLY": "Enhet(er) deaktivert", + "ITEMS_ENABLED_SUCCESSFULLY": "Enhet(er) Aktivert", + "ITEMS_PER_ROW": "Enheter per rad", + "ITEM_CREATED_SUCCESSFULLY": "Enhet opprettet", + "ITEM_UPDATED_SUCCESSFULLY": "Enhet oppdatert", + "JAVA_HOME": "Java Hjem", + "JAVA_VENDOR_URL": "Java Leverandør Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtuell Maskin Spesifikasjoner", + "JSON": "JSON", + "KEY": "Nøkkel", + "KEY_FORMAT": "Nøkkel format", + "LANGUAGE": "Språk", + "LANGUAGE_VERSION": "Språk versjon", + "LAST_5_MINUTES": "Siste 5 minutter", + "LAST_6_HOURS": "Siste 6 timer", + "LAST_12_HOURS": "Siste 12 timer", + "LAST_DAY": "Siste dag ", + "LAST_EXECUTION": "Siste gjennomføring", + "LAST_FIRED": "Siste avfyrt", + "LAST_GARBAGECOLLECTOR_DURATION": "Siste GC varighet", + "LAST_HOUR": "Siste time", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Sist modifisert", + "LAST_MONTH": "Siste måned", + "LAST_SEEN": "Sist sett", + "LAST_TRIGGER": "Sist utført", + "LAST_WEEK": "Sist uke", + "LAST_YEAR": "Siste år", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Bibliotek versjon", + "LINE": "Linje", + "LINEAR": "Lineær", + "LINE_CHART": "Linjediagram", + "LOAD": "Belastning", + "LOADED": "Belastet", + "LOADING": "Laster...", + "LOCATION": "Plassering", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Logg inn melding", + "LOGS": "Logger", + "LOG_DIRECTION": "Logg retning", + "LOG_IN": "Logg inn", + "LOG_LEVEL": "Logg level", + "LOG_OUT": "Logg Ut", + "LONGITUDE": "Longtitude", + "LOWER": "Lavere", + "MANAGEMENT_SPECIFICATION_VERSION": "Administrasjon spesifikasjon versjon", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Maks", + "MAXIMUM_BLOCK_SIZE": "Maksimum blokk størrelse", + "MEASUREMENT": "Mål", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Melding", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Melding inneholder", + "MESSAGE_TYPE": "Melding type", + "METRIC": "Metrisk", + "METRICS": "Beregninger", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "Du er i ferd med å endre metrics data backend engine innstillinger.
Denne handlingen vil føre til tap av data. Les bruksanvisningen for ytterligere detaljer.
MyController vil ikke importere/eksportere metric data når du bytter metric engine!", + "METRIC_TYPE": "beregning type", + "MILLISECONDS": "Millisekunder", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum høyde", + "MINIMUM_WIDTH": "Minimum bredde", + "MINUTES": "Minutter", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modifiser sensor og variabler kartlegging", + "MONOTONE": "Monoton", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Du er i ferd med å endre MQTT broker innstillinger.
Denne handlingen fører til at MQTT broker tjenesten starter på nytt med de nye innstillingene.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker innstillinger", + "MQTT_BROKER_HOST_EXAMPLE": "Eksempel: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Eksempel: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Eksempel: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Eksempel: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server logg", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Navn", + "NETWORK": "Nettverk", + "NETWORK_TYPE": "Nettverk type", + "NEVER": "Aldri", + "NEW": "New", + "NEW_DASHBOARD": "Ny oversikt", + "NEW_PASSWORD": "Nytt passord", + "NEXT_EXECUTION": "Next execution", + "NO": "Nei", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes online sjekk intervall", + "NODES_DETAIL": "Nodes detaljer", + "NODE_DETAILS": "Node detaljer", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node navn", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Ingenting valgt", + "NOTIFICATIONS": "Varsler", + "NOT_SET": "Ikke satt", + "NO_ACK": "Ingen ack", + "NO_BACKUPS_SETUP": "Ingen sikkerhetskopier satt opp", + "NO_DATA_AVAILABLE": "Ingen data tilgjengelig", + "NO_EXTERNAL_SERVERS_SETUP": "Ingen eksterne servere satt opp", + "NO_FIRMWARES_SETUP": "Ingen firmwares satt opp", + "NO_FIRMWARE_TYPES_SETUP": "Ingen firmware typer satt opp", + "NO_FIRMWARE_VERSIONS_SETUP": "Ingen firmware versjoner satt opp", + "NO_FORWARD_PAYLOADS_SETUP": "Ingen frem payloads satt opp", + "NO_GATEWAYS_SETUP": "Ingen gateways satt opp", + "NO_ITEMS_IN_FILTER": "Oops! Ingen resultater funnet. Endre søket.", + "NO_ITEMS_SETUP": "Ingen enheter satt opp!", + "NO_LOGS_AVAILABLE": "Ingen logger tilgjengelig.", + "NO_NODES_SETUP": "Ingen nodes satt opp.", + "NO_OPERATIONS_SETUP": "Ingen operasjoner satt opp.", + "NO_RESOURCES_DATA_SETUP": "Ingen ressurs data satt opp", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Ingen ressurser kartlagt med denne gruppen.", + "NO_RESOURCE_GROUPS_SETUP": "Ingen ressurs grupper satt opp.", + "NO_ROOMS_SETUP": "Inger rom satt opp.", + "NO_RULES_SETUP": "Ingen regler satt opp.", + "NO_SCRIPTS_SETUP": "Ingen scripts satt opp.", + "NO_SENSORS_SETUP": "Ingen sensorer satt opp.", + "NO_TEMPLATES_SETUP": "Ingen maler satt opp.", + "NO_TIMERS_SETUP": "Ingen timere satt opp.", + "NO_UID_TAGS_SETUP": "Ingen UID tags satt opp.", + "NO_VARIABLES_SETUP": "Ingen variabler satt opp.", + "OCCURRENCES": "Forekomster", + "OFF": "Av", + "OFFSET": "Forskyvning", + "ON": "PÅ", + "ONE_DAY_DATA": "En dag data", + "ONE_HOUR_DATA": "En time data", + "ONE_MINUTE_DATA": "Ett minutt data", + "OPERATING_SYSTEM": "Operativ System", + "OPERATION": "Operasjon", + "OPERATIONS": "Operasjoner", + "OPERATIONS_DETAIL": "Operasjoner detalj", + "OPERATION_NAME": "Operasjon navn", + "OPERATION_TYPE": "Operasjon type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Andre", + "PARENT": "Ordnede", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Passord", + "PATTERN": "Mønster", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Forsinkelse", + "PAYLOAD_OFF": "Payload AV", + "PAYLOAD_ON": "Payload PÅ", + "PEAK": "Peak", + "PERCENTAGE": "Prosentdel", + "PERMISSION": "Tillatelse", + "PHONE_NUMBERS": "Telefon nummer", + "PHONE_NUMBERS_COMMA_SEPARATED": "Telefonnummer separert med komma", + "PHYSICAL_MEMORY": "Fysisk minne (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frekvens (minutter)", + "PORT": "Port", + "PORT_NAME": "Port navn", + "PRIORITY": "Prioritet", + "PRIVATE": "Privat", + "PRIVATE_KEY": "Privat nøkkel", + "PROCESS_CPU": "Prosess CPU", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil oppdatert ", + "PROPERTIES": "Egenskaper", + "PUBLIC": "Offentlig", + "PUBLIC_ACCESS": "Offentlig tilgang", + "PUBLIC_KEY": "Public key", + "PURGE": "Rens", + "PURGE_BEFORE": "Rens før", + "PURGE_DONE_SUCCESSFULLY": "Rens fullført", + "PURGE_EXISTING_DATA": "Rens eksisterende data", + "PURGE_RESOURCES_LOGS": "Rens ressurs logger", + "PURGE_SENSOR_VARIABLE": "Rens sensor variabler", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ADVARSEL: Hvis du ikke velger noen parameter, vil denne prosessen slette alt!", + "PURGING": "Renser", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Maks en gang (0)", + "QOS_1": "Minst en gang (1)", + "QOS_2": "Nøyaktig en gang (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Skrivebeskyttet", + "REALTIME": "Sanntid", + "REBOOT": "Omstart", + "REBOOT_CONFIRMATION_MESSAGE": "Du er i ferd med å starte valgte elementer på nytt
Klikk 'Omstart' for å fortsette.", + "REBOOT_CONFIRMATION_TITLE": "Omstart", + "REBOOT_INITIATED": "Omstart startet for valgte enheter.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records grense", + "REFRESH": "Oppdater", + "REFRESH_NODES_INFO": "Oppdater nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Oppdater' startet.", + "REFRESH_TIME_SECONDS": "Oppdaterings tid (sekunder)", + "REGISTER_NODES_AUTOMATICALLY": "Registrer nodes automatisk", + "REGISTRATION_STATUS": "Registreringsstatus", + "RELEASES": "Utgivelser", + "RELOAD": "Oppdater", + "RELOAD_INITIATED_SUCCESSFULLY": "Oppdater startet ", + "RESOURCE": "Ressurs", + "RESOURCES": "Ressurser", + "RESOURCES_DATA": "Ressurser data ", + "RESOURCES_DATA_DETAIL": "Ressurser data detalj ", + "RESOURCES_GROUPS": "Ressurser grupper", + "RESOURCES_LOGS": "Ressurser logger", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Ressurser logger detaljer", + "RESOURCES_LOG_LEVEL": "Ressurser logger level", + "RESOURCES_LOG_RETENTION_DURATION": "Ressurser logger oppbevaring varighet", + "RESOURCE_GROUPS_DETAIL": "Ressurs gruppe detalj", + "RESOURCE_GROUPS_MAPS_DETAIL": "Ressurser gruppe kart detalj", + "RESOURCE_GROUPS_TURNED_OFF": "Ressurs grupper skrudd AV", + "RESOURCE_GROUPS_TURNED_ON": "Ressurs grupper skrudd PÅ", + "RESOURCE_GROUP_TURNED_OFF": "Ressurs gruppe skrudd AV", + "RESOURCE_GROUP_TURNED_ON": "Ressurs gruppe skrudd PÅ ", + "RESOURCE_TYPE": "Ressurs type", + "RESTORE": "Gjenopprett", + "RESTORE_CONFIRMATION_MESSAGE": "Du er i ferd med å gjenopprette systemet til '{{name}}.
Gjenopprett fjerner dagens data / konfigurasjon helt, og systemet går til' {{name}} stat!
Klikk 'Gjenopprett' for å fortsette.
NB: Etter vellykket gjenopprette må du starte serveren manuelt på nytt fra kommandolinjen", + "RESTORE_CONFIRMATION_TITLE": "Gjenopprett systemet til '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Gjenoppretting startet.", + "RESULT": "Resultat", + "RETAIN_MAX": "Beholde maksimum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Du er i ferd med å endre metrics data oppbevarings innstillinger.
Denne handlingen kan føre til tap av data. Les manualen for ytterligere detaljer.
Det er anbefalt å ta en system backup før du går fortsetter!", + "RETENTION_DIALOG_TITLE": "Les nøye før du fortsetter", + "RE_ENABLE": "Reaktiver", + "RIGHT": "Right", + "ROLES": "Roller", + "ROLES_DETAIL": "Roller detaljer", + "ROOM": "Rom", + "ROOMS": "Rom", + "ROOMS_DETAIL": "Rom detaljer", + "ROOM_NAME": "Rom navn", + "RULES": "Regler", + "RULES_DETAIL": "Regler detaljer", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Regel navn", + "RUN": "Kjør", + "RUNNING": "Kjører...", + "RUN_BACKUP": "Kjør sikkerhetskopi", + "RUN_GARBAGE_COLLECTION": "Kjør søppel samler", + "RUN_NOW": "Kjør nå", + "SAVE": "Lagre", + "SAVE_CHANGES": "Lagre endringer", + "SAVING": "Lagrer...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detaljer", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script filer", + "SEARCH": "Søk", + "SECONDS": "Sekunder ", + "SELECT": "Velg", + "SEND": "Send", + "SENDING": "Sender...", + "SEND_RAW_MESSAGE": "Send raw melding", + "SENSOR": "Sensor", + "SENSORS": "Sensorer", + "SENSORS_ACTION": "Sensorer handling", + "SENSORS_AND_VARIABLES_MAPPING": "Sensorer og variabler kartlegging", + "SENSORS_DETAIL": "Sensorer detalj", + "SENSOR_DETAILS": "Sensor detaljer", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor navn", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variabel", + "SENSOR_VARIABLES": "Sensor variabler", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variabel type", + "SERIAL_BAUD_RATE_EXAMPLE": "Eksempel: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Eksempel: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Eksempel: 120", + "SETTINGS": "Innstillinger", + "SHOW_ICON": "Vis ikon", + "SHOW_LEGENDS": "Vis legends", + "SHOW_MENU": "Vis meny", + "SIX_HOURS_DATA": "Seks timer data ", + "SMART_SLEEP_ENABLED": "Smart hvilemodus aktivert", + "SMS": "SMS", + "SMTP_HOST": "SMTP vert", + "SMTP_PASSWORD": "SMTP passord", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP brukernavn", + "SOURCE": "Kilde", + "SOURCE_CODE": "Kildekode", + "SOURCE_ID": "Kilde id", + "SPECIFICATION_VENDOR": "Spesifikasjon Leverandør", + "SPECIFICATION_VERSION": "Spesifikasjon versjon", + "STACKED_AREA_CHART": "Stablet arealdiagram", + "STATION_ID": "Stasjon id", + "STATION_PASSWORD": "Stasjon passord", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Status melding", + "STATUS_SINCE": "Status siden", + "STEP_AFTER": "Steg etter", + "STEP_BEFORE": "teg før", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Emne", + "SUB_TYPE": "Undertype", + "SUNRISE": "Soloppgang", + "SUNSET": "Solnedgang", + "SUPPORT": "Brukerstøtte", + "SWAP": "Bytte", + "SWAP_SPACE": "Swap Plass", + "SYNTAX_ERROR": "Syntax feil", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System CPU belastning", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Du er i ferd med å oppdatere konfigurasjoner av en sensor variabel'.
Ved oppdatering av konfigurasjoner, hvis det er en endring i 'Metric type', vil alle eksisterende data bli fjernet fra denne 'Sensor variabelen'!", + "S_VARIABLE_DIALOG_TITLE": "Oppdater 'Sensor Variabel' konfigurasjoner", + "TABLE_ROWS_LIMIT": "Tabell rader grense", + "TAGS": "Etiketter", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Mal", + "TEMPLATES": "Maler", + "TEMPLATES_DETAIL": "Maler detaljer", + "TEMPLATE_BINDINGS": "Mal bindinger", + "TENANT": "Leietaker", + "TESTING": "Tester...", + "TEST_CONNECTION": "Test kobling", + "TEXT": "Text", + "THREADS_COUNT": "Tråder teller", + "THRESHOLD_VALUE": "Grenseverdi", + "THRESHOLD_VALUE_HIGH": "Grenseverdi høy", + "THRESHOLD_VALUE_LOW": "Grenseverdi lav", + "TIME": "Tid", + "TIMERS": "Timere", + "TIMERS_DETAIL": "Timere detaljer", + "TIMER_NAME": "Timer navn", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Tidsformat", + "TIME_HH_MM_SS": "Tid(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Tidsforskyvning (HH:mm:ss)", + "TIME_RANGE": "Tidsramme", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Tittel", + "TO": "Til", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Emner publisere", + "TOPICS_SUBSCRIBE": "Emner abonner", + "TOPIC_PUBLISH": "Emne publiser", + "TOPIC_SUBSCRIBE": "Emne abonner", + "TOPOLOGY": "Topologi", + "TOTAL": "Total", + "TOTAL_LOADED": "Total lastet", + "TOTAL_STARTED": "Total startet", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Utløs når", + "TRUST_HOST": "Stol på verten", + "TURN_OFF": "Skru AV", + "TURN_ON": "Skru PÅ", + "TWELVE_HOURS_DATA": "Tolv timer data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Typer", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detalj", + "UNAVAILABLE": "Utilgjengelig", + "UNDO_CHANGES": "Angre endringer", + "UNIT": "Enhet", + "UNITS": "Enheter", + "UNITS_CONFIGURATION": "Enhet konfigurasjon", + "UNITS_METRICS_IMPERIAL": "Enheter [Metrics/Imperial]", + "UNLOADED": "Ubelastet", + "UP": "Opp", + "UPDATE": "Oppdater", + "UPDATED_SUCCESSFULLY": "Oppdatert", + "UPDATE_AN_ENTRY": "Oppdater en oppføring ", + "UPDATE_EXTERNAL_SERVER": "Oppdater ekstern server", + "UPDATE_FIRMWARE": "Oppdater firmware", + "UPDATE_FIRMWARE_TYPE": "Oppdater firmware type", + "UPDATE_FIRMWARE_VERSION": "Oppdater firmware versjon", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Oppdater forward payload oppføring", + "UPDATE_GATEWAY": "Oppdater gateway", + "UPDATE_NODE": "Oppdater node", + "UPDATE_OPERATION": "Oppdater operasjon", + "UPDATE_RESOURCE": "Oppdater ressurs", + "UPDATE_RESOURCES_GROUP": "Oppdater ressurs gruppe ", + "UPDATE_ROOM": "Oppdater rom", + "UPDATE_RULE": "Oppdater regel", + "UPDATE_SCRIPT": "Oppdater script ", + "UPDATE_SENSOR": "Oppdater sensor", + "UPDATE_SENSOR_VARIABLE": "Oppdater sensor variabel", + "UPDATE_TEMPLATE": "Oppdater mal", + "UPDATE_TIMER": "Oppdater timer", + "UPDATE_UID_TAG_ENTRY": "Oppdater UID tag oppføring", + "UPDATE_USER": "Oppdater bruker", + "UPDATE_VARIABLE": "Oppdater variabel", + "UPLOADED_ON": "Oppdater på", + "UPLOAD_FIRMWARE": "Oppdater firmware", + "UPPER": "Øvre", + "UPPER_LIMIT": "Øvre grense", + "UP_TIME": "Oppetid", + "URL": "URL", + "USE": "Bruk", + "USED": "Brukt", + "USERNAME": "Brukernavn", + "USERS": "Brukere", + "USERS_DETAIL": "Brukere detalj", + "USER_WORKING_DIRECTORY": "Bruker arbeidsmappe", + "USE_GLOBAL": "Bruk global", + "USE_INTERACTIVE_GUIDE_LINE": "Bruk interaktiv retningslinje", + "UTILITIES": "Verktøy", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Ingen mellomrom tillatt.", + "VALIDATION_ERROR_NUMBER": "Den angitte verdien er ikke et tall.", + "VALIDITY": "Gyldighet", + "VALUE": "Verdi", + "VALUE2": "Verdi #2", + "VALUE3": "Verdi #3", + "VARIABLES": "Variabler", + "VARIABLES_DETAIL": "Variabler detalj", + "VARIABLES_GRAPHICAL_VIEW": "Variabler grafisk visning", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variabler oppbevaringssted", + "VARIABLE_TYPES": "Variabel type", + "VENDOR": "Selger", + "VERSION": "Versjon", + "VERSIONS": "Versjoner", + "VERSION_ID": "Versjon id", + "VERSION_KERNEL": "Versjon/kernel", + "VIEW_DETAILS": "Vis detaljer", + "VM_NAME": "VM Navn", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "VM Versjon", + "WEBSOCKET_PORT": "WebSocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget bildefiler plassering", + "WRITE_API_KEY": "Skriv API nøkkel", + "YEARS": "År", + "YES": "Ja" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-pl_pl.json b/www/languages/mc_locale_gui-pl_pl.json new file mode 100644 index 0000000..14b63bf --- /dev/null +++ b/www/languages/mc_locale_gui-pl_pl.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 godzin", + "24_HOURS": "24 godziny", + "ABOUT": "O programie", + "ACCESS": "Dostęp", + "ACCESS_TOKEN": "Token dostępu", + "ACK": "Ack", + "ACKNOWLEDGE": "Potwierdź", + "ACK_ENABLED": "Ack włączony", + "ACK_REQUEST": "Ack żadanie", + "ACK_RESPONSE": "Ack odpowiedź", + "ACK_WAIT_TIME": "Ack czas oczekiwania", + "ACTIONS": "Akcje", + "ACTION_BOARD": "Tablica akcji", + "ACTIVE": "Aktywny", + "ADD": "Dodaj", + "ADD_AN_ENTRY": "Dodaj wpis", + "ADD_EXTERNAL_SERVER": "Dodaj zewnętrzny serwer", + "ADD_FIRMWARE": "Dodaj firmware", + "ADD_FIRMWARE_TYPE": "Dodaj typ firmware", + "ADD_FIRMWARE_VERSION": "Dodaj wersję firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Dodaj wpis przekazywania danych", + "ADD_GATEWAY": "Dodaj bramę", + "ADD_GROUP": "Dodaj grupę", + "ADD_NEW_WIDGET": "Dodaj nowy widget", + "ADD_NODE": "Dodaj węzeł", + "ADD_OPERATION": "Dodaj operację", + "ADD_RESOURCE": "Dodaj zasób", + "ADD_RESOURCES_GROUP": "Dodaj grupę zasobów", + "ADD_ROLE": "Dodaj rolę", + "ADD_ROOM": "Dodaj pokój", + "ADD_RULE": "Dodaj regułę", + "ADD_SCRIPT": "Dodaj skrypt", + "ADD_SENSOR": "Dodaj czujnik", + "ADD_TEMPLATE": "Dodaj szablon", + "ADD_TIMER": "Dodaj czasomierz", + "ADD_UID_TAG_ENTRY": "Dodaj etykietę UID", + "ADD_USER": "Dodaj użytkownika", + "ADD_VARIABLE": "Dodaj zmienną", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Dodatkowe moduły AngularJS do załadowania", + "AFTER": "Po", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Częstotliwość sprawdzania aktywności (sekundy)", + "ALLOW_ANONYMOUS": "Zezwalaj anonimowo", + "ALPHABETICAL_KEY_CASE": "W porządku alfabetycznym", + "ANGULARJS_CUSTOM_CONTROLLERS": "Sterowniki niestandardowe AngularJS", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "ZALOGUJ DOMYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Witaj w MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architektura", + "AREA": "Obszar", + "AUTH_ID_SID": "Identyfikator id/sid", + "AUTH_TOKEN": "Token uwierzytelniania", + "AUTOMATIC_BACKUP_SETTINGS": "Ustawienia automatycznej kopii zapasowej", + "AUTORIZED_USER": "Autoryzowany użytkownik", + "AUTO_GENERATE": "Generuj automatycznie", + "AVAILABLE_PROCESS": "Dostępny proces", + "AVERAGE_TIME": "Średni czas", + "BACKUP": "Kopia zapasowa", + "BACKUPS_DETAIL": "Szczegóły kopii zapasowej", + "BACKUP_COMPLETED_SUCCESSFULLY": "Kopia zapasowa została pomyślnie utworzona.", + "BACKUP_EVERY": "Kopie zapasowe co", + "BACKUP_FILE_PREFIX": "Prefiks pliku kopii zapasowej", + "BACKUP_LOCATION": "Lokalizacja kopii zapasowej", + "BACKUP_ON": "Kopia zapasowa wykonana", + "BACKUP_SETTINGS": "Ustawienia kopii zapasowej", + "BAR": "Belka", + "BASIS": "Baza", + "BASIS_CLOSED": "Baza zamknięta", + "BASIS_OPEN": "Baza otwarta", + "BATTERY": "Bateria", + "BATTERY_LEVEL": "Poziom baterii", + "BATTERY_USAGE": "Wykorzystanie baterii", + "BAUD_RATE": "Szybkość transmisji", + "BINARY_DATA": "Dane binarne", + "BIND_ADDRESS": "Łącz adres", + "BLOCKS": "Bloki", + "BLOCKS_SENT": "Bloki wysłane", + "BOTTOM": "Dolny", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Zbuduj JDK", + "BUILD_TOOL": "Narzędzie budowania", + "BUILT_ON": "Zbudowane", + "BUNDLE": "Pakiet", + "BUTTON_SETTINGS": "Ustawienia przycisku", + "CANCEL": "Anuluj", + "CARDINAL": "Kardynalny", + "CARDINAL_CLOSED": "Kardynalny zamknięty", + "CARDINAL_OPEN": "Kardynalny otwarty", + "CHANNEL_TAGS": "Etykieta(y) kanału", + "CHANNEL_TAGS_COMMA_SEPARATED": "Etykiety kanałów rozdzielone przecinkami", + "CHANNEL_USERNAME": "Nazwa użytkownika kanału", + "CLASS_LOADING_DETAILS": "Szczegóły ładowania klas", + "CLIENT_ID": "Id klienta", + "CLONE": "Klonuj", + "COLLECTION_COUNT": "Liczba kolekcji", + "COLLECTION_TIME": "Czas kolekcji", + "COLOR": "Kolor", + "COMMAND": "Command", + "COMMITTED": "Przesłany", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Przesłany rozmiar pamięci wirtualnej", + "CONDITION": "Warunek", + "CONDITION_TYPE": "Rodzaj warunku", + "CONNECTION_DETAILS": "Szczegóły połączenia", + "CONTENT": "Zawartość", + "CONTINUE": "Kontynuuj", + "COUNT": "Liczyć", + "COUNTER": "Licznik", + "CRC": "CRC", + "CRON_EXPRESSION": "Wyrażenie Cron", + "CSS_FILES": "Plik CSS", + "CURRENT": "Aktualny", + "CURRENT_PASSWORD": "Aktualne hasło", + "CUSTOM_MESSAGE": "Niestandardowa wiadomość", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Raz dziennie", + "DAMPENING": "Tłumienie", + "DAMPENING_TYPE": "Typ tłumienia", + "DASHBOARDS": "Panele", + "DASHBOARD_LIMIT": "Maksymalna ilość paneli", + "DATA": "Data", + "DATABASE": "Baza danych", + "DATABASE_SCHEMA_REVISION": "Rewizja schematu bazy danych", + "DATABASE_TYPE": "Typ bazy danych", + "DATABASE_VERSION": "Wersja bazy danych", + "DATA_RETENTION_SETTINGS": "Ustawienia przechowywania danych", + "DATA_TYPE": "Typ danych", + "DATA_UNAVAILABLE": "Dane niedostępne", + "DATE_PATTERN": "Wzór daty", + "DATE_RANGE": "Zakres danych", + "DAY": "Dzień", + "DAYS": "Dni", + "DEFAULT": "Domyślny", + "DEFAULT_FIRMWARE": "Domyślny firmware", + "DEFAULT_TIME_RANGE": "Domyślny zakres danych", + "DELAY_TIME_IN_SECONDS": "Opóźnienie w sekundach", + "DELETE": "Usuń", + "DELETE_DASHBOARD": "Usuń panel", + "DELETE_ITEMS": "Usuń element(y)", + "DELETE_MESSAGE": "Za chwilę usuniesz wybrany element(y)
Proces usuwania spowoduje usunięcie całego śladu tego elementu(ów)!
Kliknij \"Usuń\", aby kontynuować.", + "DESCRIPTION": "Opis", + "DESTINATION": "Przeznaczenie", + "DESTINATION_ID": "Id celu", + "DETAILS": "Szczegóły", + "DEVICES": "Urządzenia", + "DEVICE_IDENS": "Identyfikator(y) urządzenia", + "DEVICE_IDENS_COMMA_SEPARATED": "Identyfikatory urządzeń oddzielone przecinkami", + "DIRECTION": "Kierunek", + "DISABLE": "Wyłącz", + "DISABLED": "Wyłączony", + "DISABLE_WHEN_TRIGGER": "Wyłącz gdy wyzwolony", + "DISCOVER": "Wykryj", + "DISCOVER_INITIATED_SUCCESSFULLY": "Wykrywanie rozpoczęte pomyślnie", + "DISPLAY_NAMES": "Wyświetl nazwy", + "DOCUMENTS": "Dokumenty", + "DOUBLE": "Podwójny", + "DOWN": "Zatrzymany", + "DRIVER": "Sterownik", + "EDIT": "Edytuj", + "EDIT_DASHBOARD": "Edytuj panel", + "EMAIL": "Email", + "EMAILS": "Email(e)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Adresy Email oddzielone przecinkami", + "ENABLE": "Włącz", + "ENABLED": "Włączony", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Włącz domyślne bez firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Po włączeniu tej opcji użyj domyślnego firmware, jeśli wymagane firmware jest niedostępny w systemie", + "ENABLE_EDIT_MODE": "Włącz tryb edycji", + "ENABLE_MIN_MAX": "Włącz Min/Max", + "ENABLE_SSL": "Włącz SSL", + "ENABLE_UNIQUE_NAME": "Włącz unikalne nazwy", + "ERASE_CONFIGURATION": "Wyczyść konfigurację", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Za chwilę usuniesz całą konfigurację wybranych elementów.
 Kliknij \"Usuń konfigurację\", aby kontynuować.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Wyczyść konfigurację", + "ERASE_CONFIGURATION_INITIATED": "Usuń konfigurację uruchamiania wybranego elementu", + "ERROR_ITEMS_NOT_AVAILABLE": "Wybrany element(y) jest niedostępny!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Przykład: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Przykład: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Przykład: 5003", + "EUI": "EUI", + "EVALUATIONS": "Obliczenia", + "EXECUTE_DISCOVER_INTERVAL": "Wykonaj interwał wykrywania", + "EXTENSION": "Rozszerzenie", + "EXTENSIONS": "Rozszerzenia", + "EXTERNAL_SERVERS": "Zewnętrzne serwery", + "EXTERNAL_SERVERS_DETAIL": "Szczegóły serwerów zewnętrznych", + "FAILED_RETRY_COUNT": "Licznik nieudanych prób", + "FAILURE_COUNT": "Liczba niepowodzeń", + "FILE": "Plik", + "FILE_NAME": "Nazwa pliku", + "FILE_SIZE": "Rozmiar pliku", + "FILTER_BY_BLOCKS": "Filtruj według bloków", + "FILTER_BY_CONDITION_TYPE": "Filtruj według rodzaju warunku", + "FILTER_BY_DAMPENING_TYPE": "Filtruj według typu tłumienia", + "FILTER_BY_DESCRIPTION": "Filtruj według opisu", + "FILTER_BY_DESTINATION_ID": "Filtruj według Id docelowego", + "FILTER_BY_DIRECTION": "Filtruj według kierunku", + "FILTER_BY_EMAIL": "Filtruj według e-mail", + "FILTER_BY_ENABLED": "Filtruj według włączone", + "FILTER_BY_EUI": "Filtruj według EUI", + "FILTER_BY_EXTENSION": "Filtruj według rozszerzenia", + "FILTER_BY_FILE_NAME": "Filtruj według nazwy pliku", + "FILTER_BY_FREQUENCY": "Filtruj według częstotliwości", + "FILTER_BY_FULL_NAME": "Filtruj według pełnej nazwy", + "FILTER_BY_KEY": "Filtruj według klucza", + "FILTER_BY_LEVEL": "Filtruj według poziomu", + "FILTER_BY_LIBRARY_VERSION": "Filtruj według wersji biblioteki", + "FILTER_BY_MESSAGE": "Filtruj według wiadomości", + "FILTER_BY_MESSGAE_TYPE": "Filtruj według typu wiadomości", + "FILTER_BY_NAME": "Filtruj według nazwy", + "FILTER_BY_NETWORK_TYPE": "Filtruj według typu sieci", + "FILTER_BY_NODE_ID": "Filtruj według Id węzła", + "FILTER_BY_OPERATION": "Filtruj według operacji", + "FILTER_BY_OPERATION_TYPE": "Filtruj według typu operacji", + "FILTER_BY_PAYLOAD_OFF": "Filtruj według wartości danych WYŁ", + "FILTER_BY_PAYLOAD_ON": "Filtruj według wartości danych WŁ", + "FILTER_BY_PERMISSION": "Filtruj według pozwolenia", + "FILTER_BY_PUBLIC_ACCESS": "Filtruj według adresu publicznego", + "FILTER_BY_RESOURCE": "Filtruj według zasobu", + "FILTER_BY_RESOURCE_TYPE": "Filtruj według typu zasobu", + "FILTER_BY_SENSOR_ID": "Filtruj według Id sensora", + "FILTER_BY_SENSOR_NAME": "Filtruj według nazwy sensora", + "FILTER_BY_SENSOR_TYPE": "Filtruj według typu sensora", + "FILTER_BY_SENSOR_VARIABLES": "Filtruj według zmiennej sensora", + "FILTER_BY_SOURCE_ID": "Filtruj według Id źródła", + "FILTER_BY_STATUS": "Filtruj według statusu", + "FILTER_BY_STATUS_MESSAGE": "Filtruj według komunikatu o stanie", + "FILTER_BY_TYPE": "Filtruj według typu", + "FILTER_BY_TYPE_ID": "Filtruj według Id typu", + "FILTER_BY_UID": "Filtruj według UID", + "FILTER_BY_USERNAME": "Filtruj według nazwy użytkownika", + "FILTER_BY_VALUE": "Filtruj według wartości", + "FILTER_BY_VALUE2": "Filtruj według wartości #2", + "FILTER_BY_VALUE3": "Filtruj według wartości #3", + "FILTER_BY_VARIABLE_TYPES": "Filtruj według typu zmiennej", + "FILTER_BY_VERSION": "Filtruj według wersji", + "FILTER_BY_VERSION_ID": "Filtruj według Id wersji", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmware", + "FIRMWARES_DETAIL": "Szczegóły firmware", + "FIRMWARE_OTA_STATUS": "Status OTA firmware", + "FIRMWARE_TYPES_DETAIL": "Szczegóły typu firmware", + "FIRMWARE_TYPE_NAME": "Nazwa typu firmware", + "FIRMWARE_UPLOAD_INITIATED": "Rozpoczęto ładowanie firmware dla wybranych elementów.", + "FIRMWARE_VERSION": "Wersja firmware", + "FIRMWARE_VERSIONS_DETAIL": "Szczegóły wersji firmware", + "FIRST_NAME": "Imię", + "FIVE_MINUTES_DATA": "Dane z pięciu minut", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Przekazywanie danych", + "FORWARD_PAYLOADS_DETAIL": "Szczegóły przekazywania danych", + "FREE": "Wolny", + "FREQUENCY": "Częstotliwość", + "FROM": "Z", + "FROM_ADDRESS": "Z adresu", + "FROM_PHONE_NUMBER": "Z numeru telefonu", + "FULL_NAME": "Pełna nazwa", + "FULL_PATH": "Pełna ścieżka", + "GARBAGE_COLLECTOR": "Zbieracz śmieci", + "GATEWAY": "Brama", + "GATEWAYS": "Bramy", + "GATEWAYS_DETAIL": "Szczegóły bram", + "GATEWAY_DETAILS": "Szczegóły bramy", + "GATEWAY_NAME": "Nazwa bramy", + "GATEWAY_TYPE": "Typ bramy", + "GITTER_MESSAGING": "Wiadomości sieciowe", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Czas odświeżania strony głównej", + "GPS_DATA": "Dane GPS", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Przyznaj dostęp do zasobów podrzędnych (w rolach)", + "GRAPHS_SETTINGS": "Ustawienia wykresów", + "GRAPH_SETTINGS": "Ustawienia wykresu", + "GROUPS": "Grupy", + "GROUP_NAME": "Nazwa grupy", + "HEAP_MEMORY": "Pamięć stronicowana", + "HEIGHT": "Wysokość", + "HIDE_MENU": "Ukryj menu", + "HISTORICAL_BAR_CHART": "Wykres słupkowy", + "HOST_NAME": "Nazwa hosta", + "HOURS": "Godziny", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML dodatkowe nagłówki", + "HTTP_PORT": "Port HTTP", + "ID": "Id", + "IDEN": "Identyfikator", + "IGNORE_CASE": "Ignoruj przypadek", + "IGNORE_DUPLICATE": "Ignoruj duplikat", + "IMPERIAL": "Jednostki imperialne", + "INCLUDE_THRESHOLD_HIGH": "Dodaj próg wysoki", + "INCLUDE_THRESHOLD_LOW": "Dodaj próg niski", + "INDIVIDUAL_SETTINGS": "Indywidualne ustawienia", + "INIT": "Inicjalizuj", + "INTERPOLATE_TYPE": "Typ interpolacji", + "INTERVAL": "Interwał", + "INTERVAL_IN_SECONDS": "Interwał w sekundach", + "INVALID_USERNAME_OR_PASSWORD": "Nieprawidłowy użytkownik lub hasło!", + "IN_RANGE": "W zakresie", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Element(y) usunięty pomyślnie", + "ITEMS_DISABLED_SUCCESSFULLY": "Element(y) wyłączony pomyślnie", + "ITEMS_ENABLED_SUCCESSFULLY": "Element(y) włączony pomyślnie", + "ITEMS_PER_ROW": "Elementów na rząd", + "ITEM_CREATED_SUCCESSFULLY": "Element utworzony pomyślnie", + "ITEM_UPDATED_SUCCESSFULLY": "Element zaktualizowany pomyślnie", + "JAVA_HOME": "Strona główna Java", + "JAVA_VENDOR_URL": "URL dostawcy Java", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Specyfikacja wirtualnej maszyny Java", + "JSON": "JSON", + "KEY": "Klucz", + "KEY_FORMAT": "Format klucza", + "LANGUAGE": "Język", + "LANGUAGE_VERSION": "Wersja językowa", + "LAST_5_MINUTES": "Ostatnie 5 minut", + "LAST_6_HOURS": "Ostatnie 6 godzin", + "LAST_12_HOURS": "Ostatnie 12 godzin", + "LAST_DAY": "Ostatni dzień", + "LAST_EXECUTION": "Ostatnie wykonanie", + "LAST_FIRED": "Ostatnio zwolniony", + "LAST_GARBAGECOLLECTOR_DURATION": "Ostatni czas GC", + "LAST_HOUR": "Ostatnia godzina", + "LAST_MESSAGE": "Ostatnia wiadomość", + "LAST_MINUTE_AVERAGE": "Średnia z ostatniej minuty", + "LAST_MINUTE_RATE": "Wskaźnik z ostatniej minuty", + "LAST_MODIFIED": "Ostatnio zmodyfikowany", + "LAST_MONTH": "Ostatni miesiąc", + "LAST_SEEN": "Ostatnio widziany", + "LAST_TRIGGER": "Ostatnio wyzwolony", + "LAST_WEEK": "Ostatni tydzień", + "LAST_YEAR": "Ostatni rok", + "LATITUDE": "Szerokość geograficzna", + "LEFT": "Lewo", + "LEVEL": "Poziom", + "LIBRARY_VERSION": "Wersja biblioteki", + "LINE": "Linia", + "LINEAR": "Liniowy", + "LINE_CHART": "Wykres liniowy", + "LOAD": "Obciążenie", + "LOADED": "Załadowany", + "LOADING": "Ładowanie...", + "LOCATION": "Lokalizacja", + "LOCATION_IP": "Adres IP lokalizacji", + "LOCATION_NAME": "Nazwa lokalizacji", + "LOGIN_MESSAGE": "Wiadomość logowania", + "LOGS": "Logi", + "LOG_DIRECTION": "Kierunek logu", + "LOG_IN": "Zaloguj", + "LOG_LEVEL": "Poziom dziennika", + "LOG_OUT": "Wyloguj", + "LONGITUDE": "Długość geograficzna", + "LOWER": "Niżej", + "MANAGEMENT_SPECIFICATION_VERSION": "Wersja specyfikacji zarządzania", + "MARGIN": "Margines", + "MARKDOWN": "Markdown", + "MAX": "Maksimum", + "MAXIMUM_BLOCK_SIZE": "Maksymalny rozmiar bloku", + "MEASUREMENT": "Pomiary", + "MERGE_STATIONS": "Połącz stacje", + "MESSAGE": "Wiadomość", + "MESSAGES_IN_QUEUE": "Wiadomość w kolejce", + "MESSAGE_CONTAINS": "Wiadomość zawiera", + "MESSAGE_TYPE": "Typ wiadomości", + "METRIC": "Metryczny", + "METRICS": "Metryka", + "METRICS_AGGREGATION_JOB": "Agregacja danych", + "METRIC_ENGINE": "Silnik metryczny", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "Za chwilę zmienisz ustawienia mechanizmu danych silnika metrycznego.
To działanie doprowadzi do utraty danych. Przeczytaj instrukcję obsługi, aby poznać więcej szczegółów.
MyController nie importuje / nie eksportuje danych metrycznych podczas przełączania silnika metrycznego! ", + "METRIC_TYPE": "Typ metryczny", + "MILLISECONDS": "Milisekundy", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimalna wysokość", + "MINIMUM_WIDTH": "Minimalna szerokość", + "MINUTES": "Minuty", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modyfikuj mapowanie czujnika i zmiennych", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "Broker MQTT został wyłączony. Powinieneś włączyć go w pliku: conf/mycontroller.properties i zrestartuj serwer MyController.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Za chwilę zmienisz ustawienia brokera MQTT.
Ta czynność prowadzi do ponownego uruchomienia usługi brokera MQTT z nowymi ustawieniami.", + "MQTT_BROKER_EDIT_DIALOG": "Ustawienia brokera MQTT", + "MQTT_BROKER_HOST_EXAMPLE": "Przykład: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Przykład: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Przykład: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Przykład: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Dziennik serwera MyController", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nazwa", + "NETWORK": "Sieć", + "NETWORK_TYPE": "Typ sieci", + "NEVER": "Nigdy", + "NEW": "Nowy", + "NEW_DASHBOARD": "Nowy panel", + "NEW_PASSWORD": "Nowe hasło", + "NEXT_EXECUTION": "Następne wykonanie", + "NO": "Nie", + "NODE": "Węzeł", + "NODES": "Węzły", + "NODES_ALIVE_CHECK_INTERVAL": "Interwał sprawdzania węzłów online", + "NODES_DETAIL": "Szczegóły węzłów", + "NODE_DETAILS": "Szczegóły węzła", + "NODE_EUI": "EUI węzła", + "NODE_ID": "Id węzła", + "NODE_NAME": "Nazwa węzła", + "NODE_STATUS": "Status węzła", + "NODE_TYPE": "Typ węzła", + "NON_HEAP_MEMORY": "Pamięć bez sterty", + "NOTHING_SELECTED": "Niczego nie wybrano", + "NOTIFICATIONS": "Powiadomienia", + "NOT_SET": "Nie ustawiony", + "NO_ACK": "Brak ack", + "NO_BACKUPS_SETUP": "Nie skonfigurowano kopii zapasowych.", + "NO_DATA_AVAILABLE": "Brak danych", + "NO_EXTERNAL_SERVERS_SETUP": "Brak konfiguracji zewnętrznych serwerów.", + "NO_FIRMWARES_SETUP": "Nie skonfigurowano firmware.", + "NO_FIRMWARE_TYPES_SETUP": "Brak konfiguracji firmware", + "NO_FIRMWARE_VERSIONS_SETUP": "Brak konfiguracji wersji firmware", + "NO_FORWARD_PAYLOADS_SETUP": "Nie ustawiono danych przekazywania.", + "NO_GATEWAYS_SETUP": "Nie skonfigurowano bram.", + "NO_ITEMS_IN_FILTER": "Ups! Nie znaleziono wyników. Zmodyfikuj swoje zapytanie.", + "NO_ITEMS_SETUP": "Nie skonfigurowano żadnych elementów!", + "NO_LOGS_AVAILABLE": "Brak dostępnych dzienników.", + "NO_NODES_SETUP": "Nie skonfigurowano żadnych węzłów.", + "NO_OPERATIONS_SETUP": "Nie skonfigurowano żadnych operacji.", + "NO_RESOURCES_DATA_SETUP": "Brak konfiguracji danych zasobów.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Brak zasobów odwzorowanych w tej grupie.", + "NO_RESOURCE_GROUPS_SETUP": "Nie skonfigurowano grup zasobów.", + "NO_ROOMS_SETUP": "Nie ustawiono pokoi.", + "NO_RULES_SETUP": "Nie ustanowiono reguł.", + "NO_SCRIPTS_SETUP": "Nie skonfigurowano skryptów.", + "NO_SENSORS_SETUP": "Nie skonfigurowano czujników.", + "NO_TEMPLATES_SETUP": "Nie skonfigurowano szablonów.", + "NO_TIMERS_SETUP": "Nie ustawiono czasomierzy.", + "NO_UID_TAGS_SETUP": "Brak ustawień tagów UID.", + "NO_VARIABLES_SETUP": "Nie skonfigurowano zmiennych.", + "OCCURRENCES": "Zdarzenia", + "OFF": "Wyłączony", + "OFFSET": "Offset", + "ON": "Włączony", + "ONE_DAY_DATA": "Dane z jednego dnia", + "ONE_HOUR_DATA": "Dane z jednej godziny", + "ONE_MINUTE_DATA": "Dane z jednej minuty", + "OPERATING_SYSTEM": "System operacyjny", + "OPERATION": "Operacja", + "OPERATIONS": "Operacje", + "OPERATIONS_DETAIL": "Szczegóły operacji", + "OPERATION_NAME": "Nazwa operacji", + "OPERATION_TYPE": "Typ operacji", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Czy chcesz wykonać następujące polecenie w Systemie Operacyjnym serwera MyController?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Wykonaj polecenie systemu operacyjnego", + "OTHERS": "Inne", + "PARENT": "Nadrzędny", + "PARENT_NODE_EUI": "Nadrzędny węzeł EUI", + "PARSE_MODE": "Tryb parsowania", + "PASSWORD": "Hasło", + "PATTERN": "Wzór", + "PAYLOAD": "Dane", + "PAYLOAD_DELAY": "Dane / Opóźnienie", + "PAYLOAD_OFF": "Dane WYŁ", + "PAYLOAD_ON": "Dane WŁ", + "PEAK": "Pik", + "PERCENTAGE": "Procent", + "PERMISSION": "Zezwolenie", + "PHONE_NUMBERS": "Numery telefonów", + "PHONE_NUMBERS_COMMA_SEPARATED": "Numery telefonów oddzielone przecinkami", + "PHYSICAL_MEMORY": "Pamięć fizyczna (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Częstotliwość odpytywania (minuty)", + "PORT": "Port", + "PORT_NAME": "Nazwa portu", + "PRIORITY": "Priorytet", + "PRIVATE": "Prywatny", + "PRIVATE_KEY": "Klucz prywatny", + "PROCESS_CPU": "CPU procesowy", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil zaktualizowano pomyślnie", + "PROPERTIES": "Właściwości", + "PUBLIC": "Publiczny", + "PUBLIC_ACCESS": "Adres publiczny", + "PUBLIC_KEY": "Klucz publiczny", + "PURGE": "Kasuj", + "PURGE_BEFORE": "Kasuj przed", + "PURGE_DONE_SUCCESSFULLY": "Kasowanie ukończone pomyślnie.", + "PURGE_EXISTING_DATA": "Kasuj istniejące dane", + "PURGE_RESOURCES_LOGS": "Wyczyść dziennik zasobów", + "PURGE_SENSOR_VARIABLE": "Kasuj zmienną czujnika", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "OSTRZEŻENIE: Jeśli nie wybierzesz żadnego parametru, ten proces usunie wszystko!", + "PURGING": "Usuwanie", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "Co najwyżej raz (0)", + "QOS_1": "Co najwyżej raz (1)", + "QOS_2": "Co najwyżej raz (2)", + "RAW_DATA": "Surowe dane", + "READ_ONLY": "Tylko do odczytu", + "REALTIME": "Czas rzeczywisty", + "REBOOT": "Uruchom ponownie", + "REBOOT_CONFIRMATION_MESSAGE": "Za chwilę ponownie uruchomisz wybraną pozycję
Kliknij \"Uruchom ponownie\", aby kontynuować.", + "REBOOT_CONFIRMATION_TITLE": "Uruchom ponownie", + "REBOOT_INITIATED": "Zainicjowano ponowne uruchomienie dla wybranych elementów.", + "RECONNECT_DELAY": "Opóźnienie ponownego łączenia", + "RECORDS_LIMIT": "Limit rekordów", + "REFRESH": "Odśwież", + "REFRESH_NODES_INFO": "Odśwież informacje o węzłach", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "\"Odświeżanie informacji o węzłach\" zainicjowano pomyślnie", + "REFRESH_TIME_SECONDS": "Czas odświeżania (sekundy)", + "REGISTER_NODES_AUTOMATICALLY": "Zarejestruj węzły automatycznie", + "REGISTRATION_STATUS": "Status rejestracji", + "RELEASES": "Wydania", + "RELOAD": "Przeładuj", + "RELOAD_INITIATED_SUCCESSFULLY": "Ponownie uruchomiono przeładowanie", + "RESOURCE": "Zasób", + "RESOURCES": "Zasoby", + "RESOURCES_DATA": "Dane o zasobach", + "RESOURCES_DATA_DETAIL": "Dane dotyczące zasobów", + "RESOURCES_GROUPS": "Grupy zasobów", + "RESOURCES_LOGS": "Dzienniki zasobów", + "RESOURCES_LOGS_AGGREGATION_JOB": "Agregacja dzienników zasobów", + "RESOURCES_LOGS_DETAIL": "Szczegóły dziennika zasobów", + "RESOURCES_LOG_LEVEL": "Poziom dziennika zasobów", + "RESOURCES_LOG_RETENTION_DURATION": "Czas przechowywania dziennika zasobów", + "RESOURCE_GROUPS_DETAIL": "Szczegóły grup zasobów", + "RESOURCE_GROUPS_MAPS_DETAIL": "Szczegóły mapowania grupy zasobów", + "RESOURCE_GROUPS_TURNED_OFF": "Grupy zasobów WYŁĄCZONE", + "RESOURCE_GROUPS_TURNED_ON": "Grupy zasobów WŁĄCZONE", + "RESOURCE_GROUP_TURNED_OFF": "Grupa zasobów WYŁĄCZONA", + "RESOURCE_GROUP_TURNED_ON": "Grupa zasobów WŁĄCZONA", + "RESOURCE_TYPE": "Typ zasobów", + "RESTORE": "Przywróć", + "RESTORE_CONFIRMATION_MESSAGE": "Za chwilę przywrócisz system do \"{{name}}\".
 Przywracanie całkowicie usunie bieżące dane i konfigurację, system przejdzie w stan \"{{name}}\"!
Kliknij Przywróć, aby kontynuować.
Uwaga: Po pomyślnym przywróceniu musisz ręcznie uruchomić serwer z wiersza poleceń.", + "RESTORE_CONFIRMATION_TITLE": "Przywróć system do '{{nazwa}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Przywracanie zainicjowane pomyślnie.", + "RESULT": "Wynik", + "RETAIN_MAX": "Zachowaj maksimum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Za chwilę zmienisz ustawienia przechowywania danych.
To działanie może spowodować utratę danych. Przeczytaj instrukcję obsługi, aby poznać więcej szczegółów.Jest wysoce zalecane wykonanie kopii zapasowej systemu przed kontynuacją!", + "RETENTION_DIALOG_TITLE": "Przeczytaj uważnie, zanim przejdziesz dalej", + "RE_ENABLE": "Włącz ponownie", + "RIGHT": "Prawo", + "ROLES": "Role", + "ROLES_DETAIL": "Szczegóły ról", + "ROOM": "Pokój", + "ROOMS": "Pokoje", + "ROOMS_DETAIL": "Szczegóły pokoi", + "ROOM_NAME": "Nazwa pokoju", + "RULES": "Reguły", + "RULES_DETAIL": "Szczegóły reguł", + "RULE_DEFINITION_ENGINE_JOB": "Silnik definicji reguł", + "RULE_DEFINITION_RE_ENABLE_JOB": "Ponowne włączenie definicji reguły", + "RULE_NAME": "Nazwa reguły", + "RUN": "Uruchom", + "RUNNING": "Działa...", + "RUN_BACKUP": "Wykonaj kopię zapasową", + "RUN_GARBAGE_COLLECTION": "Uruchom zbieranie śmieci", + "RUN_NOW": "Uruchom teraz", + "SAVE": "Zapisz", + "SAVE_CHANGES": "Zapisz zmiany", + "SAVING": "Zapisywanie...", + "SCRIPT": "Skrypt", + "SCRIPTS": "Skrypty", + "SCRIPTS_DETAIL": "Szczegóły skryptów", + "SCRIPT_BINDINGS": "Powiązania skryptów", + "SCRIPT_ENGINES": "Silniki skryptów", + "SCRIPT_FILES": "Pliki skryptów", + "SEARCH": "Szukaj", + "SECONDS": "Sekundy", + "SELECT": "Wybierz", + "SEND": "Wyślij", + "SENDING": "Wysyłanie...", + "SEND_RAW_MESSAGE": "Wyślij surową wiadomość", + "SENSOR": "Czujnik", + "SENSORS": "Czujniki", + "SENSORS_ACTION": "Akcje sensorów", + "SENSORS_AND_VARIABLES_MAPPING": "Mapowanie czujników i zmiennych", + "SENSORS_DETAIL": "Szczegóły czujników", + "SENSOR_DETAILS": "Szczegóły czujnika", + "SENSOR_ID": "Id czujnika", + "SENSOR_NAME": "Nazwa czujnika", + "SENSOR_TYPE": "Typ czujnika", + "SENSOR_VARIABLE": "Zmienna czujnika", + "SENSOR_VARIABLES": "Zmienne czujników", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Typ zmiennej czujnika", + "SERIAL_BAUD_RATE_EXAMPLE": "Przykład: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Przykład: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Przykład: 120", + "SETTINGS": "Ustawienia", + "SHOW_ICON": "Pokaż ikonę", + "SHOW_LEGENDS": "Pokaż legendy", + "SHOW_MENU": "Pokaż menu", + "SIX_HOURS_DATA": "Dane z sześciu godzin", + "SMART_SLEEP_ENABLED": "Włączono inteligentne wstrzymanie", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP hasło", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP nazwa użytkownika", + "SOURCE": "Źródło", + "SOURCE_CODE": "Kod źródłowy", + "SOURCE_ID": "Id źródła", + "SPECIFICATION_VENDOR": "Dostawca specyfikacji", + "SPECIFICATION_VERSION": "Wersja specyfikacji", + "STACKED_AREA_CHART": "Skumulowany wykres warstwowy", + "STATION_ID": "Id stacji", + "STATION_PASSWORD": "Hasło stacji", + "STATISTICS": "Statystyki", + "STATUS": "Status", + "STATUS_MESSAGE": "Komunikat o stanie", + "STATUS_SINCE": "Status od", + "STEP_AFTER": "Krok po", + "STEP_BEFORE": "Krok przed", + "STREAM_ACK_ENABLED": "Strumień ACK włączony", + "SUBJECT": "Temat", + "SUB_TYPE": "Podtyp", + "SUNRISE": "Wschód słońca", + "SUNSET": "Zachód słońca", + "SUPPORT": "Wsparcie", + "SWAP": "Zamiana", + "SWAP_SPACE": "Plik wymiany", + "SYNTAX_ERROR": "Błąd składni", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "Obciążenie CPU", + "SYSTEM_JOBS": "Zadania systemowe", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "Zamierzasz zmienić wewnętrzne zadania systemu. To wyrażenie cron jest nieco inne niż wyrażenia cron systemu Linux
Akcja ta może prowadzić do niepoprawnego harmonogramu, słabej wydajności itp. Przeczytaj instrukcję obsługi aby uzyskać więcej szczegółów.
Zaleca się wykonanie kopii zapasowej systemu przed przejściem do następnego kroku!
Dokumentacja wyrażenia Cron", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Przeczytaj uważnie, zanim przejdziesz dalej", + "SYSTEM_LOAD_AVERAGE": "Średnie obciążenie systemu", + "SYSTEM_STATUS": "Status systemu", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Zamierzasz zaktualizować konfigurację \"Zmienna czujnika\".
Podczas aktualizacji konfiguracji, jeśli nastąpi zmiana w \"Typie metrycznym\", wszystkie istniejące dane zostaną usunięte z tej \"Zmiennej czujnika\"!", + "S_VARIABLE_DIALOG_TITLE": "Zaktualizuj konfiguracje \"Zmienna czujnika\"", + "TABLE_ROWS_LIMIT": "Limit wierszy tabeli", + "TAGS": "Etykiety", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Szablon", + "TEMPLATES": "Szablony", + "TEMPLATES_DETAIL": "Szczegóły szablonu", + "TEMPLATE_BINDINGS": "Powiązania szablonów", + "TENANT": "Tenant", + "TESTING": "Testowanie...", + "TEST_CONNECTION": "Testuj połączenie", + "TEXT": "Tekst", + "THREADS_COUNT": "Liczba wątków", + "THRESHOLD_VALUE": "Wartość progowa", + "THRESHOLD_VALUE_HIGH": "Wartość progowa wysoka", + "THRESHOLD_VALUE_LOW": "Wartość progowa niska", + "TIME": "Czas", + "TIMERS": "Czasomierze", + "TIMERS_DETAIL": "Szczegóły czasomierzy", + "TIMER_NAME": "Nazwa czasomierza", + "TIMER_TYPE": "Typ czasomierza", + "TIME_FORMAT": "Format czasu", + "TIME_HH_MM_SS": "Czas(GG:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Przesunięcie czasu (GG:mm:ss)", + "TIME_RANGE": "Zakres czasu", + "TIME_TAKEN_LAST_UPDATE": "Ostatnia aktualizacja (czas wykonania)", + "TITLE": "Tytuł", + "TO": "Do", + "TOKEN": "Token", + "TOP": "Powyżej", + "TOPICS_PUBLISH": "Publikuj tematy", + "TOPICS_SUBSCRIBE": "Subskrybuj tematy", + "TOPIC_PUBLISH": "Publikuj temat", + "TOPIC_SUBSCRIBE": "Subskrybuj temat", + "TOPOLOGY": "Topologia", + "TOTAL": "Łącznie", + "TOTAL_LOADED": "Łącznie załadowane", + "TOTAL_STARTED": "Suma włączonych", + "TRANSMIT_DELAY": "Opóźnienie transmisji", + "TRIGGER_WHEN": "Wyzwalaj kiedy", + "TRUST_HOST": "Zaufany host", + "TURN_OFF": "Wyłączyć", + "TURN_ON": "Włączyć", + "TWELVE_HOURS_DATA": "Dane z dwunastu godzin", + "TWILIO": "Twilio", + "TYPE": "Typ", + "TYPES": "Typy", + "TYPE_ID": "Wpisz Id", + "UID": "UID", + "UID_TAGS": "Etykiety UID", + "UID_TAGS_DETAIL": "Szczegóły etykiet UID", + "UNAVAILABLE": "Niedostępny", + "UNDO_CHANGES": "Cofnij zmiany", + "UNIT": "Jednostka", + "UNITS": "Jednostki", + "UNITS_CONFIGURATION": "Konfiguracja jednostek", + "UNITS_METRICS_IMPERIAL": "Jednostki [Metryczne / Imperialne]", + "UNLOADED": "Rozładowany", + "UP": "Aktywny", + "UPDATE": "Uaktualnij", + "UPDATED_SUCCESSFULLY": "Aktualizacja zakończona sukcesem.", + "UPDATE_AN_ENTRY": "Zaktualizuj wpis", + "UPDATE_EXTERNAL_SERVER": "Zaktualizuj serwer zewnętrzny", + "UPDATE_FIRMWARE": "Zaktualizuj firmware", + "UPDATE_FIRMWARE_TYPE": "Zaktualizuj typ firmware", + "UPDATE_FIRMWARE_VERSION": "Zaktualizuj wersję firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Zaktualizuj wpis przekazywania danych", + "UPDATE_GATEWAY": "Zaktualizuj bramę", + "UPDATE_NODE": "Zaktualizuj węzeł", + "UPDATE_OPERATION": "Zaktualizuj operację", + "UPDATE_RESOURCE": "Zaktualizuj zasób", + "UPDATE_RESOURCES_GROUP": "Zaktualizuj grupę zasobów", + "UPDATE_ROOM": "Zaktualizuj pokój", + "UPDATE_RULE": "Zaktualizuj regułę", + "UPDATE_SCRIPT": "Zaktualizuj skrypt", + "UPDATE_SENSOR": "Zaktualizuj sensor", + "UPDATE_SENSOR_VARIABLE": "Zaktualizuj zmienną czujnika", + "UPDATE_TEMPLATE": "Zaktualizuj szablon", + "UPDATE_TIMER": "Zaktualizuj czasomierz", + "UPDATE_UID_TAG_ENTRY": "Zaktualizuj etykietę UID", + "UPDATE_USER": "Zaktualizuj użytkownika", + "UPDATE_VARIABLE": "Zaktualizuj zmienną", + "UPLOADED_ON": "Przesłano w", + "UPLOAD_FIRMWARE": "Prześlij firmware", + "UPPER": "Górny", + "UPPER_LIMIT": "Górny limit", + "UP_TIME": "Czas działania", + "URL": "URL", + "USE": "Użyj", + "USED": "Użyty", + "USERNAME": "Nazwa użytkownika", + "USERS": "Użytkownicy", + "USERS_DETAIL": "Szczegóły użytkownika", + "USER_WORKING_DIRECTORY": "Katalog roboczy użytkownika", + "USE_GLOBAL": "Użyj globalnego", + "USE_INTERACTIVE_GUIDE_LINE": "Użyj interaktywnych wskazówek", + "UTILITIES": "Narzędzia", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Brak miejsca.", + "VALIDATION_ERROR_NUMBER": "Wprowadzona wartość nie jest liczbą.", + "VALIDITY": "Ważność", + "VALUE": "Wartość", + "VALUE2": "Wartość #2", + "VALUE3": "Wartość #3", + "VARIABLES": "Zmienne", + "VARIABLES_DETAIL": "Szczegóły zmiennych", + "VARIABLES_GRAPHICAL_VIEW": "Zmienne widok graficzny", + "VARIABLES_MAPPER": "Mapowanie zmiennych", + "VARIABLES_REPOSITORY": "Repozytorium zmiennych", + "VARIABLE_TYPES": "Typy zmiennych", + "VENDOR": "Dostawca", + "VERSION": "Wersja", + "VERSIONS": "Wersje", + "VERSION_ID": "Id wersji", + "VERSION_KERNEL": "Wersja/Jądro", + "VIEW_DETAILS": "Pokaż szczegóły", + "VM_NAME": "Nazwa VM", + "VM_VENDOR": "Dostawca VM", + "VM_VERSION": "Wersja VM", + "WEBSOCKET_PORT": "Port sieci Web", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Lokalizacja pliku obrazu widgetu", + "WRITE_API_KEY": "Zapisz klucz API", + "YEARS": "Lata", + "YES": "Tak" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-pt_br.json b/www/languages/mc_locale_gui-pt_br.json new file mode 100644 index 0000000..025f4b0 --- /dev/null +++ b/www/languages/mc_locale_gui-pt_br.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 horas", + "24_HOURS": "24 horas", + "ABOUT": "Sobre", + "ACCESS": "Acesso", + "ACCESS_TOKEN": "Token de acesso", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Ações", + "ACTION_BOARD": "Esboço seqüencial", + "ACTIVE": "Ativo", + "ADD": "Add", + "ADD_AN_ENTRY": "Adicione uma entrada", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Adicionar firmware", + "ADD_FIRMWARE_TYPE": "Adicionar tipo de firmware", + "ADD_FIRMWARE_VERSION": "Adicionar versão do firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Adicionar gateway", + "ADD_GROUP": "Adicionar grupo", + "ADD_NEW_WIDGET": "Add new widget", + "ADD_NODE": "Adicionar nó", + "ADD_OPERATION": "Adicionar operação", + "ADD_RESOURCE": "Adicionar recurso", + "ADD_RESOURCES_GROUP": "Add resources group", + "ADD_ROLE": "Adicionar papel", + "ADD_ROOM": "Adicionar sala", + "ADD_RULE": "Adicionar regra", + "ADD_SCRIPT": "Adicionar script", + "ADD_SENSOR": "Adicionar sensor", + "ADD_TEMPLATE": "Add template", + "ADD_TIMER": "Adicionar temporizador", + "ADD_UID_TAG_ENTRY": "Add UID tag entry", + "ADD_USER": "Adicionar usuário", + "ADD_VARIABLE": "Add variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "O Controlador de código aberto", + "APP.LOG_IN_TO_MESSAGE": "FAZER LOGIN NO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Bem-vindo ao MyController.org ! O controlador Open Source.", + "ARCHITECTURE": "Arquitetura", + "AREA": "Área", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Configurações da cópia de segurança automática", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generate", + "AVAILABLE_PROCESS": "Available Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Cópia de segurança", + "BACKUPS_DETAIL": "Detalhes das cópias de segurança", + "BACKUP_COMPLETED_SUCCESSFULLY": "Cópias de segurança completadas com sucesso.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Localização da cópia de segurança", + "BACKUP_ON": "Cópia de segurança ativada", + "BACKUP_SETTINGS": "Configurações da cópia de segurança", + "BAR": "Barra", + "BASIS": "Base", + "BASIS_CLOSED": "Basis closed", + "BASIS_OPEN": "Basis open", + "BATTERY": "Bateria", + "BATTERY_LEVEL": "Nível da bateria", + "BATTERY_USAGE": "Uso da bateria", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocos", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Configurações do botão", + "CANCEL": "Cancelar", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "Id do cliente", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Cor", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "Condição", + "CONDITION_TYPE": "Tipo de condição", + "CONNECTION_DETAILS": "Connection details", + "CONTENT": "Content", + "CONTINUE": "Continuar", + "COUNT": "Count", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "Atual", + "CURRENT_PASSWORD": "Senha atual", + "CUSTOM_MESSAGE": "Custom message", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Versão do banco de dados", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Tipo do dado", + "DATA_UNAVAILABLE": "Dados não disponíveis!", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Dia", + "DAYS": "Dias", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Firmware padrão", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Tempo de atraso em segundos", + "DELETE": "Excluir", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Excluir item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Descrição", + "DESTINATION": "Destino", + "DESTINATION_ID": "Destination id", + "DETAILS": "Detalhes", + "DEVICES": "Devices", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": " Desabilitar", + "DISABLED": " Desabilitado", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documentos", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Editar", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Endereços de email separados por vírgulas", + "ENABLE": "Habilitar", + "ENABLED": "Habilitado", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Habilitar modo de edição", + "ENABLE_MIN_MAX": "Habilitar Min/Max", + "ENABLE_SSL": "Habilitar SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Apagar configuração", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Apagar configuração", + "ERASE_CONFIGURATION_INITIATED": "Apagar configuração inicial para os itens selecionados", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Exemplo: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Exemplo: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Exemplo: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extensão", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Arquivo", + "FILE_NAME": "Nome do arquivo", + "FILE_SIZE": "Tamanho do arquivo", + "FILTER_BY_BLOCKS": "Filtrar por Blocos", + "FILTER_BY_CONDITION_TYPE": "Filtrar por tipo de Condição", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filtrar por Email", + "FILTER_BY_ENABLED": "Filtrar por Habilitado", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filtrar por Extensão ", + "FILTER_BY_FILE_NAME": "Filtrar por nome do arquivo", + "FILTER_BY_FREQUENCY": "Filtrar por Frequência", + "FILTER_BY_FULL_NAME": "Filtrar por nome completo", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filtrar por Nível", + "FILTER_BY_LIBRARY_VERSION": "Filtrar por versão da biblioteca", + "FILTER_BY_MESSAGE": "Filtrar por mensagem", + "FILTER_BY_MESSGAE_TYPE": "Filtrar por tipo da mensagem", + "FILTER_BY_NAME": "Filtrar por nome", + "FILTER_BY_NETWORK_TYPE": "Filtrar por tipo de Rede", + "FILTER_BY_NODE_ID": "Filtrar por id do Nó", + "FILTER_BY_OPERATION": "Filtrar por operação", + "FILTER_BY_OPERATION_TYPE": "Filtrar por tipo de Operação", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filtrar por Permissão", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filtrar por id do Sensor", + "FILTER_BY_SENSOR_NAME": "Filtrar por nome do Sensor", + "FILTER_BY_SENSOR_TYPE": "Filtrar por tipo do Sensor", + "FILTER_BY_SENSOR_VARIABLES": "Filtrar por variáveis do Sensor", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filtrar por Estado", + "FILTER_BY_STATUS_MESSAGE": "Filtrar por Estado da mensagem", + "FILTER_BY_TYPE": "Filtrar por Tipo", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filtrar por usuário", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrar por tipos de variáveis", + "FILTER_BY_VERSION": "Filtrar por versão", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Detalhe de firmwares", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Versão do Firmware", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Free", + "FREQUENCY": "Freqüência", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Nome completo", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Detalhe do Gateway", + "GATEWAY_DETAILS": "Detalhes do Gateway", + "GATEWAY_NAME": "Nome do Gateway", + "GATEWAY_TYPE": "Tipo do Gateway", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Configurações gráficas", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Grupos", + "GROUP_NAME": "Nome do grupo", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Altura", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Horas", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Intervalo", + "INTERVAL_IN_SECONDS": "Intervalo em segundos", + "INVALID_USERNAME_OR_PASSWORD": "Nome de usuário ou senha inválida!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) excluídos com sucesso", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) desabilitados com sucesso", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) habilitados com sucesso", + "ITEMS_PER_ROW": "Itens por linha", + "ITEM_CREATED_SUCCESSFULLY": "Item criado com sucesso", + "ITEM_UPDATED_SUCCESSFULLY": "Item atualizado com sucesso", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Linguagem", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Últimas 6 horas", + "LAST_12_HOURS": "Últimas 12 horas", + "LAST_DAY": "Ultimo dia", + "LAST_EXECUTION": "Última execução", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Última hora", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Última modificação", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Last seen", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Last week", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Versão da biblioteca", + "LINE": "Linha", + "LINEAR": "Linear", + "LINE_CHART": "Gráfico de linha", + "LOAD": "Carregar", + "LOADED": "Carregado", + "LOADING": "Carregando...", + "LOCATION": "Localização", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Entrar", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Sair", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Tamanho máximo do bloco", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Mensagem", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Tipo da mensagem ", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Altura mínima", + "MINIMUM_WIDTH": "Largura mínima", + "MINUTES": "Minutos", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Exemplo: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Exemplo: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Exemplo: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Exemplo: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nome", + "NETWORK": "Rede", + "NETWORK_TYPE": "Tipo de rede", + "NEVER": "Nunca", + "NEW": "New", + "NEW_DASHBOARD": "New dashboard", + "NEW_PASSWORD": "Nova senha", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Nó", + "NODES": "Nós", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Id do nó", + "NODE_NAME": "Nome do nó", + "NODE_STATUS": "Estado do nó", + "NODE_TYPE": "Tipo do nó", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notificações", + "NOT_SET": "Não configurado", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! Nenhum resultado encontrado. Modifique a sua consulta.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "Não há regras estabelecidas.", + "NO_SCRIPTS_SETUP": "Nenhum script configurado.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Ocorrências", + "OFF": "DESLIGADO", + "OFFSET": "Offset", + "ON": "LIGADO", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Sistema operacional", + "OPERATION": "Operação", + "OPERATIONS": "Operações", + "OPERATIONS_DETAIL": "Detalhes das operações", + "OPERATION_NAME": "Nome da operação", + "OPERATION_TYPE": "Tipo da operação", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Senha", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Porcentagem", + "PERMISSION": "Permissão", + "PHONE_NUMBERS": "Números de telefone", + "PHONE_NUMBERS_COMMA_SEPARATED": "Números de telefone separados por vírgulas.", + "PHYSICAL_MEMORY": "Memória física (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Porta", + "PORT_NAME": "Nome da porta", + "PRIORITY": "Priority", + "PRIVATE": "Privado", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Perfil", + "PROFILE_UPDATED_SUCCESSFULLY": "Perfil atualizado com sucesso", + "PROPERTIES": "Properties", + "PUBLIC": "Publico", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ATENÇÃO: Se você não selecionar nenhum parâmetro, este processo irá apagar tudo!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reiniciar", + "REBOOT_CONFIRMATION_MESSAGE": "Você está prestes a reiniciar os itens selecionados
Clique em 'Reiniciar' para prosseguir.", + "REBOOT_CONFIRMATION_TITLE": "Reiniciar", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Atualizar", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Recarregar", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restaurar", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Você está prestes a alterar as configurações da redução das métricas de dados .
Esta ação pode levar a perda de dados. Leia o manual do usuário para obter mais detalhes.
É altamente recomendável um backup do sistema antes de avançar!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Papéis", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Sala", + "ROOMS": "Salas", + "ROOMS_DETAIL": "Detalhes das salas", + "ROOM_NAME": "Nome da sala", + "RULES": "Regras", + "RULES_DETAIL": "Detalhes das regras", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nome da regra", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "Salvar", + "SAVE_CHANGES": "Salvar alterações", + "SAVING": "Salvando...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Segundos", + "SELECT": "Selecionar", + "SEND": "Enviar", + "SENDING": "Enviando...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "Sensores", + "SENSORS_ACTION": "Ações dos sensores", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Detalhes dos sensores", + "SENSOR_DETAILS": "Detalhes do sensor", + "SENSOR_ID": "Id do sensor", + "SENSOR_NAME": "Nome do sensor", + "SENSOR_TYPE": "Tipo do sensor", + "SENSOR_VARIABLE": "Variação do sensor", + "SENSOR_VARIABLES": "Variáveis do sensor", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Variação do tipo do sensor", + "SERIAL_BAUD_RATE_EXAMPLE": "Exemplo: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Exemplo: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Exemplo: 120", + "SETTINGS": "Configurações", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Mostrar legendas", + "SHOW_MENU": "Mostrar opções", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Estado", + "STATUS_MESSAGE": "Estado da mensagem ", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Sunrise", + "SUNSET": "Sunset", + "SUPPORT": "Ajuda", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "Sistema", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "Estado do sistema", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Tempo", + "TIMERS": "Temporizadores", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Título", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Desligar", + "TURN_ON": "Ligar", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Tipo", + "TYPES": "Tipos", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Indisponível", + "UNDO_CHANGES": "Desfazer alterações", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Up", + "UPDATE": "Atualizar", + "UPDATED_SUCCESSFULLY": "Atualizado com sucesso", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Atualizar firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Atualizar versão do firmware", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Atualizar gateway", + "UPDATE_NODE": "Atualizar nó", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Atualizar sala", + "UPDATE_RULE": "Atualizar regra", + "UPDATE_SCRIPT": "Atualizar script", + "UPDATE_SENSOR": "Atualizar sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Atualizar temporizador", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Atualizar usuário", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Carregar firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "Used", + "USERNAME": "Nome do usuário", + "USERS": "Usuários", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validade", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "Variáveis", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Tipos de variáveis", + "VENDOR": "Vendor", + "VERSION": "Versão ", + "VERSIONS": "Versões", + "VERSION_ID": "Version id", + "VERSION_KERNEL": "Versão/Kernel", + "VIEW_DETAILS": "Visualizar detalhes ", + "VM_NAME": "VM Name", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "VM Version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Anos", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-ro_ro.json b/www/languages/mc_locale_gui-ro_ro.json new file mode 100644 index 0000000..474ac5e --- /dev/null +++ b/www/languages/mc_locale_gui-ro_ro.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 ore", + "24_HOURS": "24 ore", + "ABOUT": "Despre", + "ACCESS": "Acces", + "ACCESS_TOKEN": "Tichet de acces", + "ACK": "Ack", + "ACKNOWLEDGE": "Confirmare", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Acțiuni", + "ACTION_BOARD": "Panou acțiuni", + "ACTIVE": "Activ", + "ADD": "Add", + "ADD_AN_ENTRY": "Adaugă o înregistrare", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Adaugă firmware", + "ADD_FIRMWARE_TYPE": "Adaugă tipul de firmware", + "ADD_FIRMWARE_VERSION": "Adaugă versiune de firmware", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Adaugă poartă", + "ADD_GROUP": "Adaugă grup", + "ADD_NEW_WIDGET": "Adaugă un nou widget", + "ADD_NODE": "Adaugă notă", + "ADD_OPERATION": "Adaugă acțiune", + "ADD_RESOURCE": "Adaugă resursă", + "ADD_RESOURCES_GROUP": "Adaugă grup de resurse", + "ADD_ROLE": "Adaugă rol", + "ADD_ROOM": "Adaugă cameră", + "ADD_RULE": "Adaugă regulă", + "ADD_SCRIPT": "Adaugă script", + "ADD_SENSOR": "Adaugă senzor", + "ADD_TEMPLATE": "Adaugă șablon", + "ADD_TIMER": "Adaugă temporizator", + "ADD_UID_TAG_ENTRY": "Adaugă etichetă UID", + "ADD_USER": "Adaugă utilizator", + "ADD_VARIABLE": "Adaugă variabilă", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Frecvența verificare stare (seconds)", + "ALLOW_ANONYMOUS": "Permite anonim", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "Controlere personalizate AngularJS", + "APP.DESCRIPTION": "Controller-ul Open Source", + "APP.LOG_IN_TO_MESSAGE": "AUTENTIFICARE LA MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Bun venit pe MyController.org! Controller-ul Open Source.", + "ARCHITECTURE": "Arhitectura", + "AREA": "Zonă", + "AUTH_ID_SID": "Id/Sid de autentificare", + "AUTH_TOKEN": "Tichet de autentificare", + "AUTOMATIC_BACKUP_SETTINGS": "Setări copii de siguranță automate", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generat", + "AVAILABLE_PROCESS": "Procese disponibile", + "AVERAGE_TIME": "Average time", + "BACKUP": "Copie de siguranță", + "BACKUPS_DETAIL": "Detalii copie de siguranță", + "BACKUP_COMPLETED_SUCCESSFULLY": "Copie de siguranță efectuată cu succes.", + "BACKUP_EVERY": "Copie de siguranță la fiecare", + "BACKUP_FILE_PREFIX": "Prefixul copiilor de siguranță", + "BACKUP_LOCATION": "Locația copiilor de siguranță", + "BACKUP_ON": "Salvează pe", + "BACKUP_SETTINGS": "Setări copii de siguranță", + "BAR": "Bară", + "BASIS": "Bază", + "BASIS_CLOSED": "Baza închisă", + "BASIS_OPEN": "Baza deschisă", + "BATTERY": "Baterie", + "BATTERY_LEVEL": "Nivel baterie", + "BATTERY_USAGE": "Utilizare baterie", + "BAUD_RATE": "Rata de transfer", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Folosește adresa", + "BLOCKS": "Blocuri", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker gazdă", + "BUILD_JDK": "Compilator JDK", + "BUILD_TOOL": "Compilator", + "BUILT_ON": "Compilat pe", + "BUNDLE": "Pachet", + "BUTTON_SETTINGS": "Setări butoane:", + "CANCEL": "Revocare", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal închis", + "CARDINAL_OPEN": "Cardinal deschis", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Detalii încărcare clasă", + "CLIENT_ID": "ID-ul client", + "CLONE": "Clone", + "COLLECTION_COUNT": "Număr colectări", + "COLLECTION_TIME": "Colectat la", + "COLOR": "Culoare", + "COMMAND": "Command", + "COMMITTED": "Comis", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Dimensiunea memoriei virtuale comise", + "CONDITION": "Condiția", + "CONDITION_TYPE": "Tipul condiției", + "CONNECTION_DETAILS": "Detalii conexiune", + "CONTENT": "Conţinut", + "CONTINUE": "Continuă", + "COUNT": "Total", + "COUNTER": "Counter", + "CRC": "Suma de control", + "CRON_EXPRESSION": "Expresia cron", + "CSS_FILES": "Fișiere CSS", + "CURRENT": "Curent", + "CURRENT_PASSWORD": "Parola curentă", + "CUSTOM_MESSAGE": "Mesaj personalizat", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Amortizare", + "DAMPENING_TYPE": "Tipul amortizării", + "DASHBOARDS": "Tablouri de bord", + "DASHBOARD_LIMIT": "Tablouri de bord maxim permise", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Versiunea bazei de date", + "DATA_RETENTION_SETTINGS": "Setările de retenție date", + "DATA_TYPE": "Tipul de date", + "DATA_UNAVAILABLE": "Date indisponibile!", + "DATE_PATTERN": "Model data", + "DATE_RANGE": "Date range", + "DAY": "Zi", + "DAYS": "Zile", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Firmware implicit", + "DEFAULT_TIME_RANGE": "Interval de timp implicit", + "DELAY_TIME_IN_SECONDS": "Timpul de întârziere în secunde", + "DELETE": "Şterge", + "DELETE_DASHBOARD": "Şterge tablou de bord", + "DELETE_ITEMS": "Şterge elementul(ele)", + "DELETE_MESSAGE": "Doriţi să ştergeţi elementul(ele) selectate
Procesul de ştergere va elimina complet elementul(ele)!
Faceţi clic pe \"Șterge\" pentru a continua.", + "DESCRIPTION": "Descriere", + "DESTINATION": "Destinație", + "DESTINATION_ID": "ID-ul de destinaţie", + "DETAILS": "Detalii", + "DEVICES": "Dispozitive", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direcţia", + "DISABLE": "Dezactivează", + "DISABLED": "Dezactivat", + "DISABLE_WHEN_TRIGGER": "Dezactivare declanșată de", + "DISCOVER": "Descoperă", + "DISCOVER_INITIATED_SUCCESSFULLY": "Descoperire iniţiată cu succes", + "DISPLAY_NAMES": "Numele afişate", + "DOCUMENTS": "Documente", + "DOUBLE": "Double", + "DOWN": "Nefuncțional(ă)", + "DRIVER": "Driver", + "EDIT": "Editare", + "EDIT_DASHBOARD": "Editare panou de bord", + "EMAIL": "E-mail", + "EMAILS": "E-mail(-uri)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Adrese e-mail separate de virgulă", + "ENABLE": "Activare", + "ENABLED": "Activat(ă)", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Setează ca implicit, la fără firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Când este activată această opţiune, se utilizează firmware-ul implicit, în cazul în care firmware-ul solicitat nu este disponibil în sistem", + "ENABLE_EDIT_MODE": "Activează modul de editare", + "ENABLE_MIN_MAX": "Activează Min/Max", + "ENABLE_SSL": "Activează SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Şterge configurare", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Veți șterge complet configurația elementelor selectate.
Faceţi clic pe 'Şterge configurare' pentru a continua mai departe.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Şterge configurare", + "ERASE_CONFIGURATION_INITIATED": "Ştergere configurație iniţiată pentru elementele selectate", + "ERROR_ITEMS_NOT_AVAILABLE": "Elementul(ele) selectate indisponibil(e)!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Exemplu: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Exemplu: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Exemplu: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluări", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extensie", + "EXTENSIONS": "Extensii", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Fişier", + "FILE_NAME": "Nume fișier", + "FILE_SIZE": "Dimensiune fişier", + "FILTER_BY_BLOCKS": "Filtrare după blocuri", + "FILTER_BY_CONDITION_TYPE": "Filtrare după tipul de stare", + "FILTER_BY_DAMPENING_TYPE": "Filtrare după tip Dampening", + "FILTER_BY_DESCRIPTION": "Filtrare după descriere", + "FILTER_BY_DESTINATION_ID": "Filtrare după ID-ul de destinaţie", + "FILTER_BY_DIRECTION": "Filtrare după direcţie", + "FILTER_BY_EMAIL": "Filtrare după E-mail", + "FILTER_BY_ENABLED": "Filtrare după Activare", + "FILTER_BY_EUI": "Filtrare după EUI", + "FILTER_BY_EXTENSION": "Filtrare după extensie", + "FILTER_BY_FILE_NAME": "Filtrare după Nume fișier", + "FILTER_BY_FREQUENCY": "Filtrare după frecvenţă", + "FILTER_BY_FULL_NAME": "Filtrare după numele complet", + "FILTER_BY_KEY": "Filtrare după cheie", + "FILTER_BY_LEVEL": "Filtrare după nivel", + "FILTER_BY_LIBRARY_VERSION": "Filtrare după versiunea bibliotecii", + "FILTER_BY_MESSAGE": "Filtrare după mesaj", + "FILTER_BY_MESSGAE_TYPE": "Filtrare după tipul mesajului", + "FILTER_BY_NAME": "Filtrare după nume", + "FILTER_BY_NETWORK_TYPE": "Filtrare după tipul de reţea", + "FILTER_BY_NODE_ID": "Filtrare după ID-ul nodului", + "FILTER_BY_OPERATION": "Filtrare după acțiune", + "FILTER_BY_OPERATION_TYPE": "Filtrare după tip acțiune", + "FILTER_BY_PAYLOAD_OFF": "Filtrare după sarcină utilă DEZACTIVAT", + "FILTER_BY_PAYLOAD_ON": "Filtrare după sarcină utilă ACTIVAT", + "FILTER_BY_PERMISSION": "Filtrare după permisiune", + "FILTER_BY_PUBLIC_ACCESS": "Filtrare după Acces Public", + "FILTER_BY_RESOURCE": "Filtrare după Resursă", + "FILTER_BY_RESOURCE_TYPE": "Filtrare după Tipul Resursei", + "FILTER_BY_SENSOR_ID": "Filtrare după ID-ul senzororului", + "FILTER_BY_SENSOR_NAME": "Filtrare după Nume Senzor", + "FILTER_BY_SENSOR_TYPE": "Filtrare după Tip Senzor", + "FILTER_BY_SENSOR_VARIABLES": "Filtrare după Variabilele Senzorului", + "FILTER_BY_SOURCE_ID": "Filtraţi după ID-ul sursei", + "FILTER_BY_STATUS": "Filtrare după stare", + "FILTER_BY_STATUS_MESSAGE": "Filtrare după mesajul de stare", + "FILTER_BY_TYPE": "Filtrare după tip", + "FILTER_BY_TYPE_ID": "Filtrare după ID-ul Tipului", + "FILTER_BY_UID": "Filtrare după UID", + "FILTER_BY_USERNAME": "Filtrare după nume de utilizator", + "FILTER_BY_VALUE": "Filtrare după Valoare", + "FILTER_BY_VALUE2": "Filtrare după valoare #2", + "FILTER_BY_VALUE3": "Filtrare după valoare #3", + "FILTER_BY_VARIABLE_TYPES": "Filtrare după tipuri de variabile", + "FILTER_BY_VERSION": "Filtrare după Versiune", + "FILTER_BY_VERSION_ID": "Filtrare după ID-ul de versiune", + "FIRMWARE": "Firmware-ul", + "FIRMWARES": "Firmware", + "FIRMWARES_DETAIL": "Detalii firmware", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Detalii tipuri de firmware", + "FIRMWARE_TYPE_NAME": "Nume de tip firmware", + "FIRMWARE_UPLOAD_INITIATED": "Încărcarea firmware-ului iniţiat pentru elementele selectate.", + "FIRMWARE_VERSION": "Versiune de firmware", + "FIRMWARE_VERSIONS_DETAIL": "Detalii versiuni firmware", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Date de 5 minute", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Redirecționare payload", + "FORWARD_PAYLOADS_DETAIL": "Detalii redirecționare payload", + "FREE": "Liber", + "FREQUENCY": "Frecvenţă", + "FROM": "From", + "FROM_ADDRESS": "De la adresa", + "FROM_PHONE_NUMBER": "De la numărul de telefon", + "FULL_NAME": "Numele complet", + "FULL_PATH": "Calea completă", + "GARBAGE_COLLECTOR": "Gestionarul de memorie (GC)", + "GATEWAY": "Poarta de acces", + "GATEWAYS": "Porți de acces", + "GATEWAYS_DETAIL": "Detaliu porți de acces", + "GATEWAY_DETAILS": "Detalii porți de acces", + "GATEWAY_NAME": "Denumire poarta de acces", + "GATEWAY_TYPE": "Tip poartă de acces", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git comitere: ramura", + "GLOBAL_PAGE_REFRESH_TIME": "Timp de reîmprospătare Global", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Acordă accesul la resursele-copil (în roluri)", + "GRAPHS_SETTINGS": "Setări grafice", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Grupuri", + "GROUP_NAME": "Nume grup", + "HEAP_MEMORY": "Memorie heap", + "HEIGHT": "Înălţime", + "HIDE_MENU": "Ascunde meniu", + "HISTORICAL_BAR_CHART": "Grafic istoric - bară", + "HOST_NAME": "Numele de gazdă", + "HOURS": "Ore", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Antete adiționale HTML", + "HTTP_PORT": "Portul HTTP", + "ID": "ID-ul", + "IDEN": "Iden", + "IGNORE_CASE": "Ignoră capitalizarea literelor", + "IGNORE_DUPLICATE": "Ignoră duplicatele", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include prag superior", + "INCLUDE_THRESHOLD_LOW": "Include prag inferior", + "INDIVIDUAL_SETTINGS": "Setări individuale", + "INIT": "Inițializare", + "INTERPOLATE_TYPE": "Tip interpolare", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Intervalul în secunde", + "INVALID_USERNAME_OR_PASSWORD": "Nume utilizator sau parola invalide!", + "IN_RANGE": "În intervalul", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Element(e) șters(e) cu succes", + "ITEMS_DISABLED_SUCCESSFULLY": "Element(e) dezactivat(e) cu succes", + "ITEMS_ENABLED_SUCCESSFULLY": "Element(e) activat(e) cu succes", + "ITEMS_PER_ROW": "Elemente pe rând", + "ITEM_CREATED_SUCCESSFULLY": "Element creat cu succes", + "ITEM_UPDATED_SUCCESSFULLY": "Element actualizat cu succes", + "JAVA_HOME": "Folder-ul Java (Java Home)", + "JAVA_VENDOR_URL": "URL pt. furnizorul Java", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Specificaţiile maşinii virtuale Java", + "JSON": "JSON", + "KEY": "Cheie", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Limba", + "LANGUAGE_VERSION": "Versiune limbă", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Ultimele 6 ore", + "LAST_12_HOURS": "Ultimele 12 ore", + "LAST_DAY": "Ziua precedentă", + "LAST_EXECUTION": "Ultima executare", + "LAST_FIRED": "Ultima lansare", + "LAST_GARBAGECOLLECTOR_DURATION": "Ultima durată GC", + "LAST_HOUR": "Ultima oră", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Ultima modificare", + "LAST_MONTH": "Ultima lună", + "LAST_SEEN": "Văzut ultima oară", + "LAST_TRIGGER": "Ultima declanşare", + "LAST_WEEK": "Săptămâna trecută", + "LAST_YEAR": "Anul trecut", + "LATITUDE": "Latitudine", + "LEFT": "Left", + "LEVEL": "Nivel", + "LIBRARY_VERSION": "Versiune bibliotecă", + "LINE": "Linie", + "LINEAR": "Liniar", + "LINE_CHART": "Grafic tip linie", + "LOAD": "Încărcare", + "LOADED": "Încărcat", + "LOADING": "Încărcare...", + "LOCATION": "Locaţie", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Mesaj autentificare", + "LOGS": "Jurnale", + "LOG_DIRECTION": "Direcție jurnal", + "LOG_IN": "Conectare", + "LOG_LEVEL": "Nivel jurnal", + "LOG_OUT": "Deconectare", + "LONGITUDE": "Longitudine", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Versiunea gestionarului de specificații", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Maxim", + "MAXIMUM_BLOCK_SIZE": "Mărimea maximă a blocului", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Mesaj", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Mesajul conţine", + "MESSAGE_TYPE": "Tipul mesajului", + "METRIC": "Metric", + "METRICS": "Măsurători", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Înălțimea minimă", + "MINIMUM_WIDTH": "Lățimea minimă", + "MINUTES": "Minute", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modifică senzorii şi asignarea variabilelor", + "MONOTONE": "Monoton", + "MQTT_BROKER": "Agent MQTT", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Doriţi să modificaţi setările agentului MQTT.
Această acţiune va necesita repornirea agentului MQTT pentru a folosi noile setări.", + "MQTT_BROKER_EDIT_DIALOG": "Setările agentului MQTT", + "MQTT_BROKER_HOST_EXAMPLE": "Exemplu: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Exemplu: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Exemplu: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Exemplu: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "Jurnalul server-ului MyController", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Nume", + "NETWORK": "Reţea", + "NETWORK_TYPE": "Tipul reţelei", + "NEVER": "Niciodată", + "NEW": "New", + "NEW_DASHBOARD": "Crează tablou de bord nou", + "NEW_PASSWORD": "Parolă nouă", + "NEXT_EXECUTION": "Next execution", + "NO": "Nu", + "NODE": "Nod", + "NODES": "Noduri", + "NODES_ALIVE_CHECK_INTERVAL": "Interval de verificare stare noduri", + "NODES_DETAIL": "Detalii noduri", + "NODE_DETAILS": "Detalii nod", + "NODE_EUI": "EUI-ul nodului", + "NODE_ID": "ID-ul nodului", + "NODE_NAME": "Nume nod", + "NODE_STATUS": "Stare nod", + "NODE_TYPE": "Tipul nodului", + "NON_HEAP_MEMORY": "Memorie non Heap", + "NOTHING_SELECTED": "Nimic selectat", + "NOTIFICATIONS": "Notificări", + "NOT_SET": "Nu este setat(ă)", + "NO_ACK": "Fără ack", + "NO_BACKUPS_SETUP": "Copiile de siguranță neconfigurate.", + "NO_DATA_AVAILABLE": "Nu există date disponibile.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "Nici un firmware configurat.", + "NO_FIRMWARE_TYPES_SETUP": "Nici un tip de firmware configurat.", + "NO_FIRMWARE_VERSIONS_SETUP": "Nici o versiune de firmware configurată", + "NO_FORWARD_PAYLOADS_SETUP": "Nici o redirecționare de payload configurată.", + "NO_GATEWAYS_SETUP": "Nici o poartă de acces configurată.", + "NO_ITEMS_IN_FILTER": "Oops! Niciun rezultat găsit. Modifică interogarea.", + "NO_ITEMS_SETUP": "Nici un element creat!", + "NO_LOGS_AVAILABLE": "Nu există jurnale disponibile.", + "NO_NODES_SETUP": "Nu sunt noduri configurate.", + "NO_OPERATIONS_SETUP": "Nu sunt acțiuni configurate.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Nu sunt resurse asociate acestui grup.", + "NO_RESOURCE_GROUPS_SETUP": "Nu sunt configurate grupuri de resurse.", + "NO_ROOMS_SETUP": "Nu sunt configurate camere.", + "NO_RULES_SETUP": "Nu sunt configurate reguli.", + "NO_SCRIPTS_SETUP": "Nu este configurat nici un script.", + "NO_SENSORS_SETUP": "Nu este configurat nici un senzor.", + "NO_TEMPLATES_SETUP": "Nu este configurat nici un șablon.", + "NO_TIMERS_SETUP": "Nu este configurat nici un temporizator.", + "NO_UID_TAGS_SETUP": "Nu este configurată nici o etichetă UID.", + "NO_VARIABLES_SETUP": "Nu este configurată nici o variabilă.", + "OCCURRENCES": "Apariții", + "OFF": "OPRIT", + "OFFSET": "Offset", + "ON": "PORNIT", + "ONE_DAY_DATA": "Date de o zi", + "ONE_HOUR_DATA": "Date de o oră", + "ONE_MINUTE_DATA": "Date de un minut", + "OPERATING_SYSTEM": "Sistem de operare", + "OPERATION": "Acțiunea", + "OPERATIONS": "Acțiuni", + "OPERATIONS_DETAIL": "Detalii acțiuni", + "OPERATION_NAME": "Nume acțiune", + "OPERATION_TYPE": "Tip acțiune", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Părinte", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Parola", + "PATTERN": "Model", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / întârziere", + "PAYLOAD_OFF": "Payload OPRIT", + "PAYLOAD_ON": "Payload PORNIT", + "PEAK": "Vârf", + "PERCENTAGE": "Procent", + "PERMISSION": "Permisiune", + "PHONE_NUMBERS": "Numere de telefon", + "PHONE_NUMBERS_COMMA_SEPARATED": "Numere de telefon, separate prin virgulă", + "PHYSICAL_MEMORY": "Memorie fizică (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Nume port", + "PRIORITY": "Priority", + "PRIVATE": "Privat", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Proces CPU", + "PROFILE": "Profil", + "PROFILE_UPDATED_SUCCESSFULLY": "Profil actualizat cu succes", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Acces public", + "PUBLIC_KEY": "Public key", + "PURGE": "Golire", + "PURGE_BEFORE": "Golire înainte de", + "PURGE_DONE_SUCCESSFULLY": "Golire jurnale terminată cu succes.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Golire jurnale de resurse", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "Avertisment: Dacă nu selectaţi orice parametru, acest proces va sterge totul!", + "PURGING": "Golire jurnale în curs", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Date primare", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Repornire", + "REBOOT_CONFIRMATION_MESSAGE": "Sunteți pe cale să reporniți elementele selectate
Faceţi clic pe 'Repornire' pentru a continua.", + "REBOOT_CONFIRMATION_TITLE": "Repornire", + "REBOOT_INITIATED": "Repornire iniţiată pentru elementele selectate.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Reîmprospătare", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Timp reîmprospătare (secunde)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Comunicate", + "RELOAD": "Reîncărcare", + "RELOAD_INITIATED_SUCCESSFULLY": "Reîncărcare iniţiată cu succes", + "RESOURCE": "Resursă", + "RESOURCES": "Resurse", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Grupuri de resurse", + "RESOURCES_LOGS": "Jurnalele resurselor", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Detalii jurnale de resurse", + "RESOURCES_LOG_LEVEL": "Nivel jurnale de resurse", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Detalii grupuri de resurse", + "RESOURCE_GROUPS_MAPS_DETAIL": "Detalii asociere grupuri resurse", + "RESOURCE_GROUPS_TURNED_OFF": "Grupuri de resurse OPRITE", + "RESOURCE_GROUPS_TURNED_ON": "Grupuri de resurse PORNITE", + "RESOURCE_GROUP_TURNED_OFF": "Grup resursă OPRIT", + "RESOURCE_GROUP_TURNED_ON": "Grup resursă PORNIT", + "RESOURCE_TYPE": "Tipul resursei", + "RESTORE": "Restaurare", + "RESTORE_CONFIRMATION_MESSAGE": "Doriţi să restaurați sistemul la '{{name}}'.
Restaurarea elimină complet datele/configuraţia curentă iar sistemul va reveni la starea din '{{name}}'!
Faceţi clic pe \"Restaurează\" pentru a continua.
Notă: după restaurare, serverul trebuie repornit manual din linia de comandă", + "RESTORE_CONFIRMATION_TITLE": "Restaurează sistemul la \"{{name}}\"", + "RESTORE_INITIATED_SUCCESSFULLY": "Restaurare iniţiată cu succes.", + "RESULT": "Rezultat", + "RETAIN_MAX": "Păstrează maxim #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Doriţi să modificaţi setările de păstrare a datelor de măsurare.
Această acţiune poate duce la pierderea de date. Citiţi manualul utilizatorului pentru detalii suplimentare.
Este foarte recomandă o copie de siguranță înainte de a merge mai departe!", + "RETENTION_DIALOG_TITLE": "Citiţi cu atenţie înainte de a merge mai departe", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roluri", + "ROLES_DETAIL": "Detalii roluri", + "ROOM": "Cameră", + "ROOMS": "Camere", + "ROOMS_DETAIL": "Detalii camere", + "ROOM_NAME": "Numele camerei", + "RULES": "Reguli", + "RULES_DETAIL": "Detalii reguli", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Nume regulă", + "RUN": "Rulează", + "RUNNING": "Rulează...", + "RUN_BACKUP": "Rulează copia de siguranță", + "RUN_GARBAGE_COLLECTION": "Rulează gestionarul de memorie (GC)", + "RUN_NOW": "Rulează acum", + "SAVE": "Salvează", + "SAVE_CHANGES": "Salvați modificările", + "SAVING": "Salvare în curs...", + "SCRIPT": "Script-ul", + "SCRIPTS": "Script-uri", + "SCRIPTS_DETAIL": "Detalii script-uri", + "SCRIPT_BINDINGS": "Asocieri script", + "SCRIPT_ENGINES": "Motoare de script-ul", + "SCRIPT_FILES": "Fişiere script", + "SEARCH": "Căutare", + "SECONDS": "Secunde", + "SELECT": "Selectaţi", + "SEND": "Trimite", + "SENDING": "Trimitere...", + "SEND_RAW_MESSAGE": "Trimite mesaj brut", + "SENSOR": "Senzor", + "SENSORS": "Senzori", + "SENSORS_ACTION": "Acțiuni senzori", + "SENSORS_AND_VARIABLES_MAPPING": "Asignare senzori şi variabile", + "SENSORS_DETAIL": "Detalii senzori", + "SENSOR_DETAILS": "Detalii senzor", + "SENSOR_ID": "ID senzor", + "SENSOR_NAME": "Nume senzor", + "SENSOR_TYPE": "Tip senzor", + "SENSOR_VARIABLE": "Variabila senzorului", + "SENSOR_VARIABLES": "Variabilele senzorului", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Tip variabilă senzor", + "SERIAL_BAUD_RATE_EXAMPLE": "Exemplu: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Exemplu: / dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Exemplu: 120", + "SETTINGS": "Setări", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Arată legende", + "SHOW_MENU": "Arată meniul", + "SIX_HOURS_DATA": "Date de șase ore", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS-URI", + "SMTP_HOST": "Server SMTP", + "SMTP_PASSWORD": "Parola SMTP", + "SMTP_PORT": "Portul SMTP", + "SMTP_USERNAME": "Nume utilizator SMTP", + "SOURCE": "Sursa", + "SOURCE_CODE": "Codul sursă", + "SOURCE_ID": "ID-ul sursă", + "SPECIFICATION_VENDOR": "Furnizor specificații", + "SPECIFICATION_VERSION": "Versiunea specificațiilor", + "STACKED_AREA_CHART": "Grafic de tip suprafață stratificată", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Stare", + "STATUS_MESSAGE": "Mesaj de stare", + "STATUS_SINCE": "De când?", + "STEP_AFTER": "Front crescător", + "STEP_BEFORE": "Front descrescător", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subiect", + "SUB_TYPE": "Sub-tip", + "SUNRISE": "Răsărit", + "SUNSET": "Apus", + "SUPPORT": "Suport", + "SWAP": "Swap", + "SWAP_SPACE": "Spațiu swap", + "SYNTAX_ERROR": "Eroare de sintaxă", + "SYSTEM": "Sistem", + "SYSTEM_CPU_LOAD": "Încărcare CPU", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Încărcare CPU medie", + "SYSTEM_STATUS": "Stare sistem", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Limită rânduri tabel", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Şablon", + "TEMPLATES": "Șabloane", + "TEMPLATES_DETAIL": "Detalii șabloane", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testare...", + "TEST_CONNECTION": "Testare conexiune", + "TEXT": "Text", + "THREADS_COUNT": "Numărul de fire de execuție", + "THRESHOLD_VALUE": "Valoarea de prag", + "THRESHOLD_VALUE_HIGH": "Prag, limita sus", + "THRESHOLD_VALUE_LOW": "Prag, limita jos", + "TIME": "Timp", + "TIMERS": "Temporizatoare", + "TIMERS_DETAIL": "Detalii temporizatoare", + "TIMER_NAME": "Nume temporizator", + "TIMER_TYPE": "Tip temporizator", + "TIME_FORMAT": "Formatul orei", + "TIME_HH_MM_SS": "Timp (hh:mm:SS)", + "TIME_OFFSET_HH_MM_SS": "Decalaj de timp (HH:mm:ss)", + "TIME_RANGE": "Intervalul de timp", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Titlu", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Publicare subiecte", + "TOPICS_SUBSCRIBE": "Abonare subiecte", + "TOPIC_PUBLISH": "Publicare subiect", + "TOPIC_SUBSCRIBE": "Abonare subiect", + "TOPOLOGY": "Topologie", + "TOTAL": "Total", + "TOTAL_LOADED": "Total încărcat", + "TOTAL_STARTED": "Total demarat(e)", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Declanşat când", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Opreşte", + "TURN_ON": "Pornește", + "TWELVE_HOURS_DATA": "Date de douăsprezece ore", + "TWILIO": "Twilio", + "TYPE": "Tip", + "TYPES": "Tipuri", + "TYPE_ID": "ID tip", + "UID": "UID", + "UID_TAGS": "Etichete UID", + "UID_TAGS_DETAIL": "Detalii etichete UID", + "UNAVAILABLE": "Indisponibil", + "UNDO_CHANGES": "Anulaţi modificările", + "UNIT": "Unit", + "UNITS": "Unităţi", + "UNITS_CONFIGURATION": "Configurare unități", + "UNITS_METRICS_IMPERIAL": "Unităţi [Metric/Imperial]", + "UNLOADED": "Descărcat(e)", + "UP": "Funcțional(ă)", + "UPDATE": "Actualizare", + "UPDATED_SUCCESSFULLY": "Actualizat cu succes.", + "UPDATE_AN_ENTRY": "Actualizează o intrare", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Actualizare firmware", + "UPDATE_FIRMWARE_TYPE": "Actualizare tip firmware", + "UPDATE_FIRMWARE_VERSION": "Actualizare versiune firmvare", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Actualizare element redirecționare payload", + "UPDATE_GATEWAY": "Actualizare poartă acces", + "UPDATE_NODE": "Actualizare nod", + "UPDATE_OPERATION": "Actualizează acțiunea", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Actualizare grup resurse", + "UPDATE_ROOM": "Actualizare cameră", + "UPDATE_RULE": "Actualizare regulă", + "UPDATE_SCRIPT": "Actualizare script", + "UPDATE_SENSOR": "Actualizare senzor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Actualizare șablon", + "UPDATE_TIMER": "Actualizare temporizator", + "UPDATE_UID_TAG_ENTRY": "Actualizare element etichetă UID", + "UPDATE_USER": "Actualizare utilizator", + "UPDATE_VARIABLE": "Actualizare variabilă", + "UPLOADED_ON": "Actualizat la", + "UPLOAD_FIRMWARE": "Încărcare firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Limită superioară", + "UP_TIME": "Rulează de", + "URL": "URL", + "USE": "Utilizează", + "USED": "Utilizat", + "USERNAME": "Nume utilizator", + "USERS": "Utilizatori", + "USERS_DETAIL": "Detalii utilizatori", + "USER_WORKING_DIRECTORY": "Directorul de lucru utilizator", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Utilizaţi linia de ghid interactiv", + "UTILITIES": "Utilitare", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Spațiul nu este permis.", + "VALIDATION_ERROR_NUMBER": "Valoarea introdusă nu este un număr.", + "VALIDITY": "Valabilitate", + "VALUE": "Valoare", + "VALUE2": "Valoarea #2", + "VALUE3": "Valoarea #3", + "VARIABLES": "Variabile", + "VARIABLES_DETAIL": "Detalii variabile", + "VARIABLES_GRAPHICAL_VIEW": "Vizualizare grafică a variabilelor", + "VARIABLES_MAPPER": "Asociator variabile", + "VARIABLES_REPOSITORY": "Repertoriu de variabile", + "VARIABLE_TYPES": "Tipuri de variabile", + "VENDOR": "Furnizor", + "VERSION": "Versiune", + "VERSIONS": "Versiuni", + "VERSION_ID": "ID-ul versiunii", + "VERSION_KERNEL": "Versiune/Nucleu", + "VIEW_DETAILS": "Vezi detalii", + "VM_NAME": "Numele VM", + "VM_VENDOR": "Furnizor VM", + "VM_VERSION": "Versiunea VM", + "WEBSOCKET_PORT": "Portul WebSocket", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Locație fişiere de imagine pt. widget", + "WRITE_API_KEY": "Write API key", + "YEARS": "Ani", + "YES": "Da" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-ru_ru.json b/www/languages/mc_locale_gui-ru_ru.json new file mode 100644 index 0000000..936aab0 --- /dev/null +++ b/www/languages/mc_locale_gui-ru_ru.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 часов", + "24_HOURS": "24 часа", + "ABOUT": "О системе", + "ACCESS": "Доступ", + "ACCESS_TOKEN": "Ключ доступа", + "ACK": "Ack", + "ACKNOWLEDGE": "Подтверждение", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack запрос", + "ACK_RESPONSE": "Ack ответ", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Действия", + "ACTION_BOARD": "Панель действий", + "ACTIVE": "Включен", + "ADD": "Добавить", + "ADD_AN_ENTRY": "Добавить запись", + "ADD_EXTERNAL_SERVER": "Добавить внешний сервер", + "ADD_FIRMWARE": "Добавить прошивку", + "ADD_FIRMWARE_TYPE": "Добавить тип прошивки", + "ADD_FIRMWARE_VERSION": "Добавить версию прошивки", + "ADD_FORWARD_PAYLOAD_ENTRY": "Добавить пакет пересылки", + "ADD_GATEWAY": "Добавить шлюз", + "ADD_GROUP": "Добавить группу", + "ADD_NEW_WIDGET": "Добавить новый виджет", + "ADD_NODE": "Добавить узел", + "ADD_OPERATION": "Добавить операцию", + "ADD_RESOURCE": "Добавить ресурс", + "ADD_RESOURCES_GROUP": "Добавить группу ресурсов", + "ADD_ROLE": "Добавить роль", + "ADD_ROOM": "Добавить комнату", + "ADD_RULE": "Добавить правило", + "ADD_SCRIPT": "Добавить скрипт", + "ADD_SENSOR": "Добавить сенсор", + "ADD_TEMPLATE": "Добавить шаблон", + "ADD_TIMER": "Добавить таймер", + "ADD_UID_TAG_ENTRY": "Добавить запись UID тэга", + "ADD_USER": "Добавить пользователя", + "ADD_VARIABLE": "Добавить переменную", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "После", + "ALIAS": "Псевдоним", + "ALIVE_TEST_FREQUENCY": "Интервал проверки датчиков (секунды)", + "ALLOW_ANONYMOUS": "Разрешить анонимность", + "ALPHABETICAL_KEY_CASE": "По алфавиту ключевое дело", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS пользовательские контроллеры", + "APP.DESCRIPTION": "Контроллер с открытым исходным кодом", + "APP.LOG_IN_TO_MESSAGE": "ВОЙТИ В MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Добро пожаловать MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Архитектура", + "AREA": "Область", + "AUTH_ID_SID": "id/sid авторизации", + "AUTH_TOKEN": "Токен авторизации", + "AUTOMATIC_BACKUP_SETTINGS": "Настройки автоматического резервного копирования", + "AUTORIZED_USER": "Авторизованный пользователь", + "AUTO_GENERATE": "Автогенерация", + "AVAILABLE_PROCESS": "Доступные процессы", + "AVERAGE_TIME": "Average time", + "BACKUP": "Резервное копирование", + "BACKUPS_DETAIL": "Детали резервных копий", + "BACKUP_COMPLETED_SUCCESSFULLY": "Резервное копирование завершено успешно.", + "BACKUP_EVERY": "Резервное копирование каждый", + "BACKUP_FILE_PREFIX": "Префикс файла резервных копий", + "BACKUP_LOCATION": "Расположение резервных копий", + "BACKUP_ON": "Последняя копия", + "BACKUP_SETTINGS": "Настройки резервного копирования", + "BAR": "Панель", + "BASIS": "Основа", + "BASIS_CLOSED": "Основа закрыта", + "BASIS_OPEN": "Основа открыта", + "BATTERY": "Батарея", + "BATTERY_LEVEL": "Заряд батареи", + "BATTERY_USAGE": "Использование батареи", + "BAUD_RATE": "Скорость соединения", + "BINARY_DATA": "Двоичные данные", + "BIND_ADDRESS": "Слушать адрес", + "BLOCKS": "Блоки", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Низ", + "BROKET_HOST": "Хост Брокера", + "BUILD_JDK": "Сборка JDK", + "BUILD_TOOL": "Сборка утилит", + "BUILT_ON": "Построен на", + "BUNDLE": "Пакет", + "BUTTON_SETTINGS": "Настройки кнопок:", + "CANCEL": "Отмена", + "CARDINAL": "Кардинал, основное состояние", + "CARDINAL_CLOSED": "Кардинал, основное состояние - закрыто", + "CARDINAL_OPEN": "Кардинал, основное состояние - открыто", + "CHANNEL_TAGS": "Значок канала (ов)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Теги канала через запятую", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Подробнее загруженные классы", + "CLIENT_ID": "Идентификатор клиента", + "CLONE": "Копировать", + "COLLECTION_COUNT": "Количество счетчиков", + "COLLECTION_TIME": "Время сбора", + "COLOR": "Цвет", + "COMMAND": "Command", + "COMMITTED": "Фиксировать", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Размер выделенной виртуальной памяти", + "CONDITION": "Условие", + "CONDITION_TYPE": "Тип условия", + "CONNECTION_DETAILS": "Детали соединения", + "CONTENT": "Содержимое", + "CONTINUE": "Продолжить", + "COUNT": "Количество", + "COUNTER": "Счетчик", + "CRC": "CRC", + "CRON_EXPRESSION": "Выражение Cron", + "CSS_FILES": "Файлы CSS", + "CURRENT": "Текущий", + "CURRENT_PASSWORD": "Текущий пароль", + "CUSTOM_MESSAGE": "Свое сообщение", + "DAEMON": "Демон", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Усреднить", + "DAMPENING_TYPE": "Тип усреднения", + "DASHBOARDS": "Панель управления", + "DASHBOARD_LIMIT": "Максимальное кол-во панелей", + "DATA": "Дата", + "DATABASE": "База данных", + "DATABASE_SCHEMA_REVISION": "Просмотр схемы базы данных", + "DATABASE_TYPE": "Тип базы данных", + "DATABASE_VERSION": "Версия базы данных", + "DATA_RETENTION_SETTINGS": "Параметры хранения данных", + "DATA_TYPE": "Тип даты", + "DATA_UNAVAILABLE": "Данные недоступны!", + "DATE_PATTERN": "Шаблон даты", + "DATE_RANGE": "Диапазон дат", + "DAY": "День", + "DAYS": "Дней", + "DEFAULT": "По умолчанию", + "DEFAULT_FIRMWARE": "Прошивка по умолчанию", + "DEFAULT_TIME_RANGE": "Диапазон времени по умолчанию", + "DELAY_TIME_IN_SECONDS": "Время задержки в секундах", + "DELETE": "Удалить", + "DELETE_DASHBOARD": "Удалить панель управления", + "DELETE_ITEMS": "Удалить элемент(ы)", + "DELETE_MESSAGE": "Вы хотите удалить выбранный таймер(ы)
После удаления вы потеряете все настройки элемента(ов)!
Нажмите 'Удалить' что бы приступить.", + "DESCRIPTION": "Описание", + "DESTINATION": "Назначение", + "DESTINATION_ID": "Идентификатор назначения", + "DETAILS": "Подробнее", + "DEVICES": "Устройства", + "DEVICE_IDENS": "Идентификатор(ы) устройств", + "DEVICE_IDENS_COMMA_SEPARATED": "Идентификаторы устройств через запятую", + "DIRECTION": "Направление", + "DISABLE": "Отключить", + "DISABLED": "Отключено", + "DISABLE_WHEN_TRIGGER": "При срабатывании триггера отключить", + "DISCOVER": "Обнаружить", + "DISCOVER_INITIATED_SUCCESSFULLY": "Обнаружение успешно завершено", + "DISPLAY_NAMES": "Отображать имена", + "DOCUMENTS": "Документы", + "DOUBLE": "Двойной", + "DOWN": "Выключен", + "DRIVER": "Драйвер", + "EDIT": "Редактировать", + "EDIT_DASHBOARD": "Редактировать панель управления", + "EMAIL": "Электронная почта", + "EMAILS": "Электронная почта", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Почтовые ящики разделенные запятой", + "ENABLE": "Включить", + "ENABLED": "Включен", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Использовать прошивку по умолчанию", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "Когда эта опция включена, используется прошивка по умолчанию, если другая прошивка не доступна системе", + "ENABLE_EDIT_MODE": "Включить режим редактирования", + "ENABLE_MIN_MAX": "Включить Мин/Макс", + "ENABLE_SSL": "Включить SSL", + "ENABLE_UNIQUE_NAME": "Включить уникальное имя", + "ERASE_CONFIGURATION": "Стереть настройки", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "Вы собираетесь удалить, всю конфигурацию выбранных элементов.
Нажмите 'Удалить конфигурацию', чтобы продолжить.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Удалить конфигурацию", + "ERASE_CONFIGURATION_INITIATED": "Удалить конфигурацию инициированную для выбранных элементов", + "ERROR_ITEMS_NOT_AVAILABLE": "Выбранный пункт(ы), не доступен!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Пример: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Пример: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Пример: 5003", + "EUI": "EUI", + "EVALUATIONS": "Оценки", + "EXECUTE_DISCOVER_INTERVAL": "Интервал поиска", + "EXTENSION": "Расширения", + "EXTENSIONS": "Расширения", + "EXTERNAL_SERVERS": "Внешние серверы", + "EXTERNAL_SERVERS_DETAIL": "Детали внешних серверов", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "Файл", + "FILE_NAME": "Имя файла", + "FILE_SIZE": "Размер файла", + "FILTER_BY_BLOCKS": "Фильтр по блокам", + "FILTER_BY_CONDITION_TYPE": "Фильтр по типу условия", + "FILTER_BY_DAMPENING_TYPE": "Фильтр по типу усреднения", + "FILTER_BY_DESCRIPTION": "Фильтр по описанию", + "FILTER_BY_DESTINATION_ID": "Фильтр по идентификатору назначения", + "FILTER_BY_DIRECTION": "Фильтр по направлению", + "FILTER_BY_EMAIL": "Фильтр по электронной почте", + "FILTER_BY_ENABLED": "Фильтр по состоянию", + "FILTER_BY_EUI": "Фильтр по EUI", + "FILTER_BY_EXTENSION": "Фильтр по расширению", + "FILTER_BY_FILE_NAME": "Фильтр по имени файла", + "FILTER_BY_FREQUENCY": "Фильтр по частоте", + "FILTER_BY_FULL_NAME": "Фильтр по полному имени", + "FILTER_BY_KEY": "Фильтр по ключу", + "FILTER_BY_LEVEL": "Фильтр по уровню", + "FILTER_BY_LIBRARY_VERSION": "Фильтр по версии библиотеки", + "FILTER_BY_MESSAGE": "Фильтр по сообщению", + "FILTER_BY_MESSGAE_TYPE": "Фильтр по типу сообщения", + "FILTER_BY_NAME": "Фильтр по имени", + "FILTER_BY_NETWORK_TYPE": "Фильтр по типу сети", + "FILTER_BY_NODE_ID": "Фильтр по идентификатору узла", + "FILTER_BY_OPERATION": "Фильтр по операции", + "FILTER_BY_OPERATION_TYPE": "Фильтр по типу операции", + "FILTER_BY_PAYLOAD_OFF": "Фильтр по сообщению OFF", + "FILTER_BY_PAYLOAD_ON": "Фильтр по сообщению ON", + "FILTER_BY_PERMISSION": "Фильтр по разрешению", + "FILTER_BY_PUBLIC_ACCESS": "Фильтр по публичному доступу", + "FILTER_BY_RESOURCE": "Фильтр по ресурсу", + "FILTER_BY_RESOURCE_TYPE": "Фильтр по типу ресурса", + "FILTER_BY_SENSOR_ID": "Фильтр по идентификатору сенсора", + "FILTER_BY_SENSOR_NAME": "Фильтр по имени сенсора", + "FILTER_BY_SENSOR_TYPE": "Фильтр по типу сенсора", + "FILTER_BY_SENSOR_VARIABLES": "Фильтр по переменным сенсоров", + "FILTER_BY_SOURCE_ID": "Фильтр по идентификатору источника", + "FILTER_BY_STATUS": "Фильтр по состоянию", + "FILTER_BY_STATUS_MESSAGE": "Фильтр по сообщению о состоянии", + "FILTER_BY_TYPE": "Фильтр по типу", + "FILTER_BY_TYPE_ID": "Фильтр по идентификатору типа", + "FILTER_BY_UID": "Фильтр по UID", + "FILTER_BY_USERNAME": "Фильтр по имени пользователя", + "FILTER_BY_VALUE": "Фильтр по значению", + "FILTER_BY_VALUE2": "Фильтр по значению #2", + "FILTER_BY_VALUE3": "Фильтр по значению #3", + "FILTER_BY_VARIABLE_TYPES": "Фильтр по типам переменных", + "FILTER_BY_VERSION": "Фильтр по версии", + "FILTER_BY_VERSION_ID": "Фильтр по идентификатору версии", + "FIRMWARE": "Прошивка", + "FIRMWARES": "Прошивки", + "FIRMWARES_DETAIL": "Детали прошивок", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Типы прошивок", + "FIRMWARE_TYPE_NAME": "Тип прошивки", + "FIRMWARE_UPLOAD_INITIATED": "Инициализирована загрузка прошивки для выбранных узлов", + "FIRMWARE_VERSION": "Версия прошивки", + "FIRMWARE_VERSIONS_DETAIL": "Подробнее о версии прошивки", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Данные за пять минут", + "FORUM": "Форум", + "FORWARD_PAYLOAD": "Переслать пакет", + "FORWARD_PAYLOADS_DETAIL": "Детали пересланных пакетов", + "FREE": "Свободно", + "FREQUENCY": "Частота", + "FROM": "От", + "FROM_ADDRESS": "От адреса", + "FROM_PHONE_NUMBER": "От телефонного номера", + "FULL_NAME": "Полное имя", + "FULL_PATH": "Полный путь", + "GARBAGE_COLLECTOR": "Сборщик мусора", + "GATEWAY": "Шлюз", + "GATEWAYS": "Шлюзы", + "GATEWAYS_DETAIL": "Детали шлюзов", + "GATEWAY_DETAILS": "Детали шлюза", + "GATEWAY_NAME": "Имя шлюза", + "GATEWAY_TYPE": "Тип шлюза", + "GITTER_MESSAGING": "Gitter сообщения", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Время обновления страницы", + "GPS_DATA": "GPS данные", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Предоставить доступ к дочерним ресурсам (в роли)", + "GRAPHS_SETTINGS": "Настройки графиков", + "GRAPH_SETTINGS": "настройки Graph", + "GROUPS": "Группы", + "GROUP_NAME": "Название группы", + "HEAP_MEMORY": "Динамическая память", + "HEIGHT": "Высота", + "HIDE_MENU": "Закрыть меню", + "HISTORICAL_BAR_CHART": "История изменений", + "HOST_NAME": "Имя хоста", + "HOURS": "Часов", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "Дополнительные заголовки HTML", + "HTTP_PORT": "HTTP порт", + "ID": "Идентификатор", + "IDEN": "Идентификатор", + "IGNORE_CASE": "Игнорировать регистр", + "IGNORE_DUPLICATE": "Игнорировать дубликаты", + "IMPERIAL": "Имперская система измерения", + "INCLUDE_THRESHOLD_HIGH": "Включая верхний порог", + "INCLUDE_THRESHOLD_LOW": "Включая нижний порог", + "INDIVIDUAL_SETTINGS": "Индивидуальные параметры настройки", + "INIT": "Инициализировать", + "INTERPOLATE_TYPE": "Тип интерполяции", + "INTERVAL": "Интервал", + "INTERVAL_IN_SECONDS": "Интервал в секундах", + "INVALID_USERNAME_OR_PASSWORD": "Неправильное имя пользователя или пароль!", + "IN_RANGE": "В диапазоне", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Объект(ы), успешно удален(ы)", + "ITEMS_DISABLED_SUCCESSFULLY": "Объект(ы), успешно отключен(ы)", + "ITEMS_ENABLED_SUCCESSFULLY": "Объекты(ы), успешно включен(ы)", + "ITEMS_PER_ROW": "Объектов в строке", + "ITEM_CREATED_SUCCESSFULLY": "Объект успешно создан", + "ITEM_UPDATED_SUCCESSFULLY": "Объект успешно сохранен", + "JAVA_HOME": "Папка Java", + "JAVA_VENDOR_URL": "URL поставщика Java", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Спецификация виртуальной машины Java", + "JSON": "JSON", + "KEY": "Ключ", + "KEY_FORMAT": "Формат ключа", + "LANGUAGE": "Язык", + "LANGUAGE_VERSION": "Версия языка", + "LAST_5_MINUTES": "Последние 5 минут", + "LAST_6_HOURS": "Последние 6 часов", + "LAST_12_HOURS": "Последние 12 часов", + "LAST_DAY": "Последний день", + "LAST_EXECUTION": "Последнее исполнение", + "LAST_FIRED": "В последний раз запущенный", + "LAST_GARBAGECOLLECTOR_DURATION": "Последняя продолжительность GC", + "LAST_HOUR": "Последний час", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Последние изменения", + "LAST_MONTH": "Последний месяц", + "LAST_SEEN": "Последний раз присутствовал", + "LAST_TRIGGER": "Последнее срабатывание", + "LAST_WEEK": "Последняя неделя", + "LAST_YEAR": "Последний год", + "LATITUDE": "Широта", + "LEFT": "Лево", + "LEVEL": "Уровень", + "LIBRARY_VERSION": "Версия библотеки", + "LINE": "Линейный", + "LINEAR": "Линейный", + "LINE_CHART": "Линейный график", + "LOAD": "Загрузить", + "LOADED": "Загруженно", + "LOADING": "Загрузка ...", + "LOCATION": "Место нахождения", + "LOCATION_IP": "Местоположение IP", + "LOCATION_NAME": "Имя местонахождения", + "LOGIN_MESSAGE": "Сообщение при входе", + "LOGS": "Логи", + "LOG_DIRECTION": "Директория логов", + "LOG_IN": "Войти", + "LOG_LEVEL": "Уровень логов", + "LOG_OUT": "Выйти", + "LONGITUDE": "Долгота", + "LOWER": "Нижний", + "MANAGEMENT_SPECIFICATION_VERSION": "Версия спецификации управления", + "MARGIN": "Поле", + "MARKDOWN": "Markdown", + "MAX": "Максимум", + "MAXIMUM_BLOCK_SIZE": "Максимальный размер блока", + "MEASUREMENT": "Измерение", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Сообщение", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Сообщение содержит", + "MESSAGE_TYPE": "Тип сообщения", + "METRIC": "Метрическая система измерения", + "METRICS": "Графики", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Метрическая система", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "Вы собираетесь изменить настройки ядра базы данных показателей.
Это действие приведет к потере данных. Подробнее см. Руководство пользователя.
MyController не будет импортировать / экспортировать метрические данные при переключении метрического движка!\n.2", + "METRIC_TYPE": "Тип метрики", + "MILLISECONDS": "Миллисекунды", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Минимальная высота", + "MINIMUM_WIDTH": "Минимальная ширина", + "MINUTES": "Минут", + "MIN_MAX": "Мин/Макс", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Измененить сенсор и привязку переменных", + "MONOTONE": "Монотонный", + "MQTT_BROKER": "MQTT брокер", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "Вы собираетесь изменить настройки брокера MQTT.
Это действие привет к перезапуску MQTT брокера с новыми параметрами.", + "MQTT_BROKER_EDIT_DIALOG": "Настройки MQTT брокера", + "MQTT_BROKER_HOST_EXAMPLE": "Пример: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Пример: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Пример: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Пример: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController логи сервера", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Имя", + "NETWORK": "Сеть", + "NETWORK_TYPE": "Тип сети", + "NEVER": "Никогда", + "NEW": "Новый", + "NEW_DASHBOARD": "Новая панель управления", + "NEW_PASSWORD": "Новый пароль", + "NEXT_EXECUTION": "Next execution", + "NO": "Нет", + "NODE": "Узел", + "NODES": "Узлы", + "NODES_ALIVE_CHECK_INTERVAL": "Интервал проверки доступности узлов", + "NODES_DETAIL": "Подробности узлов", + "NODE_DETAILS": "Подробности узла", + "NODE_EUI": "EUI ноды", + "NODE_ID": "Идентефикатор узла", + "NODE_NAME": "Имя узла", + "NODE_STATUS": "Статус узла", + "NODE_TYPE": "Тип узла", + "NON_HEAP_MEMORY": "Не динамическая память", + "NOTHING_SELECTED": "Ничего не выбрано", + "NOTIFICATIONS": "Уведомления", + "NOT_SET": "Не задано", + "NO_ACK": "нет ack", + "NO_BACKUPS_SETUP": "Никаких резервных копий не создано.", + "NO_DATA_AVAILABLE": "Нет данных", + "NO_EXTERNAL_SERVERS_SETUP": "Не настроенны внешние сервера", + "NO_FIRMWARES_SETUP": "Никаких прошивок не установлено.", + "NO_FIRMWARE_TYPES_SETUP": "Нет настройки типов прошивки.", + "NO_FIRMWARE_VERSIONS_SETUP": "Никакие версии прошивки не установлены", + "NO_FORWARD_PAYLOADS_SETUP": "Никакие пакеты пересылки не установлены.", + "NO_GATEWAYS_SETUP": "Никакие шлюзы не установлены.", + "NO_ITEMS_IN_FILTER": "Оопс! Ни чего не найдено. Измените запрос.", + "NO_ITEMS_SETUP": "Никаких элементов не установлено!", + "NO_LOGS_AVAILABLE": "Никакие логи не найдены.", + "NO_NODES_SETUP": "Никакие узлы не найдены.", + "NO_OPERATIONS_SETUP": "Ни какие операции не установлены.", + "NO_RESOURCES_DATA_SETUP": "Никакие настройки ресурсов данных.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "Нет ресурсов, привязанных к этой группе.", + "NO_RESOURCE_GROUPS_SETUP": "Никакие группы ресурсов не установлены.", + "NO_ROOMS_SETUP": "Никакие комнаты не созданы.", + "NO_RULES_SETUP": "Никакие правила не установлены.", + "NO_SCRIPTS_SETUP": "Никакие скрипты не установлены.", + "NO_SENSORS_SETUP": "Никакие датчики не установлены.", + "NO_TEMPLATES_SETUP": "Никакие шаблоны не установлены", + "NO_TIMERS_SETUP": "Никакие таймеры не установлены.", + "NO_UID_TAGS_SETUP": "Никакие записи UID не установлены.", + "NO_VARIABLES_SETUP": "Никакие переменные не настроены.", + "OCCURRENCES": "Срабатывание", + "OFF": "ВЫКЛ", + "OFFSET": "Смещение", + "ON": "ВКЛ", + "ONE_DAY_DATA": "Данные за один день", + "ONE_HOUR_DATA": "Данные за один час", + "ONE_MINUTE_DATA": "Данные за одну минуту", + "OPERATING_SYSTEM": "Операционная система", + "OPERATION": "Операция", + "OPERATIONS": "Операции", + "OPERATIONS_DETAIL": "Детали Операций", + "OPERATION_NAME": "Имя операции", + "OPERATION_TYPE": "Тип операции", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Разное", + "PARENT": "Родитель", + "PARENT_NODE_EUI": "Родительский узел EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Пароль", + "PATTERN": "Шаблон", + "PAYLOAD": "Значение", + "PAYLOAD_DELAY": "Значение / Задержка", + "PAYLOAD_OFF": "Значение ВЫКЛ", + "PAYLOAD_ON": "Значение ВКЛ", + "PEAK": "Пик", + "PERCENTAGE": "Процент", + "PERMISSION": "Разрешения", + "PHONE_NUMBERS": "Телефонные номера", + "PHONE_NUMBERS_COMMA_SEPARATED": "Телефонные номера разделенные запятой", + "PHYSICAL_MEMORY": "Физическая память (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Частота опроса (минуты)", + "PORT": "Порт", + "PORT_NAME": "Имя порта", + "PRIORITY": "Приоритет", + "PRIVATE": "Приватно", + "PRIVATE_KEY": "Секретный ключ", + "PROCESS_CPU": "Процессы ЦПУ", + "PROFILE": "Профиль", + "PROFILE_UPDATED_SUCCESSFULLY": "Профиль успешно обновлен", + "PROPERTIES": "Свойства", + "PUBLIC": "Публично", + "PUBLIC_ACCESS": "Публичный доступ", + "PUBLIC_KEY": "Открытый ключ", + "PURGE": "Очистить", + "PURGE_BEFORE": "Очистить, прежде чем", + "PURGE_DONE_SUCCESSFULLY": "Очистка успешно завершена.", + "PURGE_EXISTING_DATA": "Очистить существующие данные", + "PURGE_RESOURCES_LOGS": "Очистить логи ресурсов", + "PURGE_SENSOR_VARIABLE": "Очистить переменные датчика", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "ВНИМАНИЕ: Если вы не выбрать ни один параметр, этот процесс удалит все!", + "PURGING": "Очистка", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "В лучшем случае один раз (0)", + "QOS_1": "По крайней мере, один раз (1)", + "QOS_2": "Ровно один раз (2)", + "RAW_DATA": "Необработанные данные", + "READ_ONLY": "Только чтение", + "REALTIME": "Реальное время", + "REBOOT": "Перезагрузка", + "REBOOT_CONFIRMATION_MESSAGE": "Вы собираетесь перезагрузить выбранные элементы
Нажмите \"Reboot\", чтобы продолжить", + "REBOOT_CONFIRMATION_TITLE": "Перезагрузка", + "REBOOT_INITIATED": "Началась перезагрузка выбранных элементов", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Ограничение записей", + "REFRESH": "Обновить", + "REFRESH_NODES_INFO": "Обновить информацию нод", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Обновить информацию узлов' успешно начато.", + "REFRESH_TIME_SECONDS": "Время обновления (секунды)", + "REGISTER_NODES_AUTOMATICALLY": "Ноды автоматически зарегестрировнны", + "REGISTRATION_STATUS": "Статус регистрации", + "RELEASES": "Релизы", + "RELOAD": "Перезагрузка", + "RELOAD_INITIATED_SUCCESSFULLY": "Перезагрузка успешно инициированна", + "RESOURCE": "Ресурс", + "RESOURCES": "Ресурсы", + "RESOURCES_DATA": "Ресурсы данных", + "RESOURCES_DATA_DETAIL": "Детали ресурсов данных", + "RESOURCES_GROUPS": "Ресурсы группы", + "RESOURCES_LOGS": "Журнал логов", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Детали логов", + "RESOURCES_LOG_LEVEL": "Уровень логов", + "RESOURCES_LOG_RETENTION_DURATION": "Ресурсы регистрирует срок хранения", + "RESOURCE_GROUPS_DETAIL": "Детали групп ресурсов", + "RESOURCE_GROUPS_MAPS_DETAIL": "Подробнее о групповых настройках", + "RESOURCE_GROUPS_TURNED_OFF": "Группы ресурсов выключены", + "RESOURCE_GROUPS_TURNED_ON": "Группы ресурсов выключены", + "RESOURCE_GROUP_TURNED_OFF": "Группа ресурсов выключена", + "RESOURCE_GROUP_TURNED_ON": "Группа ресурсов включена", + "RESOURCE_TYPE": "Тип ресурса", + "RESTORE": "Востановить", + "RESTORE_CONFIRMATION_MESSAGE": "Вы собираетесь восстановить систему '{{name}}'.
Восстановление полностью удаляет текущие данные датчиков и активную конфигурацию. Система переходит к '{{name}}' состояние!
Нажмите 'Восстановить', чтобы продолжить.
Примечание: После успешного восстановления вы должны запустить сервер вручную из командной строки ", + "RESTORE_CONFIRMATION_TITLE": "Система восстановится на '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Восстановление успешно начато.", + "RESULT": "Результат", + "RETAIN_MAX": "Хранить максимум #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "Вы собираетесь изменить параметры хранения метрик данных.
Это действие может привести к потере данных. Прочитайте инструкцию для получения более подробной информации.
Настоятельно рекомендуем резервную копию системы прежде чем продолжить!", + "RETENTION_DIALOG_TITLE": "Прочитайте внимательно, прежде чем двигаться вперед", + "RE_ENABLE": "Снова включить", + "RIGHT": "Право", + "ROLES": "Роли", + "ROLES_DETAIL": "Детали ролей", + "ROOM": "Комната", + "ROOMS": "Комнаты", + "ROOMS_DETAIL": "Детали комнат", + "ROOM_NAME": "Имя комнаты", + "RULES": "Правила", + "RULES_DETAIL": "Детали событий", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Имя события", + "RUN": "Запустить", + "RUNNING": "Исполняется", + "RUN_BACKUP": "Выполнить резервное копирование", + "RUN_GARBAGE_COLLECTION": "Выполнить сборку мусора", + "RUN_NOW": "Выполнить сейчас", + "SAVE": "Сохранить", + "SAVE_CHANGES": "Сохранить изменения", + "SAVING": "Сохранение ...", + "SCRIPT": "Скрипт", + "SCRIPTS": "Скрипты", + "SCRIPTS_DETAIL": "Детали скриптов", + "SCRIPT_BINDINGS": "Привязки скриптов", + "SCRIPT_ENGINES": "Движки скриптов", + "SCRIPT_FILES": "Файлы сценария", + "SEARCH": "Поиск", + "SECONDS": "Секунд", + "SELECT": "Выбрать", + "SEND": "Отправить", + "SENDING": "Отправка...", + "SEND_RAW_MESSAGE": "Отправить необработанное сообщение", + "SENSOR": "Сенсор", + "SENSORS": "Сенсоры", + "SENSORS_ACTION": "Действия датчиков", + "SENSORS_AND_VARIABLES_MAPPING": "Сенсоры и карты переменных", + "SENSORS_DETAIL": "Детали сенсоров", + "SENSOR_DETAILS": "Детали сенсора", + "SENSOR_ID": "Идентификатор сенсора", + "SENSOR_NAME": "Имя сенсора", + "SENSOR_TYPE": "Тип сенсора", + "SENSOR_VARIABLE": "Переменная сенсора", + "SENSOR_VARIABLES": "Переменные сенсора", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Тип датчика", + "SERIAL_BAUD_RATE_EXAMPLE": "Пример: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Пример: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Пример: 120", + "SETTINGS": "Настройки", + "SHOW_ICON": "Показать значок", + "SHOW_LEGENDS": "Показать историю", + "SHOW_MENU": "Показать меню", + "SIX_HOURS_DATA": "Данные за шесть часов", + "SMART_SLEEP_ENABLED": "Включен Умный сон", + "SMS": "SMS", + "SMTP_HOST": "SMTP хост", + "SMTP_PASSWORD": "SMTP пароль", + "SMTP_PORT": "SMTP порт", + "SMTP_USERNAME": "SMTP имя пользователя", + "SOURCE": "Источник", + "SOURCE_CODE": "Исходный код", + "SOURCE_ID": "Идентификатор источника", + "SPECIFICATION_VENDOR": "Производитель", + "SPECIFICATION_VERSION": "Версия", + "STACKED_AREA_CHART": "Область ячейки диаграммы", + "STATION_ID": "ИД станции", + "STATION_PASSWORD": "Пароль станции", + "STATISTICS": "Statistics", + "STATUS": "Статус", + "STATUS_MESSAGE": "Сообщение о состоянии", + "STATUS_SINCE": "Начиная с", + "STEP_AFTER": "Шаг после", + "STEP_BEFORE": "Шаг перед", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Предмет", + "SUB_TYPE": "Подтип", + "SUNRISE": "Восход", + "SUNSET": "Закат", + "SUPPORT": "Поддержка", + "SWAP": "Файл подкачки", + "SWAP_SPACE": "Размер файла подкачки", + "SYNTAX_ERROR": "Ошибка синтаксиса", + "SYSTEM": "Система", + "SYSTEM_CPU_LOAD": "Загрузка CPU", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "Средняя загрузка системы", + "SYSTEM_STATUS": "Состояние системы", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "Вы собираетесь обновить конфигурации 'Переменные сенсоров'.
При обновлении конфигурации, если происходит изменение в 'Типе метрик', все существующие данные будут удалены из 'Переменные сенсоров'!", + "S_VARIABLE_DIALOG_TITLE": "Обновление конфигурации 'Переменные сенсора'", + "TABLE_ROWS_LIMIT": "Максимум строк таблицы", + "TAGS": "Теги", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Шаблон", + "TEMPLATES": "Шаблоны", + "TEMPLATES_DETAIL": "Детали шаблона", + "TEMPLATE_BINDINGS": "Привязать шаблон", + "TENANT": "Арендатор", + "TESTING": "Тестирование...", + "TEST_CONNECTION": "Тест соединения", + "TEXT": "Text", + "THREADS_COUNT": "Счетчик нитей", + "THRESHOLD_VALUE": "Пороговое значение", + "THRESHOLD_VALUE_HIGH": "Верхнее пороговое значение", + "THRESHOLD_VALUE_LOW": "Нижнее пороговое значение", + "TIME": "Время", + "TIMERS": "Таймеры", + "TIMERS_DETAIL": "Детали таймеров", + "TIMER_NAME": "Имя таймера", + "TIMER_TYPE": "Тип таймера", + "TIME_FORMAT": "Формат времени", + "TIME_HH_MM_SS": "Время (HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Время смещения (HH:mm:ss)", + "TIME_RANGE": "Диапазон времени", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Заголовок", + "TO": "То", + "TOKEN": "Token", + "TOP": "Верх", + "TOPICS_PUBLISH": "Публикация топиков", + "TOPICS_SUBSCRIBE": "Подписаться на топики", + "TOPIC_PUBLISH": "Публикация топика", + "TOPIC_SUBSCRIBE": "Подписаться на топик", + "TOPOLOGY": "Топология", + "TOTAL": "Всего", + "TOTAL_LOADED": "Всего загруженно", + "TOTAL_STARTED": "Всего начались", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Запустить при", + "TRUST_HOST": "Доверенный хост", + "TURN_OFF": "Выключить", + "TURN_ON": "Включить", + "TWELVE_HOURS_DATA": "Данные за двенадцать часов", + "TWILIO": "Twilio", + "TYPE": "Тип", + "TYPES": "Типы", + "TYPE_ID": "Id Типа", + "UID": "UID", + "UID_TAGS": "UID тэги", + "UID_TAGS_DETAIL": "Детали UID тэга", + "UNAVAILABLE": "Недопустимый", + "UNDO_CHANGES": "Отменить изменения", + "UNIT": "Единица", + "UNITS": "Единицы измерения", + "UNITS_CONFIGURATION": "Настройки единиц измерения", + "UNITS_METRICS_IMPERIAL": "Единицы [Метрическая/Имперская]", + "UNLOADED": "Выгружен", + "UP": "Активный", + "UPDATE": "Обновить", + "UPDATED_SUCCESSFULLY": "Успешно обновлено.", + "UPDATE_AN_ENTRY": "Обновление записи", + "UPDATE_EXTERNAL_SERVER": "Обновление внешнего сервера", + "UPDATE_FIRMWARE": "Обновить прошивку", + "UPDATE_FIRMWARE_TYPE": "Обновить тип прошивки", + "UPDATE_FIRMWARE_VERSION": "Обновить версию прошивки", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Обновление состояния перед получением основных данных", + "UPDATE_GATEWAY": "Обновление шлюза", + "UPDATE_NODE": "Обновление узла", + "UPDATE_OPERATION": "Редактировать операцию", + "UPDATE_RESOURCE": "Обновление ресурсов", + "UPDATE_RESOURCES_GROUP": "Обновление группы ресурсов", + "UPDATE_ROOM": "Обновить комнату", + "UPDATE_RULE": "Редактировать правило", + "UPDATE_SCRIPT": "Обновление скрипта", + "UPDATE_SENSOR": "Обновление сенсора", + "UPDATE_SENSOR_VARIABLE": "Обновить переменные датчика", + "UPDATE_TEMPLATE": "Обновить шаблон", + "UPDATE_TIMER": "Обновление таймера", + "UPDATE_UID_TAG_ENTRY": "Обновление записи UID тэга", + "UPDATE_USER": "Обновление пользователя", + "UPDATE_VARIABLE": "Изменить переменную", + "UPLOADED_ON": "Загружено", + "UPLOAD_FIRMWARE": "Загрузить прошивку", + "UPPER": "Верхний", + "UPPER_LIMIT": "Верхний предел", + "UP_TIME": "Время работы", + "URL": "URL", + "USE": "Использование", + "USED": "Используется", + "USERNAME": "Имя Пользователя", + "USERS": "Пользователи", + "USERS_DETAIL": "Подробнее о пользователе", + "USER_WORKING_DIRECTORY": "Рабочий каталог пользователя", + "USE_GLOBAL": "Использовать глобальные", + "USE_INTERACTIVE_GUIDE_LINE": "Использовать интерактивное руководство", + "UTILITIES": "Утилиты", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "Нет свободного места.", + "VALIDATION_ERROR_NUMBER": "Введенное значение не является числом.", + "VALIDITY": "Время действия", + "VALUE": "Значение", + "VALUE2": "Значение #2", + "VALUE3": "Значение #3", + "VARIABLES": "Переменные", + "VARIABLES_DETAIL": "Детали переменных", + "VARIABLES_GRAPHICAL_VIEW": "Данные переменных на графике", + "VARIABLES_MAPPER": "Карта переменных", + "VARIABLES_REPOSITORY": "Хранилище переменных", + "VARIABLE_TYPES": "Тип переменных", + "VENDOR": "Производитель", + "VERSION": "Версия", + "VERSIONS": "Версии", + "VERSION_ID": "Идентификатор версии", + "VERSION_KERNEL": "Версия / Ядро", + "VIEW_DETAILS": "Просмотреть детали", + "VM_NAME": "Имя VM", + "VM_VENDOR": "Производитель VM", + "VM_VERSION": "Версия VM", + "WEBSOCKET_PORT": "Порт Web сокета", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Виджет расположения графических файлов на диске", + "WRITE_API_KEY": "Записать API ключ", + "YEARS": "Лет", + "YES": "Да" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-sk_sk.json b/www/languages/mc_locale_gui-sk_sk.json new file mode 100644 index 0000000..202c8a4 --- /dev/null +++ b/www/languages/mc_locale_gui-sk_sk.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 hours", + "24_HOURS": "24 hours", + "ABOUT": "About", + "ACCESS": "Access", + "ACCESS_TOKEN": "Access token", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Actions", + "ACTION_BOARD": "Action board", + "ACTIVE": "Active", + "ADD": "Add", + "ADD_AN_ENTRY": "Add an entry", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Add firmware", + "ADD_FIRMWARE_TYPE": "Add firmware type", + "ADD_FIRMWARE_VERSION": "Add firmware version", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Add gateway", + "ADD_GROUP": "Add group", + "ADD_NEW_WIDGET": "Add new widget", + "ADD_NODE": "Add node", + "ADD_OPERATION": "Add operation", + "ADD_RESOURCE": "Add resource", + "ADD_RESOURCES_GROUP": "Add resources group", + "ADD_ROLE": "Add role", + "ADD_ROOM": "Add room", + "ADD_RULE": "Add rule", + "ADD_SCRIPT": "Add script", + "ADD_SENSOR": "Add sensor", + "ADD_TEMPLATE": "Add template", + "ADD_TIMER": "Add timer", + "ADD_UID_TAG_ENTRY": "Add UID tag entry", + "ADD_USER": "Add user", + "ADD_VARIABLE": "Add variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architecture", + "AREA": "Area", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatic backup settings", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generate", + "AVAILABLE_PROCESS": "Available Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backups detail", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completed successfully.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Backup location", + "BACKUP_ON": "Backup on", + "BACKUP_SETTINGS": "Backup settings", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis closed", + "BASIS_OPEN": "Basis open", + "BATTERY": "Battery", + "BATTERY_LEVEL": "Battery level", + "BATTERY_USAGE": "Battery usage", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Cancel", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "Client id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "Condition", + "CONDITION_TYPE": "Condition type", + "CONNECTION_DETAILS": "Connection details", + "CONTENT": "Content", + "CONTINUE": "Continue", + "COUNT": "Count", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "Current", + "CURRENT_PASSWORD": "Current password", + "CUSTOM_MESSAGE": "Custom message", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database version", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data unavailable!", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Day", + "DAYS": "Days", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "Delete", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Delete item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Description", + "DESTINATION": "Destination", + "DESTINATION_ID": "Destination id", + "DETAILS": "Details", + "DEVICES": "Devices", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": "Disable", + "DISABLED": "Disabled", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Edit", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "Enable", + "ENABLED": "Enabled", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Example: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Example: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Example: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Free", + "FREQUENCY": "Frequency", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Full name", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Groups", + "GROUP_NAME": "Group name", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Height", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Hours", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "Invalid username or password!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Language", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Last 6 hours", + "LAST_12_HOURS": "Last 12 hours", + "LAST_DAY": "Last day", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Last hour", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Last modified", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Last seen", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Last week", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Library version", + "LINE": "Line", + "LINEAR": "Linear", + "LINE_CHART": "Line chart", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "Loading...", + "LOCATION": "Location", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Log In", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Message", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Message type", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "Minutes", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "Never", + "NEW": "New", + "NEW_DASHBOARD": "New dashboard", + "NEW_PASSWORD": "New password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node name", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating System", + "OPERATION": "Operation", + "OPERATIONS": "Operations", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Password", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Percentage", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Phone numbers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical Memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Port name", + "PRIORITY": "Priority", + "PRIVATE": "Private", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Profile", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Refresh", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Room", + "ROOMS": "Rooms", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Room name", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "Save", + "SAVE_CHANGES": "Save changes", + "SAVING": "Saving...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Seconds", + "SELECT": "Select", + "SEND": "Send", + "SENDING": "Sending...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensor details", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor name", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variables", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "Example: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Example: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Example: 120", + "SETTINGS": "Settings", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Sunrise", + "SUNSET": "Sunset", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Time", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Turn OFF", + "TURN_ON": "Turn ON", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Up", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Update user", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "Used", + "USERNAME": "Username", + "USERS": "Users", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validity", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Variable types", + "VENDOR": "Vendor", + "VERSION": "Version", + "VERSIONS": "Versions", + "VERSION_ID": "Version id", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "View details", + "VM_NAME": "VM Name", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "VM Version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Years", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-ta_in.json b/www/languages/mc_locale_gui-ta_in.json new file mode 100644 index 0000000..21b2cf5 --- /dev/null +++ b/www/languages/mc_locale_gui-ta_in.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 மணி நேரம்", + "24_HOURS": "24 மணி நேரம்", + "ABOUT": "பற்றி", + "ACCESS": "அணுகல்", + "ACCESS_TOKEN": "அணுகல் டோக்கன்", + "ACK": "ஒப்புகை", + "ACKNOWLEDGE": "ஒப்பு", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "செயல்கள்", + "ACTION_BOARD": "நடவடிக்கை பலகை", + "ACTIVE": "செயலில்", + "ADD": "Add", + "ADD_AN_ENTRY": "புதிதாக சேர்க்க", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "மென்பொருள் சேர்க்க", + "ADD_FIRMWARE_TYPE": "மென்பொருள் வகை சேர்க்க", + "ADD_FIRMWARE_VERSION": "மென்பொருள் பதிப்பு சேர்க்க", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "நுழைவாயில் சேர்க்க", + "ADD_GROUP": "குழு சேர்க்க", + "ADD_NEW_WIDGET": "விட்ஜெட் புதிதாக சேர்க்க", + "ADD_NODE": "முனை(நோடு) சேர்க்க", + "ADD_OPERATION": "செயலை உருவாக்கு", + "ADD_RESOURCE": "Resource சேர்க்க", + "ADD_RESOURCES_GROUP": "Resource குழு சேர்க்க", + "ADD_ROLE": "பாத்திரத்தை சேர்க்க", + "ADD_ROOM": "அறை சேர்க்க", + "ADD_RULE": "கட்டளையை உருவாக்கு", + "ADD_SCRIPT": "ஸ்கிரிப்ட் சேர்க்க", + "ADD_SENSOR": "உணரியை சேர்க்க", + "ADD_TEMPLATE": "டெம்ப்ளேட் சேர்க்க", + "ADD_TIMER": "டைமர் சேர்க்க", + "ADD_UID_TAG_ENTRY": "UID குறிச்சொல் சேர்க்க", + "ADD_USER": "பயனரை சேர்க்க", + "ADD_VARIABLE": "மாறி சேர்க்க", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "மறுபெயர்", + "ALIVE_TEST_FREQUENCY": "உயிருடன் உள்ளதா சோதனை (வினாடிகளில்)", + "ALLOW_ANONYMOUS": "அனைவரையும் அனுமதிக்க", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "தி ஓபன் சோர்ஸ் கண்ட்ரோலர்", + "APP.LOG_IN_TO_MESSAGE": "MYCONTROLLER.ORG-ள் நுழைய", + "APP.WELCOME_MESSAGE": "தாங்களை MyController.org-க்கு அன்புடன் வரவேற்கிறோம்! இது ஒரு ஓபன் சோர்ஸ் கண்ட்ரோலர்.", + "ARCHITECTURE": "கட்டிடக்கலை", + "AREA": "பகுதி", + "AUTH_ID_SID": "அங்கீகார Id", + "AUTH_TOKEN": "அங்கீகார டோக்கன்", + "AUTOMATIC_BACKUP_SETTINGS": "தானியங்கி காப்பு அமைப்புகள்", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "தானாக உருவாக்க", + "AVAILABLE_PROCESS": "செயல்பாட்டில் உள்ளவை", + "AVERAGE_TIME": "Average time", + "BACKUP": "காப்பு பிரதி", + "BACKUPS_DETAIL": "காப்பு பிரதிகளின் விவரம்", + "BACKUP_COMPLETED_SUCCESSFULLY": "காப்பு பிரதி எடுக்கும் வேலை வெற்றிகரமாக நிறைவடைந்தது.", + "BACKUP_EVERY": "காப்பு பிரதி ஒவ்வொரு", + "BACKUP_FILE_PREFIX": "காப்பு கோப்பு முன்னொட்டு", + "BACKUP_LOCATION": "காப்பு பிரதியை வைக்கும் இடம்", + "BACKUP_ON": "காப்பு பிரதி எடுக்கப்பட்ட நேரம்", + "BACKUP_SETTINGS": "காப்பு பிரதியின் அமைப்புகள்", + "BAR": "பட்டியில்", + "BASIS": "அடிப்படை", + "BASIS_CLOSED": "அடிப்படையில் மூடப்பட்டது", + "BASIS_OPEN": "Basis open", + "BATTERY": "மின்கலம்", + "BATTERY_LEVEL": "மின்கலத்தின் நிலை", + "BATTERY_USAGE": "மின்கலத்தின் பயன்பாடு", + "BAUD_RATE": "Baud விகிதம்", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "முகவரியை பிணைத்திடு", + "BLOCKS": "தொகுதிகள்", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "தரகர் host", + "BUILD_JDK": "JDK உருவாக்கம்", + "BUILD_TOOL": "உருவாக்க கருவி", + "BUILT_ON": "உருவாக்கப்பட்ட நேரம்", + "BUNDLE": "மூட்டை", + "BUTTON_SETTINGS": "பொத்தான் அமைப்புகள்", + "CANCEL": "ரத்துசெய்", + "CARDINAL": "முக்கியமான", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "வாடிக்கையாளர் id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "வண்ணம்", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "நிபந்தனை", + "CONDITION_TYPE": "Condition type", + "CONNECTION_DETAILS": "இணைப்பு விவரங்கள்", + "CONTENT": "Content", + "CONTINUE": "தொடர", + "COUNT": "எண்ணிக்கை", + "COUNTER": "Counter", + "CRC": "சிஆர்சி", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "மின்னோட்டம்", + "CURRENT_PASSWORD": "தற்போதைய கடவுச்சொல்", + "CUSTOM_MESSAGE": "Custom message", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "டேட்டாபேஸ் பதிப்பு", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "தரவு கிடைக்கவில்லை!", + "DATE_PATTERN": "தேதி முறை", + "DATE_RANGE": "Date range", + "DAY": "நாள்", + "DAYS": "நாட்கள்", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "இயல்புநிலை நேர வரம்பு", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "நீக்க", + "DELETE_DASHBOARD": "முதல் பலகை நீக்க", + "DELETE_ITEMS": "உருப்படிகளை நீக்க", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Description", + "DESTINATION": "இலக்கு", + "DESTINATION_ID": "Destination id", + "DETAILS": "விவரங்கள்", + "DEVICES": "சாதனங்கள்", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "திசை", + "DISABLE": "முடக்கு", + "DISABLED": "முடக்கப்பட்டுள்ளது", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "டிஸ்கவர்", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "ஆவணங்கள்", + "DOUBLE": "Double", + "DOWN": "கீழே", + "DRIVER": "Driver", + "EDIT": "திருத்து", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "மின்னஞ்சல்", + "EMAILS": "மின்னஞ்சல்கள்", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "இயலச்செய்", + "ENABLED": "இயக்கப்பட்டுள்ளது", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "உதாரணமாக: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "உதாரணமாக: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "உதாரணமாக: 5003", + "EUI": "EUI", + "EVALUATIONS": "மதிப்பாய்வு", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "கோப்பு", + "FILE_NAME": "கோப்பின் பெயர்", + "FILE_SIZE": "கோப்பின் அளவு", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "செயல்களின் மூலம் வடிகட்டு", + "FILTER_BY_OPERATION_TYPE": "செயல் வகைகளின் மூலம் வடிகட்டு ", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "அனுமதி மூலம் வடிகட்டி", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "இலவசம்", + "FREQUENCY": "Frequency", + "FROM": "From", + "FROM_ADDRESS": "முகவரியிலிருந்து", + "FROM_PHONE_NUMBER": "தொலைபேசி எண்ணில் இருந்து", + "FULL_NAME": "முழு பெயர்", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "நுழைவாயில்", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "குழுக்கள்", + "GROUP_NAME": "குழுவின் பெயர்", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Height", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "வரலாற்று விளக்கப்படம்", + "HOST_NAME": "Host name", + "HOURS": "மணி", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "தவறான பயனர்பெயர் அல்லது கடவுச்சொல்!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "உருப்படிகள் வெற்றிகரமாக முடக்கப்பட்டன.", + "ITEMS_ENABLED_SUCCESSFULLY": "உருப்படிகள் வெற்றிகரமாக இயகபட்டன.", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Language", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "கடந்த 6 மணிநேரம்", + "LAST_12_HOURS": "கடந்த 12 மணிநேரம்", + "LAST_DAY": "கடந்த நாள்", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "கடந்த மணிநேரம்", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Last modified", + "LAST_MONTH": "கடந்த மாதம்", + "LAST_SEEN": "கடைசியாகப் பார்த்தது", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "கடந்த வாரம்", + "LAST_YEAR": "கடந்த ஆண்டு", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "நிலை", + "LIBRARY_VERSION": "Library version", + "LINE": "Line", + "LINEAR": "Linear", + "LINE_CHART": "Line chart", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "இயக்கத்தில் உள்ளது...", + "LOCATION": "இடம்", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "உள் நுழை", + "LOG_LEVEL": "Log level", + "LOG_OUT": "வெளியேறு", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "அதிகபட்சம்", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "செய்தி", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Message type", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "நிமிடங்கள்", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "பெயர்", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "ஒருபோதும்", + "NEW": "New", + "NEW_DASHBOARD": "புதிய முதல் பலகை", + "NEW_PASSWORD": "புதிய கடவுச்சொல்", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node name", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "செயல்கள் ஏதும் அமைக்கப்படவில்லை.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "கட்டளைகள் ஏதும் அமைக்கப்படவில்லை.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating System", + "OPERATION": "செயல்", + "OPERATIONS": "செயல்கள்", + "OPERATIONS_DETAIL": "செயலின் விவரம்", + "OPERATION_NAME": "செயலின் பெயர்", + "OPERATION_TYPE": "செயலின் வகை", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "கடவுச்சொல்", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Percentage", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Phone numbers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical Memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Port name", + "PRIORITY": "Priority", + "PRIVATE": "Private", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Profile", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "நீக்க", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "மீண்டும் துவக்கவும்", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "மீண்டும் துவக்கவும்", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Refresh", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "வெளியீடுகள்", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Room", + "ROOMS": "Rooms", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Room name", + "RULES": "கட்டளைகள்", + "RULES_DETAIL": "கட்டளயின் விவரங்கள்", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "கட்டளயின் பெயர்", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "சேமிக்க", + "SAVE_CHANGES": "Save changes", + "SAVING": "சேமிக்கபடுகிறது...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "விநாடிகள்", + "SELECT": "தேர்ந்தெடு", + "SEND": "Send", + "SENDING": "Sending...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "உணரிகள்", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensor details", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor name", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variables", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "உதாரணமாக: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "உதாரணமாக: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "உதாரணமாக: 120", + "SETTINGS": "அமைப்புகள்", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP கடவுச்சொல்", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "அடுக்கப்பட்ட பரப்பு விளக்கப்படம்", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "நிலை", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "சூரியோதயம்", + "SUNSET": "சூரிய அஸ்தமனம்", + "SUPPORT": "ஆதரவு", + "SWAP": "இடமாற்று", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "நேரம்", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Turn OFF", + "TURN_ON": "Turn ON", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "மேலே", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "செயலை மேம்படுத்து", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "கட்டளையை மேம்படுத்து", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "பயனரை புதுப்பிக்க", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "பயன்படுத்தியது", + "USERNAME": "பயனர்பெயர்", + "USERS": "பயனர்கள்", + "USERS_DETAIL": "பயனர்கள் விவரம்", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "இடைவெளிக்கு அனுமதி இல்லை.", + "VALIDATION_ERROR_NUMBER": "உள்ளிட்ட மதிப்பு ஒரு எண் அல்ல.", + "VALIDITY": "செல்லுபடி நிலை", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "மாறிகள்", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "மாறியின் வரைபடம்", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "மாறிகளின் வகை", + "VENDOR": "சேவையளிப்பவர்", + "VERSION": "பதிப்பு", + "VERSIONS": "பதிப்புகள்", + "VERSION_ID": "பதிப்பு id", + "VERSION_KERNEL": "பதிப்பு/கர்னல்", + "VIEW_DETAILS": "விபரங்களை பார்", + "VM_NAME": "VM பெயர்", + "VM_VENDOR": "VM சேவையளிப்பவர்", + "VM_VERSION": "VM பதிப்பு", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "ஆண்டுகள்", + "YES": "Yes" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-zh_cn.json b/www/languages/mc_locale_gui-zh_cn.json new file mode 100644 index 0000000..d473352 --- /dev/null +++ b/www/languages/mc_locale_gui-zh_cn.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12小时制", + "24_HOURS": "24小时制", + "ABOUT": "关于", + "ACCESS": "访问", + "ACCESS_TOKEN": "访问令牌", + "ACK": "Ack", + "ACKNOWLEDGE": "收到确认", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "动作", + "ACTION_BOARD": "操作板块", + "ACTIVE": "活动", + "ADD": "Add", + "ADD_AN_ENTRY": "添加条目", + "ADD_EXTERNAL_SERVER": "添加外部服务器", + "ADD_FIRMWARE": "添加固件", + "ADD_FIRMWARE_TYPE": "添加固件类型", + "ADD_FIRMWARE_VERSION": "添加固件版本", + "ADD_FORWARD_PAYLOAD_ENTRY": "添加转发数据条目", + "ADD_GATEWAY": "添加网关", + "ADD_GROUP": "添加组", + "ADD_NEW_WIDGET": "添加新的小部件", + "ADD_NODE": "添加节点", + "ADD_OPERATION": "添加操作", + "ADD_RESOURCE": "添加资源", + "ADD_RESOURCES_GROUP": "添加资源组", + "ADD_ROLE": "添加角色", + "ADD_ROOM": "添加房间", + "ADD_RULE": "添加规则", + "ADD_SCRIPT": "添加脚本", + "ADD_SENSOR": "添加传感器", + "ADD_TEMPLATE": "添加模板", + "ADD_TIMER": "添加计时器", + "ADD_UID_TAG_ENTRY": "添加 UID 标记项", + "ADD_USER": "添加用户", + "ADD_VARIABLE": "添加变量", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "后", + "ALIAS": "别名", + "ALIVE_TEST_FREQUENCY": "在线确认检查频率 (秒)", + "ALLOW_ANONYMOUS": "允许匿名", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS 自定义控制器", + "APP.DESCRIPTION": "开放源码控制器", + "APP.LOG_IN_TO_MESSAGE": "登录到 MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "欢迎来到 MyController.org !开源控制器。", + "ARCHITECTURE": "结构", + "AREA": "地区", + "AUTH_ID_SID": "身份验证 id/sid", + "AUTH_TOKEN": "身份验证令牌", + "AUTOMATIC_BACKUP_SETTINGS": "自动备份设置", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "自动生成", + "AVAILABLE_PROCESS": "可用的进程", + "AVERAGE_TIME": "Average time", + "BACKUP": "备份", + "BACKUPS_DETAIL": "备份详细信息", + "BACKUP_COMPLETED_SUCCESSFULLY": "备份成功。", + "BACKUP_EVERY": "全部备份", + "BACKUP_FILE_PREFIX": "备份文件前缀", + "BACKUP_LOCATION": "备份位置", + "BACKUP_ON": "备份开启", + "BACKUP_SETTINGS": "备份设置", + "BAR": "条", + "BASIS": "Basis", + "BASIS_CLOSED": "已关闭Basis", + "BASIS_OPEN": "开放的Basis", + "BATTERY": "电池", + "BATTERY_LEVEL": "电池电量水平", + "BATTERY_USAGE": "电池使用情况", + "BAUD_RATE": "波特率", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "绑定地址", + "BLOCKS": "块", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "代理主机", + "BUILD_JDK": "建立 JDK", + "BUILD_TOOL": "生成工具", + "BUILT_ON": "建立在", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "按钮设置︰", + "CANCEL": "取消", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "已关闭的Cardinal", + "CARDINAL_OPEN": "开放的Cardinal", + "CHANNEL_TAGS": "通道标记", + "CHANNEL_TAGS_COMMA_SEPARATED": "以逗号分隔通道标签", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "类加载详细信息", + "CLIENT_ID": "客户端 id", + "CLONE": "克隆", + "COLLECTION_COUNT": "收集计数", + "COLLECTION_TIME": "收集时间", + "COLOR": "颜色", + "COMMAND": "Command", + "COMMITTED": "已提交的", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "提交的虚拟内存大小", + "CONDITION": "条件", + "CONDITION_TYPE": "条件类型", + "CONNECTION_DETAILS": "连接详细信息", + "CONTENT": "内容", + "CONTINUE": "继续", + "COUNT": "计数", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron 表达式", + "CSS_FILES": "CSS 文件", + "CURRENT": "当前", + "CURRENT_PASSWORD": "当前密码", + "CUSTOM_MESSAGE": "自定义消息", + "DAEMON": "守护进程", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "抑制", + "DAMPENING_TYPE": "抑制的类型", + "DASHBOARDS": "仪表板", + "DASHBOARD_LIMIT": "允许的最大仪表板", + "DATA": "Data", + "DATABASE": "数据库", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "数据库版本", + "DATA_RETENTION_SETTINGS": "数据保留设置", + "DATA_TYPE": "数据类型", + "DATA_UNAVAILABLE": "数据不可用 !", + "DATE_PATTERN": "日期模式", + "DATE_RANGE": "日期范围", + "DAY": "Day", + "DAYS": "Days", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "默认固件", + "DEFAULT_TIME_RANGE": "默认的时间范围内", + "DELAY_TIME_IN_SECONDS": "延迟时间(秒)", + "DELETE": "删除", + "DELETE_DASHBOARD": "删除仪表板", + "DELETE_ITEMS": "(批量)删除项目", + "DELETE_MESSAGE": "您将要删除所选的项目
删除过程将删除这些项目的完整跟踪 !
单击删除以继续。", + "DESCRIPTION": "描述", + "DESTINATION": "目的地", + "DESTINATION_ID": "目标 id", + "DETAILS": "详细信息", + "DEVICES": "设备", + "DEVICE_IDENS": "设备 iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "以逗号分隔设备 idens ", + "DIRECTION": "方向", + "DISABLE": "禁用", + "DISABLED": "已禁用", + "DISABLE_WHEN_TRIGGER": "禁用时触发", + "DISCOVER": "发现", + "DISCOVER_INITIATED_SUCCESSFULLY": "发现已成功启动", + "DISPLAY_NAMES": "显示名称", + "DOCUMENTS": "文件", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "驱动程序", + "EDIT": "编辑", + "EDIT_DASHBOARD": "编辑仪表板", + "EMAIL": "电子邮件", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "以逗号分隔的电子邮件地址", + "ENABLE": "启用", + "ENABLED": "已启用", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "无固件时默认启用", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "当启用此选项时,在系统中使用默认固件,而不使用请求的固件。", + "ENABLE_EDIT_MODE": "启用编辑模式", + "ENABLE_MIN_MAX": "启用最小/最大", + "ENABLE_SSL": "启用 SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "删除配置", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "您将要删除选定项的完整配置。
点击清除配置继续下去。", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "清除配置", + "ERASE_CONFIGURATION_INITIATED": "擦除选定项目的配置启动", + "ERROR_ITEMS_NOT_AVAILABLE": "选定的项目不可用 !", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "示例︰ 120", + "ETHERNET_HOST_NAME_EXAMPLE": "示例︰ 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "示例︰ 5003", + "EUI": "EUI", + "EVALUATIONS": "诊断", + "EXECUTE_DISCOVER_INTERVAL": "执行“发现”间隔", + "EXTENSION": "扩展", + "EXTENSIONS": "扩展", + "EXTERNAL_SERVERS": "外部服务器", + "EXTERNAL_SERVERS_DETAIL": "外部服务器详细信息", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "文件", + "FILE_NAME": "文件名称", + "FILE_SIZE": "文件大小", + "FILTER_BY_BLOCKS": "按块筛选", + "FILTER_BY_CONDITION_TYPE": "按条件类型筛选", + "FILTER_BY_DAMPENING_TYPE": "按阻断类型筛选", + "FILTER_BY_DESCRIPTION": "按描述筛选", + "FILTER_BY_DESTINATION_ID": "按目标 id 筛选", + "FILTER_BY_DIRECTION": "按方向筛选", + "FILTER_BY_EMAIL": "按电子邮件筛选", + "FILTER_BY_ENABLED": "按启用筛选", + "FILTER_BY_EUI": "按 EUI 筛选", + "FILTER_BY_EXTENSION": "按扩展名筛选", + "FILTER_BY_FILE_NAME": "按文件名称筛选", + "FILTER_BY_FREQUENCY": "按频率筛选", + "FILTER_BY_FULL_NAME": "按全名筛选", + "FILTER_BY_KEY": "按Key筛选", + "FILTER_BY_LEVEL": "按级别筛选", + "FILTER_BY_LIBRARY_VERSION": "按库版本筛选", + "FILTER_BY_MESSAGE": "按消息筛选", + "FILTER_BY_MESSGAE_TYPE": "按消息类型筛选", + "FILTER_BY_NAME": "按名称筛选", + "FILTER_BY_NETWORK_TYPE": "按网络类型筛选", + "FILTER_BY_NODE_ID": "按节点 id 筛选", + "FILTER_BY_OPERATION": "按操作筛选", + "FILTER_BY_OPERATION_TYPE": "按操作类型筛选", + "FILTER_BY_PAYLOAD_OFF": "按数据值为OFF进行筛选", + "FILTER_BY_PAYLOAD_ON": "按数据值为ON进行筛选", + "FILTER_BY_PERMISSION": "按权限筛选", + "FILTER_BY_PUBLIC_ACCESS": "按公共访问权限筛选", + "FILTER_BY_RESOURCE": "按资源筛选", + "FILTER_BY_RESOURCE_TYPE": "按资源类型筛选", + "FILTER_BY_SENSOR_ID": "按传感器 id 筛选", + "FILTER_BY_SENSOR_NAME": "按传感器名称筛选", + "FILTER_BY_SENSOR_TYPE": "按传感器类型筛选", + "FILTER_BY_SENSOR_VARIABLES": "通过传感器变量筛选", + "FILTER_BY_SOURCE_ID": "按源 id 筛选", + "FILTER_BY_STATUS": "按状态筛选", + "FILTER_BY_STATUS_MESSAGE": "按状态消息筛选", + "FILTER_BY_TYPE": "按类型筛选", + "FILTER_BY_TYPE_ID": "按类型 id 筛选", + "FILTER_BY_UID": "按 UID 筛选", + "FILTER_BY_USERNAME": "按用户名筛选", + "FILTER_BY_VALUE": "按值筛选", + "FILTER_BY_VALUE2": "按值 #2 筛选", + "FILTER_BY_VALUE3": "按值 #3 筛选", + "FILTER_BY_VARIABLE_TYPES": "按变量类型筛选", + "FILTER_BY_VERSION": "按版本筛选", + "FILTER_BY_VERSION_ID": "按版本 id 筛选", + "FIRMWARE": "固件", + "FIRMWARES": "固件", + "FIRMWARES_DETAIL": "固件详细", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "固件类型详细信息", + "FIRMWARE_TYPE_NAME": "固件类型名称", + "FIRMWARE_UPLOAD_INITIATED": "为选定项目发起固件上传。", + "FIRMWARE_VERSION": "固件版本", + "FIRMWARE_VERSIONS_DETAIL": "固件版本详细信息", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "五分钟数据", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "转发数据", + "FORWARD_PAYLOADS_DETAIL": "转发数据详细", + "FREE": "空闲", + "FREQUENCY": "频率", + "FROM": "来自", + "FROM_ADDRESS": "从地址", + "FROM_PHONE_NUMBER": "从电话号码", + "FULL_NAME": "全名", + "FULL_PATH": "完整路径", + "GARBAGE_COLLECTOR": "垃圾回收器", + "GATEWAY": "网关", + "GATEWAYS": "网关", + "GATEWAYS_DETAIL": "网关的详细信息", + "GATEWAY_DETAILS": "网关的详细信息", + "GATEWAY_NAME": "网关名称", + "GATEWAY_TYPE": "网关类型", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "全局页面刷新时间", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "为子资源授予访问权限(角色)", + "GRAPHS_SETTINGS": "图形设置", + "GRAPH_SETTINGS": "图形设置", + "GROUPS": "组", + "GROUP_NAME": "组名称", + "HEAP_MEMORY": "堆内存", + "HEIGHT": "高度", + "HIDE_MENU": "隐藏菜单", + "HISTORICAL_BAR_CHART": "历史的条形图", + "HOST_NAME": "主机名", + "HOURS": "小时", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML额外的headers", + "HTTP_PORT": "HTTP 端口", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "忽略大小写", + "IGNORE_DUPLICATE": "忽略重复", + "IMPERIAL": "英制", + "INCLUDE_THRESHOLD_HIGH": "包含最高阈值", + "INCLUDE_THRESHOLD_LOW": "包含最低阈值", + "INDIVIDUAL_SETTINGS": "个人设置", + "INIT": "初始化", + "INTERPOLATE_TYPE": "插入类型", + "INTERVAL": "时间间隔", + "INTERVAL_IN_SECONDS": "时间间隔以秒为单位", + "INVALID_USERNAME_OR_PASSWORD": "无效的用户名或密码 !", + "IN_RANGE": "在范围内", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "项目已成功删除", + "ITEMS_DISABLED_SUCCESSFULLY": "项目已成功禁用", + "ITEMS_ENABLED_SUCCESSFULLY": "项目成功启用", + "ITEMS_PER_ROW": "每行项目", + "ITEM_CREATED_SUCCESSFULLY": "已成功创建的项目", + "ITEM_UPDATED_SUCCESSFULLY": "已成功更新的项目", + "JAVA_HOME": "Java 主目录", + "JAVA_VENDOR_URL": "Java Vendor 路径", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java虚拟机规格", + "JSON": "JSON", + "KEY": "密钥", + "KEY_FORMAT": "密钥格式", + "LANGUAGE": "语言", + "LANGUAGE_VERSION": "语言版本", + "LAST_5_MINUTES": "最后 5 分钟", + "LAST_6_HOURS": "最后 6 小时", + "LAST_12_HOURS": "最后 12 小时", + "LAST_DAY": "最后一天", + "LAST_EXECUTION": "最后一次执行", + "LAST_FIRED": "最后被解雇", + "LAST_GARBAGECOLLECTOR_DURATION": "最后 GC 持续时间", + "LAST_HOUR": "最后一小时", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "最后编辑时间", + "LAST_MONTH": "上个月", + "LAST_SEEN": "最后浏览", + "LAST_TRIGGER": "最后触发器", + "LAST_WEEK": "上个星期", + "LAST_YEAR": "去年", + "LATITUDE": "纬度", + "LEFT": "Left", + "LEVEL": "级别", + "LIBRARY_VERSION": "库版本", + "LINE": "线", + "LINEAR": "线性", + "LINE_CHART": "折线图", + "LOAD": "加载", + "LOADED": "已加载", + "LOADING": "正在加载...", + "LOCATION": "位置", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "登录消息", + "LOGS": "日志", + "LOG_DIRECTION": "日志方向", + "LOG_IN": "登录", + "LOG_LEVEL": "日志级别", + "LOG_OUT": "注销", + "LONGITUDE": "经度", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "管理规范版本", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "最大", + "MAXIMUM_BLOCK_SIZE": "最大块值", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "消息", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "消息包含", + "MESSAGE_TYPE": "消息类型", + "METRIC": "公制", + "METRICS": "度量标准", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "度量类型", + "MILLISECONDS": "毫秒", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "最小高度", + "MINIMUM_WIDTH": "最小宽度", + "MINUTES": "分钟", + "MIN_MAX": "最小/最大", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "修改传感器和变量映射", + "MONOTONE": "单调", + "MQTT_BROKER": "MQTT 代理", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "您将要更改 MQTT 代理设置。
此操作导致,MQTT代理服务重新启动并更新。", + "MQTT_BROKER_EDIT_DIALOG": "MQTT 代理设置", + "MQTT_BROKER_HOST_EXAMPLE": "示例︰ tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "示例︰ mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "示例︰ mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "示例︰ mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController 服务器日志", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "名称", + "NETWORK": "网络", + "NETWORK_TYPE": "网络类型", + "NEVER": "永不", + "NEW": "New", + "NEW_DASHBOARD": "新的仪表板", + "NEW_PASSWORD": "新密码", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "节点", + "NODES": "节点", + "NODES_ALIVE_CHECK_INTERVAL": "在线节点检查间隔", + "NODES_DETAIL": "节点详细信息", + "NODE_DETAILS": "节点详细信息", + "NODE_EUI": "节点 EUI", + "NODE_ID": "节点 id", + "NODE_NAME": "节点名称", + "NODE_STATUS": "节点状态", + "NODE_TYPE": "节点类型", + "NON_HEAP_MEMORY": "非堆内存", + "NOTHING_SELECTED": "未选择任何内容", + "NOTIFICATIONS": "通知", + "NOT_SET": "未设置", + "NO_ACK": "没有 ack", + "NO_BACKUPS_SETUP": "未设置任何备份。", + "NO_DATA_AVAILABLE": "没有可用的数据。", + "NO_EXTERNAL_SERVERS_SETUP": "没有外部服务安装程序。", + "NO_FIRMWARES_SETUP": "未设置任何固件。", + "NO_FIRMWARE_TYPES_SETUP": "未设置任何固件类型。", + "NO_FIRMWARE_VERSIONS_SETUP": "未设置任何固件版本", + "NO_FORWARD_PAYLOADS_SETUP": "未设置任何转发数据。", + "NO_GATEWAYS_SETUP": "未设置任何网关。", + "NO_ITEMS_IN_FILTER": "哎呀 !未找到任何结果。请尝试查询其他关键词。", + "NO_ITEMS_SETUP": "未设置任何项目 !", + "NO_LOGS_AVAILABLE": "没有可用的日志。", + "NO_NODES_SETUP": "未设置任何节点。", + "NO_OPERATIONS_SETUP": "未设置任何操作。", + "NO_RESOURCES_DATA_SETUP": "未设置任何资源数据。", + "NO_RESOURCE_GROUPS_MAP_SETUP": "没有与此组映射的资源。", + "NO_RESOURCE_GROUPS_SETUP": "未设置任何资源组。", + "NO_ROOMS_SETUP": "未设置任何房间。", + "NO_RULES_SETUP": "未设置任何规则。", + "NO_SCRIPTS_SETUP": "未设置任何脚本。", + "NO_SENSORS_SETUP": "未设置任何传感器。", + "NO_TEMPLATES_SETUP": "未设置任何模板。", + "NO_TIMERS_SETUP": "未设置任何计时器。", + "NO_UID_TAGS_SETUP": "未设置任何 UID 标记。", + "NO_VARIABLES_SETUP": "没有设置的变量。", + "OCCURRENCES": "事件", + "OFF": "关闭", + "OFFSET": "偏移量", + "ON": "开启", + "ONE_DAY_DATA": "日数据", + "ONE_HOUR_DATA": "1小时数据", + "ONE_MINUTE_DATA": "1分钟数据", + "OPERATING_SYSTEM": "操作系统", + "OPERATION": "操作", + "OPERATIONS": "操作", + "OPERATIONS_DETAIL": "操作细节", + "OPERATION_NAME": "操作名称", + "OPERATION_TYPE": "操作类型", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "父", + "PARENT_NODE_EUI": "父节点 EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "密码", + "PATTERN": "模式", + "PAYLOAD": "数据", + "PAYLOAD_DELAY": "数据 / 延迟", + "PAYLOAD_OFF": "数据置为关闭", + "PAYLOAD_ON": "数据置为开启", + "PEAK": "高峰", + "PERCENTAGE": "百分比", + "PERMISSION": "权限", + "PHONE_NUMBERS": "手机号码", + "PHONE_NUMBERS_COMMA_SEPARATED": "用逗号分隔电话号码", + "PHYSICAL_MEMORY": "物理内存 (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "轮询频率 (分钟)", + "PORT": "端口", + "PORT_NAME": "端口名称", + "PRIORITY": "优先级", + "PRIVATE": "私有", + "PRIVATE_KEY": "私钥", + "PROCESS_CPU": "CPU 进程", + "PROFILE": "配置文件", + "PROFILE_UPDATED_SUCCESSFULLY": "已成功更新配置文件", + "PROPERTIES": "属性", + "PUBLIC": "公共", + "PUBLIC_ACCESS": "公共访问", + "PUBLIC_KEY": "公共密钥", + "PURGE": "清除", + "PURGE_BEFORE": "清除前", + "PURGE_DONE_SUCCESSFULLY": "清除已成功完成。", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "清除资源日志", + "PURGE_SENSOR_VARIABLE": "清除传感器变量", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "警告︰ 如果您不选择任何参数,本次过程将删除全部 !", + "PURGING": "清除", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "原始数据", + "READ_ONLY": "只读", + "REALTIME": "实时", + "REBOOT": "重新启动", + "REBOOT_CONFIRMATION_MESSAGE": "您将要重新启动所选项目
点击重新启动以继续。", + "REBOOT_CONFIRMATION_TITLE": "重新启动", + "REBOOT_INITIATED": "将所选项目重新启动。", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "记录限制", + "REFRESH": "刷新", + "REFRESH_NODES_INFO": "刷新节点信息", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'刷新节点信息' 已成功启动。", + "REFRESH_TIME_SECONDS": "刷新时间 (秒)", + "REGISTER_NODES_AUTOMATICALLY": "自动注册节点", + "REGISTRATION_STATUS": "注册状态", + "RELEASES": "发布", + "RELOAD": "重新加载", + "RELOAD_INITIATED_SUCCESSFULLY": "重新加载已成功", + "RESOURCE": "资源", + "RESOURCES": "资源", + "RESOURCES_DATA": "资源数据", + "RESOURCES_DATA_DETAIL": "资源数据详细信息", + "RESOURCES_GROUPS": "资源组", + "RESOURCES_LOGS": "资源日志", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "资源日志详细信息", + "RESOURCES_LOG_LEVEL": "资源日志级别", + "RESOURCES_LOG_RETENTION_DURATION": "资源日志保留时间", + "RESOURCE_GROUPS_DETAIL": "资源组详细信息", + "RESOURCE_GROUPS_MAPS_DETAIL": "资源组映射详细信息", + "RESOURCE_GROUPS_TURNED_OFF": "资源组关闭", + "RESOURCE_GROUPS_TURNED_ON": "资源组开启", + "RESOURCE_GROUP_TURNED_OFF": "资源组关闭", + "RESOURCE_GROUP_TURNED_ON": "资源组开启", + "RESOURCE_TYPE": "资源类型", + "RESTORE": "还原", + "RESTORE_CONFIRMATION_MESSAGE": "您将要恢复系统到 “{{name}}” 。
还原将完全删除当前的数据及配置,系统将进入 “{{name}}” 状态 !
单击还原继续。
注意︰ 成功还原后,您必须从命令行手动启动服务器", + "RESTORE_CONFIRMATION_TITLE": "恢复系统到 {{name}}", + "RESTORE_INITIATED_SUCCESSFULLY": "还原已成功启动。", + "RESULT": "结果", + "RETAIN_MAX": "保留最大 #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "您将要更改度量数据保留设置。
此操作可能导致数据丢失。阅读用户手册,进一步的细节。
它是推荐系统备份前,向前 !", + "RETENTION_DIALOG_TITLE": "在进入下一步之前请仔细阅读", + "RE_ENABLE": "重新启用", + "RIGHT": "Right", + "ROLES": "角色", + "ROLES_DETAIL": "角色详细信息", + "ROOM": "房间", + "ROOMS": "房间", + "ROOMS_DETAIL": "客房详细信息", + "ROOM_NAME": "房间名称", + "RULES": "规则", + "RULES_DETAIL": "规则详细信息", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "规则名称", + "RUN": "运行", + "RUNNING": "正在运行...", + "RUN_BACKUP": "运行备份", + "RUN_GARBAGE_COLLECTION": "运行垃圾回收", + "RUN_NOW": "立即运行", + "SAVE": "保存", + "SAVE_CHANGES": "保存更改", + "SAVING": "正在保存......", + "SCRIPT": "脚本", + "SCRIPTS": "脚本", + "SCRIPTS_DETAIL": "脚本详细信息", + "SCRIPT_BINDINGS": "脚本绑定", + "SCRIPT_ENGINES": "脚本引擎", + "SCRIPT_FILES": "脚本文件", + "SEARCH": "搜索", + "SECONDS": "秒", + "SELECT": "选择", + "SEND": "发送", + "SENDING": "正在发送...", + "SEND_RAW_MESSAGE": "发送原始消息", + "SENSOR": "传感器", + "SENSORS": "传感器", + "SENSORS_ACTION": "传感器操作", + "SENSORS_AND_VARIABLES_MAPPING": "传感器和变量映射", + "SENSORS_DETAIL": "传感器详细信息", + "SENSOR_DETAILS": "传感器的详细信息", + "SENSOR_ID": "传感器 id", + "SENSOR_NAME": "传感器名称", + "SENSOR_TYPE": "传感器类型", + "SENSOR_VARIABLE": "传感器变量", + "SENSOR_VARIABLES": "传感器变量", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "传感器的变量类型", + "SERIAL_BAUD_RATE_EXAMPLE": "示例︰ 115200", + "SERIAL_PORT_NAME_EXAMPLE": "示例: / dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "示例︰ 120", + "SETTINGS": "设置", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "显示图例", + "SHOW_MENU": "显示菜单", + "SIX_HOURS_DATA": "6小时数据", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "短信", + "SMTP_HOST": "SMTP 主机", + "SMTP_PASSWORD": "SMTP 密码", + "SMTP_PORT": "SMTP 端口", + "SMTP_USERNAME": "SMTP 用户名", + "SOURCE": "来源", + "SOURCE_CODE": "源代码", + "SOURCE_ID": "源 id", + "SPECIFICATION_VENDOR": "规范供应商", + "SPECIFICATION_VERSION": "规范版本", + "STACKED_AREA_CHART": "堆积的面积图", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "状态", + "STATUS_MESSAGE": "状态消息", + "STATUS_SINCE": "状态自", + "STEP_AFTER": "下一步", + "STEP_BEFORE": "上一步", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "主题", + "SUB_TYPE": "子类型", + "SUNRISE": "日出", + "SUNSET": "日落", + "SUPPORT": "支持", + "SWAP": "Swap", + "SWAP_SPACE": "交换空间", + "SYNTAX_ERROR": "语法错误", + "SYSTEM": "系统", + "SYSTEM_CPU_LOAD": "系统 Cpu 负载", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "系统平均负载", + "SYSTEM_STATUS": "系统状态", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "您将要更新传感器变量的配置。
当更新配置,如果度量类型也更改,这个传感器变量现有的所有数据将删除!", + "S_VARIABLE_DIALOG_TITLE": "更新传感器变量配置", + "TABLE_ROWS_LIMIT": "表格行数限制", + "TAGS": "标签", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "模板", + "TEMPLATES": "模板", + "TEMPLATES_DETAIL": "详细信息模板", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "正在测试...", + "TEST_CONNECTION": "测试连接", + "TEXT": "Text", + "THREADS_COUNT": "线程计数", + "THRESHOLD_VALUE": "阈值", + "THRESHOLD_VALUE_HIGH": "高阈值", + "THRESHOLD_VALUE_LOW": "低阈值", + "TIME": "时间", + "TIMERS": "计时器", + "TIMERS_DETAIL": "计时器详细", + "TIMER_NAME": "计时器名称", + "TIMER_TYPE": "计时器类型", + "TIME_FORMAT": "时间格式", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "时间偏移量 (HH:mm:ss)", + "TIME_RANGE": "时间范围", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "标题", + "TO": "自", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "主题发布", + "TOPICS_SUBSCRIBE": "主题订阅", + "TOPIC_PUBLISH": "主题发布", + "TOPIC_SUBSCRIBE": "主题订阅", + "TOPOLOGY": "拓扑结构", + "TOTAL": "总计", + "TOTAL_LOADED": "总装", + "TOTAL_STARTED": "总共开始", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "当触发", + "TRUST_HOST": "可信任主机", + "TURN_OFF": "关闭", + "TURN_ON": "打开", + "TWELVE_HOURS_DATA": "12小时数据", + "TWILIO": "应答", + "TYPE": "类型", + "TYPES": "类型", + "TYPE_ID": "类型 id", + "UID": "UID", + "UID_TAGS": "UID 标记", + "UID_TAGS_DETAIL": "UID 标记详细信息", + "UNAVAILABLE": "不可用", + "UNDO_CHANGES": "撤消更改", + "UNIT": "单位", + "UNITS": "单位", + "UNITS_CONFIGURATION": "单位配置", + "UNITS_METRICS_IMPERIAL": "单位 [公制/英制]", + "UNLOADED": "卸载", + "UP": "开启", + "UPDATE": "更新", + "UPDATED_SUCCESSFULLY": "已成功更新。", + "UPDATE_AN_ENTRY": "更新条目", + "UPDATE_EXTERNAL_SERVER": "更新外部服务器", + "UPDATE_FIRMWARE": "更新固件", + "UPDATE_FIRMWARE_TYPE": "更新固件类型", + "UPDATE_FIRMWARE_VERSION": "更新固件版本", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "更新数据转发条目", + "UPDATE_GATEWAY": "更新网关", + "UPDATE_NODE": "更新节点", + "UPDATE_OPERATION": "更新操作", + "UPDATE_RESOURCE": "更新资源", + "UPDATE_RESOURCES_GROUP": "更新资源组", + "UPDATE_ROOM": "更新的房间", + "UPDATE_RULE": "更新规则", + "UPDATE_SCRIPT": "更新脚本", + "UPDATE_SENSOR": "更新传感器", + "UPDATE_SENSOR_VARIABLE": "更新传感器变量", + "UPDATE_TEMPLATE": "更新模板", + "UPDATE_TIMER": "更新定时器", + "UPDATE_UID_TAG_ENTRY": "更新 UID 标记项", + "UPDATE_USER": "更新用户", + "UPDATE_VARIABLE": "更新变量", + "UPLOADED_ON": "上传的", + "UPLOAD_FIRMWARE": "上传固件", + "UPPER": "Upper", + "UPPER_LIMIT": "上限", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "使用", + "USED": "使用", + "USERNAME": "用户名", + "USERS": "用户", + "USERS_DETAIL": "用户详细信息", + "USER_WORKING_DIRECTORY": "用户工作目录", + "USE_GLOBAL": "使用全局", + "USE_INTERACTIVE_GUIDE_LINE": "使用交互式指引", + "UTILITIES": "实用程序", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "没有允许的空间。", + "VALIDATION_ERROR_NUMBER": "输入的值不是很多。", + "VALIDITY": "有效性", + "VALUE": "值", + "VALUE2": "值 #2", + "VALUE3": "值 #3", + "VARIABLES": "变量", + "VARIABLES_DETAIL": "变量详情", + "VARIABLES_GRAPHICAL_VIEW": "变量的图形视图", + "VARIABLES_MAPPER": "变量映射器", + "VARIABLES_REPOSITORY": "变量存储库", + "VARIABLE_TYPES": "变量类型", + "VENDOR": "供应商", + "VERSION": "版本", + "VERSIONS": "版本", + "VERSION_ID": "版本 id", + "VERSION_KERNEL": "版本/内核", + "VIEW_DETAILS": "查看详细信息", + "VM_NAME": "VM名称", + "VM_VENDOR": "VM供应商", + "VM_VERSION": "VM 版本", + "WEBSOCKET_PORT": "Websocket 端口", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "小部件图像文件磁盘位置", + "WRITE_API_KEY": "写 API 密钥", + "YEARS": "年", + "YES": "是的" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui-zh_tw.json b/www/languages/mc_locale_gui-zh_tw.json new file mode 100644 index 0000000..d15de9f --- /dev/null +++ b/www/languages/mc_locale_gui-zh_tw.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12小時制", + "24_HOURS": "24小時制", + "ABOUT": "關於", + "ACCESS": "存取", + "ACCESS_TOKEN": "存取權杖", + "ACK": "Ack", + "ACKNOWLEDGE": "接收確認", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "動作", + "ACTION_BOARD": "操作板", + "ACTIVE": "啟用", + "ADD": "新增", + "ADD_AN_ENTRY": "新增項目", + "ADD_EXTERNAL_SERVER": "新增外部伺服器", + "ADD_FIRMWARE": "新增韌體", + "ADD_FIRMWARE_TYPE": "新增韌體類型", + "ADD_FIRMWARE_VERSION": "新增韌體版本", + "ADD_FORWARD_PAYLOAD_ENTRY": "新增轉發資料項目", + "ADD_GATEWAY": "新增 gateway", + "ADD_GROUP": "新增群組", + "ADD_NEW_WIDGET": "新增小部件", + "ADD_NODE": "新增節點", + "ADD_OPERATION": "新增操作", + "ADD_RESOURCE": "新增資源", + "ADD_RESOURCES_GROUP": "新增資源群組", + "ADD_ROLE": "新增角色", + "ADD_ROOM": "新增房間", + "ADD_RULE": "新增規則", + "ADD_SCRIPT": "新增腳本", + "ADD_SENSOR": "新增感測器", + "ADD_TEMPLATE": "新增樣板", + "ADD_TIMER": "新增計時器", + "ADD_UID_TAG_ENTRY": "新增 UID 標記項目", + "ADD_USER": "新增使用者", + "ADD_VARIABLE": "新增變數", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "後", + "ALIAS": "別名", + "ALIVE_TEST_FREQUENCY": "線上檢核頻率(秒)", + "ALLOW_ANONYMOUS": "允許匿名", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS 自訂控制器", + "APP.DESCRIPTION": "開放源始碼控制器", + "APP.LOG_IN_TO_MESSAGE": "登錄到 MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "歡迎進入 MyController.org !Open Source 控制器。", + "ARCHITECTURE": "結構", + "AREA": "地區", + "AUTH_ID_SID": "身份驗證 id/sid", + "AUTH_TOKEN": "身份驗證權杖", + "AUTOMATIC_BACKUP_SETTINGS": "自動備份設定", + "AUTORIZED_USER": "已獲授權使用者", + "AUTO_GENERATE": "自動產生", + "AVAILABLE_PROCESS": "可用的程序", + "AVERAGE_TIME": "平均時間", + "BACKUP": "備份", + "BACKUPS_DETAIL": "備份詳細資訊", + "BACKUP_COMPLETED_SUCCESSFULLY": "備份順利完成。", + "BACKUP_EVERY": "備份每隔", + "BACKUP_FILE_PREFIX": "備份檔名前錣", + "BACKUP_LOCATION": "備份位置", + "BACKUP_ON": "備份開啟", + "BACKUP_SETTINGS": "備份設定", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "已關閉Basis", + "BASIS_OPEN": "開啟 Basis", + "BATTERY": "電池", + "BATTERY_LEVEL": "電池電量水準", + "BATTERY_USAGE": "電池消耗情況", + "BAUD_RATE": "串列傳輸速率", + "BINARY_DATA": "二進位資料", + "BIND_ADDRESS": "綁定地址", + "BLOCKS": "區塊", + "BLOCKS_SENT": "已傳送區塊", + "BOTTOM": "底部", + "BROKET_HOST": "代理主機", + "BUILD_JDK": "建立 JDK", + "BUILD_TOOL": "建立工具", + "BUILT_ON": "建立在", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "按鈕設定:", + "CANCEL": "取消", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "已關閉 Cardinal", + "CARDINAL_OPEN": "開啟 Cardinal", + "CHANNEL_TAGS": "通道標記", + "CHANNEL_TAGS_COMMA_SEPARATED": "以逗號分隔通道標籤", + "CHANNEL_USERNAME": "通道 username", + "CLASS_LOADING_DETAILS": "Class Loading 詳細資訊", + "CLIENT_ID": "用戶 id", + "CLONE": "複製", + "COLLECTION_COUNT": "Collection 計數", + "COLLECTION_TIME": "Collection 時間", + "COLOR": "顏色", + "COMMAND": "Command", + "COMMITTED": "已提交的", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "提交的虛擬記憶體大小", + "CONDITION": "條件", + "CONDITION_TYPE": "條件類型", + "CONNECTION_DETAILS": "連接詳細資訊", + "CONTENT": "內容", + "CONTINUE": "繼續", + "COUNT": "計數", + "COUNTER": "計數器", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron 運算式", + "CSS_FILES": "CSS 檔案", + "CURRENT": "當前", + "CURRENT_PASSWORD": "當前密碼", + "CUSTOM_MESSAGE": "自訂訊息", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening(抑制)", + "DAMPENING_TYPE": "Dampening(抑制)類型", + "DASHBOARDS": "儀表板", + "DASHBOARD_LIMIT": "儀表板最大允許量", + "DATA": "Data", + "DATABASE": "資料庫", + "DATABASE_SCHEMA_REVISION": "Database schema 版本", + "DATABASE_TYPE": "資料庫類型", + "DATABASE_VERSION": "資料庫版本", + "DATA_RETENTION_SETTINGS": "資料保存設定", + "DATA_TYPE": "資料類型", + "DATA_UNAVAILABLE": "資料無法使用!", + "DATE_PATTERN": "日期型式", + "DATE_RANGE": "日期範圍", + "DAY": "日", + "DAYS": "日", + "DEFAULT": "預設", + "DEFAULT_FIRMWARE": "預設韌體", + "DEFAULT_TIME_RANGE": "預設的時間範圍", + "DELAY_TIME_IN_SECONDS": "延遲時間(秒)", + "DELETE": "刪除", + "DELETE_DASHBOARD": "刪除儀表板", + "DELETE_ITEMS": "刪除(數個)項目", + "DELETE_MESSAGE": "您將刪除所選的項目
刪除將會移除項目相關的完整跟蹤 !
按一下'刪除'繼續。", + "DESCRIPTION": "描述", + "DESTINATION": "目的地", + "DESTINATION_ID": "目的地 id", + "DETAILS": "詳細資訊", + "DEVICES": "裝置", + "DEVICE_IDENS": "裝置 iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "逗號分隔裝置 idens", + "DIRECTION": "方向", + "DISABLE": "停用", + "DISABLED": "已停用", + "DISABLE_WHEN_TRIGGER": "觸發時停用", + "DISCOVER": "發現", + "DISCOVER_INITIATED_SUCCESSFULLY": "發現已成功啟動", + "DISPLAY_NAMES": "顯示名稱", + "DOCUMENTS": "文件", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "驅動程式", + "EDIT": "編輯", + "EDIT_DASHBOARD": "編輯儀表板", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "逗號分隔 Email 地址", + "ENABLE": "啟用", + "ENABLED": "已啟用", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "無韌體時預設啟用", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "當啟用此選項,在系統中無可用的請求韌體時,將使用預設韌體。", + "ENABLE_EDIT_MODE": "啟用編輯模式", + "ENABLE_MIN_MAX": "啟用最小/最大", + "ENABLE_SSL": "啟用 SSL", + "ENABLE_UNIQUE_NAME": "啟用 unique 名稱", + "ERASE_CONFIGURATION": "刪除配置", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "您將要刪除選定項目的完整配置。1按'清除配置'繼續執行。", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "刪除配置", + "ERASE_CONFIGURATION_INITIATED": "刪除選定項目的啟動配置", + "ERROR_ITEMS_NOT_AVAILABLE": "選定的項目無法使用!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "範例︰ 120", + "ETHERNET_HOST_NAME_EXAMPLE": "範例︰ 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "範例︰ 5003", + "EUI": "EUI", + "EVALUATIONS": "評估", + "EXECUTE_DISCOVER_INTERVAL": "執行 discover 間隔", + "EXTENSION": "擴展", + "EXTENSIONS": "擴展", + "EXTERNAL_SERVERS": "外部伺服器", + "EXTERNAL_SERVERS_DETAIL": "外部伺服器詳細資訊", + "FAILED_RETRY_COUNT": "失敗重試計數", + "FAILURE_COUNT": "失敗計數", + "FILE": "檔案", + "FILE_NAME": "檔案名稱", + "FILE_SIZE": "檔案大小", + "FILTER_BY_BLOCKS": "按區塊篩選", + "FILTER_BY_CONDITION_TYPE": "按條件類型篩選", + "FILTER_BY_DAMPENING_TYPE": "按Dampening類型篩選", + "FILTER_BY_DESCRIPTION": "按描述篩選", + "FILTER_BY_DESTINATION_ID": "按目標 id 篩選", + "FILTER_BY_DIRECTION": "按方向篩選", + "FILTER_BY_EMAIL": "按Email篩選", + "FILTER_BY_ENABLED": "按啟用篩選", + "FILTER_BY_EUI": "按 EUI 篩選", + "FILTER_BY_EXTENSION": "按副檔名篩選", + "FILTER_BY_FILE_NAME": "按檔案名稱篩選", + "FILTER_BY_FREQUENCY": "按頻率篩選", + "FILTER_BY_FULL_NAME": "按全名篩選", + "FILTER_BY_KEY": "按Key篩選", + "FILTER_BY_LEVEL": "按級別篩選", + "FILTER_BY_LIBRARY_VERSION": "按資料庫版本篩選", + "FILTER_BY_MESSAGE": "按訊息篩選", + "FILTER_BY_MESSGAE_TYPE": "按訊息類型篩選", + "FILTER_BY_NAME": "按名稱篩選", + "FILTER_BY_NETWORK_TYPE": "按網路類型篩選", + "FILTER_BY_NODE_ID": "按節點 id 篩選", + "FILTER_BY_OPERATION": "按操作篩選", + "FILTER_BY_OPERATION_TYPE": "按操作類型篩選", + "FILTER_BY_PAYLOAD_OFF": "按資料值為OFF進行篩選", + "FILTER_BY_PAYLOAD_ON": "按資料值為ON進行篩選", + "FILTER_BY_PERMISSION": "按許可權篩選", + "FILTER_BY_PUBLIC_ACCESS": "按公共存取權限篩選", + "FILTER_BY_RESOURCE": "按資源篩選", + "FILTER_BY_RESOURCE_TYPE": "按資源類型篩選", + "FILTER_BY_SENSOR_ID": "按感測器 id 篩選", + "FILTER_BY_SENSOR_NAME": "按感測器名稱篩選", + "FILTER_BY_SENSOR_TYPE": "按感測器類型篩選", + "FILTER_BY_SENSOR_VARIABLES": "按感測器變數篩選", + "FILTER_BY_SOURCE_ID": "按Source id 篩選", + "FILTER_BY_STATUS": "按狀態篩選", + "FILTER_BY_STATUS_MESSAGE": "按狀態訊息篩選", + "FILTER_BY_TYPE": "按類型篩選", + "FILTER_BY_TYPE_ID": "按類型 id 篩選", + "FILTER_BY_UID": "按 UID 篩選", + "FILTER_BY_USERNAME": "按使用者名稱篩選", + "FILTER_BY_VALUE": "按值篩選", + "FILTER_BY_VALUE2": "按值 #2 篩選", + "FILTER_BY_VALUE3": "按值 #3 篩選", + "FILTER_BY_VARIABLE_TYPES": "按變數類型篩選", + "FILTER_BY_VERSION": "按版本篩選", + "FILTER_BY_VERSION_ID": "按版本 id 篩選", + "FIRMWARE": "韌體", + "FIRMWARES": "韌體", + "FIRMWARES_DETAIL": "韌體詳細", + "FIRMWARE_OTA_STATUS": "韌體 OTA 狀態", + "FIRMWARE_TYPES_DETAIL": "韌體類型詳細資訊", + "FIRMWARE_TYPE_NAME": "韌體類型名稱", + "FIRMWARE_UPLOAD_INITIATED": "為選定項目啟始韌體上傳。", + "FIRMWARE_VERSION": "韌體版本", + "FIRMWARE_VERSIONS_DETAIL": "韌體版本詳細資訊", + "FIRST_NAME": "名字", + "FIVE_MINUTES_DATA": "五分鐘資料", + "FORUM": "論壇", + "FORWARD_PAYLOAD": "轉發資料", + "FORWARD_PAYLOADS_DETAIL": "轉發資料詳細", + "FREE": "可用", + "FREQUENCY": "頻率", + "FROM": "來自", + "FROM_ADDRESS": "從地址", + "FROM_PHONE_NUMBER": "從電話號碼", + "FULL_NAME": "全名", + "FULL_PATH": "完整路徑", + "GARBAGE_COLLECTOR": "垃圾回收器", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways 的詳細資訊", + "GATEWAY_DETAILS": "Gateway 的詳細資訊", + "GATEWAY_NAME": "Gateway 名稱", + "GATEWAY_TYPE": "Gateway 類型", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commi", + "GLOBAL_PAGE_REFRESH_TIME": "全域頁面更新時間", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "為子資源授予存取權限(角色)", + "GRAPHS_SETTINGS": "圖形設置", + "GRAPH_SETTINGS": "圖形設置", + "GROUPS": "群組", + "GROUP_NAME": "群組名稱", + "HEAP_MEMORY": "堆記憶體", + "HEIGHT": "高度", + "HIDE_MENU": "隱藏菜單", + "HISTORICAL_BAR_CHART": "歷史的橫條圖", + "HOST_NAME": "主機名稱", + "HOURS": "小時", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML額外的headers", + "HTTP_PORT": "HTTP 埠", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "忽略大小寫", + "IGNORE_DUPLICATE": "忽略重複", + "IMPERIAL": "英制", + "INCLUDE_THRESHOLD_HIGH": "包含最高閾值", + "INCLUDE_THRESHOLD_LOW": "包含最低閾值", + "INDIVIDUAL_SETTINGS": "個人設置", + "INIT": "初始化", + "INTERPOLATE_TYPE": "插入類型", + "INTERVAL": "時間間隔", + "INTERVAL_IN_SECONDS": "時間間隔以秒為單位", + "INVALID_USERNAME_OR_PASSWORD": "無效的用戶名或密碼 !", + "IN_RANGE": "在範圍內", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "專案已成功刪除", + "ITEMS_DISABLED_SUCCESSFULLY": "專案已成功禁用", + "ITEMS_ENABLED_SUCCESSFULLY": "專案成功啟用", + "ITEMS_PER_ROW": "每行項目", + "ITEM_CREATED_SUCCESSFULLY": "已成功創建的專案", + "ITEM_UPDATED_SUCCESSFULLY": "已成功更新的項目", + "JAVA_HOME": "Java 主目錄", + "JAVA_VENDOR_URL": "Java Vendor 路徑", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java虛擬機器規格", + "JSON": "JSON", + "KEY": "金鑰", + "KEY_FORMAT": "金鑰格式", + "LANGUAGE": "語言", + "LANGUAGE_VERSION": "語言版本", + "LAST_5_MINUTES": "最後 5 分鐘", + "LAST_6_HOURS": "最後 6 小時", + "LAST_12_HOURS": "最後 12 小時", + "LAST_DAY": "最後一天", + "LAST_EXECUTION": "最後一次執行", + "LAST_FIRED": "最後被解雇", + "LAST_GARBAGECOLLECTOR_DURATION": "最後 GC 持續時間", + "LAST_HOUR": "最後一小時", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "最後編輯時間", + "LAST_MONTH": "上個月", + "LAST_SEEN": "最後流覽", + "LAST_TRIGGER": "最後觸發器", + "LAST_WEEK": "上個星期", + "LAST_YEAR": "去年", + "LATITUDE": "緯度", + "LEFT": "Left", + "LEVEL": "級別", + "LIBRARY_VERSION": "庫版本", + "LINE": "線", + "LINEAR": "線性", + "LINE_CHART": "折線圖", + "LOAD": "載入", + "LOADED": "已載入", + "LOADING": "載入中...", + "LOCATION": "位置", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "登錄消息", + "LOGS": "日誌", + "LOG_DIRECTION": "日誌方向", + "LOG_IN": "登錄", + "LOG_LEVEL": "日誌級別", + "LOG_OUT": "註銷", + "LONGITUDE": "經度", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "管理規範版本", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "最大", + "MAXIMUM_BLOCK_SIZE": "最大區塊值", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "消息", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "消息包含", + "MESSAGE_TYPE": "消息類型", + "METRIC": "公制", + "METRICS": "度量標準", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "度量類型", + "MILLISECONDS": "毫秒", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "最小高度", + "MINIMUM_WIDTH": "最小寬度", + "MINUTES": "分鐘", + "MIN_MAX": "最小/最大", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "修改感測器變數映射", + "MONOTONE": "單調", + "MQTT_BROKER": "MQTT 代理", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the fil", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "您將要更改 MQTT 代理設置。
此操作導致,MQTT代理服務重新開機並更新。", + "MQTT_BROKER_EDIT_DIALOG": "MQTT 代理設置", + "MQTT_BROKER_HOST_EXAMPLE": "示例︰ tc", + "MQTT_CLIENT_ID_EXAMPLE": "示例︰ mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "示例︰ mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "示例︰ mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController 伺服器日誌", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "名稱", + "NETWORK": "網路", + "NETWORK_TYPE": "網路類型", + "NEVER": "永不", + "NEW": "New", + "NEW_DASHBOARD": "新的儀錶板", + "NEW_PASSWORD": "新密碼", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "節點", + "NODES": "節點", + "NODES_ALIVE_CHECK_INTERVAL": "線上節點檢查間隔", + "NODES_DETAIL": "節點詳細資訊", + "NODE_DETAILS": "節點詳細資訊", + "NODE_EUI": "節點 EUI", + "NODE_ID": "節點 id", + "NODE_NAME": "節點名稱", + "NODE_STATUS": "節點狀態", + "NODE_TYPE": "節點類型", + "NON_HEAP_MEMORY": "非堆記憶體", + "NOTHING_SELECTED": "未選擇任何內容", + "NOTIFICATIONS": "通知", + "NOT_SET": "未設置", + "NO_ACK": "沒有 ack", + "NO_BACKUPS_SETUP": "未設置任何備份。", + "NO_DATA_AVAILABLE": "沒有可用的資料。", + "NO_EXTERNAL_SERVERS_SETUP": "沒有外部服務安裝程式。", + "NO_FIRMWARES_SETUP": "未設置任何硬體。", + "NO_FIRMWARE_TYPES_SETUP": "未設置任何硬體類型。", + "NO_FIRMWARE_VERSIONS_SETUP": "未設置任何硬體版本", + "NO_FORWARD_PAYLOADS_SETUP": "未設置任何轉發資料。", + "NO_GATEWAYS_SETUP": "未設置任何閘道。", + "NO_ITEMS_IN_FILTER": "哎呀 !未找到任何結果。請嘗試查詢其他關鍵字。", + "NO_ITEMS_SETUP": "未設置任何專案 !", + "NO_LOGS_AVAILABLE": "沒有可用的日誌。", + "NO_NODES_SETUP": "未設置任何節點。", + "NO_OPERATIONS_SETUP": "未設置任何操作。", + "NO_RESOURCES_DATA_SETUP": "未設置任何資來源資料。", + "NO_RESOURCE_GROUPS_MAP_SETUP": "沒有與此群組映射的資源。", + "NO_RESOURCE_GROUPS_SETUP": "未設置任何資源群組。", + "NO_ROOMS_SETUP": "未設置任何房間。", + "NO_RULES_SETUP": "未設置任何規則。", + "NO_SCRIPTS_SETUP": "未設置任何腳本。", + "NO_SENSORS_SETUP": "未設置任何感測器。", + "NO_TEMPLATES_SETUP": "未設置任何範本。", + "NO_TIMERS_SETUP": "未設置任何計時器。", + "NO_UID_TAGS_SETUP": "未設置任何 UID 標記。", + "NO_VARIABLES_SETUP": "沒有設置的變數。", + "OCCURRENCES": "事件", + "OFF": "關閉", + "OFFSET": "偏移量", + "ON": "開啟", + "ONE_DAY_DATA": "日數據", + "ONE_HOUR_DATA": "1小時資料", + "ONE_MINUTE_DATA": "1分鐘資料", + "OPERATING_SYSTEM": "作業系統", + "OPERATION": "操作", + "OPERATIONS": "操作", + "OPERATIONS_DETAIL": "操作細節", + "OPERATION_NAME": "操作名稱", + "OPERATION_TYPE": "操作類型", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "父", + "PARENT_NODE_EUI": "父節點 EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "密碼", + "PATTERN": "模式", + "PAYLOAD": "數據", + "PAYLOAD_DELAY": "資料 / 延遲", + "PAYLOAD_OFF": "數據置為關閉", + "PAYLOAD_ON": "數據置為開啟", + "PEAK": "高峰", + "PERCENTAGE": "百分比", + "PERMISSION": "許可權", + "PHONE_NUMBERS": "手機號碼", + "PHONE_NUMBERS_COMMA_SEPARATED": "用逗號分隔電話號碼", + "PHYSICAL_MEMORY": "實體記憶體(RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "輪詢頻率 (分鐘)", + "PORT": "埠", + "PORT_NAME": "埠名稱", + "PRIORITY": "優先順序", + "PRIVATE": "私有", + "PRIVATE_KEY": "私密金鑰", + "PROCESS_CPU": "CPU 進程", + "PROFILE": "設定檔", + "PROFILE_UPDATED_SUCCESSFULLY": "已成功更新設定檔", + "PROPERTIES": "屬性", + "PUBLIC": "公共", + "PUBLIC_ACCESS": "公共訪問", + "PUBLIC_KEY": "公共金鑰", + "PURGE": "清除", + "PURGE_BEFORE": "清除前", + "PURGE_DONE_SUCCESSFULLY": "清除已成功完成。", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "清除資源日誌", + "PURGE_SENSOR_VARIABLE": "清除感測器變數", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "警告︰ 如果您不選擇任何參數,本次過程將刪除全部 !", + "PURGING": "清除", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once(0)", + "QOS_1": "At least once(1)", + "QOS_2": "Exactly once(2)", + "RAW_DATA": "原始資料", + "READ_ONLY": "唯讀", + "REALTIME": "即時", + "REBOOT": "重新啟動", + "REBOOT_CONFIRMATION_MESSAGE": "您將要重新啟動所選項目
點擊重新啟動以繼續。", + "REBOOT_CONFIRMATION_TITLE": "重新啟動", + "REBOOT_INITIATED": "將所選項目重新啟動。", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "記錄限制", + "REFRESH": "更新", + "REFRESH_NODES_INFO": "更新節點信息", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'更新節點資訊' 已成功啟動。", + "REFRESH_TIME_SECONDS": "更新時間 (秒)", + "REGISTER_NODES_AUTOMATICALLY": "自動註冊節點", + "REGISTRATION_STATUS": "註冊狀態", + "RELEASES": "發佈", + "RELOAD": "重新載入", + "RELOAD_INITIATED_SUCCESSFULLY": "重新載入已成功", + "RESOURCE": "資源", + "RESOURCES": "資源", + "RESOURCES_DATA": "資來源資料", + "RESOURCES_DATA_DETAIL": "資來源資料詳細資訊", + "RESOURCES_GROUPS": "資源群組", + "RESOURCES_LOGS": "資源日誌", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "資源日誌詳細資訊", + "RESOURCES_LOG_LEVEL": "資源日誌級別", + "RESOURCES_LOG_RETENTION_DURATION": "資源日誌保留時間", + "RESOURCE_GROUPS_DETAIL": "資源群組詳細資訊", + "RESOURCE_GROUPS_MAPS_DETAIL": "資源群組映射詳細資訊", + "RESOURCE_GROUPS_TURNED_OFF": "資源群組關閉", + "RESOURCE_GROUPS_TURNED_ON": "資源群組開啟", + "RESOURCE_GROUP_TURNED_OFF": "資源群組關閉", + "RESOURCE_GROUP_TURNED_ON": "資源群組開啟", + "RESOURCE_TYPE": "資源類型", + "RESTORE": "還原", + "RESTORE_CONFIRMATION_MESSAGE": "您將要恢復系統到 “{{name}}” 。
還原將完全刪除當前的資料及配置,系統將進入 “{{name}}” 狀態 !
按一下還原繼續。
注意︰ 成功還原後,您必須從命令列手動啟動伺服器", + "RESTORE_CONFIRMATION_TITLE": "恢復系統到 {{name}}", + "RESTORE_INITIATED_SUCCESSFULLY": "還原已成功啟動。", + "RESULT": "結果", + "RETAIN_MAX": "保留最大 #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "您將要更改度量資料保留設置。
此操作可能導致資料丟失。閱讀用戶手冊,進一步的細節。
它是推薦系統備份前,向前 !", + "RETENTION_DIALOG_TITLE": "在進入下一步之前請仔細閱讀", + "RE_ENABLE": "重新啟用", + "RIGHT": "Right", + "ROLES": "角色", + "ROLES_DETAIL": "角色詳細資訊", + "ROOM": "房間", + "ROOMS": "房間", + "ROOMS_DETAIL": "客房詳細資訊", + "ROOM_NAME": "房間名稱", + "RULES": "規則", + "RULES_DETAIL": "規則詳細資訊", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "規則名稱", + "RUN": "運行", + "RUNNING": "正在運行...", + "RUN_BACKUP": "運行備份", + "RUN_GARBAGE_COLLECTION": "運行垃圾回收", + "RUN_NOW": "立即運行", + "SAVE": "儲存", + "SAVE_CHANGES": "儲存更改", + "SAVING": "正在儲存......", + "SCRIPT": "腳本", + "SCRIPTS": "腳本", + "SCRIPTS_DETAIL": "腳本詳細資訊", + "SCRIPT_BINDINGS": "腳本綁定", + "SCRIPT_ENGINES": "腳本引擎", + "SCRIPT_FILES": "指令檔", + "SEARCH": "搜索", + "SECONDS": "秒", + "SELECT": "選擇", + "SEND": "發送", + "SENDING": "正在發送...", + "SEND_RAW_MESSAGE": "發送原始消息", + "SENSOR": "感測器", + "SENSORS": "感測器", + "SENSORS_ACTION": "感測器操作", + "SENSORS_AND_VARIABLES_MAPPING": "感測器和變數映射", + "SENSORS_DETAIL": "感測器詳細資訊", + "SENSOR_DETAILS": "感測器的詳細資訊", + "SENSOR_ID": "感測器 id", + "SENSOR_NAME": "感測器名稱", + "SENSOR_TYPE": "感測器類型", + "SENSOR_VARIABLE": "感測器變數", + "SENSOR_VARIABLES": "感測器變數", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "感測器的變數類型", + "SERIAL_BAUD_RATE_EXAMPLE": "示例︰ 115200", + "SERIAL_PORT_NAME_EXAMPLE": "示", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "示例︰ 120", + "SETTINGS": "設置", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "顯示圖例", + "SHOW_MENU": "顯示功能表", + "SIX_HOURS_DATA": "6小時資料", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "短信", + "SMTP_HOST": "SMTP 主機", + "SMTP_PASSWORD": "SMTP 密碼", + "SMTP_PORT": "SMTP 埠", + "SMTP_USERNAME": "SMTP 用戶名", + "SOURCE": "來源", + "SOURCE_CODE": "原始程式碼", + "SOURCE_ID": "源 id", + "SPECIFICATION_VENDOR": "規範供應商", + "SPECIFICATION_VERSION": "規範版本", + "STACKED_AREA_CHART": "堆積的面積圖", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "狀態", + "STATUS_MESSAGE": "狀態訊息", + "STATUS_SINCE": "狀態自", + "STEP_AFTER": "下一步", + "STEP_BEFORE": "上一步", + "STREAM_ACK_ENABLED": "啟用 Stream ack", + "SUBJECT": "主題", + "SUB_TYPE": "子類型", + "SUNRISE": "日出", + "SUNSET": "日落", + "SUPPORT": "支持", + "SWAP": "Swap", + "SWAP_SPACE": "交換空間", + "SYNTAX_ERROR": "語法錯誤", + "SYSTEM": "系統", + "SYSTEM_CPU_LOAD": "系統 Cpu 負載", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "系統平均負載", + "SYSTEM_STATUS": "系統狀態", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "您將要更新感測器變數的配置。
當更新配置,如果度量類型也更改,這個感測器變數現有的所有資料將刪除!", + "S_VARIABLE_DIALOG_TITLE": "更新感測器變數配置", + "TABLE_ROWS_LIMIT": "表格行數限制", + "TAGS": "標籤", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "範本", + "TEMPLATES": "範本", + "TEMPLATES_DETAIL": "詳細資訊範本", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "正在測試...", + "TEST_CONNECTION": "測試連接", + "TEXT": "Text", + "THREADS_COUNT": "執行緒計數", + "THRESHOLD_VALUE": "閾值", + "THRESHOLD_VALUE_HIGH": "高閾值", + "THRESHOLD_VALUE_LOW": "低閾值", + "TIME": "時間", + "TIMERS": "計時器", + "TIMERS_DETAIL": "計時器詳細", + "TIMER_NAME": "計時器名稱", + "TIMER_TYPE": "計時器類型", + "TIME_FORMAT": "時間格式", + "TIME_HH_MM_SS": "Time(H", + "TIME_OFFSET_HH_MM_SS": "時間偏移量(H", + "TIME_RANGE": "時間範圍", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "標題", + "TO": "自", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "主題發佈", + "TOPICS_SUBSCRIBE": "主題訂閱", + "TOPIC_PUBLISH": "主題發佈", + "TOPIC_SUBSCRIBE": "主題訂閱", + "TOPOLOGY": "拓撲結構", + "TOTAL": "總計", + "TOTAL_LOADED": "總裝", + "TOTAL_STARTED": "總共開始", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "當觸發", + "TRUST_HOST": "可信任主機", + "TURN_OFF": "關閉", + "TURN_ON": "打開", + "TWELVE_HOURS_DATA": "12小時資料", + "TWILIO": "應答", + "TYPE": "類型", + "TYPES": "類型", + "TYPE_ID": "類型 id", + "UID": "UID", + "UID_TAGS": "UID 標記", + "UID_TAGS_DETAIL": "UID 標記詳細資訊", + "UNAVAILABLE": "不可用", + "UNDO_CHANGES": "撤銷更改", + "UNIT": "單位", + "UNITS": "單位", + "UNITS_CONFIGURATION": "單位配置", + "UNITS_METRICS_IMPERIAL": "單位 [公制/英制]", + "UNLOADED": "卸載", + "UP": "開啟", + "UPDATE": "更新", + "UPDATED_SUCCESSFULLY": "已成功更新。", + "UPDATE_AN_ENTRY": "更新條目", + "UPDATE_EXTERNAL_SERVER": "更新外部伺服器", + "UPDATE_FIRMWARE": "更新硬體", + "UPDATE_FIRMWARE_TYPE": "更新硬體類型", + "UPDATE_FIRMWARE_VERSION": "更新硬體版本", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "更新資料轉發條目", + "UPDATE_GATEWAY": "更新閘道", + "UPDATE_NODE": "更新節點", + "UPDATE_OPERATION": "更新操作", + "UPDATE_RESOURCE": "更新資源", + "UPDATE_RESOURCES_GROUP": "更新資源群組", + "UPDATE_ROOM": "更新的房間", + "UPDATE_RULE": "更新規則", + "UPDATE_SCRIPT": "更新腳本", + "UPDATE_SENSOR": "更新感測器", + "UPDATE_SENSOR_VARIABLE": "更新感測器變數", + "UPDATE_TEMPLATE": "更新範本", + "UPDATE_TIMER": "更新計時器", + "UPDATE_UID_TAG_ENTRY": "更新 UID 標記項", + "UPDATE_USER": "更新用戶", + "UPDATE_VARIABLE": "更新變數", + "UPLOADED_ON": "上傳的", + "UPLOAD_FIRMWARE": "上傳硬體", + "UPPER": "Upper", + "UPPER_LIMIT": "上限", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "使用", + "USED": "使用", + "USERNAME": "用戶名", + "USERS": "用戶", + "USERS_DETAIL": "使用者詳細資訊", + "USER_WORKING_DIRECTORY": "使用者工作目錄", + "USE_GLOBAL": "使用全域", + "USE_INTERACTIVE_GUIDE_LINE": "使用互動式指引", + "UTILITIES": "實用程式", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "沒有允許的空間。", + "VALIDATION_ERROR_NUMBER": "輸入的值不是很多。", + "VALIDITY": "有效性", + "VALUE": "值", + "VALUE2": "值 #2", + "VALUE3": "值 #3", + "VARIABLES": "變數", + "VARIABLES_DETAIL": "變數詳情", + "VARIABLES_GRAPHICAL_VIEW": "變數的圖形視圖", + "VARIABLES_MAPPER": "變數映射器", + "VARIABLES_REPOSITORY": "變數存儲庫", + "VARIABLE_TYPES": "變數類型", + "VENDOR": "供應商", + "VERSION": "版本", + "VERSIONS": "版本", + "VERSION_ID": "版本 id", + "VERSION_KERNEL": "版本/內核", + "VIEW_DETAILS": "查看詳細資訊", + "VM_NAME": "VM名稱", + "VM_VENDOR": "VM供應商", + "VM_VERSION": "VM 版本", + "WEBSOCKET_PORT": "Websocket 埠", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "小部件影像檔磁片位置", + "WRITE_API_KEY": "寫 API 金鑰", + "YEARS": "年", + "YES": "是" +} \ No newline at end of file diff --git a/www/languages/mc_locale_gui_source_en.json b/www/languages/mc_locale_gui_source_en.json new file mode 100644 index 0000000..54530f0 --- /dev/null +++ b/www/languages/mc_locale_gui_source_en.json @@ -0,0 +1,754 @@ +{ + "12_HOURS": "12 hours", + "24_HOURS": "24 hours", + "ABOUT": "About", + "ACCESS": "Access", + "ACCESS_TOKEN": "Access token", + "ACK": "Ack", + "ACKNOWLEDGE": "Acknowledge", + "ACK_ENABLED": "Ack enabled", + "ACK_REQUEST": "Ack request", + "ACK_RESPONSE": "Ack response", + "ACK_WAIT_TIME": "Ack wait time", + "ACTIONS": "Actions", + "ACTION_BOARD": "Action board", + "ACTIVE": "Active", + "ADD": "Add", + "ADD_AN_ENTRY": "Add an entry", + "ADD_EXTERNAL_SERVER": "Add external server", + "ADD_FIRMWARE": "Add firmware", + "ADD_FIRMWARE_TYPE": "Add firmware type", + "ADD_FIRMWARE_VERSION": "Add firmware version", + "ADD_FORWARD_PAYLOAD_ENTRY": "Add forward payload entry", + "ADD_GATEWAY": "Add gateway", + "ADD_GROUP": "Add group", + "ADD_NEW_WIDGET": "Add new widget", + "ADD_NODE": "Add node", + "ADD_OPERATION": "Add operation", + "ADD_RESOURCE": "Add resource", + "ADD_RESOURCES_GROUP": "Add resources group", + "ADD_ROLE": "Add role", + "ADD_ROOM": "Add room", + "ADD_RULE": "Add rule", + "ADD_SCRIPT": "Add script", + "ADD_SENSOR": "Add sensor", + "ADD_TEMPLATE": "Add template", + "ADD_TIMER": "Add timer", + "ADD_UID_TAG_ENTRY": "Add UID tag entry", + "ADD_USER": "Add user", + "ADD_VARIABLE": "Add variable", + "ADDITIONAL_ANGULARJS_MODULES_TO_LOAD": "Additional AngularJS modules to load", + "AFTER": "After", + "ALIAS": "Alias", + "ALIVE_TEST_FREQUENCY": "Alive check frequency (seconds)", + "ALLOW_ANONYMOUS": "Allow anonymous", + "ALPHABETICAL_KEY_CASE": "Alphabetical key case", + "ANGULARJS_CUSTOM_CONTROLLERS": "AngularJS custom controllers", + "APP.DESCRIPTION": "The Open Source Controller", + "APP.LOG_IN_TO_MESSAGE": "LOG IN TO MYCONTROLLER.ORG", + "APP.WELCOME_MESSAGE": "Welcome to MyController.org! The Open Source Controller.", + "ARCHITECTURE": "Architecture", + "AREA": "Area", + "AUTH_ID_SID": "Auth id/sid", + "AUTH_TOKEN": "Auth token", + "AUTOMATIC_BACKUP_SETTINGS": "Automatic backup settings", + "AUTORIZED_USER": "Autorized user", + "AUTO_GENERATE": "Auto generate", + "AVAILABLE_PROCESS": "Available Process", + "AVERAGE_TIME": "Average time", + "BACKUP": "Backup", + "BACKUPS_DETAIL": "Backups detail", + "BACKUP_COMPLETED_SUCCESSFULLY": "Backup completed successfully.", + "BACKUP_EVERY": "Backup every", + "BACKUP_FILE_PREFIX": "Backup file prefix", + "BACKUP_LOCATION": "Backup location", + "BACKUP_ON": "Backup on", + "BACKUP_SETTINGS": "Backup settings", + "BAR": "Bar", + "BASIS": "Basis", + "BASIS_CLOSED": "Basis closed", + "BASIS_OPEN": "Basis open", + "BATTERY": "Battery", + "BATTERY_LEVEL": "Battery level", + "BATTERY_USAGE": "Battery usage", + "BAUD_RATE": "Baud rate", + "BINARY_DATA": "Binary data", + "BIND_ADDRESS": "Bind address", + "BLOCKS": "Blocks", + "BLOCKS_SENT": "Blocks sent", + "BOTTOM": "Bottom", + "BROKET_HOST": "Broker host", + "BUILD_JDK": "Build JDK", + "BUILD_TOOL": "Build tool", + "BUILT_ON": "Built on", + "BUNDLE": "Bundle", + "BUTTON_SETTINGS": "Button settings:", + "CANCEL": "Cancel", + "CARDINAL": "Cardinal", + "CARDINAL_CLOSED": "Cardinal closed", + "CARDINAL_OPEN": "Cardinal open", + "CHANNEL_TAGS": "Channel tag(s)", + "CHANNEL_TAGS_COMMA_SEPARATED": "Channel tags comma seperated", + "CHANNEL_USERNAME": "Channel username", + "CLASS_LOADING_DETAILS": "Class Loading Details", + "CLIENT_ID": "Client id", + "CLONE": "Clone", + "COLLECTION_COUNT": "Collection count", + "COLLECTION_TIME": "Collection time", + "COLOR": "Color", + "COMMAND": "Command", + "COMMITTED": "Committed", + "COMMITTED_VIRTUAL_MEMORY_SIZE": "Committed Virtual Memory Size", + "CONDITION": "Condition", + "CONDITION_TYPE": "Condition type", + "CONNECTION_DETAILS": "Connection details", + "CONTENT": "Content", + "CONTINUE": "Continue", + "COUNT": "Count", + "COUNTER": "Counter", + "CRC": "CRC", + "CRON_EXPRESSION": "Cron expression", + "CSS_FILES": "CSS files", + "CURRENT": "Current", + "CURRENT_PASSWORD": "Current password", + "CUSTOM_MESSAGE": "Custom message", + "DAEMON": "Daemon", + "DAILY_ONCE_JOB": "Daily once", + "DAMPENING": "Dampening", + "DAMPENING_TYPE": "Dampening type", + "DASHBOARDS": "Dashboards", + "DASHBOARD_LIMIT": "Maximum dashboards allowed", + "DATA": "Data", + "DATABASE": "Database", + "DATABASE_SCHEMA_REVISION": "Database schema revision", + "DATABASE_TYPE": "Database type", + "DATABASE_VERSION": "Database version", + "DATA_RETENTION_SETTINGS": "Data retention settings", + "DATA_TYPE": "Data type", + "DATA_UNAVAILABLE": "Data unavailable!", + "DATE_PATTERN": "Date pattern", + "DATE_RANGE": "Date range", + "DAY": "Day", + "DAYS": "Days", + "DEFAULT": "Default", + "DEFAULT_FIRMWARE": "Default firmware", + "DEFAULT_TIME_RANGE": "Default time range", + "DELAY_TIME_IN_SECONDS": "Delay time in seconds", + "DELETE": "Delete", + "DELETE_DASHBOARD": "Delete dashboard", + "DELETE_ITEMS": "Delete item(s)", + "DELETE_MESSAGE": "You are about to delete selected item(s)
Deletion process will remove complete trace of this item(s)!
Click 'Delete' to proceed.", + "DESCRIPTION": "Description", + "DESTINATION": "Destination", + "DESTINATION_ID": "Destination id", + "DETAILS": "Details", + "DEVICES": "Devices", + "DEVICE_IDENS": "Device iden(s)", + "DEVICE_IDENS_COMMA_SEPARATED": "Device idens comma seperated", + "DIRECTION": "Direction", + "DISABLE": "Disable", + "DISABLED": "Disabled", + "DISABLE_WHEN_TRIGGER": "Disable when trigger", + "DISCOVER": "Discover", + "DISCOVER_INITIATED_SUCCESSFULLY": "Discover initiated successfully", + "DISPLAY_NAMES": "Display names", + "DOCUMENTS": "Documents", + "DOUBLE": "Double", + "DOWN": "Down", + "DRIVER": "Driver", + "EDIT": "Edit", + "EDIT_DASHBOARD": "Edit dashboard", + "EMAIL": "Email", + "EMAILS": "Email(s)", + "EMAIL_ADDRESSES_COMMA_SEPARATED": "Email addresses comma seperated", + "ENABLE": "Enable", + "ENABLED": "Enabled", + "ENABLE_CONFIRMATION": "Enable confirmation", + "ENABLE_DEFAULT_ON_NO_FIRMWARE": "Enable default on no firmware", + "ENABLE_DEFAULT_ON_NO_FIRMWARE_TOOLTIP": "When enabled this option, use default firmware, where requested firmware is not available in system", + "ENABLE_EDIT_MODE": "Enable edit mode", + "ENABLE_MIN_MAX": "Enable Min/Max", + "ENABLE_SSL": "Enable SSL", + "ENABLE_UNIQUE_NAME": "Enable unique name", + "ERASE_CONFIGURATION": "Erase configuration", + "ERASE_CONFIGURATION_CONFIRMATION_MESSAGE": "You are about to erase complete configuration of selected items.
Click 'Erase configuration' to proceed further.", + "ERASE_CONFIGURATION_CONFIRMATION_TITLE": "Erase configuration", + "ERASE_CONFIGURATION_INITIATED": "Erase configuration initiated for selected items", + "ERROR_ITEMS_NOT_AVAILABLE": "Selected item(s) not available!", + "ETHERNET_ALIVE_TEST_FREQUENCY_EXAMPLE": "Example: 120", + "ETHERNET_HOST_NAME_EXAMPLE": "Example: 192.168.1.69", + "ETHERNET_PORT_EXAMPLE": "Example: 5003", + "EUI": "EUI", + "EVALUATIONS": "Evaluations", + "EXECUTE_DISCOVER_INTERVAL": "Execute discover interval", + "EXTENSION": "Extension", + "EXTENSIONS": "Extensions", + "EXTERNAL_SERVERS": "External servers", + "EXTERNAL_SERVERS_DETAIL": "External servers detail", + "FAILED_RETRY_COUNT": "Failed retry count", + "FAILURE_COUNT": "Failure count", + "FILE": "File", + "FILE_NAME": "File name", + "FILE_SIZE": "File size", + "FILTER_BY_BLOCKS": "Filter by Blocks", + "FILTER_BY_CONDITION_TYPE": "Filter by Condition type", + "FILTER_BY_DAMPENING_TYPE": "Filter by Dampening type", + "FILTER_BY_DESCRIPTION": "Filter by Description", + "FILTER_BY_DESTINATION_ID": "Filter by Destination id", + "FILTER_BY_DIRECTION": "Filter by Direction", + "FILTER_BY_EMAIL": "Filter by Email", + "FILTER_BY_ENABLED": "Filter by Enabled", + "FILTER_BY_EUI": "Filter by EUI", + "FILTER_BY_EXTENSION": "Filter by Extension", + "FILTER_BY_FILE_NAME": "Filter by File name", + "FILTER_BY_FREQUENCY": "Filter by Frequency", + "FILTER_BY_FULL_NAME": "Filter by Full name", + "FILTER_BY_KEY": "Filter by Key", + "FILTER_BY_LEVEL": "Filter by Level", + "FILTER_BY_LIBRARY_VERSION": "Filter by Library version", + "FILTER_BY_MESSAGE": "Filter by Message", + "FILTER_BY_MESSGAE_TYPE": "Filter by Message type", + "FILTER_BY_NAME": "Filter by Name", + "FILTER_BY_NETWORK_TYPE": "Filter by Network type", + "FILTER_BY_NODE_ID": "Filter by Node id", + "FILTER_BY_OPERATION": "Filter by Operation", + "FILTER_BY_OPERATION_TYPE": "Filter by Operation type", + "FILTER_BY_PAYLOAD_OFF": "Filter by Payload OFF", + "FILTER_BY_PAYLOAD_ON": "Filter by Payload ON", + "FILTER_BY_PERMISSION": "Filter by Permission", + "FILTER_BY_PUBLIC_ACCESS": "Filter by Public access", + "FILTER_BY_RESOURCE": "Filter by Resource", + "FILTER_BY_RESOURCE_TYPE": "Filter by Resource type", + "FILTER_BY_SENSOR_ID": "Filter by Sensor id", + "FILTER_BY_SENSOR_NAME": "Filter by Sensor name", + "FILTER_BY_SENSOR_TYPE": "Filter by Sensor type", + "FILTER_BY_SENSOR_VARIABLES": "Filter by Sensor variables", + "FILTER_BY_SOURCE_ID": "Filter by Source id", + "FILTER_BY_STATUS": "Filter by Status", + "FILTER_BY_STATUS_MESSAGE": "Filter by Status message", + "FILTER_BY_TYPE": "Filter by Type", + "FILTER_BY_TYPE_ID": "Filter by Type id", + "FILTER_BY_UID": "Filter by UID", + "FILTER_BY_USERNAME": "Filter by Username", + "FILTER_BY_VALUE": "Filter by Value", + "FILTER_BY_VALUE2": "Filter by Value #2", + "FILTER_BY_VALUE3": "Filter by Value #3", + "FILTER_BY_VARIABLE_TYPES": "Filter by Variable types", + "FILTER_BY_VERSION": "Filter by Version", + "FILTER_BY_VERSION_ID": "Filter by Version id", + "FIRMWARE": "Firmware", + "FIRMWARES": "Firmwares", + "FIRMWARES_DETAIL": "Firmwares detail", + "FIRMWARE_OTA_STATUS": "Firmware OTA status", + "FIRMWARE_TYPES_DETAIL": "Firmware types detail", + "FIRMWARE_TYPE_NAME": "Firmware type name", + "FIRMWARE_UPLOAD_INITIATED": "Firmware upload initiated for selected items.", + "FIRMWARE_VERSION": "Firmware version", + "FIRMWARE_VERSIONS_DETAIL": "Firmware versions detail", + "FIRST_NAME": "Firstname", + "FIVE_MINUTES_DATA": "Five minutes data", + "FORUM": "Forum", + "FORWARD_PAYLOAD": "Forward payload", + "FORWARD_PAYLOADS_DETAIL": "Forward payloads detail", + "FREE": "Free", + "FREQUENCY": "Frequency", + "FROM": "From", + "FROM_ADDRESS": "From address", + "FROM_PHONE_NUMBER": "From phone number", + "FULL_NAME": "Full name", + "FULL_PATH": "Full path", + "GARBAGE_COLLECTOR": "Garbage Collector", + "GATEWAY": "Gateway", + "GATEWAYS": "Gateways", + "GATEWAYS_DETAIL": "Gateways detail", + "GATEWAY_DETAILS": "Gateway details", + "GATEWAY_NAME": "Gateway name", + "GATEWAY_TYPE": "Gateway type", + "GITTER_MESSAGING": "Gitter messaging", + "GIT_COMMIT_BRANCH": "Git commit:branch", + "GLOBAL_PAGE_REFRESH_TIME": "Global page refresh time", + "GPS_DATA": "GPS data", + "GRANT_ACCESS_TO_CHILD_RESOURCES_IN_ROLES": "Grant access to child resources (in roles)", + "GRAPHS_SETTINGS": "Graphs settings", + "GRAPH_SETTINGS": "Graph settings", + "GROUPS": "Groups", + "GROUP_NAME": "Group name", + "HEAP_MEMORY": "Heap Memory", + "HEIGHT": "Height", + "HIDE_MENU": "Hide menu", + "HISTORICAL_BAR_CHART": "Historical Bar Chart", + "HOST_NAME": "Host name", + "HOURS": "Hours", + "HTML": "HTML", + "HTML_ADDITIONAL_HEADERS": "HTML additional headers", + "HTTP_PORT": "HTTP port", + "ID": "Id", + "IDEN": "Iden", + "IGNORE_CASE": "Ignore case", + "IGNORE_DUPLICATE": "Ignore duplicate", + "IMPERIAL": "Imperial", + "INCLUDE_THRESHOLD_HIGH": "Include threshold high", + "INCLUDE_THRESHOLD_LOW": "Include threshold low", + "INDIVIDUAL_SETTINGS": "Individual settings", + "INIT": "Init", + "INTERPOLATE_TYPE": "Interpolate type", + "INTERVAL": "Interval", + "INTERVAL_IN_SECONDS": "Interval in seconds", + "INVALID_USERNAME_OR_PASSWORD": "Invalid username or password!", + "IN_RANGE": "In range", + "IS_BOT": "Is bot", + "ITEMS_DELETED_SUCCESSFULLY": "Item(s) deleted successfully", + "ITEMS_DISABLED_SUCCESSFULLY": "Item(s) disabled successfully", + "ITEMS_ENABLED_SUCCESSFULLY": "Item(s) enabled successfully", + "ITEMS_PER_ROW": "Items per row", + "ITEM_CREATED_SUCCESSFULLY": "Item created successfully", + "ITEM_UPDATED_SUCCESSFULLY": "Item updated successfully", + "JAVA_HOME": "Java Home", + "JAVA_VENDOR_URL": "Java Vendor Url", + "JAVA_VIRTUAL_MACHINE_SPECIFICATION": "Java Virtual Machine Specification", + "JSON": "JSON", + "KEY": "Key", + "KEY_FORMAT": "Key format", + "LANGUAGE": "Language", + "LANGUAGE_VERSION": "Language version", + "LAST_5_MINUTES": "Last 5 minutes", + "LAST_6_HOURS": "Last 6 hours", + "LAST_12_HOURS": "Last 12 hours", + "LAST_DAY": "Last day", + "LAST_EXECUTION": "Last execution", + "LAST_FIRED": "Last fired", + "LAST_GARBAGECOLLECTOR_DURATION": "Last GC duration", + "LAST_HOUR": "Last hour", + "LAST_MESSAGE": "Last message", + "LAST_MINUTE_AVERAGE": "Last minute average", + "LAST_MINUTE_RATE": "Last minute rate", + "LAST_MODIFIED": "Last modified", + "LAST_MONTH": "Last month", + "LAST_SEEN": "Last seen", + "LAST_TRIGGER": "Last trigger", + "LAST_WEEK": "Last week", + "LAST_YEAR": "Last year", + "LATITUDE": "Latitude", + "LEFT": "Left", + "LEVEL": "Level", + "LIBRARY_VERSION": "Library version", + "LINE": "Line", + "LINEAR": "Linear", + "LINE_CHART": "Line chart", + "LOAD": "Load", + "LOADED": "Loaded", + "LOADING": "Loading...", + "LOCATION": "Location", + "LOCATION_IP": "Location IP", + "LOCATION_NAME": "Location name", + "LOGIN_MESSAGE": "Login message", + "LOGS": "Logs", + "LOG_DIRECTION": "Log direction", + "LOG_IN": "Log In", + "LOG_LEVEL": "Log level", + "LOG_OUT": "Log Out", + "LONGITUDE": "Longitude", + "LOWER": "Lower", + "MANAGEMENT_SPECIFICATION_VERSION": "Management Specification Version", + "MARGIN": "Margin", + "MARKDOWN": "Markdown", + "MAX": "Max", + "MAXIMUM_BLOCK_SIZE": "Maximum block size", + "MEASUREMENT": "Measurement", + "MERGE_STATIONS": "Merge stations", + "MESSAGE": "Message", + "MESSAGES_IN_QUEUE": "Messages in queue", + "MESSAGE_CONTAINS": "Message contains", + "MESSAGE_TYPE": "Message type", + "METRIC": "Metric", + "METRICS": "Metrics", + "METRICS_AGGREGATION_JOB": "Metrics aggregation", + "METRIC_ENGINE": "Metric engine", + "METRIC_ENGINE_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data backend engine settings.
This action will lead data loss. Read user manual for further details.
MyController will not import/export metric data when switching metric engine!", + "METRIC_TYPE": "Metric type", + "MILLISECONDS": "Milliseconds", + "MILLISECONDS_SHORT": "ms", + "MINIMUM_HEIGHT": "Minimum height", + "MINIMUM_WIDTH": "Minimum width", + "MINUTES": "Minutes", + "MIN_MAX": "Min/Max", + "MODIFIY_SENSOR_VARIABLES_MAPPING": "Modify sensor and variables mapping", + "MONOTONE": "Monotone", + "MQTT_BROKER": "MQTT broker", + "MQTT_BROKER_DISABLED_BACKEND": "MQTT broker has been disabled on the back-end. You shold enable it on the file: conf/mycontroller.properties and restart MyController server.", + "MQTT_BROKER_EDIT_CONFIRMATION_MSG": "You are about to change MQTT broker settings.
This action leads, MQTT broker service restart with new settings.", + "MQTT_BROKER_EDIT_DIALOG": "MQTT broker settings", + "MQTT_BROKER_HOST_EXAMPLE": "Example: tcp://localhost:1883", + "MQTT_CLIENT_ID_EXAMPLE": "Example: mycontroller-mqtt-client", + "MQTT_PORT": "MQTT port", + "MQTT_TOPIC_PUBLISH_EXAMPLE": "Example: mygateway-in", + "MQTT_TOPIC_SUBSCRIBE_EXAMPLE": "Example: mygateway-out", + "MYCONTROLLER_SERVER_LOG": "MyController server log", + "MY_CONTROLLER": "MyController", + "MY_SENSORS": "MySensors", + "NAME": "Name", + "NETWORK": "Network", + "NETWORK_TYPE": "Network type", + "NEVER": "Never", + "NEW": "New", + "NEW_DASHBOARD": "New dashboard", + "NEW_PASSWORD": "New password", + "NEXT_EXECUTION": "Next execution", + "NO": "No", + "NODE": "Node", + "NODES": "Nodes", + "NODES_ALIVE_CHECK_INTERVAL": "Nodes alive check interval", + "NODES_DETAIL": "Nodes detail", + "NODE_DETAILS": "Node details", + "NODE_EUI": "Node EUI", + "NODE_ID": "Node id", + "NODE_NAME": "Node name", + "NODE_STATUS": "Node status", + "NODE_TYPE": "Node type", + "NON_HEAP_MEMORY": "Non Heap Memory", + "NOTHING_SELECTED": "Nothing selected", + "NOTIFICATIONS": "Notifications", + "NOT_SET": "Not set", + "NO_ACK": "No ack", + "NO_BACKUPS_SETUP": "No backups set up.", + "NO_DATA_AVAILABLE": "No data available.", + "NO_EXTERNAL_SERVERS_SETUP": "No external servers setup.", + "NO_FIRMWARES_SETUP": "No firmwares set up.", + "NO_FIRMWARE_TYPES_SETUP": "No firmware types setup.", + "NO_FIRMWARE_VERSIONS_SETUP": "No firmware versions set up", + "NO_FORWARD_PAYLOADS_SETUP": "No forward payloads set up.", + "NO_GATEWAYS_SETUP": "No gateways set up.", + "NO_ITEMS_IN_FILTER": "Oops! No results found. Modify your query.", + "NO_ITEMS_SETUP": "No items set up!", + "NO_LOGS_AVAILABLE": "No logs available.", + "NO_NODES_SETUP": "No nodes set up.", + "NO_OPERATIONS_SETUP": "No operations set up.", + "NO_RESOURCES_DATA_SETUP": "No resources data setup.", + "NO_RESOURCE_GROUPS_MAP_SETUP": "No resources mapped with this group.", + "NO_RESOURCE_GROUPS_SETUP": "No resource groups set up.", + "NO_ROOMS_SETUP": "No rooms set up.", + "NO_RULES_SETUP": "No rules set up.", + "NO_SCRIPTS_SETUP": "No scripts set up.", + "NO_SENSORS_SETUP": "No sensors set up.", + "NO_TEMPLATES_SETUP": "No templates set up.", + "NO_TIMERS_SETUP": "No timers set up.", + "NO_UID_TAGS_SETUP": "No UID tags setup.", + "NO_VARIABLES_SETUP": "No variables set up.", + "OCCURRENCES": "Occurrences", + "OFF": "OFF", + "OFFSET": "Offset", + "ON": "ON", + "ONE_DAY_DATA": "One day data", + "ONE_HOUR_DATA": "One hour data", + "ONE_MINUTE_DATA": "One minute data", + "OPERATING_SYSTEM": "Operating System", + "OPERATION": "Operation", + "OPERATIONS": "Operations", + "OPERATIONS_DETAIL": "Operations detail", + "OPERATION_NAME": "Operation name", + "OPERATION_TYPE": "Operation type", + "OS_COMMAND_EXECTION_CONFIRMATION_MESSAGE": "Would you like to execute the following command on MyController server base Operating System?", + "OS_COMMAND_EXECTION_CONFIRMATION_TITLE": "Execute Operating System command", + "OTHERS": "Others", + "PARENT": "Parent", + "PARENT_NODE_EUI": "Parent node EUI", + "PARSE_MODE": "Parse mode", + "PASSWORD": "Password", + "PATTERN": "Pattern", + "PAYLOAD": "Payload", + "PAYLOAD_DELAY": "Payload / Delay", + "PAYLOAD_OFF": "Payload OFF", + "PAYLOAD_ON": "Payload ON", + "PEAK": "Peak", + "PERCENTAGE": "Percentage", + "PERMISSION": "Permission", + "PHONE_NUMBERS": "Phone numbers", + "PHONE_NUMBERS_COMMA_SEPARATED": "Phone numbers comma separated", + "PHYSICAL_MEMORY": "Physical Memory (RAM)", + "PLIVO": "Plivo", + "POLL_FREQUENCY_MINUTES": "Poll frequency (minutes)", + "PORT": "Port", + "PORT_NAME": "Port name", + "PRIORITY": "Priority", + "PRIVATE": "Private", + "PRIVATE_KEY": "Private key", + "PROCESS_CPU": "Process CPU", + "PROFILE": "Profile", + "PROFILE_UPDATED_SUCCESSFULLY": "Profile updated successfully", + "PROPERTIES": "Properties", + "PUBLIC": "Public", + "PUBLIC_ACCESS": "Public access", + "PUBLIC_KEY": "Public key", + "PURGE": "Purge", + "PURGE_BEFORE": "Purge before", + "PURGE_DONE_SUCCESSFULLY": "Purge completed successfully.", + "PURGE_EXISTING_DATA": "Purge existing data", + "PURGE_RESOURCES_LOGS": "Purge resources logs", + "PURGE_SENSOR_VARIABLE": "Purge sensor variable", + "PURGE_VALUE_RANGE_EXAMPLE": "Example: min>=45.6,max>=78.2,avg>=56.3 or min>=45.6 or >=56.3(purge only avg)", + "PURGE_WARNING": "WARNING: If you don't select any parameter, this process will delete everything!", + "PURGING": "Purging", + "PUSHBULLET": "Pushbullet", + "QOS": "QoS", + "QOS_0": "At most once (0)", + "QOS_1": "At least once (1)", + "QOS_2": "Exactly once (2)", + "RAW_DATA": "Raw data", + "READ_ONLY": "Read only", + "REALTIME": "Realtime", + "REBOOT": "Reboot", + "REBOOT_CONFIRMATION_MESSAGE": "You are about to reboot selected items
Click 'Reboot' to proceed.", + "REBOOT_CONFIRMATION_TITLE": "Reboot", + "REBOOT_INITIATED": "Reboot initiated for selected items.", + "RECONNECT_DELAY": "Reconnect delay", + "RECORDS_LIMIT": "Records limit", + "REFRESH": "Refresh", + "REFRESH_NODES_INFO": "Refresh nodes info", + "REFRESH_NODES_INFO_INITIATED_SUCCESSFULLY": "'Refresh nodes info' initiated successfully.", + "REFRESH_TIME_SECONDS": "Refresh time (seconds)", + "REGISTER_NODES_AUTOMATICALLY": "Register nodes automatically", + "REGISTRATION_STATUS": "Registration status", + "RELEASES": "Releases", + "RELOAD": "Reload", + "RELOAD_INITIATED_SUCCESSFULLY": "Reload initiated successfully", + "RESOURCE": "Resource", + "RESOURCES": "Resources", + "RESOURCES_DATA": "Resources data", + "RESOURCES_DATA_DETAIL": "Resources data detail", + "RESOURCES_GROUPS": "Resources groups", + "RESOURCES_LOGS": "Resources logs", + "RESOURCES_LOGS_AGGREGATION_JOB": "ResourcesLogs Aggregation", + "RESOURCES_LOGS_DETAIL": "Resources logs detail", + "RESOURCES_LOG_LEVEL": "Resources logs level", + "RESOURCES_LOG_RETENTION_DURATION": "Resources logs retention duration", + "RESOURCE_GROUPS_DETAIL": "Resource groups detail", + "RESOURCE_GROUPS_MAPS_DETAIL": "Resources groups maps detail", + "RESOURCE_GROUPS_TURNED_OFF": "Resource groups turned OFF", + "RESOURCE_GROUPS_TURNED_ON": "Resource groups turned ON", + "RESOURCE_GROUP_TURNED_OFF": "Resource group turned OFF", + "RESOURCE_GROUP_TURNED_ON": "Resource group turned ON", + "RESOURCE_TYPE": "Resource type", + "RESTORE": "Restore", + "RESTORE_CONFIRMATION_MESSAGE": "You are about to restore system to '{{name}}'.
Restore removes current data/configuration completely and system goes to '{{name}}' state!
Click 'Restore' to proceed.
NOTE: After successful restore you have to start the server manually from command line", + "RESTORE_CONFIRMATION_TITLE": "Restore system to '{{name}}'", + "RESTORE_INITIATED_SUCCESSFULLY": "Restore initiated successfully.", + "RESULT": "Result", + "RETAIN_MAX": "Retain maximum #", + "RETENTION_DIALOG_CONFIRMATION_MSG": "You are about to change metrics data retention settings.
This action may lead data loss. Read user manual for further details.
It is highly recommend a system backup before moving forward!", + "RETENTION_DIALOG_TITLE": "Read carefully before moving forward", + "RE_ENABLE": "Re enable", + "RIGHT": "Right", + "ROLES": "Roles", + "ROLES_DETAIL": "Roles detail", + "ROOM": "Room", + "ROOMS": "Rooms", + "ROOMS_DETAIL": "Rooms detail", + "ROOM_NAME": "Room name", + "RULES": "Rules", + "RULES_DETAIL": "Rules detail", + "RULE_DEFINITION_ENGINE_JOB": "Rule definition engine", + "RULE_DEFINITION_RE_ENABLE_JOB": "Rule definition re-enable", + "RULE_NAME": "Rule name", + "RUN": "Run", + "RUNNING": "Running...", + "RUN_BACKUP": "Run backup", + "RUN_GARBAGE_COLLECTION": "Run garbage collection", + "RUN_NOW": "Run now", + "SAVE": "Save", + "SAVE_CHANGES": "Save changes", + "SAVING": "Saving...", + "SCRIPT": "Script", + "SCRIPTS": "Scripts", + "SCRIPTS_DETAIL": "Scripts detail", + "SCRIPT_BINDINGS": "Script bindings", + "SCRIPT_ENGINES": "Script engines", + "SCRIPT_FILES": "Script files", + "SEARCH": "Search", + "SECONDS": "Seconds", + "SELECT": "Select", + "SEND": "Send", + "SENDING": "Sending...", + "SEND_RAW_MESSAGE": "Send raw message", + "SENSOR": "Sensor", + "SENSORS": "Sensors", + "SENSORS_ACTION": "Sensors action", + "SENSORS_AND_VARIABLES_MAPPING": "Sensors and variables mapping", + "SENSORS_DETAIL": "Sensors detail", + "SENSOR_DETAILS": "Sensor details", + "SENSOR_ID": "Sensor id", + "SENSOR_NAME": "Sensor name", + "SENSOR_TYPE": "Sensor type", + "SENSOR_VARIABLE": "Sensor variable", + "SENSOR_VARIABLES": "Sensor variables", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_MESSAGE": "Would you like to send the following payload to the selected resource?", + "SENSOR_VARIABLE_SUBMIT_CONFIRMATION_TITLE": "Send payload confirmation", + "SENSOR_VARIABLE_TYPE": "Sensor variable type", + "SERIAL_BAUD_RATE_EXAMPLE": "Example: 115200", + "SERIAL_PORT_NAME_EXAMPLE": "Example: /dev/ttyUSB0", + "SERIAL_RETRY_FREQUENCY_EXAMPLE": "Example: 120", + "SETTINGS": "Settings", + "SHOW_ICON": "Show icon", + "SHOW_LEGENDS": "Show legends", + "SHOW_MENU": "Show menu", + "SIX_HOURS_DATA": "Six hours data", + "SMART_SLEEP_ENABLED": "Smart sleep enabled", + "SMS": "SMS", + "SMTP_HOST": "SMTP host", + "SMTP_PASSWORD": "SMTP password", + "SMTP_PORT": "SMTP port", + "SMTP_USERNAME": "SMTP username", + "SOURCE": "Source", + "SOURCE_CODE": "Source code", + "SOURCE_ID": "Source id", + "SPECIFICATION_VENDOR": "Specification Vendor", + "SPECIFICATION_VERSION": "Specification Version", + "STACKED_AREA_CHART": "Stacked area chart", + "STATION_ID": "Station id", + "STATION_PASSWORD": "Station password", + "STATISTICS": "Statistics", + "STATUS": "Status", + "STATUS_MESSAGE": "Status message", + "STATUS_SINCE": "Status since", + "STEP_AFTER": "Step after", + "STEP_BEFORE": "Step before", + "STREAM_ACK_ENABLED": "Stream ack enabled", + "SUBJECT": "Subject", + "SUB_TYPE": "Sub type", + "SUNRISE": "Sunrise", + "SUNSET": "Sunset", + "SUPPORT": "Support", + "SWAP": "Swap", + "SWAP_SPACE": "Swap Space", + "SYNTAX_ERROR": "Syntax error", + "SYSTEM": "System", + "SYSTEM_CPU_LOAD": "System Cpu Load", + "SYSTEM_JOBS": "System jobs", + "SYSTEM_JOBS_EDIT_CONFIRMATION_MSG": "You are about to change system internal jobs. This cron expression is a bit different than Linux cron expression.
This action may lead to incorrect schedule, poor performance, etc., Read user manual for further details.
It is highly recommend a system backup before moving forward!
Cron expression documentation", + "SYSTEM_JOBS_EDIT_CONFIRMATION_TITLE": "Read carefully before moving forward", + "SYSTEM_LOAD_AVERAGE": "System Load Average", + "SYSTEM_STATUS": "System status", + "S_VARIABLE_DIALOG_CONFIRMATION_MSG": "You are about to update configurations of a 'Sensor variable'.
When updating configurations, if there is a change in 'Metric type', all existing data will be removed from this 'Sensor variable'!", + "S_VARIABLE_DIALOG_TITLE": "Update 'Sensor variable' configurations", + "TABLE_ROWS_LIMIT": "Table rows limit", + "TAGS": "Tags", + "TELEGRAM_BOT": "Telegram bot", + "TEMPLATE": "Template", + "TEMPLATES": "Templates", + "TEMPLATES_DETAIL": "Templates detail", + "TEMPLATE_BINDINGS": "Template bindings", + "TENANT": "Tenant", + "TESTING": "Testing...", + "TEST_CONNECTION": "Test connection", + "TEXT": "Text", + "THREADS_COUNT": "Threads count", + "THRESHOLD_VALUE": "Threshold value", + "THRESHOLD_VALUE_HIGH": "Threshold value high", + "THRESHOLD_VALUE_LOW": "Threshold value low", + "TIME": "Time", + "TIMERS": "Timers", + "TIMERS_DETAIL": "Timers detail", + "TIMER_NAME": "Timer name", + "TIMER_TYPE": "Timer type", + "TIME_FORMAT": "Time format", + "TIME_HH_MM_SS": "Time(HH:mm:ss)", + "TIME_OFFSET_HH_MM_SS": "Time offset (HH:mm:ss)", + "TIME_RANGE": "Time range", + "TIME_TAKEN_LAST_UPDATE": "Last update(time taken)", + "TITLE": "Title", + "TO": "To", + "TOKEN": "Token", + "TOP": "Top", + "TOPICS_PUBLISH": "Topics publish", + "TOPICS_SUBSCRIBE": "Topics subscribe", + "TOPIC_PUBLISH": "Topic publish", + "TOPIC_SUBSCRIBE": "Topic subscribe", + "TOPOLOGY": "Topology", + "TOTAL": "Total", + "TOTAL_LOADED": "Total loaded", + "TOTAL_STARTED": "Total started", + "TRANSMIT_DELAY": "Transmit delay", + "TRIGGER_WHEN": "Trigger when", + "TRUST_HOST": "Trust host", + "TURN_OFF": "Turn OFF", + "TURN_ON": "Turn ON", + "TWELVE_HOURS_DATA": "Twelve hours data", + "TWILIO": "Twilio", + "TYPE": "Type", + "TYPES": "Types", + "TYPE_ID": "Type id", + "UID": "UID", + "UID_TAGS": "UID tags", + "UID_TAGS_DETAIL": "UID tags detail", + "UNAVAILABLE": "Unavailable", + "UNDO_CHANGES": "Undo changes", + "UNIT": "Unit", + "UNITS": "Units", + "UNITS_CONFIGURATION": "Units configuration", + "UNITS_METRICS_IMPERIAL": "Units [Metrics/Imperial]", + "UNLOADED": "Unloaded", + "UP": "Up", + "UPDATE": "Update", + "UPDATED_SUCCESSFULLY": "Updated successfully.", + "UPDATE_AN_ENTRY": "Update an entry", + "UPDATE_EXTERNAL_SERVER": "Update external server", + "UPDATE_FIRMWARE": "Update firmware", + "UPDATE_FIRMWARE_TYPE": "Update firmware type", + "UPDATE_FIRMWARE_VERSION": "Update firmware version", + "UPDATE_FORWARD_PAYLOAD_ENTRY": "Update forward payload entry", + "UPDATE_GATEWAY": "Update gateway", + "UPDATE_NODE": "Update node", + "UPDATE_OPERATION": "Update operation", + "UPDATE_RESOURCE": "Update resource", + "UPDATE_RESOURCES_GROUP": "Update resources group", + "UPDATE_ROOM": "Update room", + "UPDATE_RULE": "Update rule", + "UPDATE_SCRIPT": "Update script", + "UPDATE_SENSOR": "Update sensor", + "UPDATE_SENSOR_VARIABLE": "Update sensor variable", + "UPDATE_TEMPLATE": "Update template", + "UPDATE_TIMER": "Update timer", + "UPDATE_UID_TAG_ENTRY": "Update UID tag entry", + "UPDATE_USER": "Update user", + "UPDATE_VARIABLE": "Update variable", + "UPLOADED_ON": "Uploaded on", + "UPLOAD_FIRMWARE": "Upload firmware", + "UPPER": "Upper", + "UPPER_LIMIT": "Upper limit", + "UP_TIME": "Up Time", + "URL": "URL", + "USE": "Use", + "USED": "Used", + "USERNAME": "Username", + "USERS": "Users", + "USERS_DETAIL": "Users detail", + "USER_WORKING_DIRECTORY": "User working directory", + "USE_GLOBAL": "Use global", + "USE_INTERACTIVE_GUIDE_LINE": "Use interactive guide line", + "UTILITIES": "Utilities", + "VALIDATION_ERROR_NO_SPACE_ALLOWED": "No space allowed.", + "VALIDATION_ERROR_NUMBER": "The value entered is not a number.", + "VALIDITY": "Validity", + "VALUE": "Value", + "VALUE2": "Value #2", + "VALUE3": "Value #3", + "VARIABLES": "Variables", + "VARIABLES_DETAIL": "Variables detail", + "VARIABLES_GRAPHICAL_VIEW": "Variables graphical view", + "VARIABLES_MAPPER": "Variables mapper", + "VARIABLES_REPOSITORY": "Variables repository", + "VARIABLE_TYPES": "Variable types", + "VENDOR": "Vendor", + "VERSION": "Version", + "VERSIONS": "Versions", + "VERSION_ID": "Version id", + "VERSION_KERNEL": "Version/Kernel", + "VIEW_DETAILS": "View details", + "VM_NAME": "VM Name", + "VM_VENDOR": "VM Vendor", + "VM_VERSION": "VM Version", + "WEBSOCKET_PORT": "Websocket port", + "WIDGET_IMAGE_FILES_DISK_LOCATION": "Widget image files disk location", + "WRITE_API_KEY": "Write API key", + "YEARS": "Years", + "YES": "Yes" +} diff --git a/www/libs/Sortable/Sortable.min.js b/www/libs/Sortable/Sortable.min.js new file mode 100644 index 0000000..e95d2a3 --- /dev/null +++ b/www/libs/Sortable/Sortable.min.js @@ -0,0 +1,2 @@ +/*! Sortable 1.4.2 - MIT | git://github.com/rubaxa/Sortable.git */ +!function(a){"use strict";"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){"use strict";function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=r({},b),a[L]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);V(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=b.forceFallback?!1:P,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),T.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){v&&v.state!==a&&(h(v,"display",a?"none":""),!a&&v.state&&w.insertBefore(v,s),v.state=a)}function c(a,b,c){if(a){c=c||N,b=b.split(".");var d=b.shift().toUpperCase(),e=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");do if(">*"===d&&a.parentNode===c||(""===d||a.nodeName.toUpperCase()==d)&&(!b.length||((" "+a.className+" ").match(e)||[]).length==b.length))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(K," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(K," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return N.defaultView&&N.defaultView.getComputedStyle?c=N.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;f>e;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=N.createEvent("Event"),i=(a||b[L]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=v,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[L],j=i.options.onMove;return g=N.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){R=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a){var b=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&b++;return b}function q(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function r(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J={},K=/\s+/g,L="Sortable"+(new Date).getTime(),M=window,N=M.document,O=M.parseInt,P=!!("draggable"in N.createElement("div")),Q=function(a){return a=N.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),R=!1,S=Math.abs,T=([].slice,[]),U=q(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(z!==c&&(y=b.scroll,z=c,y===!0)){y=c;do if(y.offsetWidth=l-j)-(h>=j),g=(h>=m-k)-(h>=k),(f||g)&&(d=M)),(J.vx!==f||J.vy!==g||J.el!==d)&&(J.el=d,J.vx=f,J.vy=g,clearInterval(J.pid),d&&(J.pid=setInterval(function(){d===M?M.scrollTo(M.pageXOffset+f*i,M.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),V=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(D=p(h),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,D),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){return a=c(i,a.trim(),d),a?(j(b,a,"filter",h,d,D),!0):void 0})))return void a.preventDefault();(!e.handle||c(i,e.handle,d))&&this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!s&&c.parentNode===h&&(G=a,w=h,s=c,t=s.parentNode,x=s.nextSibling,F=j.group,d=function(){f._disableDelayedDrag(),s.draggable=!0,g(s,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(s,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(G={target:s,clientX:a.clientX,clientY:a.clientY},this._onDragStart(G,"touch")):this.nativeDraggable?(e(s,"dragend",this),e(w,"dragstart",this._onDragStart)):this._onDragStart(G,!0);try{N.selection?N.selection.empty():window.getSelection().removeAllRanges()}catch(b){}},_dragStarted:function(){w&&s&&(g(s,this.options.ghostClass,!0),a.active=this,j(this,w,"start",s,w,D))},_emulateDragOver:function(){if(H){if(this._lastX===H.clientX&&this._lastY===H.clientY)return;this._lastX=H.clientX,this._lastY=H.clientY,Q||h(u,"display","none");var a=N.elementFromPoint(H.clientX,H.clientY),b=a,c=" "+this.options.group.name,d=T.length;if(b)do{if(b[L]&&b[L].options.groups.indexOf(c)>-1){for(;d--;)T[d]({clientX:H.clientX,clientY:H.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);Q||h(u,"display","")}},_onTouchMove:function(b){if(G){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-G.clientX,e=c.clientY-G.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";I=!0,H=c,h(u,"webkitTransform",f),h(u,"mozTransform",f),h(u,"msTransform",f),h(u,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!u){var a,b=s.getBoundingClientRect(),c=h(s),d=this.options;u=s.cloneNode(!0),g(u,d.ghostClass,!1),g(u,d.fallbackClass,!0),h(u,"top",b.top-O(c.marginTop,10)),h(u,"left",b.left-O(c.marginLeft,10)),h(u,"width",b.width),h(u,"height",b.height),h(u,"opacity","0.8"),h(u,"position","fixed"),h(u,"zIndex","100000"),h(u,"pointerEvents","none"),d.fallbackOnBody&&N.body.appendChild(u)||w.appendChild(u),a=u.getBoundingClientRect(),h(u,"width",2*b.width-a.width),h(u,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==F.pull&&(v=s.cloneNode(!0),h(v,"display","none"),w.insertBefore(v,s)),b?("touch"===b?(e(N,"touchmove",this._onTouchMove),e(N,"touchend",this._onDrop),e(N,"touchcancel",this._onDrop)):(e(N,"mousemove",this._onTouchMove),e(N,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,s)),e(N,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=F===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),I=!0,F&&!i.disabled&&(o?p||(f=!w.contains(s)):F.pull&&l&&(F.name===j.name||l.indexOf&&~l.indexOf(F.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(U(a,i,this.el),R)return;if(d=c(a.target,i.draggable,g),e=s.getBoundingClientRect(),f)return b(!0),void(v||x?w.insertBefore(s,v||x):p||w.appendChild(s));if(0===g.children.length||g.children[0]===u||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(w,g,s,e,d,r)!==!1&&(s.contains(g)||(g.appendChild(s),t=g),this._animate(e,s),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==s&&void 0!==d.parentNode[L]){A!==d&&(A=d,B=h(d),C=h(d.parentNode));var q,r=d.getBoundingClientRect(),y=r.right-r.left,z=r.bottom-r.top,D=/left|right|inline/.test(B.cssFloat+B.display)||"flex"==C.display&&0===C["flex-direction"].indexOf("row"),E=d.offsetWidth>s.offsetWidth,G=d.offsetHeight>s.offsetHeight,H=(D?(a.clientX-r.left)/y:(a.clientY-r.top)/z)>.5,J=d.nextElementSibling,K=k(w,g,s,e,d,r);if(K!==!1){if(R=!0,setTimeout(m,30),b(o),1===K||-1===K)q=1===K;else if(D){var M=s.offsetTop,N=d.offsetTop;q=M===N?d.previousElementSibling===s&&!E||H&&E:N>M}else q=J!==s&&!G||H&&G;s.contains(g)||(q&&!J?g.appendChild(s):d.parentNode.insertBefore(s,q?J:d)),t=s.parentNode,this._animate(e,s),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(N,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(J.pid),clearTimeout(this._dragStartTimer),f(N,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(N,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(I&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),u&&u.parentNode.removeChild(u),s&&(this.nativeDraggable&&f(s,"dragend",this),l(s),g(s,this.options.ghostClass,!1),g(s,this.options.chosenClass,!1),w!==t?(E=p(s),E>=0&&(j(null,t,"sort",s,w,D,E),j(this,w,"sort",s,w,D,E),j(null,t,"add",s,w,D,E),j(this,w,"remove",s,w,D,E))):(v&&v.parentNode.removeChild(v),s.nextSibling!==x&&(E=p(s),E>=0&&(j(this,w,"update",s,w,D,E),j(this,w,"sort",s,w,D,E)))),a.active&&((null===E||-1===E)&&(E=D),j(this,w,"end",s,w,D,E),this.save())),w=s=t=u=x=v=y=z=G=H=I=E=A=B=F=a.active=null)},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?s&&(this._onDragOver(a),d(a)):("drop"===b||"dragend"===b)&&this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;f>e;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&V(c)))},destroy:function(){var a=this.el;a[L]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),T.splice(T.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:r,throttle:q,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a}); \ No newline at end of file diff --git a/www/libs/adf-structures-base/dist/adf-structures-base.min.js b/www/libs/adf-structures-base/dist/adf-structures-base.min.js new file mode 100644 index 0000000..a4377c3 --- /dev/null +++ b/www/libs/adf-structures-base/dist/adf-structures-base.min.js @@ -0,0 +1,2 @@ +"use strict";angular.module("adf.structures.base",["adf"]).config(["dashboardProvider",function(s){s.structure("6-6",{rows:[{columns:[{styleClass:"col-md-6"},{styleClass:"col-md-6"}]}]}).structure("4-8",{rows:[{columns:[{styleClass:"col-md-4",widgets:[]},{styleClass:"col-md-8",widgets:[]}]}]}).structure("12/4-4-4",{rows:[{columns:[{styleClass:"col-md-12"}]},{columns:[{styleClass:"col-md-4"},{styleClass:"col-md-4"},{styleClass:"col-md-4"}]}]}).structure("12/6-6",{rows:[{columns:[{styleClass:"col-md-12"}]},{columns:[{styleClass:"col-md-6"},{styleClass:"col-md-6"}]}]}).structure("12/6-6/12",{rows:[{columns:[{styleClass:"col-md-12"}]},{columns:[{styleClass:"col-md-6"},{styleClass:"col-md-6"}]},{columns:[{styleClass:"col-md-12"}]}]}).structure("3-9 (12/6-6)",{rows:[{columns:[{styleClass:"col-md-3"},{styleClass:"col-md-9",rows:[{columns:[{styleClass:"col-md-12"}]},{columns:[{styleClass:"col-md-6"},{styleClass:"col-md-6"}]}]}]}]})}]); +//# sourceMappingURL=adf-structures-base.min.js.map \ No newline at end of file diff --git a/www/libs/adf-structures-base/dist/adf-structures-base.min.js.map b/www/libs/adf-structures-base/dist/adf-structures-base.min.js.map new file mode 100644 index 0000000..9bfc0da --- /dev/null +++ b/www/libs/adf-structures-base/dist/adf-structures-base.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["base.js"],"names":["angular","module","config","dashboardProvider","structure","rows","columns","styleClass","widgets"],"mappings":"AAuBA,YAEAA,SAAAC,OAAA,uBAAA,QACAC,QAAA,oBAAA,SAAAC,GAEAA,EACAC,UAAA,OACAC,OACAC,UACAC,WAAA,aAEAA,WAAA,iBAIAH,UAAA,OACAC,OACAC,UACAC,WAAA,WACAC,aAEAD,WAAA,WACAC,iBAIAJ,UAAA,YACAC,OACAC,UACAC,WAAA,gBAGAD,UACAC,WAAA,aAEAA,WAAA,aAEAA,WAAA,iBAIAH,UAAA,UACAC,OACAC,UACAC,WAAA,gBAGAD,UACAC,WAAA,aAEAA,WAAA,iBAIAH,UAAA,aACAC,OACAC,UACAC,WAAA,gBAGAD,UACAC,WAAA,aAEAA,WAAA,eAGAD,UACAC,WAAA,kBAIAH,UAAA,gBACAC,OACAC,UACAC,WAAA,aAEAA,WAAA,WACAF,OACAC,UACAC,WAAA,gBAGAD,UACAC,WAAA,aAEAA,WAAA","file":"adf-structures-base.min.js","sourcesContent":["/* *\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n'use strict';\n\nangular.module('adf.structures.base', ['adf'])\n .config(function(dashboardProvider){\n\n dashboardProvider\n .structure('6-6', {\n rows: [{\n columns: [{\n styleClass: 'col-md-6'\n }, {\n styleClass: 'col-md-6'\n }]\n }]\n })\n .structure('4-8', {\n rows: [{\n columns: [{\n styleClass: 'col-md-4',\n widgets: []\n }, {\n styleClass: 'col-md-8',\n widgets: []\n }]\n }]\n })\n .structure('12/4-4-4', {\n rows: [{\n columns: [{\n styleClass: 'col-md-12'\n }]\n }, {\n columns: [{\n styleClass: 'col-md-4'\n }, {\n styleClass: 'col-md-4'\n }, {\n styleClass: 'col-md-4'\n }]\n }]\n })\n .structure('12/6-6', {\n rows: [{\n columns: [{\n styleClass: 'col-md-12'\n }]\n }, {\n columns: [{\n styleClass: 'col-md-6'\n }, {\n styleClass: 'col-md-6'\n }]\n }]\n })\n .structure('12/6-6/12', {\n rows: [{\n columns: [{\n styleClass: 'col-md-12'\n }]\n }, {\n columns: [{\n styleClass: 'col-md-6'\n }, {\n styleClass: 'col-md-6'\n }]\n }, {\n columns: [{\n styleClass: 'col-md-12'\n }]\n }]\n })\n .structure('3-9 (12/6-6)', {\n rows: [{\n columns: [{\n styleClass: 'col-md-3'\n }, {\n styleClass: 'col-md-9',\n rows: [{\n columns: [{\n styleClass: 'col-md-12'\n }]\n }, {\n columns: [{\n styleClass: 'col-md-6'\n }, {\n styleClass: 'col-md-6'\n }]\n }]\n }]\n }]\n });\n\n });\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/www/libs/adf-widget-news/dist/adf-widget-news.min.js b/www/libs/adf-widget-news/dist/adf-widget-news.min.js new file mode 100644 index 0000000..d20aa5e --- /dev/null +++ b/www/libs/adf-widget-news/dist/adf-widget-news.min.js @@ -0,0 +1 @@ +!function(){"use strict";angular.module("adf.widget.news",["adf.provider"]).value("newsServiceUrl","https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=JSON_CALLBACK&q=").config(["dashboardProvider",function(e){e.widget("news",{title:"News",description:"Displays a RSS/Atom feed",templateUrl:"{widgetsPath}/news/src/view.html",controller:"newsCtrl",resolve:{feed:["newsService","config",function(e,t){return t.url?e.get(t.url):void 0}]},edit:{templateUrl:"{widgetsPath}/news/src/edit.html"}})}]).service("newsService",["$q","$http","newsServiceUrl",function(e,t,r){return{get:function(n){var l=e.defer();return t.jsonp(r+encodeURIComponent(n)).success(function(e){e&&e.responseData&&e.responseData.feed?l.resolve(e.responseData.feed):l.reject()}).error(function(){l.reject()}),l.promise}}}]).controller("newsCtrl",["$scope","feed",function(e,t){e.feed=t}]),angular.module("adf.widget.news").run(["$templateCache",function(e){e.put("{widgetsPath}/news/src/edit.html",'
'),e.put("{widgetsPath}/news/src/view.html",'
Please insert a feed url in the widget configuration

{{feed.title}}

')}])}(window); \ No newline at end of file diff --git a/www/libs/angular-base64/angular-base64.min.js b/www/libs/angular-base64/angular-base64.min.js new file mode 100644 index 0000000..94434b0 --- /dev/null +++ b/www/libs/angular-base64/angular-base64.min.js @@ -0,0 +1 @@ +!function(){"use strict";angular.module("base64",[]).constant("$base64",function(){function a(a,b){var c=f.indexOf(a.charAt(b));if(-1==c)throw"Cannot decode base64";return c}function b(b){b=""+b;var c,d,f,g=b.length;if(0==g)return b;if(0!=g%4)throw"Cannot decode base64";c=0,b.charAt(g-1)==e&&(c=1,b.charAt(g-2)==e&&(c=2),g-=4);var h=[];for(d=0;g>d;d+=4)f=a(b,d)<<18|a(b,d+1)<<12|a(b,d+2)<<6|a(b,d+3),h.push(String.fromCharCode(f>>16,255&f>>8,255&f));switch(c){case 1:f=a(b,d)<<18|a(b,d+1)<<12|a(b,d+2)<<6,h.push(String.fromCharCode(f>>16,255&f>>8));break;case 2:f=a(b,d)<<18|a(b,d+1)<<12,h.push(String.fromCharCode(f>>16))}return h.join("")}function c(a,b){var c=a.charCodeAt(b);if(c>255)throw"INVALID_CHARACTER_ERR: DOM Exception 5";return c}function d(a){if(1!=arguments.length)throw"SyntaxError: Not enough arguments";var b,d,g=[];a=""+a;var h=a.length-a.length%3;if(0==a.length)return a;for(b=0;h>b;b+=3)d=c(a,b)<<16|c(a,b+1)<<8|c(a,b+2),g.push(f.charAt(d>>18)),g.push(f.charAt(63&d>>12)),g.push(f.charAt(63&d>>6)),g.push(f.charAt(63&d));switch(a.length-h){case 1:d=c(a,b)<<16,g.push(f.charAt(d>>18)+f.charAt(63&d>>12)+e+e);break;case 2:d=c(a,b)<<16|c(a,b+1)<<8,g.push(f.charAt(d>>18)+f.charAt(63&d>>12)+f.charAt(63&d>>6)+e)}return g.join("")}var e="=",f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";return{encode:d,decode:b}}())}(); \ No newline at end of file diff --git a/www/libs/angular-bootstrap-colorpicker/bootstrap-colorpicker-module.min.js b/www/libs/angular-bootstrap-colorpicker/bootstrap-colorpicker-module.min.js new file mode 100644 index 0000000..dcdf7e0 --- /dev/null +++ b/www/libs/angular-bootstrap-colorpicker/bootstrap-colorpicker-module.min.js @@ -0,0 +1 @@ +angular.module("colorpicker.module",[]).factory("Helper",function(){"use strict";return{closestSlider:function(e){var o=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector;return o.bind(e)("I")?e.parentNode:e},getOffset:function(e,o){for(var t=0,n=0,r=e.getBoundingClientRect();e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)o||"BODY"!==e.tagName?(t+=e.scrollLeft,n+=e.scrollTop):(t+=document.documentElement.scrollLeft||e.scrollLeft,n+=document.documentElement.scrollTop||e.scrollTop),e=e.offsetParent;return{top:r.top+window.pageYOffset,left:r.left+window.pageXOffset,scrollX:t,scrollY:n}},stringParsers:[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}}]}}).factory("Color",["Helper",function(e){"use strict";return{value:{h:1,s:1,b:1,a:1},rgb:function(){var e=this.toRGB();return"rgb("+e.r+","+e.g+","+e.b+")"},rgba:function(){var e=this.toRGB();return"rgba("+e.r+","+e.g+","+e.b+","+e.a+")"},hex:function(){return this.toHex()},RGBtoHSB:function(e,o,t,n){e/=255,o/=255,t/=255;var r,i,l,c;return l=Math.max(e,o,t),c=l-Math.min(e,o,t),r=0===c?null:l===e?(o-t)/c:l===o?(t-e)/c+2:(e-o)/c+4,r=(r+360)%6*60/360,i=0===c?0:c/l,{h:r||1,s:i,b:l,a:n||1}},setColor:function(o){o=o.toLowerCase();for(var t in e.stringParsers)if(e.stringParsers.hasOwnProperty(t)){var n=e.stringParsers[t],r=n.re.exec(o),i=r&&n.parse(r);if(i)return this.value=this.RGBtoHSB.apply(null,i),!1}},setHue:function(e){this.value.h=1-e},setSaturation:function(e){this.value.s=e},setLightness:function(e){this.value.b=1-e},setAlpha:function(e){this.value.a=parseInt(100*(1-e),10)/100},toRGB:function(e,o,t,n){e||(e=this.value.h,o=this.value.s,t=this.value.b),e*=360;var r,i,l,c,s;return e=e%360/60,s=t*o,c=s*(1-Math.abs(e%2-1)),r=i=l=t-s,e=~~e,r+=[s,c,0,0,c,s][e],i+=[c,s,s,c,0,0][e],l+=[0,0,c,s,s,c][e],{r:Math.round(255*r),g:Math.round(255*i),b:Math.round(255*l),a:n||this.value.a}},toHex:function(e,o,t,n){var r=this.toRGB(e,o,t,n);return"#"+(1<<24|parseInt(r.r,10)<<16|parseInt(r.g,10)<<8|parseInt(r.b,10)).toString(16).substr(1)}}}]).factory("Slider",["Helper",function(e){"use strict";var o={maxLeft:0,maxTop:0,callLeft:null,callTop:null,knob:{top:0,left:0}},t={};return{getSlider:function(){return o},getLeftPosition:function(e){return Math.max(0,Math.min(o.maxLeft,o.left+((e.pageX||t.left)-t.left)))},getTopPosition:function(e){return Math.max(0,Math.min(o.maxTop,o.top+((e.pageY||t.top)-t.top)))},setSlider:function(n,r){var i=e.closestSlider(n.target),l=e.getOffset(i,r),c=i.getBoundingClientRect(),s=n.clientX-c.left,a=n.clientY-c.top;o.knob=i.children[0].style,o.left=n.pageX-l.left-window.pageXOffset+l.scrollX,o.top=n.pageY-l.top-window.pageYOffset+l.scrollY,t={left:n.pageX-(s-o.left),top:n.pageY-(a-o.top)}},setSaturation:function(e,t){o={maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setLightness"},this.setSlider(e,t)},setHue:function(e,t){o={maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},this.setSlider(e,t)},setAlpha:function(e,t){o={maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"},this.setSlider(e,t)},setKnob:function(e,t){o.knob.top=e+"px",o.knob.left=t+"px"}}}]).directive("colorpicker",["$document","$compile","Color","Slider","Helper",function(e,o,t,n,r){"use strict";return{require:"?ngModel",restrict:"A",link:function(i,l,c,s){var a,u=c.colorpicker?c.colorpicker:"hex",p=angular.isDefined(c.colorpickerPosition)?c.colorpickerPosition:"bottom",f=angular.isDefined(c.colorpickerInline)?c.colorpickerInline:!1,d=angular.isDefined(c.colorpickerFixedPosition)?c.colorpickerFixedPosition:!1,h=angular.isDefined(c.colorpickerParent)?l.parent():angular.element(document.body),g=angular.isDefined(c.colorpickerWithInput)?c.colorpickerWithInput:!1,k=g?'':"",v=f?"":'',m='",b=angular.element(m),x=t,w=b.find("colorpicker-hue"),S=b.find("colorpicker-saturation"),I=b.find("colorpicker-preview"),C=b.find("i");if(o(b)(i),g){var L=b.find("input");L.on("mousedown",function(e){e.stopPropagation()}).on("keyup",function(){var e=this.value;l.val(e),s&&s.$modelValue!==e&&(i.$apply(s.$setViewValue(e)),O(!0))})}var $=function(){e.on("mousemove",H),e.on("mouseup",T)};"rgba"===u&&(b.addClass("alpha"),a=b.find("colorpicker-alpha"),a.on("click",function(e){n.setAlpha(e,d),H(e)}).on("mousedown",function(e){n.setAlpha(e,d),$()}).on("mouseup",function(e){B("colorpicker-selected-alpha")})),w.on("click",function(e){n.setHue(e,d),H(e)}).on("mousedown",function(e){n.setHue(e,d),$()}).on("mouseup",function(e){B("colorpicker-selected-hue")}),S.on("click",function(e){n.setSaturation(e,d),H(e),angular.isDefined(c.colorpickerCloseOnSelect)&&D()}).on("mousedown",function(e){n.setSaturation(e,d),$()}).on("mouseup",function(e){B("colorpicker-selected-saturation")}),d&&b.addClass("colorpicker-fixed-position"),b.addClass("colorpicker-position-"+p),"true"===f&&b.addClass("colorpicker-inline"),h.append(b),s&&(s.$render=function(){l.val(s.$viewValue)}),l.on("blur keyup change",function(){O()}),l.on("$destroy",function(){b.remove()});var P=function(){try{I.css("backgroundColor",x[u]())}catch(e){I.css("backgroundColor",x.toHex())}S.css("backgroundColor",x.toHex(x.value.h,1,1,1)),"rgba"===u&&(a.css.backgroundColor=x.toHex())},H=function(e){var o=n.getLeftPosition(e),t=n.getTopPosition(e),r=n.getSlider();n.setKnob(t,o),r.callLeft&&x[r.callLeft].call(x,o/100),r.callTop&&x[r.callTop].call(x,t/100),P();var c=x[u]();return l.val(c),s&&i.$apply(s.$setViewValue(c)),g&&L.val(c),!1},T=function(){B("colorpicker-selected"),e.off("mousemove",H),e.off("mouseup",T)},O=function(e){x.setColor(l.val()),g&&!e&&L.val(l.val()),C.eq(0).css({left:100*x.value.s+"px",top:100-100*x.value.b+"px"}),C.eq(1).css("top",100*(1-x.value.h)+"px"),C.eq(2).css("top",100*(1-x.value.a)+"px"),P()},y=function(){var e,o=r.getOffset(l[0]);return angular.isDefined(c.colorpickerParent)&&(o.left=0,o.top=0),"top"===p?e={top:o.top-147,left:o.left}:"right"===p?e={top:o.top,left:o.left+126}:"bottom"===p?e={top:o.top+l[0].offsetHeight+2,left:o.left}:"left"===p&&(e={top:o.top,left:o.left-150}),{top:e.top+"px",left:e.left+"px"}},M=function(){D()},A=function(){b.hasClass("colorpicker-visible")||(O(),b.addClass("colorpicker-visible").css(y()),B("colorpicker-shown"),f===!1&&e.on("mousedown",M),c.colorpickerIsOpen&&(i[c.colorpickerIsOpen]=!0,i.$$phase||i.$digest()))};f===!1?l.on("click",A):A(),b.on("mousedown",function(e){e.stopPropagation(),e.preventDefault()});var B=function(e){s&&i.$emit(e,{name:c.ngModel,value:s.$modelValue})},D=function(){b.hasClass("colorpicker-visible")&&(b.removeClass("colorpicker-visible"),B("colorpicker-closed"),e.off("mousedown",M),c.colorpickerIsOpen&&(i[c.colorpickerIsOpen]=!1,i.$$phase||i.$digest()))};b.find("button").on("click",function(){D()}),c.colorpickerIsOpen&&i.$watch(c.colorpickerIsOpen,function(e){e===!0?A():e===!1&&D()})}}}]); \ No newline at end of file diff --git a/www/libs/angular-bootstrap-colorpicker/colorpicker.min.css b/www/libs/angular-bootstrap-colorpicker/colorpicker.min.css new file mode 100644 index 0000000..1c0e0c1 --- /dev/null +++ b/www/libs/angular-bootstrap-colorpicker/colorpicker.min.css @@ -0,0 +1 @@ +.colorpicker-visible,.colorpicker-visible .dropdown-menu{display:block!important}colorpicker-saturation{display:block;width:100px;height:100px;background-image:url(data:image/png;base64,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);cursor:crosshair;float:left}colorpicker-saturation i{display:block;height:7px;width:7px;border:1px solid #000;border-radius:5px;position:absolute;top:0;left:0;margin:-4px 0 0 -4px}colorpicker-saturation i::after{content:'';display:block;height:7px;width:7px;border:1px solid #fff;border-radius:5px}colorpicker-alpha,colorpicker-hue{width:15px;height:100px;float:left;cursor:row-resize;margin-left:4px;margin-bottom:4px}colorpicker-alpha i,colorpicker-hue i{display:block;height:2px;background:#000;border-top:1px solid #fff;position:absolute;top:0;left:0;width:100%;margin-top:-1px}.colorpicker,colorpicker-alpha{display:none}colorpicker-hue{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAMAAABw8qpSAAABLFBMVEUA/z8AuP//JAAA/33/3AAA/1ABAv8A/7r/AH7/jgD2AP8A//j/AEHmAP/XAP/HAP+4AP//ALyoAP+aAP+JAP97AP9rAP9cAP9MAP8+AP8tAP8fAP8PAP8ATv//AG7/cAD/vgD/APoAmv//ADH/AKwB/wMA5//4Eg4AL///AOr/UQD/nwAA/27/7AAA/+kAe/8Ayf8A/5sA/zEA/6z/ABEAEP8A/17/MgAA/9n/ACL/gAD/AJ0AXP8Aqv//AMoA/yHqFBb/zAD/AGD/ANsA9//1/wDk/wDV/wDF/wC3/wD/AI2m/wD/FACY/wCI/wB5/wBp/wD/YgBb/wBK/wA8/wAs/wAd/wAN/wAAPv8A/xH/AFAAi///rQAA/8r/+gAA1///QwAAH/8Abf8A/43c/JNGAAAAiUlEQVR4AQXBg2EDAAAAsMy2bds2ttp2+/8PTby79mDLsKJPq/oFPdk24dWXAxsGjRg1ZtykKdNmzJozb8GiJct63WjYl7fiWdOZkk0vOpyr2fVtyKl7FX2uXGjpcuxWDy69KdiRk5WRlpIUFxMVERLw78+vH1Unun1YV3ZkwKM1CYfq7nQK22sD03ITV2Aqp0IAAAAASUVORK5CYII=)}.colorpicker-color,colorpicker-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABkCAMAAACIElGlAAADAFBMVEUAAADT09PT09P////T09P////e3t7q6urT09Px8fHT09P////////T09PT09P////////T09PT09P////////////T09PT09P////////////T09P////T09PT09PT09P////T09PT09P////////////////T09P////T09PT09P////T09PT09PT09PT09PT09PT09P////T09P////T09PT09P////////////T09P////T09P////////////T09PT09P////T09P////////////////////T09P////////T09PT09P////////////////////////T09PT09P////////////////////////T09PT09P////T09PT09P////////T09P////////////T09P////////T09P////T09P////T09P////T09PT09PT09PT09P////T09PT09PT09PT09PT09PT09P////T09P////T09PT09P////////////T09PT09PT09P////T09PT09PT09PT09PT09PT09PT09P////////////////T09PT09P////////////T09P////////T09P////T09PT09PT09P////////T09P////////T09P////T09PT09P////////////////T09PT09PT09PT09P////T09PT09PT09PT09PT09PT09PT09P////T09P////T09PT09PT09PT09PT09P////////////////////////////////////T09P////T09P////T09P////T09PT09P////////////T09P////T09P////T09P////////////T09PT09P////////////////T09PT09P////T09P////T09PT09P////T09P////T09PT09P////T09PT09PT09PT09P////T09PT09P////////////T09PT09P////T09P////////T09MQsm1FAAABAHRSTlMAgJN8/vcDAfcCnJyGaZmZlomGk4yJOmM/eTxs8wY0YDFC7HNdLx18n5/7aUvzCcW9+qKiK8P0ZiltRwfdw/n8Px3WduJjItj78ss5PDHUNELbwP5wplA2FglEVwvkqNarCs4Z7b2sDLgQ0xNdyLrr0eLLUeW1Vs5TWQLwjPI3ZvQGdvxFyFrAeevaLCLvGd0kpRskGyf4qK605xKvFrGyDRHnBYMEkJaDkIBvB/gpH99O6CrbIC4nH3Lg2SXp4A7Qul/GDEgPSlMQ6LjqFU0SjyCCj5V/gnBN7xglL3O70WBU7gjFFEfft0sPTo1ndRipwXr2yRemWRVENq+ytbGuxGaWGQAAAnpJREFUeNpNxmdcDHAAxvEHOWXvmXX23ntv2XvvMg/Z44x0KaRBSnfcKSqlnYZKp1QqGpT20KZh783/eePj+3vzw3/q/AM9iURPTy6XS+RwcXNzcZMQTE1dTE3bE7y9S0u9xxD600rCGtpI2ErOsbGxzoiMrIqscnaOi4vDdnp4XYSrguwxQSb7KpMllycnl2MFaTSaTxrY5NrY5BoKb2BnZ2doZ29vb2OPSdSd4Bcc7OcXGhqamgqrYCsrq+mEiEtC3gUBDg55Dg53IkQYSYG+gb6+GEqB5wV0o5D8/JAQdKK5hA40n3BS+L6c0JJmE+ZQW8JEak1YQJ0Jq+jbaQEPnotGE+IrK+Pj+xKqU6pTUrIDAgKysZ+WEY5QQkJxcQIO0WrCUbL4YmFhgZ3UlVAUHR1d1JEwjVoRRpDJKxMTE/ShBoRR1I6whLyyvLyyUFAQFhbWhTCFFArFawXOCu/bEHpQLYKnZ0aGZw2CR1qah0dmpqurK+pTU0ILakJoTi+PC7j5RHTrqQg1qRkh3T3d3b0xoSE1ItSleoSe1IswmIYQPl8UlhLWkaOj41tHbKENBLX6j1qt/KFUKnFN+Onk9NvJCQdJpfqlUqGiIjExcRthN91/JsJmGkhYRO/OCBhHwwgxMWUxZQMIu8j8o7m5OfbRLMJh2kTYQ1FRhYVR2EHzCOtpMmEG3SUsJEvLoKAg2Prb2tqOJYSH+/uH33shwlTaS1hLBwhX6AYX2tuiRwStVntOa5yUZJwEqbREKjUi5Bjl5BhZW1uXWOMYGRBOnNDX1zfoxz1FwwkfSJfgo6vr41P7soBBNJ7Qm2YSzHTMzMwmEHRoMf0Fm5mYOUrzNBYAAAAASUVORK5CYII=)}.colorpicker{top:0;left:0;z-index:9999}.colorpicker colorpicker-alpha,.colorpicker colorpicker-hue,.colorpicker colorpicker-saturation{position:relative}.colorpicker input{width:100px;font-size:11px;color:#000;background-color:#fff}.colorpicker.alpha{min-width:140px}.colorpicker.alpha colorpicker-alpha{display:block}.colorpicker.dropdown{position:absolute}.colorpicker.colorpicker-fixed-position{position:fixed}.colorpicker .dropdown-menu::after,.colorpicker .dropdown-menu::before{content:'';display:inline-block;position:absolute}.colorpicker .dropdown-menu::after{clear:both;border:6px solid transparent;top:-5px;left:7px}.colorpicker .dropdown-menu::before{border:7px solid transparent;top:-6px;left:6px}.colorpicker .dropdown-menu{position:static;top:0;left:0;min-width:129px;padding:4px;margin-top:0}.colorpicker-position-top .dropdown-menu::after{border-top:6px solid #fff;border-bottom:0;top:auto;bottom:-5px}.colorpicker-position-top .dropdown-menu::before{border-top:7px solid rgba(0,0,0,.2);border-bottom:0;top:auto;bottom:-6px}.colorpicker-position-right .dropdown-menu::after{border-right:6px solid #fff;border-left:0;top:11px;left:-5px}.colorpicker-position-right .dropdown-menu::before{border-right:7px solid rgba(0,0,0,.2);border-left:0;top:10px;left:-6px}.colorpicker-position-bottom .dropdown-menu::after{border-bottom:6px solid #fff;border-top:0}.colorpicker-position-bottom .dropdown-menu::before{border-bottom:7px solid rgba(0,0,0,.2);border-top:0}.colorpicker-position-left .dropdown-menu::after{border-left:6px solid #fff;border-right:0;top:11px;left:auto;right:-5px}.colorpicker-position-left .dropdown-menu::before{border-left:7px solid rgba(0,0,0,.2);border-right:0;top:10px;left:auto;right:-6px}colorpicker-preview{display:block;height:10px;margin:5px 0 3px;clear:both;background-position:0 100%} \ No newline at end of file diff --git a/www/libs/angular-bootstrap-datetimepicker/css/datetimepicker.css b/www/libs/angular-bootstrap-datetimepicker/css/datetimepicker.css new file mode 100644 index 0000000..0d97675 --- /dev/null +++ b/www/libs/angular-bootstrap-datetimepicker/css/datetimepicker.css @@ -0,0 +1,108 @@ +/** + * @license angular-bootstrap-datetimepicker version: 0.4.0 + * Copyright 2015 Knight Rider Consulting, Inc. http://www.knightrider.com + * License: MIT + */ +.datetimepicker { + border-radius: 4px; + direction: ltr; + display: block; + margin-top: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 320px; +} +.datetimepicker > div { + display: none; +} +.datetimepicker .hour, +.datetimepicker .minute { + height: 34px; + line-height: 34px; + margin: 0; + width: 25%; +} +.datetimepicker .table { + margin: 0; +} +.datetimepicker .table td, +.datetimepicker .table th { + border: 0; + border-radius: 4px; + height: 20px; + text-align: center; +} +.datetimepicker .minute:hover, +.datetimepicker .hour:hover, +.datetimepicker .day:hover, +.datetimepicker .switch:hover, +.datetimepicker .left:hover, +.datetimepicker .right:hover { + background: #eeeeee; + cursor: pointer; +} +.datetimepicker .disabled, +.datetimepicker .disabled:hover { + background: none; + color: #ebebeb; + cursor: default; +} +.datetimepicker .active, +.datetimepicker .active:hover, +.datetimepicker .active.disabled, +.datetimepicker .active.disabled:hover { + background-color: #0044cc; + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + color: #ffffff; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#04c', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datetimepicker .active:hover, +.datetimepicker .active:hover:hover, +.datetimepicker .active.disabled:hover, +.datetimepicker .active.disabled:hover:hover, +.datetimepicker .active:active, +.datetimepicker .active:hover:active, +.datetimepicker .active.disabled:active, +.datetimepicker .active.disabled:hover:active, +.datetimepicker .active.active, +.datetimepicker .active:hover.active, +.datetimepicker .active.disabled.active, +.datetimepicker .active.disabled:hover.active, +.datetimepicker .active.disabled, +.datetimepicker .active:hover.disabled, +.datetimepicker .active.disabled.disabled, +.datetimepicker .active.disabled:hover.disabled, +.datetimepicker td.active[disabled], +.datetimepicker td.active:hover[disabled], +.datetimepicker td.active.disabled[disabled], +.datetimepicker td.active.disabled:hover[disabled], +.datetimepicker span.active[disabled], +.datetimepicker span.active:hover[disabled], +.datetimepicker span.active.disabled[disabled], +.datetimepicker span.active.disabled:hover[disabled] { + background-color: #0044cc; +} +.datetimepicker span { + border-radius: 4px; + cursor: pointer; + display: block; + float: left; + height: 54px; + line-height: 54px; + margin: 1%; + width: 23%; +} +.datetimepicker span:hover { + background: #eeeeee; +} +.datetimepicker .past, +.datetimepicker .future { + color: #999999; +} + +/*# sourceMappingURL=datetimepicker.css.map */ diff --git a/www/libs/angular-bootstrap-datetimepicker/css/datetimepicker.css.map b/www/libs/angular-bootstrap-datetimepicker/css/datetimepicker.css.map new file mode 100644 index 0000000..ce67c87 --- /dev/null +++ b/www/libs/angular-bootstrap-datetimepicker/css/datetimepicker.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["datetimepicker.css"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;EACE,mBAAmB;EACnB,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,0BAAkB;KAAlB,uBAAkB;MAAlB,sBAAkB;UAAlB,kBAAkB;EAClB,aAAa,EAAE;EACf;IACE,cAAc,EAAE;EAClB;;IAEE,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,WAAW,EAAE;EACf;IACE,UAAU,EAAE;EACd;;IAEE,UAAU;IACV,mBAAmB;IACnB,aAAa;IACb,mBAAmB,EAAE;EACvB;;;;;;IAME,iBAAiB;IACjB,gBAAgB,EAAE;EACpB;;IAEE,iBAAiB;IACjB,eAAe;IACf,gBAAgB,EAAE;EACpB;;;;IAIE,uBAAuB;IACvB,yDAAyD;IACzD,4BAA4B;IAC5B,gCAAgC;IAChC,YAAY;IACZ,6GAA6G;IAC7G,0CAA0C,EAAE;EAC9C;;;;;;;;;;;;;;;;;;;;;;;;IAwBE,uBAAuB,EAAE;EAC3B;IACE,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,WAAW,EAAE;IACb;MACE,iBAAiB,EAAE;EACvB;;IAEE,YAAY,EAAE","file":"datetimepicker.css","sourcesContent":["/**\n * @license angular-bootstrap-datetimepicker version: 0.3.14\n * Copyright 2015 Knight Rider Consulting, Inc. http://www.knightrider.com\n * License: MIT\n */\n.datetimepicker {\n border-radius: 4px;\n direction: ltr;\n display: block;\n margin-top: 1px;\n user-select: none;\n width: 320px; }\n .datetimepicker > div {\n display: none; }\n .datetimepicker .hour,\n .datetimepicker .minute {\n height: 34px;\n line-height: 34px;\n margin: 0;\n width: 25%; }\n .datetimepicker .table {\n margin: 0; }\n .datetimepicker .table td,\n .datetimepicker .table th {\n border: 0;\n border-radius: 4px;\n height: 20px;\n text-align: center; }\n .datetimepicker .minute:hover,\n .datetimepicker .hour:hover,\n .datetimepicker .day:hover,\n .datetimepicker .switch:hover,\n .datetimepicker .left:hover,\n .datetimepicker .right:hover {\n background: #eee;\n cursor: pointer; }\n .datetimepicker .disabled,\n .datetimepicker .disabled:hover {\n background: none;\n color: #ebebeb;\n cursor: default; }\n .datetimepicker .active,\n .datetimepicker .active:hover,\n .datetimepicker .active.disabled,\n .datetimepicker .active.disabled:hover {\n background-color: #04c;\n background-image: linear-gradient(to bottom, #08c, #04c);\n background-repeat: repeat-x;\n border-color: #04c #04c #002a80;\n color: #fff;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#04c', GradientType=0);\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }\n .datetimepicker .active:hover,\n .datetimepicker .active:hover:hover,\n .datetimepicker .active.disabled:hover,\n .datetimepicker .active.disabled:hover:hover,\n .datetimepicker .active:active,\n .datetimepicker .active:hover:active,\n .datetimepicker .active.disabled:active,\n .datetimepicker .active.disabled:hover:active,\n .datetimepicker .active.active,\n .datetimepicker .active:hover.active,\n .datetimepicker .active.disabled.active,\n .datetimepicker .active.disabled:hover.active,\n .datetimepicker .active.disabled,\n .datetimepicker .active:hover.disabled,\n .datetimepicker .active.disabled.disabled,\n .datetimepicker .active.disabled:hover.disabled,\n .datetimepicker td.active[disabled],\n .datetimepicker td.active:hover[disabled],\n .datetimepicker td.active.disabled[disabled],\n .datetimepicker td.active.disabled:hover[disabled],\n .datetimepicker span.active[disabled],\n .datetimepicker span.active:hover[disabled],\n .datetimepicker span.active.disabled[disabled],\n .datetimepicker span.active.disabled:hover[disabled] {\n background-color: #04c; }\n .datetimepicker span {\n border-radius: 4px;\n cursor: pointer;\n display: block;\n float: left;\n height: 54px;\n line-height: 54px;\n margin: 1%;\n width: 23%; }\n .datetimepicker span:hover {\n background: #eee; }\n .datetimepicker .past,\n .datetimepicker .future {\n color: #999; }\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/www/libs/angular-bootstrap-datetimepicker/js/datetimepicker.js b/www/libs/angular-bootstrap-datetimepicker/js/datetimepicker.js new file mode 100644 index 0000000..4a338ad --- /dev/null +++ b/www/libs/angular-bootstrap-datetimepicker/js/datetimepicker.js @@ -0,0 +1,448 @@ +/*globals define, jQuery, module, require */ +/*jslint vars:true */ + +/** + * @license angular-bootstrap-datetimepicker version: 0.4.0 + * Copyright 2015 Knight Rider Consulting, Inc. http://www.knightrider.com + * License: MIT + */ + +/** + * + * @author Dale "Ducky" Lotts + * @since 2013-Jul-8 + */ + +(function (factory) { + 'use strict'; + /* istanbul ignore if */ + if (typeof define === 'function' && /* istanbul ignore next */ define.amd) { + define(['angular', 'moment'], factory); // AMD + /* istanbul ignore next */ + } else if (typeof exports === 'object') { + module.exports = factory(require('angular'), require('moment')); // CommonJS + } else { + factory(window.angular, window.moment); // Browser global + } +}(function (angular, moment) { + 'use strict'; + angular.module('ui.bootstrap.datetimepicker', []) + .constant('dateTimePickerConfig', { + configureOn: null, + dropdownSelector: null, + minuteStep: 5, + minView: 'minute', + renderOn: null, + startView: 'day' + }) + .directive('datetimepicker', ['$log', 'dateTimePickerConfig', function datetimepickerDirective($log, defaultConfig) { + + function DateObject() { + + var tempDate = new Date(); + var localOffset = tempDate.getTimezoneOffset() * 60000; + this.utcDateValue = tempDate.getTime(); + this.selectable = true; + + this.localDateValue = function () { + return this.utcDateValue + localOffset; + }; + + var validProperties = ['utcDateValue', 'localDateValue', 'display', 'active', 'selectable', 'past', 'future']; + + for (var prop in arguments[0]) { + /* istanbul ignore else */ + //noinspection JSUnfilteredForInLoop + if (validProperties.indexOf(prop) >= 0) { + //noinspection JSUnfilteredForInLoop + this[prop] = arguments[0][prop]; + } + } + } + + var validateConfiguration = function validateConfiguration(configuration) { + + var validOptions = [ + 'configureOn', + 'dropdownSelector', + 'minuteStep', + 'minView', + 'renderOn', + 'startView' + ]; + + for (var prop in configuration) { + //noinspection JSUnfilteredForInLoop + if (validOptions.indexOf(prop) < 0) { + throw ('invalid option: ' + prop); + } + } + + // Order of the elements in the validViews array is significant. + var validViews = ['minute', 'hour', 'day', 'month', 'year']; + + if (validViews.indexOf(configuration.startView) < 0) { + throw ('invalid startView value: ' + configuration.startView); + } + + if (validViews.indexOf(configuration.minView) < 0) { + throw ('invalid minView value: ' + configuration.minView); + } + + if (validViews.indexOf(configuration.minView) > validViews.indexOf(configuration.startView)) { + throw ('startView must be greater than minView'); + } + + if (!angular.isNumber(configuration.minuteStep)) { + throw ('minuteStep must be numeric'); + } + if (configuration.minuteStep <= 0 || configuration.minuteStep >= 60) { + throw ('minuteStep must be greater than zero and less than 60'); + } + if (configuration.configureOn !== null && !angular.isString(configuration.configureOn)) { + throw ('configureOn must be a string'); + } + if (configuration.configureOn !== null && configuration.configureOn.length < 1) { + throw ('configureOn must not be an empty string'); + } + if (configuration.renderOn !== null && !angular.isString(configuration.renderOn)) { + throw ('renderOn must be a string'); + } + if (configuration.renderOn !== null && configuration.renderOn.length < 1) { + throw ('renderOn must not be an empty string'); + } + if (configuration.dropdownSelector !== null && !angular.isString(configuration.dropdownSelector)) { + throw ('dropdownSelector must be a string'); + } + + /* istanbul ignore next */ + if (configuration.dropdownSelector !== null && ((typeof jQuery === 'undefined') || (typeof jQuery().dropdown !== 'function'))) { + $log.error('Please DO NOT specify the dropdownSelector option unless you are using jQuery AND Bootstrap.js. ' + + 'Please include jQuery AND Bootstrap.js, or write code to close the dropdown in the on-set-time callback. \n\n' + + 'The dropdownSelector configuration option is being removed because it will not function properly.'); + delete configuration.dropdownSelector; + } + }; + + return { + restrict: 'E', + require: 'ngModel', + template: '
' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
{{ data.previousViewDate.display }}
{{ day }}
' + + ' {{ dateObject.display }} ' + + '
{{ dateObject.display }}
', + scope: { + onSetTime: '&', + beforeRender: '&' + }, + replace: true, + link: function link(scope, element, attrs, ngModelController) { + + var configure = function configure() { + var directiveConfig = {}; + + if (attrs.datetimepickerConfig) { + directiveConfig = scope.$parent.$eval(attrs.datetimepickerConfig); + } + + var configuration = {}; + + angular.extend(configuration, defaultConfig, directiveConfig); + + validateConfiguration(configuration); + + return configuration; + }; + + var configuration = configure(); + + + var startOfDecade = function startOfDecade(unixDate) { + var startYear = (parseInt(moment.utc(unixDate).year() / 10, 10) * 10); + return moment.utc(unixDate).year(startYear).startOf('year'); + }; + + var dataFactory = { + year: function year(unixDate) { + var selectedDate = moment.utc(unixDate).startOf('year'); + // View starts one year before the decade starts and ends one year after the decade ends + // i.e. passing in a date of 1/1/2013 will give a range of 2009 to 2020 + // Truncate the last digit from the current year and subtract 1 to get the start of the decade + var startDecade = (parseInt(selectedDate.year() / 10, 10) * 10); + var startDate = moment.utc(startOfDecade(unixDate)).subtract(1, 'year').startOf('year'); + + var activeYear = ngModelController.$modelValue ? moment(ngModelController.$modelValue).year() : 0; + + var result = { + 'currentView': 'year', + 'nextView': configuration.minView === 'year' ? 'setTime' : 'month', + 'previousViewDate': new DateObject({ + utcDateValue: null, + display: startDecade + '-' + (startDecade + 9) + }), + 'leftDate': new DateObject({utcDateValue: moment.utc(startDate).subtract(9, 'year').valueOf()}), + 'rightDate': new DateObject({utcDateValue: moment.utc(startDate).add(11, 'year').valueOf()}), + 'dates': [] + }; + + for (var i = 0; i < 12; i += 1) { + var yearMoment = moment.utc(startDate).add(i, 'years'); + var dateValue = { + 'utcDateValue': yearMoment.valueOf(), + 'display': yearMoment.format('YYYY'), + 'past': yearMoment.year() < startDecade, + 'future': yearMoment.year() > startDecade + 9, + 'active': yearMoment.year() === activeYear + }; + + result.dates.push(new DateObject(dateValue)); + } + + return result; + }, + + month: function month(unixDate) { + + var startDate = moment.utc(unixDate).startOf('year'); + var previousViewDate = startOfDecade(unixDate); + var activeDate = ngModelController.$modelValue ? moment(ngModelController.$modelValue).format('YYYY-MMM') : 0; + + var result = { + 'previousView': 'year', + 'currentView': 'month', + 'nextView': configuration.minView === 'month' ? 'setTime' : 'day', + 'previousViewDate': new DateObject({ + utcDateValue: previousViewDate.valueOf(), + display: startDate.format('YYYY') + }), + 'leftDate': new DateObject({utcDateValue: moment.utc(startDate).subtract(1, 'year').valueOf()}), + 'rightDate': new DateObject({utcDateValue: moment.utc(startDate).add(1, 'year').valueOf()}), + 'dates': [] + }; + + for (var i = 0; i < 12; i += 1) { + var monthMoment = moment.utc(startDate).add(i, 'months'); + var dateValue = { + 'utcDateValue': monthMoment.valueOf(), + 'display': monthMoment.format('MMM'), + 'active': monthMoment.format('YYYY-MMM') === activeDate + }; + + result.dates.push(new DateObject(dateValue)); + } + + return result; + }, + + day: function day(unixDate) { + + var selectedDate = moment.utc(unixDate); + var startOfMonth = moment.utc(selectedDate).startOf('month'); + var previousViewDate = moment.utc(selectedDate).startOf('year'); + var endOfMonth = moment.utc(selectedDate).endOf('month'); + + var startDate = moment.utc(startOfMonth).subtract(Math.abs(startOfMonth.weekday()), 'days'); + + var activeDate = ngModelController.$modelValue ? moment(ngModelController.$modelValue).format('YYYY-MMM-DD') : ''; + + var result = { + 'previousView': 'month', + 'currentView': 'day', + 'nextView': configuration.minView === 'day' ? 'setTime' : 'hour', + 'previousViewDate': new DateObject({ + utcDateValue: previousViewDate.valueOf(), + display: startOfMonth.format('YYYY-MMM') + }), + 'leftDate': new DateObject({utcDateValue: moment.utc(startOfMonth).subtract(1, 'months').valueOf()}), + 'rightDate': new DateObject({utcDateValue: moment.utc(startOfMonth).add(1, 'months').valueOf()}), + 'dayNames': [], + 'weeks': [] + }; + + + for (var dayNumber = 0; dayNumber < 7; dayNumber += 1) { + result.dayNames.push(moment.utc().weekday(dayNumber).format('dd')); + } + + for (var i = 0; i < 6; i += 1) { + var week = {dates: []}; + for (var j = 0; j < 7; j += 1) { + var monthMoment = moment.utc(startDate).add((i * 7) + j, 'days'); + var dateValue = { + 'utcDateValue': monthMoment.valueOf(), + 'display': monthMoment.format('D'), + 'active': monthMoment.format('YYYY-MMM-DD') === activeDate, + 'past': monthMoment.isBefore(startOfMonth), + 'future': monthMoment.isAfter(endOfMonth) + }; + week.dates.push(new DateObject(dateValue)); + } + result.weeks.push(week); + } + + return result; + }, + + hour: function hour(unixDate) { + var selectedDate = moment.utc(unixDate).startOf('day'); + var previousViewDate = moment.utc(selectedDate).startOf('month'); + + var activeFormat = ngModelController.$modelValue ? moment(ngModelController.$modelValue).format('YYYY-MM-DD H') : ''; + + var result = { + 'previousView': 'day', + 'currentView': 'hour', + 'nextView': configuration.minView === 'hour' ? 'setTime' : 'minute', + 'previousViewDate': new DateObject({ + utcDateValue: previousViewDate.valueOf(), + display: selectedDate.format('ll') + }), + 'leftDate': new DateObject({utcDateValue: moment.utc(selectedDate).subtract(1, 'days').valueOf()}), + 'rightDate': new DateObject({utcDateValue: moment.utc(selectedDate).add(1, 'days').valueOf()}), + 'dates': [] + }; + + for (var i = 0; i < 24; i += 1) { + var hourMoment = moment.utc(selectedDate).add(i, 'hours'); + var dateValue = { + 'utcDateValue': hourMoment.valueOf(), + 'display': hourMoment.format('LT'), + 'active': hourMoment.format('YYYY-MM-DD H') === activeFormat + }; + + result.dates.push(new DateObject(dateValue)); + } + + return result; + }, + + minute: function minute(unixDate) { + var selectedDate = moment.utc(unixDate).startOf('hour'); + var previousViewDate = moment.utc(selectedDate).startOf('day'); + var activeFormat = ngModelController.$modelValue ? moment(ngModelController.$modelValue).format('YYYY-MM-DD H:mm') : ''; + + var result = { + 'previousView': 'hour', + 'currentView': 'minute', + 'nextView': 'setTime', + 'previousViewDate': new DateObject({ + utcDateValue: previousViewDate.valueOf(), + display: selectedDate.format('lll') + }), + 'leftDate': new DateObject({utcDateValue: moment.utc(selectedDate).subtract(1, 'hours').valueOf()}), + 'rightDate': new DateObject({utcDateValue: moment.utc(selectedDate).add(1, 'hours').valueOf()}), + 'dates': [] + }; + + var limit = 60 / configuration.minuteStep; + + for (var i = 0; i < limit; i += 1) { + var hourMoment = moment.utc(selectedDate).add(i * configuration.minuteStep, 'minute'); + var dateValue = { + 'utcDateValue': hourMoment.valueOf(), + 'display': hourMoment.format('LT'), + 'active': hourMoment.format('YYYY-MM-DD H:mm') === activeFormat + }; + + result.dates.push(new DateObject(dateValue)); + } + + return result; + }, + + setTime: function setTime(unixDate) { + var tempDate = new Date(unixDate); + var newDate = new Date(tempDate.getUTCFullYear(), tempDate.getUTCMonth(), tempDate.getUTCDate(), tempDate.getUTCHours(), tempDate.getUTCMinutes(), tempDate.getUTCSeconds(), tempDate.getUTCMilliseconds()); + + var oldDate = ngModelController.$modelValue; + ngModelController.$setViewValue(newDate); + + if (configuration.dropdownSelector) { + jQuery(configuration.dropdownSelector).dropdown('toggle'); + } + + scope.onSetTime({newDate: newDate, oldDate: oldDate}); + + return dataFactory[configuration.startView](unixDate); + } + }; + + var getUTCTime = function getUTCTime(modelValue) { + var tempDate = (modelValue ? moment(modelValue).toDate() : new Date()); + return tempDate.getTime() - (tempDate.getTimezoneOffset() * 60000); + }; + + scope.changeView = function changeView(viewName, dateObject, event) { + if (event) { + event.stopPropagation(); + event.preventDefault(); + } + + if (viewName && (dateObject.utcDateValue > -Infinity) && dateObject.selectable && dataFactory[viewName]) { + var result = dataFactory[viewName](dateObject.utcDateValue); + + var weekDates = []; + if (result.weeks) { + for (var i = 0; i < result.weeks.length; i += 1) { + var week = result.weeks[i]; + for (var j = 0; j < week.dates.length; j += 1) { + var weekDate = week.dates[j]; + weekDates.push(weekDate); + } + } + } + + scope.beforeRender({ + $view: result.currentView, + $dates: result.dates || weekDates, + $leftDate: result.leftDate, + $upDate: result.previousViewDate, + $rightDate: result.rightDate + }); + + scope.data = result; + } + }; + + ngModelController.$render = function $render() { + scope.changeView(configuration.startView, new DateObject({utcDateValue: getUTCTime(ngModelController.$viewValue)})); + }; + + if (configuration.configureOn) { + scope.$on(configuration.configureOn, function () { + configuration = configure(); + ngModelController.$render(); + }); + } + if (configuration.renderOn) { + scope.$on(configuration.renderOn, ngModelController.$render); + } + } + }; + }]); +})); diff --git a/www/libs/angular-bootstrap-duallistbox/dist/angular-bootstrap-duallistbox.min.js b/www/libs/angular-bootstrap-duallistbox/dist/angular-bootstrap-duallistbox.min.js new file mode 100644 index 0000000..a811246 --- /dev/null +++ b/www/libs/angular-bootstrap-duallistbox/dist/angular-bootstrap-duallistbox.min.js @@ -0,0 +1,9 @@ +/** + * angular-bootstrap-duallistbox + * @version v0.1.0 - 2015-06-13 + * @author Francesco Pontillo (francescopontillo@gmail.com) + * @link https://github.com/frapontillo/angular-bootstrap-duallistbox + * @license Apache License 2.0 +**/ + +"use strict";angular.module("frapontillo.bootstrap-duallistbox",[]),angular.module("frapontillo.bootstrap-duallistbox").directive("bsDuallistbox",["$compile","$timeout",function(a,b){return{restrict:"A",require:"ngModel",link:function(c,d,e){var f,g=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,h=e.ngOptions.match(g)[7],i=function(a){return a===!0||"true"===a},j={bootstrap2:{changeFn:"setBootstrap2Compatible",transformFn:i},postfix:"setHelperSelectNamePostfix",selectMinHeight:{changeFn:"setSelectOrMinimalHeight",defaultValue:100},filter:{changeFn:"setShowFilterInputs",defaultValue:!0,transformFn:i},filterClear:{changeFn:"setFilterTextClear",defaultValue:"show all"},filterPlaceholder:"setFilterPlaceHolder",filterValues:{changeFn:"setFilterOnValues",transformFn:i},moveOnSelect:{changeFn:"setMoveOnSelect",defaultValue:!0,transformFn:i},preserveSelection:"setPreserveSelectionOnMove",moveSelectedLabel:"setMoveSelectedLabel",moveAllLabel:"setMoveAllLabel",removeSelectedLabel:"setRemoveSelectedLabel",removeAllLabel:"setRemoveAllLabel",selectedListLabel:"setSelectedListLabel",nonSelectedListLabel:"setNonSelectedListLabel",infoAll:{changeFn:"setInfoText",defaultValue:"Showing all {0}"},infoFiltered:{changeFn:"setInfoTextFiltered",defaultValue:'Filtered {0} from {1}'},infoEmpty:{changeFn:"setInfoTextEmpty",defaultValue:"Empty list"}},k=function(a){var b,c,d=j[a],f=e[a];return angular.isObject(d)&&(b=d.defaultValue,c=d.transformFn),f||(f=b),angular.isFunction(c)&&(f=c(f)),f},l=function(a){var b=j[a],c=b;return angular.isObject(b)&&(c=b.changeFn),c},m=function(){c.$watch(e.ngModel,function(){o(),n()}),c.$watch(h,n,!0),c.$watch(e.filterNonSelected,function(){n()}),c.$watch(e.filterSelected,function(){n()}),angular.forEach(j,function(a,b){e.$observe(b,function(){var a=l(b),c=k(b);d.bootstrapDualListbox(a,c,!0)})})},n=function(){b(function(){d.bootstrapDualListbox("refresh")})},o=function(){f||p()},p=function(){var b={};angular.forEach(j,function(a,c){var d=k(c);b[c]=d}),f=d.bootstrapDualListbox({bootstrap2Compatible:b.bootstrap2,filterTextClear:b.filterClear,filterPlaceHolder:b.filterPlaceholder,moveSelectedLabel:b.moveSelectedLabel,moveAllLabel:b.moveAllLabel,removeSelectedLabel:b.removeSelectedLabel,removeAllLabel:b.removeAllLabel,moveOnSelect:b.moveOnSelect,preserveSelectionOnMove:b.preserveSelection,selectedListLabel:b.selectedListLabel,nonSelectedListLabel:b.nonSelectedListLabel,helperSelectNamePostfix:b.postfix,selectorMinimalHeight:b.selectMinHeight,showFilterInputs:b.filter,nonSelectedFilter:"",selectedFilter:"",infoText:b.infoAll,infoTextFiltered:b.infoFiltered,infoTextEmpty:b.infoEmpty,filterOnValues:b.filterValues});var g=d.bootstrapDualListbox("getContainer"),h=g.find(".box1 .filter");h.attr("ng-model",e.filterNonSelected),a(h)(c);var i=g.find(".box2 .filter");i.attr("ng-model",e.filterSelected),a(i)(c)};m(),c.$on("$destroy",function(){d.bootstrapDualListbox("destroy")})}}}]); diff --git a/www/libs/angular-bootstrap-switch/.bower.json b/www/libs/angular-bootstrap-switch/.bower.json new file mode 100644 index 0000000..c422101 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/.bower.json @@ -0,0 +1,41 @@ +{ + "name": "angular-bootstrap-switch", + "version": "0.4.1", + "author": { + "name": "Francesco Pontillo", + "email": "francescopontillo@gmail.com", + "url": "https://github.com/frapontillo" + }, + "homepage": "https://github.com/frapontillo/angular-bootstrap-switch", + "repository": { + "type": "git", + "url": "git@github.com:frapontillo/angular-bootstrap-switch.git" + }, + "licenses": [ + { + "type": "Apache License 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + ], + "main": "./dist/angular-bootstrap-switch.js", + "dependencies": { + "angular": "~1.4.0", + "jquery": ">=1.9.0", + "bootstrap": ">=2.3.2", + "bootstrap-switch": "3.3.2" + }, + "devDependencies": { + "angular-mocks": "~1.4.0", + "angular-scenario": "~1.4.0" + }, + "_release": "0.4.1", + "_resolution": { + "type": "version", + "tag": "0.4.1", + "commit": "b740c532955c7a1f375d25802cb99cc1d5306441" + }, + "_source": "git://github.com/frapontillo/angular-bootstrap-switch.git", + "_target": "~0.4.1", + "_originalSource": "angular-bootstrap-switch", + "_direct": true +} \ No newline at end of file diff --git a/www/libs/angular-bootstrap-switch/.bowerrc b/www/libs/angular-bootstrap-switch/.bowerrc new file mode 100644 index 0000000..44491d3 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "bower_components" +} diff --git a/www/libs/angular-bootstrap-switch/.editorconfig b/www/libs/angular-bootstrap-switch/.editorconfig new file mode 100644 index 0000000..c2cdfb8 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/www/libs/angular-bootstrap-switch/.jshintrc b/www/libs/angular-bootstrap-switch/.jshintrc new file mode 100644 index 0000000..861a058 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/.jshintrc @@ -0,0 +1,26 @@ +{ + "node": true, + "browser": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "indent": 2, + "latedef": true, + "newcap": true, + "noarg": true, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": true, + "trailing": true, + "smarttabs": true, + "globals": { + "angular": false, + "$": false, + "jQuery": false + } +} diff --git a/www/libs/angular-bootstrap-switch/.npmignore b/www/libs/angular-bootstrap-switch/.npmignore new file mode 100644 index 0000000..4745688 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/.npmignore @@ -0,0 +1,12 @@ +.git/ +.idea/ +.tmp/ +bower_components/ +common/ +src/ +node_modules/ +.editorconfig +.gitattributes +.gitignore +.jshintrc +.travis.yml \ No newline at end of file diff --git a/www/libs/angular-bootstrap-switch/.travis.yml b/www/libs/angular-bootstrap-switch/.travis.yml new file mode 100644 index 0000000..a7c5504 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/.travis.yml @@ -0,0 +1,16 @@ +language: node_js + +node_js: + - '0.10' + +before_script: + - export DISPLAY=:99.0 + - export PHANTOMJS_BIN=/usr/local/phantomjs/bin/phantomjs + - sh -e /etc/init.d/xvfb start + - sleep 3 # give xvfb some time to start + - 'npm install -g bower grunt-cli' + - 'npm install' + - 'bower install' + +script: + - grunt diff --git a/www/libs/angular-bootstrap-switch/dist/angular-bootstrap-switch.js b/www/libs/angular-bootstrap-switch/dist/angular-bootstrap-switch.js new file mode 100644 index 0000000..e1532c6 --- /dev/null +++ b/www/libs/angular-bootstrap-switch/dist/angular-bootstrap-switch.js @@ -0,0 +1,252 @@ +/** + * angular-bootstrap-switch + * @version v0.4.1 - 2015-06-15 + * @author Francesco Pontillo (francescopontillo@gmail.com) + * @link https://github.com/frapontillo/angular-bootstrap-switch + * @license Apache License 2.0(http://www.apache.org/licenses/LICENSE-2.0.html) +**/ + +(function() { +'use strict'; + +// Source: common/module.js +angular.module('frapontillo.bootstrap-switch', []); + +// Source: dist/.temp/directives/bsSwitch.js +angular.module('frapontillo.bootstrap-switch').directive('bsSwitch', [ + '$parse', + '$timeout', + function ($parse, $timeout) { + return { + restrict: 'A', + require: 'ngModel', + link: function link(scope, element, attrs, controller) { + var isInit = false; + /** + * Return the true value for this specific checkbox. + * @returns {Object} representing the true view value; if undefined, returns true. + */ + var getTrueValue = function () { + if (attrs.type === 'radio') { + return attrs.value || $parse(attrs.ngValue)(scope) || true; + } + var trueValue = $parse(attrs.ngTrueValue)(scope); + if (angular.isUndefined(trueValue)) { + trueValue = true; + } + return trueValue; + }; + /** + * Get a boolean value from a boolean-like string, evaluating it on the current scope. + * @param value The input object + * @returns {boolean} A boolean value + */ + var getBooleanFromString = function (value) { + return scope.$eval(value) === true; + }; + /** + * Get a boolean value from a boolean-like string, defaulting to true if undefined. + * @param value The input object + * @returns {boolean} A boolean value + */ + var getBooleanFromStringDefTrue = function (value) { + return value === true || value === 'true' || !value; + }; + /** + * Returns the value if it is truthy, or undefined. + * + * @param value The value to check. + * @returns the original value if it is truthy, {@link undefined} otherwise. + */ + var getValueOrUndefined = function (value) { + return value ? value : undefined; + }; + /** + * Get the value of the angular-bound attribute, given its name. + * The returned value may or may not equal the attribute value, as it may be transformed by a function. + * + * @param attrName The angular-bound attribute name to get the value for + * @returns {*} The attribute value + */ + var getSwitchAttrValue = function (attrName) { + var map = { + 'switchRadioOff': getBooleanFromStringDefTrue, + 'switchActive': function (value) { + return !getBooleanFromStringDefTrue(value); + }, + 'switchAnimate': getBooleanFromStringDefTrue, + 'switchLabel': function (value) { + return value ? value : ' '; + }, + 'switchIcon': function (value) { + if (value) { + return ''; + } + }, + 'switchWrapper': function (value) { + return value || 'wrapper'; + }, + 'switchInverse': getBooleanFromString, + 'switchReadonly': getBooleanFromString + }; + var transFn = map[attrName] || getValueOrUndefined; + return transFn(attrs[attrName]); + }; + /** + * Set a bootstrapSwitch parameter according to the angular-bound attribute. + * The parameter will be changed only if the switch has already been initialized + * (to avoid creating it before the model is ready). + * + * @param element The switch to apply the parameter modification to + * @param attr The name of the switch parameter + * @param modelAttr The name of the angular-bound parameter + */ + var setSwitchParamMaybe = function (element, attr, modelAttr) { + if (!isInit) { + return; + } + var newValue = getSwitchAttrValue(modelAttr); + element.bootstrapSwitch(attr, newValue); + }; + var setActive = function () { + setSwitchParamMaybe(element, 'disabled', 'switchActive'); + }; + /** + * If the directive has not been initialized yet, do so. + */ + var initMaybe = function () { + // if it's the first initialization + if (!isInit) { + var viewValue = controller.$modelValue === getTrueValue(); + isInit = !isInit; + // Bootstrap the switch plugin + element.bootstrapSwitch({ + radioAllOff: getSwitchAttrValue('switchRadioOff'), + disabled: getSwitchAttrValue('switchActive'), + state: viewValue, + onText: getSwitchAttrValue('switchOnText'), + offText: getSwitchAttrValue('switchOffText'), + onColor: getSwitchAttrValue('switchOnColor'), + offColor: getSwitchAttrValue('switchOffColor'), + animate: getSwitchAttrValue('switchAnimate'), + size: getSwitchAttrValue('switchSize'), + labelText: attrs.switchLabel ? getSwitchAttrValue('switchLabel') : getSwitchAttrValue('switchIcon'), + wrapperClass: getSwitchAttrValue('switchWrapper'), + handleWidth: getSwitchAttrValue('switchHandleWidth'), + labelWidth: getSwitchAttrValue('switchLabelWidth'), + inverse: getSwitchAttrValue('switchInverse'), + readonly: getSwitchAttrValue('switchReadonly') + }); + if (attrs.type === 'radio') { + controller.$setViewValue(controller.$modelValue); + } else { + controller.$setViewValue(viewValue); + } + } + }; + /** + * Listen to model changes. + */ + var listenToModel = function () { + attrs.$observe('switchActive', function (newValue) { + var active = getBooleanFromStringDefTrue(newValue); + // if we are disabling the switch, delay the deactivation so that the toggle can be switched + if (!active) { + $timeout(function () { + setActive(active); + }); + } else { + // if we are enabling the switch, set active right away + setActive(active); + } + }); + function modelValue() { + return controller.$modelValue; + } + // When the model changes + scope.$watch(modelValue, function (newValue) { + initMaybe(); + if (newValue !== undefined) { + element.bootstrapSwitch('state', newValue === getTrueValue(), false); + } else { + element.bootstrapSwitch('toggleIndeterminate', true, false); + } + }, true); + // angular attribute to switch property bindings + var bindings = { + 'switchRadioOff': 'radioAllOff', + 'switchOnText': 'onText', + 'switchOffText': 'offText', + 'switchOnColor': 'onColor', + 'switchOffColor': 'offColor', + 'switchAnimate': 'animate', + 'switchSize': 'size', + 'switchLabel': 'labelText', + 'switchIcon': 'labelText', + 'switchWrapper': 'wrapperClass', + 'switchHandleWidth': 'handleWidth', + 'switchLabelWidth': 'labelWidth', + 'switchInverse': 'inverse', + 'switchReadonly': 'readonly' + }; + var observeProp = function (prop, bindings) { + return function () { + attrs.$observe(prop, function () { + setSwitchParamMaybe(element, bindings[prop], prop); + }); + }; + }; + // for every angular-bound attribute, observe it and trigger the appropriate switch function + for (var prop in bindings) { + attrs.$observe(prop, observeProp(prop, bindings)); + } + }; + /** + * Listen to view changes. + */ + var listenToView = function () { + if (attrs.type === 'radio') { + // when the switch is clicked + element.on('change.bootstrapSwitch', function (e) { + // discard not real change events + if (controller.$modelValue === controller.$viewValue && e.target.checked !== $(e.target).bootstrapSwitch('state')) { + // $setViewValue --> $viewValue --> $parsers --> $modelValue + // if the switch is indeed selected + if (e.target.checked) { + // set its value into the view + controller.$setViewValue(getTrueValue()); + } else if (getTrueValue() === controller.$viewValue) { + // otherwise if it's been deselected, delete the view value + controller.$setViewValue(undefined); + } + } + }); + } else { + // When the checkbox switch is clicked, set its value into the ngModel + element.on('switchChange.bootstrapSwitch', function (e) { + // $setViewValue --> $viewValue --> $parsers --> $modelValue + controller.$setViewValue(e.target.checked); + }); + } + }; + // Listen and respond to view changes + listenToView(); + // Listen and respond to model changes + listenToModel(); + // On destroy, collect ya garbage + scope.$on('$destroy', function () { + element.bootstrapSwitch('destroy'); + }); + } + }; + } +]).directive('bsSwitch', function () { + return { + restrict: 'E', + require: 'ngModel', + template: '', + replace: true + }; +}); +// Source: bsSwitch.suffix +})(); \ No newline at end of file diff --git a/www/libs/angular-bootstrap/ui-bootstrap-tpls-0.14.3.min.js b/www/libs/angular-bootstrap/ui-bootstrap-tpls-0.14.3.min.js new file mode 100644 index 0000000..f729eda --- /dev/null +++ b/www/libs/angular-bootstrap/ui-bootstrap-tpls-0.14.3.min.js @@ -0,0 +1,12 @@ +/* + * angular-ui-bootstrap + * http://angular-ui.github.io/bootstrap/ + + * Version: 0.14.3 - 2015-10-23 + * License: MIT + */ +angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-popup.html","template/tooltip/tooltip-popup.html","template/tooltip/tooltip-template-popup.html","template/popover/popover-html.html","template/popover/popover-template.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$injector",function(a,b){var c=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,d,e){function f(){d.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),c?c(d,{addClass:"in",easing:"ease",to:{height:d[0].scrollHeight+"px"}}).start()["finally"](g):a.addClass(d,"in",{to:{height:d[0].scrollHeight+"px"}}).then(g)}function g(){d.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function h(){return d.hasClass("collapse")||d.hasClass("in")?(d.css({height:d[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(c?c(d,{removeClass:"in",to:{height:"0"}}).start()["finally"](i):a.removeClass(d,"in",{to:{height:"0"}}).then(i))):i()}function i(){d.css({height:"0"}),d.removeClass("collapsing").addClass("collapse")}b.$watch(e.uibCollapse,function(a){a?h():f()})}}}]),angular.module("ui.bootstrap.collapse").value("$collapseSuppressWarning",!1).directive("collapse",["$animate","$injector","$log","$collapseSuppressWarning",function(a,b,c,d){var e=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,f,g){function h(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start().done(i):a.animate(f,{},{height:f[0].scrollHeight+"px"}).then(i)}function i(){f.removeClass("collapsing").addClass("collapse in").css({height:"auto"})}function j(){return f.hasClass("collapse")||f.hasClass("in")?(f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse in").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(e?e(f,{to:{height:"0"}}).start().done(k):a.animate(f,{},{height:"0"}).then(k))):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse")}d||c.warn("collapse is now deprecated. Use uib-collapse instead."),b.$watch(g.collapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass,a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)}}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:["?^uibAccordionGroup","?^accordionGroup"],link:function(a,b,c,d){d=d[0]?d[0]:d[1],a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){a&&(b.find("span").html(""),b.find("span").append(a))})}}}),angular.module("ui.bootstrap.accordion").value("$accordionSuppressWarning",!1).controller("AccordionController",["$scope","$attrs","$controller","$log","$accordionSuppressWarning",function(a,b,c,d,e){e||d.warn("AccordionController is now deprecated. Use UibAccordionController instead."),angular.extend(this,c("UibAccordionController",{$scope:a,$attrs:b}))}]).directive("accordion",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",controller:"AccordionController",controllerAs:"accordion",transclude:!0,replace:!1,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"},link:function(){b||a.warn("accordion is now deprecated. Use uib-accordion instead.")}}}]).directive("accordionGroup",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(c,d,e,f){b||a.warn("accordion-group is now deprecated. Use uib-accordion-group instead."),f.addGroup(c),c.openClass=e.openClass||"panel-open",c.panelClass=e.panelClass,c.$watch("isOpen",function(a){d.toggleClass(c.openClass,!!a),a&&f.closeOthers(c)}),c.toggleOpen=function(a){c.isDisabled||a&&32!==a.which||(c.isOpen=!c.isOpen)}}}}]).directive("accordionHeading",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(c,d,e,f,g){b||a.warn("accordion-heading is now deprecated. Use uib-accordion-heading instead."),f.setHeading(g(c,angular.noop))}}}]).directive("accordionTransclude",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordionGroup",link:function(c,d,e,f){b||a.warn("accordion-transclude is now deprecated. Use uib-accordion-transclude instead."),c.$watch(function(){return f[e.accordionTransclude]},function(a){a&&(d.find("span").html(""),d.find("span").append(a))})}}}]),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.alert").value("$alertSuppressWarning",!1).controller("AlertController",["$scope","$attrs","$controller","$log","$alertSuppressWarning",function(a,b,c,d,e){e||d.warn("AlertController is now deprecated. Use UibAlertController instead."),angular.extend(this,c("UibAlertController",{$scope:a,$attrs:b}))}]).directive("alert",["$log","$alertSuppressWarning",function(a,b){return{controller:"AlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"},link:function(){b||a.warn("alert is now deprecated. Use uib-alert instead.")}}}]),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",function(){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(a,b,c,d){var e=d[0],f=d[1];b.find("input").css({display:"none"}),f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.uibBtnRadio)))},b.on(e.toggleEvent,function(){if(!c.disabled){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.uibBtnRadio)),f.$render()})}})}}}).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.buttons").value("$buttonsSuppressWarning",!1).controller("ButtonsController",["$controller","$log","$buttonsSuppressWarning",function(a,b,c){c||b.warn("ButtonsController is now deprecated. Use UibButtonsController instead."),angular.extend(this,a("UibButtonsController"))}]).directive("btnRadio",["$log","$buttonsSuppressWarning",function(a,b){return{require:["btnRadio","ngModel"],controller:"ButtonsController",controllerAs:"buttons",link:function(c,d,e,f){b||a.warn("btn-radio is now deprecated. Use uib-btn-radio instead.");var g=f[0],h=f[1];d.find("input").css({display:"none"}),h.$render=function(){d.toggleClass(g.activeClass,angular.equals(h.$modelValue,c.$eval(e.btnRadio)))},d.bind(g.toggleEvent,function(){if(!e.disabled){var a=d.hasClass(g.activeClass);(!a||angular.isDefined(e.uncheckable))&&c.$apply(function(){h.$setViewValue(a?null:c.$eval(e.btnRadio)),h.$render()})}})}}}]).directive("btnCheckbox",["$document","$log","$buttonsSuppressWarning",function(a,b,c){return{require:["btnCheckbox","ngModel"],controller:"ButtonsController",controllerAs:"button",link:function(d,e,f,g){function h(){return j(f.btnCheckboxTrue,!0)}function i(){return j(f.btnCheckboxFalse,!1)}function j(a,b){var c=d.$eval(a);return angular.isDefined(c)?c:b}c||b.warn("btn-checkbox is now deprecated. Use uib-btn-checkbox instead.");var k=g[0],l=g[1];e.find("input").css({display:"none"}),l.$render=function(){e.toggleClass(k.activeClass,angular.equals(l.$modelValue,h()))},e.bind(k.toggleEvent,function(){f.disabled||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})}),e.on("keypress",function(b){f.disabled||32!==b.which||a[0].activeElement!==e[0]||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})})}}}]),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$animate",function(a,b,c,d){function e(b,c,e){s||(angular.extend(b,{direction:e,active:!0}),angular.extend(m.currentSlide||{},{direction:e,active:!1}),d.enabled()&&!a.noTransition&&!a.$currentTransition&&b.$element&&m.slides.length>1&&(b.$element.data(q,b.direction),m.currentSlide&&m.currentSlide.$element&&m.currentSlide.$element.data(q,b.direction),a.$currentTransition=!0,o?d.on("addClass",b.$element,function(b,c){"close"===c&&(a.$currentTransition=null,d.off("addClass",b))}):b.$element.one("$animate:close",function(){a.$currentTransition=null})),m.currentSlide=b,r=c,g())}function f(a){if(angular.isUndefined(n[a].index))return n[a];var b;n.length;for(b=0;b0&&(k=c(i,b))}function h(){k&&(c.cancel(k),k=null)}function i(){var b=+a.interval;l&&!isNaN(b)&&b>0&&n.length?a.next():a.pause()}function j(b){b.length||(a.$currentTransition=null)}var k,l,m=this,n=m.slides=a.slides=[],o=angular.version.minor>=4,p="uib-noTransition",q="uib-slideDirection",r=-1;m.currentSlide=null;var s=!1;m.select=a.select=function(b,c){var d=a.indexOfSlide(b);void 0===c&&(c=d>m.getCurrentIndex()?"next":"prev"),b&&b!==m.currentSlide&&!a.$currentTransition&&e(b,d,c)},a.$on("$destroy",function(){s=!0}),m.getCurrentIndex=function(){return m.currentSlide&&angular.isDefined(m.currentSlide.index)?+m.currentSlide.index:r},a.indexOfSlide=function(a){return angular.isDefined(a.index)?+a.index:n.indexOf(a)},a.next=function(){var b=(m.getCurrentIndex()+1)%n.length;return 0===b&&a.noWrap()?void a.pause():m.select(f(b),"next")},a.prev=function(){var b=m.getCurrentIndex()-1<0?n.length-1:m.getCurrentIndex()-1;return a.noWrap()&&b===n.length-1?void a.pause():m.select(f(b),"prev")},a.isActive=function(a){return m.currentSlide===a},a.$watch("interval",g),a.$watchCollection("slides",j),a.$on("$destroy",h),a.play=function(){l||(l=!0,g())},a.pause=function(){a.noPause||(l=!1,h())},m.addSlide=function(b,c){b.$element=c,n.push(b),1===n.length||b.active?(m.select(n[n.length-1]),1===n.length&&a.play()):b.active=!1},m.removeSlide=function(a){angular.isDefined(a.index)&&n.sort(function(a,b){return+a.index>+b.index});var b=n.indexOf(a);n.splice(b,1),n.length>0&&a.active?b>=n.length?m.select(n[b-1]):m.select(n[b]):r>b&&r--,0===n.length&&(m.currentSlide=null)},a.$watch("noTransition",function(a){b.data(p,a)})}]).directive("uibCarousel",[function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}]).directive("uibSlide",function(){return{require:"^uibCarousel",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)}),a.$watch("active",function(b){b&&d.select(a)})}}}).animation(".item",["$injector","$animate",function(a,b){function c(a,b,c){a.removeClass(b),c&&c()}var d="uib-noTransition",e="uib-slideDirection",f=null;return a.has("$animateCss")&&(f=a.get("$animateCss")),{beforeAddClass:function(a,g,h){if("active"==g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k+" "+j,h);return a.addClass(j),f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()},beforeRemoveClass:function(a,g,h){if("active"===g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k,h);return f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()}}}]),angular.module("ui.bootstrap.carousel").value("$carouselSuppressWarning",!1).controller("CarouselController",["$scope","$element","$controller","$log","$carouselSuppressWarning",function(a,b,c,d,e){e||d.warn("CarouselController is now deprecated. Use UibCarouselController instead."),angular.extend(this,c("UibCarouselController",{$scope:a,$element:b}))}]).directive("carousel",["$log","$carouselSuppressWarning",function(a,b){return{transclude:!0,replace:!0,controller:"CarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"},link:function(){b||a.warn("carousel is now deprecated. Use uib-carousel instead.")}}}]).directive("slide",["$log","$carouselSuppressWarning",function(a,b){return{require:"^carousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(c,d,e,f){b||a.warn("slide is now deprecated. Use uib-slide instead."),f.addSlide(c,d),c.$on("$destroy",function(){f.removeSlide(c)}),c.$watch("active",function(a){a&&f.select(c)})}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","orderByFilter",function(a,b,c){function d(a){var b=[],d=a.split("");return angular.forEach(g,function(c,e){var f=a.indexOf(e);if(f>-1){a=a.split(""),d[f]="("+c.regex+")",a[f]="$";for(var g=f+1,h=f+e.length;h>g;g++)d[g]="",a[g]="$";a=a.join(""),b.push({index:f,apply:c.apply})}}),{regex:new RegExp("^"+d.join("")+"$"),map:c(b,"index")}}function e(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}var f,g,h=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){f=b.id,this.parsers={},g={yyyy:{regex:"\\d{4}",apply:function(a){this.year=+a}},yy:{regex:"\\d{2}",apply:function(a){this.year=+a+2e3}},y:{regex:"\\d{1,4}",apply:function(a){this.year=+a}},MMMM:{regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)}},MMM:{regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)}},MM:{regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1}},M:{regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1}},dd:{regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},d:{regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},EEEE:{regex:b.DATETIME_FORMATS.DAY.join("|")},EEE:{regex:b.DATETIME_FORMATS.SHORTDAY.join("|")},HH:{regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a}},hh:{regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a}},H:{regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a}},h:{regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a}},mm:{regex:"[0-5][0-9]",apply:function(a){this.minutes=+a}},m:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a}},sss:{regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a}},ss:{regex:"[0-5][0-9]",apply:function(a){this.seconds=+a}},s:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a}},a:{regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)}}}},this.init(),this.parse=function(c,g,i){if(!angular.isString(c)||!g)return c;g=b.DATETIME_FORMATS[g]||g,g=g.replace(h,"\\$&"),b.id!==f&&this.init(),this.parsers[g]||(this.parsers[g]=d(g));var j=this.parsers[g],k=j.regex,l=j.map,m=c.match(k);if(m&&m.length){var n,o;angular.isDate(i)&&!isNaN(i.getTime())?n={year:i.getFullYear(),month:i.getMonth(),date:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),milliseconds:i.getMilliseconds()}:(i&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var p=1,q=m.length;q>p;p++){var r=l[p-1];r.apply&&r.apply.call(n,m[p])}return e(n.year,n.month,n.date)&&(angular.isDate(i)&&!isNaN(i.getTime())?(o=new Date(i),o.setFullYear(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)):o=new Date(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)),o}}}]),angular.module("ui.bootstrap.dateparser").value("$dateParserSuppressWarning",!1).service("dateParser",["$log","$dateParserSuppressWarning","uibDateParser",function(a,b,c){b||a.warn("dateParser is now deprecated. Use uibDateParser instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return"static"===(c(a,"position")||"static")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop("offsetWidth"),height:g.height||b.prop("offsetHeight"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split("-"),j=i[0],k=i[1]||"center";e=d?this.offset(a):this.position(a),f=b.prop("offsetWidth"),g=b.prop("offsetHeight");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case"right":h={top:m[k](),left:l[j]()};break;case"left":h={top:m[k](),left:e.left-f};break;case"bottom":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module("ui.bootstrap.position").value("$positionSuppressWarning",!1).service("$position",["$log","$positionSuppressWarning","$uibPosition",function(a,b,c){b||a.warn("$position is now deprecated. Use $uibPosition instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).value("$datepickerSuppressError",!1).constant("uibDatepickerConfig",{formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",datepickerMode:"day",minMode:"day",maxMode:"year",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null,shortcutPropagation:!1}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){i[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){i[d]=angular.isDefined(c)?c:b[d],a[d]=i[d],("minMode"==d&&i.modes.indexOf(a.datepickerMode)i.modes.indexOf(i[d]))&&(a.datepickerMode=i[d])}):(i[d]=g[d]||null,a[d]=i[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(j.$isEmpty(j.$modelValue)||j.$invalid)&&(i.activeDate=a,i.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$viewValue){var a=new Date(j.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$viewValue?new Date(j.$viewValue):null;j.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$viewValue?new Date(j.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$viewValue?new Date(j.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){i.element[0].focus()};a.$on("uib:datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),i.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):a.toggleMode("up"===c?1:-1)}}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/e,10)*e+1}var e;this.element=b,this.yearpickerInit=function(){e=this.yearRange,this.step={years:e}},this._refreshView=function(){for(var b,c=new Array(e),f=0,g=d(this.activeDate.getFullYear());e>f;f++)b=new Date(this.activeDate),b.setFullYear(g+f,0,1),c[f]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+f});a.title=[c[0].label,c[e-1].label].join(" - "),a.rows=this.split(c,5)},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=5:"right"===a?c+=1:"down"===a?c+=5:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*this.step.years:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+e-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/day.html"},require:["^?uibDatepicker","uibDaypicker","^?datepicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/month.html"},require:["^?uibDatepicker","uibMonthpicker","^?datepicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/year.html"},require:["^?uibDatepicker","uibYearpicker","^?datepicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0]||d[2];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}).constant("uibDatepickerPopupConfig",{datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"template/datepicker/popup.html",datepickerTemplateUrl:"template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},currentText:"Today",clearText:"Clear",closeText:"Done",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0,onOpenFocus:!0}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$parse","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l){ +function m(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function n(b){if(angular.isNumber(b)&&(b=new Date(b)),b){if(angular.isDate(b)&&!isNaN(b))return b;if(angular.isString(b)){var c=j.parse(b,r,a.date);return isNaN(c)?void 0:c}return void 0}return null}function o(a,b){var d=a||b;if(!c.ngRequired&&!d)return!0;if(angular.isNumber(d)&&(d=new Date(d)),d){if(angular.isDate(d)&&!isNaN(d))return!0;if(angular.isString(d)){var e=j.parse(d,r);return!isNaN(e)}return!1}return!0}function p(c){var d=A[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}function q(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}var r,s,t,u,v,w,x,y,z,A,B={},C=!1;a.watchData={},this.init=function(h){if(z=h,s=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):k.closeOnDateSelection,t=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):k.appendToBody,u=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):k.onOpenFocus,v=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:k.datepickerPopupTemplateUrl,w=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:k.datepickerTemplateUrl,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):k.showButtonBar,k.html5Types[c.type]?(r=k.html5Types[c.type],C=!0):(r=c.datepickerPopup||c.uibDatepickerPopup||k.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||k.datepickerPopup;if(c!==r&&(r=c,z.$modelValue=null,!r))throw new Error("uibDatepickerPopup must have a date format specified.")})),!r)throw new Error("uibDatepickerPopup must have a date format specified.");if(C&&c.datepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");if(x=angular.element("
"),x.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":v}),y=angular.element(x.children()[0]),y.attr("template-url",w),C&&"month"===c.type&&(y.attr("datepicker-mode",'"month"'),y.attr("min-mode","month")),c.datepickerOptions){var l=a.$parent.$eval(c.datepickerOptions);l&&l.initDate&&(a.initDate=l.initDate,y.attr("init-date","initDate"),delete l.initDate),angular.forEach(l,function(a,b){y.attr(m(b),a)})}angular.forEach(["minMode","maxMode","minDate","maxDate","datepickerMode","initDate","shortcutPropagation"],function(b){if(c[b]){var d=e(c[b]);if(a.$parent.$watch(d,function(c){a.watchData[b]=c,("minDate"===b||"maxDate"===b)&&(B[b]=new Date(c))}),y.attr(m(b),"watchData."+b),"datepickerMode"===b){var f=d.assign;a.$watch("watchData."+b,function(b,c){angular.isFunction(f)&&b!==c&&f(a.$parent,b)})}}}),c.dateDisabled&&y.attr("date-disabled","dateDisabled({ date: date, mode: mode })"),c.showWeeks&&y.attr("show-weeks",c.showWeeks),c.customClass&&y.attr("custom-class","customClass({ date: date, mode: mode })"),C?z.$formatters.push(function(b){return a.date=b,b}):(z.$$parserName="date",z.$validators.date=o,z.$parsers.unshift(n),z.$formatters.push(function(b){return a.date=b,z.$isEmpty(b)?b:i(b,r)})),z.$viewChangeListeners.push(function(){a.date=j.parse(z.$viewValue,r,a.date)}),b.bind("keydown",q),A=d(x)(a),x.remove(),t?f.find("body").append(A):b.after(A),a.$on("$destroy",function(){a.isOpen===!0&&(g.$$phase||a.$apply(function(){a.isOpen=!1})),A.remove(),b.unbind("keydown",q),f.unbind("click",p)})},a.getText=function(b){return a[b+"Text"]||k[b+"Text"]},a.isDisabled=function(b){return"today"===b&&(b=new Date),a.watchData.minDate&&a.compare(b,B.minDate)<0||a.watchData.maxDate&&a.compare(b,B.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?i(a.date,r):null;b.val(d),z.$setViewValue(d),s&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(a.isOpen=!1,b[0].focus())},a.select=function(b){if("today"===b){var c=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(c.getFullYear(),c.getMonth(),c.getDate())):b=new Date(c.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(){a.isOpen=!1,b[0].focus()},a.$watch("isOpen",function(c){c?(a.position=t?h.offset(b):h.position(b),a.position.top=a.position.top+b.prop("offsetHeight"),l(function(){u&&a.$broadcast("uib:datepicker.focus"),f.bind("click",p)},0,!1)):f.unbind("click",p)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"}}}),angular.module("ui.bootstrap.datepicker").value("$datepickerSuppressWarning",!1).controller("DatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError","$datepickerSuppressWarning",function(a,b,c,d,e,f,g,h,i){i||e.warn("DatepickerController is now deprecated. Use UibDatepickerController instead.");var j=this,k={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){j[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){j[d]=a?new Date(a):null,j.refreshView()}):j[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){j[d]=angular.isDefined(c)?c:b[d],a[d]=j[d],("minMode"==d&&j.modes.indexOf(a.datepickerMode)j.modes.indexOf(j[d]))&&(a.datepickerMode=j[d])}):(j[d]=g[d]||null,a[d]=j[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(k.$isEmpty(k.$modelValue)||k.$invalid)&&(j.activeDate=a,j.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===j.compare(b.date,j.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){k=a,k.$render=function(){j.render()}},this.render=function(){if(k.$viewValue){var a=new Date(k.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=k.$viewValue?new Date(k.$viewValue):null;k.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=k.$viewValue?new Date(k.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},this.fixTimeZone=function(a){var b=a.getHours();a.setHours(23===b?b+2:0)},a.select=function(b){if(a.datepickerMode===j.minMode){var c=k.$viewValue?new Date(k.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),k.$setViewValue(c),k.$render()}else j.activeDate=b,a.datepickerMode=j.modes[j.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=j.activeDate.getFullYear()+a*(j.step.years||0),c=j.activeDate.getMonth()+a*(j.step.months||0);j.activeDate.setFullYear(b,c,1),j.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===j.maxMode&&1===b||a.datepickerMode===j.minMode&&-1===b||(a.datepickerMode=j.modes[j.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var l=function(){j.element[0].focus()};a.$on("uib:datepicker.focus",l),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),j.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(j.isDisabled(j.activeDate))return;a.select(j.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(j.handleKeyDown(c,b),j.refreshView()):a.toggleMode("up"===c?1:-1)}}]).directive("datepicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["datepicker","^ngModel"],controller:"DatepickerController",controllerAs:"datepicker",link:function(c,d,e,f){b||a.warn("datepicker is now deprecated. Use uib-datepicker instead.");var g=f[0],h=f[1];g.init(h)}}}]).directive("daypicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^datepicker","daypicker"],controller:"UibDaypickerController",link:function(c,d,e,f){b||a.warn("daypicker is now deprecated. Use uib-daypicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("monthpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^datepicker","monthpicker"],controller:"UibMonthpickerController",link:function(c,d,e,f){b||a.warn("monthpicker is now deprecated. Use uib-monthpicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("yearpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^datepicker","yearpicker"],controller:"UibYearpickerController",link:function(c,d,e,f){b||a.warn("yearpicker is now deprecated. Use uib-yearpicker instead.");var g=f[0];angular.extend(g,f[1]),g.yearpickerInit(),g.refreshView()}}}]).directive("datepickerPopup",["$log","$datepickerSuppressWarning",function(a,b){return{require:["ngModel","datepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(c,d,e,f){b||a.warn("datepicker-popup is now deprecated. Use uib-datepicker-popup instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("datepickerPopupWrap",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"},link:function(){b||a.warn("datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.")}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b){c||(a.bind("click",d),a.bind("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.unbind("click",d),a.unbind("keydown",e))};var d=function(a){if(c&&(!a||"disabled"!==c.getAutoClose())){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&/(38|40)/.test(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.openClass,q=angular.noop,r=c.onToggle?d(c.onToggle):angular.noop,s=!1,t=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(m=d(c.isOpen),q=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),s=angular.isDefined(c.dropdownAppendToBody),t=angular.isDefined(c.uibKeyboardNav),s&&n.dropdownMenu&&(i.find("body").append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return t},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(s&&n.dropdownMenu){var e=h.positionElements(b,n.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},m=n.dropdownMenu.hasClass("dropdown-menu-right");m?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),n.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,p).then(function(){angular.isDefined(c)&&c!==d&&r(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var t=angular.element('');n.dropdownMenu.replaceWith(t),n.dropdownMenu=t}f.close(o),n.selectedOption=null}angular.isFunction(q)&&q(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==o.getAutoClose()&&(o.isOpen=!1)});var u=a.$on("$destroy",function(){o.$destroy()});o.$on("$destroy",u)}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"AC",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibKeyboardNav",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){b.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=d.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(d.selectedOption)?d.selectedOption=d.selectedOption===b.length-1?d.selectedOption:d.selectedOption+1:d.selectedOption=0;break;case 38:angular.isNumber(d.selectedOption)?d.selectedOption=0===d.selectedOption?0:d.selectedOption-1:d.selectedOption=b.length-1}b[d.selectedOption].focus()}})}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.dropdown").value("$dropdownSuppressWarning",!1).service("dropdownService",["$log","$dropdownSuppressWarning","uibDropdownService",function(a,b,c){b||a.warn("dropdownService is now deprecated. Use uibDropdownService instead."),angular.extend(this,c)}]).controller("DropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest","$log","$dropdownSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m){m||l.warn("DropdownController is now deprecated. Use UibDropdownController instead.");var n,o,p=this,q=a.$new(),r=e.openClass,s=angular.noop,t=c.onToggle?d(c.onToggle):angular.noop,u=!1,v=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(o=d(c.isOpen),s=o.assign,a.$watch(o,function(a){q.isOpen=!!a})),u=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.uibKeyboardNav),u&&p.dropdownMenu&&(i.find("body").append(p.dropdownMenu),b.on("$destroy",function(){p.dropdownMenu.remove()}))},this.toggle=function(a){return q.isOpen=arguments.length?!!a:!q.isOpen},this.isOpen=function(){return q.isOpen},q.getToggleElement=function(){return p.toggleElement},q.getAutoClose=function(){return c.autoClose||"always"},q.getElement=function(){return b},q.isKeynavEnabled=function(){return v},q.focusDropdownEntry=function(a){var c=p.dropdownMenu?angular.element(p.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(p.selectedOption)?p.selectedOption=p.selectedOption===c.length-1?p.selectedOption:p.selectedOption+1:p.selectedOption=0;break;case 38:angular.isNumber(p.selectedOption)?p.selectedOption=0===p.selectedOption?0:p.selectedOption-1:p.selectedOption=c.length-1}c[p.selectedOption].focus()},q.getDropdownElement=function(){return p.dropdownMenu},q.focusToggleElement=function(){p.toggleElement&&p.toggleElement[0].focus()},q.$watch("isOpen",function(c,d){if(u&&p.dropdownMenu){var e=h.positionElements(b,p.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},l=p.dropdownMenu.hasClass("dropdown-menu-right");l?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),p.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,r).then(function(){angular.isDefined(c)&&c!==d&&t(a,{open:!!c})}),c)p.dropdownMenuTemplateUrl&&k(p.dropdownMenuTemplateUrl).then(function(a){n=q.$new(),j(a.trim())(n,function(a){var b=a;p.dropdownMenu.replaceWith(b),p.dropdownMenu=b})}),q.focusToggleElement(),f.open(q);else{if(p.dropdownMenuTemplateUrl){n&&n.$destroy();var m=angular.element('');p.dropdownMenu.replaceWith(m),p.dropdownMenu=m}f.close(q),p.selectedOption=null}angular.isFunction(s)&&s(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==q.getAutoClose()&&(q.isOpen=!1)});var w=a.$on("$destroy",function(){q.$destroy()});q.$on("$destroy",w)}]).directive("dropdown",["$log","$dropdownSuppressWarning",function(a,b){return{controller:"DropdownController",link:function(c,d,e,f){b||a.warn("dropdown is now deprecated. Use uib-dropdown instead."),f.init()}}}]).directive("dropdownMenu",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"AC",require:"?^dropdown",link:function(c,d,e,f){if(f&&!angular.isDefined(e.dropdownNested)){b||a.warn("dropdown-menu is now deprecated. Use uib-dropdown-menu instead."),d.addClass("dropdown-menu");var g=e.templateUrl;g&&(f.dropdownMenuTemplateUrl=g),f.dropdownMenu||(f.dropdownMenu=d)}}}}]).directive("keyboardNav",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"A",require:"?^dropdown",link:function(c,d,e,f){b||a.warn("keyboard-nav is now deprecated. Use uib-keyboard-nav instead."),d.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=f.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(f.selectedOption)?f.selectedOption=f.selectedOption===b.length-1?f.selectedOption:f.selectedOption+1:f.selectedOption=0;break;case 38:angular.isNumber(f.selectedOption)?f.selectedOption=0===f.selectedOption?0:f.selectedOption-1:f.selectedOption=b.length-1}b[f.selectedOption].focus()}})}}}]).directive("dropdownToggle",["$log","$dropdownSuppressWarning",function(a,b){return{require:"?^dropdown",link:function(c,d,e,f){if(b||a.warn("dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead."),f){d.addClass("dropdown-toggle"),f.toggleElement=d;var g=function(a){a.preventDefault(),d.hasClass("disabled")||e.disabled||c.$apply(function(){f.toggle()})};d.bind("click",g),d.attr({"aria-haspopup":!0,"aria-expanded":!1}),c.$watch(f.isOpen,function(a){d.attr("aria-expanded",!!a)}),c.$on("$destroy",function(){d.unbind("click",g)})}}}}]),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c0&&(b=u.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function m(){if(q&&-1==j()){var a=r;n(q,r,function(){a=null}),q=void 0,r=void 0}}function n(b,c,d){function e(){e.done||(e.done=!0,p?p(b,{event:"leave"}).start().then(function(){b.remove()}):a.leave(b),c.$destroy(),d&&d())}var g,h=null,i=function(){return g||(g=f.defer(),h=g.promise),function(){g.resolve()}};return c.$broadcast(w.NOW_CLOSING_EVENT,i),f.when(h).then(e)}function o(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var p=null;g.has("$animateCss")&&(p=g.get("$animateCss"));var q,r,s,t="modal-open",u=i.createNew(),v=h.createNew(),w={NOW_CLOSING_EVENT:"modal.stack.now-closing"},x=0,y="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(j,function(a){r&&(r.index=a)}),c.bind("keydown",function(a){if(a.isDefaultPrevented())return a;var b=u.top();if(b&&b.value.keyboard)switch(a.which){case 27:a.preventDefault(),e.$apply(function(){w.dismiss(b.key,"escape key press")});break;case 9:w.loadFocusElementList(b);var c=!1;a.shiftKey?w.isFocusInFirstItem(a)&&(c=w.focusLastFocusableElement()):w.isFocusInLastItem(a)&&(c=w.focusFirstFocusableElement()),c&&(a.preventDefault(),a.stopPropagation())}}),w.open=function(a,b){var f=c[0].activeElement,g=b.openedClass||t;l(!1),u.add(a,{deferred:b.deferred,renderDeferred:b.renderDeferred,modalScope:b.scope,backdrop:b.backdrop,keyboard:b.keyboard,openedClass:b.openedClass,windowTopClass:b.windowTopClass}),v.put(g,a);var h=c.find("body").eq(0),i=j();if(i>=0&&!q){r=e.$new(!0),r.index=i;var k=angular.element('
');k.attr("backdrop-class",b.backdropClass),b.animation&&k.attr("modal-animation","true"),q=d(k)(r),h.append(q)}var m=angular.element('
');m.attr({"template-url":b.windowTemplateUrl,"window-class":b.windowClass,"window-top-class":b.windowTopClass,size:b.size,index:u.length()-1,animate:"animate"}).html(b.content),b.animation&&m.attr("modal-animation","true");var n=d(m)(b.scope);u.top().value.modalDomEl=n,u.top().value.modalOpener=f,h.append(n),h.addClass(g),w.clearFocusListCache()},w.close=function(a,b){var c=u.get(a);return c&&o(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),k(a,c.value.modalOpener),!0):!c},w.dismiss=function(a,b){var c=u.get(a);return c&&o(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),k(a,c.value.modalOpener),!0):!c},w.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},w.getTop=function(){return u.top()},w.modalRendered=function(a){var b=u.get(a);b&&b.value.renderDeferred.resolve()},w.focusFirstFocusableElement=function(){return s.length>0?(s[0].focus(),!0):!1},w.focusLastFocusableElement=function(){return s.length>0?(s[s.length-1].focus(),!0):!1},w.isFocusInFirstItem=function(a){return s.length>0?(a.target||a.srcElement)==s[0]:!1},w.isFocusInLastItem=function(a){return s.length>0?(a.target||a.srcElement)==s[s.length-1]:!1},w.clearFocusListCache=function(){s=[],x=0},w.loadFocusElementList=function(a){if((void 0===s||!s.length)&&a){var b=a.value.modalDomEl;b&&b.length&&(s=b[0].querySelectorAll(y))}},w}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$templateRequest","$controller","$uibModalStack","$modalSuppressWarning","$log",function(b,c,d,e,f,g,h,i){function j(a){return a.template?d.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}function k(a){var c=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?c.push(d.when(b.invoke(a))):angular.isString(a)?c.push(d.when(b.get(a))):c.push(d.when(a))}),c}var l={},m=null;return l.getPromiseChain=function(){return m},l.open=function(b){function e(){return r}var l=d.defer(),n=d.defer(),o=d.defer(),p={result:l.promise,opened:n.promise,rendered:o.promise,close:function(a){return g.close(p,a)},dismiss:function(a){return g.dismiss(p,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=d.all([j(b)].concat(k(b.resolve)));return q=m=d.all([m]).then(e,e).then(function(a){var d=(b.scope||c).$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var e,j={},k=1;b.controller&&(j.$scope=d,j.$uibModalInstance=p,Object.defineProperty(j,"$modalInstance",{get:function(){return h||i.warn("$modalInstance is now deprecated. Use $uibModalInstance instead."),p}}),angular.forEach(b.resolve,function(b,c){j[c]=a[k++]}),e=f(b.controller,j),b.controllerAs&&(b.bindToController&&angular.extend(e,d),d[b.controllerAs]=e)),g.open(p,{scope:d,deferred:l,renderDeferred:o,content:a[0],animation:b.animation,backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowTopClass:b.windowTopClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size,openedClass:b.openedClass}),n.resolve(!0)},function(a){n.reject(a),l.reject(a)})["finally"](function(){m===q&&(m=null)}),p},l}]};return a}),angular.module("ui.bootstrap.modal").value("$modalSuppressWarning",!1).directive("modalBackdrop",["$animate","$injector","$modalStack","$log","$modalSuppressWarning",function(a,b,c,d,e){function f(b,f,h){e||d.warn("modal-backdrop is now deprecated. Use uib-modal-backdrop instead."),f.addClass("modal-backdrop"),h.modalInClass&&(g?g(f,{addClass:h.modalInClass}).start():a.addClass(f,h.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var d=c();g?g(f,{removeClass:h.modalInClass}).start().then(d):a.removeClass(f,h.modalInClass).then(d)}))}var g=null;return b.has("$animateCss")&&(g=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),f}}}]).directive("modalWindow",["$modalStack","$q","$animate","$injector","$log","$modalSuppressWarning",function(a,b,c,d,e,f){var g=null;return d.has("$animateCss")&&(g=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,h,i){f||e.warn("modal-window is now deprecated. Use uib-modal-window instead."),h.addClass(i.windowClass||""),h.addClass(i.windowTopClass||""),d.size=i.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},h.on("click",d.close),d.$isRendered=!0;var j=b.defer();i.$observe("modalRender",function(a){"true"==a&&j.resolve()}),j.promise.then(function(){var e=null;i.modalInClass&&(e=g?g(h,{addClass:i.modalInClass}).start():c.addClass(h,i.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();g?g(h,{removeClass:i.modalInClass}).start().then(d):c.removeClass(h,i.modalInClass).then(d)})),b.when(e).then(function(){var a=h[0].querySelector("[autofocus]");a?a.focus():h[0].focus()});var f=a.getTop();f&&a.modalRendered(f.key)})}}}]).directive("modalAnimationClass",["$log","$modalSuppressWarning",function(a,b){return{compile:function(c,d){b||a.warn("modal-animation-class is now deprecated. Use uib-modal-animation-class instead."),d.modalAnimation&&c.addClass(d.modalAnimationClass)}}}]).directive("modalTransclude",["$log","$modalSuppressWarning",function(a,b){return{link:function(c,d,e,f,g){ +b||a.warn("modal-transclude is now deprecated. Use uib-modal-transclude instead."),g(c.$parent,function(a){d.empty(),d.append(a)})}}}]).service("$modalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap","$uibModalStack","$log","$modalSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l){l||k.warn("$modalStack is now deprecated. Use $uibModalStack instead."),angular.extend(this,j)}]).provider("$modal",["$uibModalProvider",function(a){angular.extend(this,a),this.$get=["$injector","$log","$modalSuppressWarning",function(b,c,d){return d||c.warn("$modal is now deprecated. Use $uibModal instead."),b.invoke(a.$get)}]}]),angular.module("ui.bootstrap.pagination",[]).controller("UibPaginationController",["$scope","$attrs","$parse",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(g,h){e=g,this.config=h,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10),a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=h.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=d.calculateTotalPages()}),a.$watch("totalPages",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+"Text"]||d.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,"...",!1);c.unshift(j)}if(b>e){var m=g(e+1,"...",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render()});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module("ui.bootstrap.pagination").value("$paginationSuppressWarning",!1).controller("PaginationController",["$scope","$attrs","$parse","$log","$paginationSuppressWarning",function(a,b,c,d,e){e||d.warn("PaginationController is now deprecated. Use UibPaginationController instead.");var f=this,g={$setViewValue:angular.noop},h=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(d,e){g=d,this.config=e,g.$render=function(){f.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){f.itemsPerPage=parseInt(b,10),a.totalPages=f.calculateTotalPages()}):this.itemsPerPage=e.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=f.calculateTotalPages()}),a.$watch("totalPages",function(b){h(a.$parent,b),a.page>b?a.selectPage(b):g.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(g.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),g.$setViewValue(b),g.$render())},a.getText=function(b){return a[b+"Text"]||f.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).directive("pagination",["$parse","uibPaginationConfig","$log","$paginationSuppressWarning",function(a,b,c,d){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["pagination","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(e,f,g,h){function i(a,b,c){return{number:a,text:b,active:c}}function j(a,b){var c=[],d=1,e=b,f=angular.isDefined(m)&&b>m;f&&(n?(d=Math.max(a-Math.floor(m/2),1),e=d+m-1,e>b&&(e=b,d=e-m+1)):(d=(Math.ceil(a/m)-1)*m+1,e=Math.min(d+m-1,b)));for(var g=d;e>=g;g++){var h=i(g,g,g===a);c.push(h)}if(f&&!n){if(d>1){var j=i(d-1,"...",!1);c.unshift(j)}if(b>e){var k=i(e+1,"...",!1);c.push(k)}}return c}d||c.warn("pagination is now deprecated. Use uib-pagination instead.");var k=h[0],l=h[1];if(l){var m=angular.isDefined(g.maxSize)?e.$parent.$eval(g.maxSize):b.maxSize,n=angular.isDefined(g.rotate)?e.$parent.$eval(g.rotate):b.rotate;e.boundaryLinks=angular.isDefined(g.boundaryLinks)?e.$parent.$eval(g.boundaryLinks):b.boundaryLinks,e.directionLinks=angular.isDefined(g.directionLinks)?e.$parent.$eval(g.directionLinks):b.directionLinks,k.init(l,b),g.maxSize&&e.$parent.$watch(a(g.maxSize),function(a){m=parseInt(a,10),k.render()});var o=k.render;k.render=function(){o(),e.page>0&&e.page<=e.totalPages&&(e.pages=j(e.page,e.totalPages))}}}}}]).directive("pager",["uibPagerConfig","$log","$paginationSuppressWarning",function(a,b,c){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["pager","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(d,e,f,g){c||b.warn("pager is now deprecated. Use uib-pager instead.");var h=g[0],i=g[1];i&&(d.align=angular.isDefined(f.align)?d.$parent.$eval(f.align):a.align,h.init(i,a))}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){var n=m.createNew();return h.on("keypress",function(a){if(27===a.which){var b=n.top();b&&(b.value.close(),n.removeTop(),b=null)}}),function(e,k,m,o){function p(a){var b=(a||o.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}o=angular.extend({},b,d,o);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="
';return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){L.isOpen?q():m()}function m(){(!K||a.$eval(d[k+"Enable"]))&&(u(),x(),L.popupDelay?F||(F=g(r,L.popupDelay,!1)):r())}function q(){s(),L.popupCloseDelay?G||(G=g(t,L.popupCloseDelay,!1)):t()}function r(){return s(),u(),L.content?(v(),void L.$evalAsync(function(){L.isOpen=!0,y(!0),Q()})):angular.noop}function s(){F&&(g.cancel(F),F=null),H&&(g.cancel(H),H=null)}function t(){s(),u(),L&&L.$evalAsync(function(){L.isOpen=!1,y(!1),L.animation?E||(E=g(w,150,!1)):w()})}function u(){G&&(g.cancel(G),G=null),E&&(g.cancel(E),E=null)}function v(){C||(D=L.$new(),C=c(D,function(a){I?h.find("body").append(a):b.after(a)}),z())}function w(){A(),E=null,C&&(C.remove(),C=null),D&&(D.$destroy(),D=null)}function x(){L.title=d[k+"Title"],O?L.content=O(a):L.content=d[e],L.popupClass=d[k+"Class"],L.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:o.placement;var b=parseInt(d[k+"PopupDelay"],10),c=parseInt(d[k+"PopupCloseDelay"],10);L.popupDelay=isNaN(b)?o.popupDelay:b,L.popupCloseDelay=isNaN(c)?o.popupCloseDelay:c}function y(b){N&&angular.isFunction(N.assign)&&N.assign(a,b)}function z(){P.length=0,O?(P.push(a.$watch(O,function(a){L.content=a,!a&&L.isOpen&&t()})),P.push(D.$watch(function(){M||(M=!0,D.$$postDigest(function(){M=!1,L&&L.isOpen&&Q()}))}))):P.push(d.$observe(e,function(a){L.content=a,!a&&L.isOpen?t():Q()})),P.push(d.$observe(k+"Title",function(a){L.title=a,L.isOpen&&Q()})),P.push(d.$observe(k+"Placement",function(a){L.placement=a?a:o.placement,L.isOpen&&Q()}))}function A(){P.length&&(angular.forEach(P,function(a){a()}),P.length=0)}function B(){var a=d[k+"Trigger"];R(),J=p(a),"none"!==J.show&&J.show.forEach(function(a,c){a===J.hide[c]?b[0].addEventListener(a,j):a&&(b[0].addEventListener(a,m),J.hide[c].split(" ").forEach(function(a){b[0].addEventListener(a,q)})),b.on("keypress",function(a){27===a.which&&q()})})}var C,D,E,F,G,H,I=angular.isDefined(o.appendToBody)?o.appendToBody:!1,J=p(void 0),K=angular.isDefined(d[k+"Enable"]),L=a.$new(!0),M=!1,N=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,O=o.useContentExp?l(d[e]):!1,P=[],Q=function(){C&&C.html()&&(H||(H=g(function(){C.css({top:0,left:0});var a=i.positionElements(b,C,L.placement,I);a.top+="px",a.left+="px",a.visibility="visible",C.css(a),H=null},0,!1)))};L.origScope=a,L.isOpen=!1,n.add(L,{close:t}),L.contentExp=function(){return L.content},d.$observe("disabled",function(a){a&&s(),a&&L.isOpen&&t()}),N&&a.$watch(N,function(a){L&&!a===L.isOpen&&j()});var R=function(){J.show.forEach(function(a){b.unbind(a,m)}),J.hide.forEach(function(a){a.split(" ").forEach(function(a){b[0].removeEventListener(a,q)})})};B();var S=a.$eval(d[k+"Animation"]);L.animation=angular.isDefined(S)?!!S:o.animation;var T=a.$eval(d[k+"AppendToBody"]);I=angular.isDefined(T)?T:I,I&&a.$on("$locationChangeSuccess",function(){L.isOpen&&t()}),a.$on("$destroy",function(){s(),u(),R(),w(),n.remove(L),L=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",function(){return{restrict:"A",link:function(a,b,c){a.placement&&b.addClass(a.placement),a.popupClass&&b.addClass(a.popupClass),a.animation()&&b.addClass(c.tooltipAnimationClass)}}}).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.tooltip").value("$tooltipSuppressWarning",!1).provider("$tooltip",["$uibTooltipProvider",function(a){angular.extend(this,a),this.$get=["$log","$tooltipSuppressWarning","$injector",function(b,c,d){return c||b.warn("$tooltip is now deprecated. Use $uibTooltip instead."),d.invoke(a.$get)}]}]).directive("tooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest","$log","$tooltipSuppressWarning",function(a,b,c,d,e,f){return{link:function(g,h,i){f||e.warn("tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.");var j,k,l,m=g.$eval(i.tooltipTemplateTranscludeScope),n=0,o=function(){k&&(k.remove(),k=null),j&&(j.$destroy(),j=null),l&&(a.leave(l).then(function(){k=null}),k=l,l=null)};g.$watch(b.parseAsResourceUrl(i.tooltipTemplateTransclude),function(b){var e=++n;b?(d(b,!0).then(function(d){if(e===n){var f=m.$new(),g=d,i=c(g)(f,function(b){o(),a.enter(b,h)});j=f,l=i,j.$emit("$includeContentLoaded",b)}},function(){e===n&&(o(),g.$emit("$includeContentError",b))}),g.$emit("$includeContentRequested",b)):o()}),g.$on("$destroy",o)}}}]).directive("tooltipClasses",["$log","$tooltipSuppressWarning",function(a,b){return{restrict:"A",link:function(c,d,e){b||a.warn("tooltip-classes is now deprecated. Use uib-tooltip-classes instead."),c.placement&&d.addClass(c.placement),c.popupClass&&d.addClass(c.popupClass),c.animation()&&d.addClass(e.tooltipAnimationClass)}}}]).directive("tooltipPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(c,d){b||a.warn("tooltip-popup is now deprecated. Use uib-tooltip-popup instead."),d.addClass("tooltip")}}}]).directive("tooltip",["$tooltip",function(a){return a("tooltip","tooltip","mouseenter")}]).directive("tooltipTemplatePopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(c,d){b||a.warn("tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipTemplate",["$tooltip",function(a){return a("tooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("tooltipHtmlPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(c,d){b||a.warn("tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipHtml",["$tooltip",function(a){return a("tooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.popover").value("$popoverSuppressWarning",!1).directive("popoverTemplatePopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(c,d){b||a.warn("popover-template-popup is now deprecated. Use uib-popover-template-popup instead."),d.addClass("popover")}}}]).directive("popoverTemplate",["$tooltip",function(a){return a("popoverTemplate","popover","click",{useContentExp:!0})}]).directive("popoverHtmlPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(c,d){b||a.warn("popover-html-popup is now deprecated. Use uib-popover-html-popup instead."),d.addClass("popover")}}}]).directive("popoverHtml",["$tooltip",function(a){return a("popoverHtml","popover","click",{useContentExp:!0})}]).directive("popoverPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(c,d){b||a.warn("popover-popup is now deprecated. Use uib-popover-popup instead."),d.addClass("popover")}}}]).directive("popover",["$tooltip",function(a){return a("popover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,f){e||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=f&&angular.isDefined(f.title)?f.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){var a=d.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("max",function(b){d.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{max:"=?"},templateUrl:"template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.progressbar").value("$progressSuppressWarning",!1).controller("ProgressController",["$scope","$attrs","uibProgressConfig","$log","$progressSuppressWarning",function(a,b,c,d,e){e||d.warn("ProgressController is now deprecated. Use UibProgressController instead.");var f=this,g=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,d){g||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=d&&angular.isDefined(d.title)?d.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){b.percent=+(100*b.value/b.max).toFixed(2);var a=f.bars.reduce(function(a,b){return a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,f.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)},a.$watch("max",function(b){f.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("progress",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",require:"progress",scope:{max:"=?",title:"@?"},templateUrl:"template/progressbar/progress.html",link:function(){b||a.warn("progress is now deprecated. Use uib-progress instead.")}}}]).directive("bar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,require:"^progress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(c,d,e,f){b||a.warn("bar is now deprecated. Use uib-bar instead."),f.addBar(c,d)}}}]).directive("progressbar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(c,d,e,f){b||a.warn("progressbar is now deprecated. Use uib-progressbar instead."),f.addBar(c,angular.element(d.children()[0]),{title:e.title})}}}]),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.rating").value("$ratingSuppressWarning",!1).controller("RatingController",["$scope","$attrs","$controller","$log","$ratingSuppressWarning",function(a,b,c,d,e){e||d.warn("RatingController is now deprecated. Use UibRatingController instead."),angular.extend(this,c("UibRatingController",{$scope:a,$attrs:b}))}]).directive("rating",["$log","$ratingSuppressWarning",function(a,b){return{require:["rating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"RatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(c,d,e,f){b||a.warn("rating is now deprecated. Use uib-rating instead.");var g=f[0],h=f[1];g.init(h)}}}]),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect(),a.selectCalled=!1)}),a.active=!0,a.selectCalled||(a.onSelect(),a.selectCalled=!0)},b.addTab=function(a){c.push(a),1===c.length&&a.active!==!1?a.active=!0:a.active?b.select(a):a.active=!1},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on("$destroy",function(){d=!0})}]).directive("uibTabset",function(){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"UibTabsetController",templateUrl:"template/tabs/tabset.html",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(b,c,d,e,f){b.$watch("active",function(a){a&&e.select(b)}),b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),b.select=function(){b.disabled||(b.active=!0)},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:["?^uibTab","?^tab"],link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase()||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:["?^uibTabset","?^tabset"],link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.tabs").value("$tabsSuppressWarning",!1).controller("TabsetController",["$scope","$controller","$log","$tabsSuppressWarning",function(a,b,c,d){d||c.warn("TabsetController is now deprecated. Use UibTabsetController instead."),angular.extend(this,b("UibTabsetController",{$scope:a}))}]).directive("tabset",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"TabsetController",templateUrl:"template/tabs/tabset.html",link:function(c,d,e){b||a.warn("tabset is now deprecated. Use uib-tabset instead."),c.vertical=angular.isDefined(e.vertical)?c.$parent.$eval(e.vertical):!1,c.justified=angular.isDefined(e.justified)?c.$parent.$eval(e.justified):!1}}}]).directive("tab",["$parse","$log","$tabsSuppressWarning",function(a,b,c){return{require:"^tabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(d,e,f,g,h){c||b.warn("tab is now deprecated. Use uib-tab instead."),d.$watch("active",function(a){a&&g.select(d)}),d.disabled=!1,f.disable&&d.$parent.$watch(a(f.disable),function(a){d.disabled=!!a}),d.select=function(){d.disabled||(d.active=!0)},g.addTab(d),d.$on("$destroy",function(){g.removeTab(d)}),d.$transcludeFn=h}}}]).directive("tabHeadingTransclude",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"A",require:"^tab",link:function(c,d){b||a.warn("tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead."),c.$watch("headingElement",function(a){a&&(d.html(""),d.append(a))})}}}]).directive("tabContentTransclude",["$log","$tabsSuppressWarning",function(a,b){function c(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^tabset",link:function(d,e,f){b||a.warn("tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.");var g=d.$eval(f.tabContentTransclude);g.$transcludeFn(g.$parent,function(a){angular.forEach(a,function(a){c(a)?g.headingElement=a:e.append(a)})})}}}]),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f,g){function h(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===r[1]&&(b+=12)),b):void 0}function i(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function j(a){return angular.isDefined(a)&&a.toString().length<2?"0"+a:a.toString()}function k(a){l(),q.$setViewValue(new Date(p)),m(a)}function l(){q.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1}function m(b){var c=p.getHours(),d=p.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:j(c),"m"!==b&&(a.minutes=j(d)),a.meridian=p.getHours()<12?r[0]:r[1]}function n(a,b){var c=new Date(a.getTime()+6e4*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes()),d}function o(a){p=n(p,a),k()}var p=new Date,q={$setViewValue:angular.noop},r=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){q=b,q.$render=this.render,q.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;h&&this.setupMousewheelEvents(e,f);var i=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;i&&this.setupArrowkeyEvents(e,f),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f)};var s=g.hourStep;c.hourStep&&a.$parent.$watch(d(c.hourStep),function(a){s=parseInt(a,10)});var t=g.minuteStep;c.minuteStep&&a.$parent.$watch(d(c.minuteStep),function(a){t=parseInt(a,10)});var u;a.$parent.$watch(d(c.min),function(a){var b=new Date(a);u=isNaN(b)?void 0:b});var v;a.$parent.$watch(d(c.max),function(a){var b=new Date(a);v=isNaN(b)?void 0:b}),a.noIncrementHours=function(){var a=n(p,60*s); +return a>v||p>a&&u>a},a.noDecrementHours=function(){var a=n(p,60*-s);return u>a||a>p&&a>v},a.noIncrementMinutes=function(){var a=n(p,t);return a>v||p>a&&u>a},a.noDecrementMinutes=function(){var a=n(p,-t);return u>a||a>p&&a>v},a.noToggleMeridian=function(){return p.getHours()<13?n(p,720)>v:n(p,-720)0};b.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c){b.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply())}),c.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply())})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){q.$setViewValue(null),q.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=h(),b=i();angular.isDefined(a)&&angular.isDefined(b)?(p.setHours(a),u>p||p>v?d(!0):k("h")):d(!0)},b.bind("blur",function(b){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=j(a.hours)})}),a.updateMinutes=function(){var a=i(),b=h();angular.isDefined(a)&&angular.isDefined(b)?(p.setMinutes(a),u>p||p>v?d(void 0,!0):k("m")):d(void 0,!0)},c.bind("blur",function(b){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=j(a.minutes)})})},this.render=function(){var b=q.$viewValue;isNaN(b)?(q.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(p=b),u>p||p>v?(q.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):l(),m())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*s)},a.decrementHours=function(){a.noDecrementHours()||o(60*-s)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(t)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(-t)},a.toggleMeridian=function(){a.noToggleMeridian()||o(720*(p.getHours()<12?1:-1))}}]).directive("uibTimepicker",function(){return{restrict:"EA",require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}),angular.module("ui.bootstrap.timepicker").value("$timepickerSuppressWarning",!1).controller("TimepickerController",["$scope","$element","$attrs","$controller","$log","$timepickerSuppressWarning",function(a,b,c,d,e,f){f||e.warn("TimepickerController is now deprecated. Use UibTimepickerController instead."),angular.extend(this,d("UibTimepickerController",{$scope:a,$element:b,$attrs:c}))}]).directive("timepicker",["$log","$timepickerSuppressWarning",function(a,b){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(c,d,e,f){b||a.warn("timepicker is now deprecated. Use uib-timepicker instead.");var g=f[0],h=f[1];h&&g.init(h,d.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){K.moveInProgress||(K.moveInProgress=!0,K.$digest()),S&&g.cancel(S),S=g(function(){K.matches.length&&n(),K.moveInProgress=!1},r)}function n(){K.position=C?k.offset(b):k.position(b),K.position.top+=b.prop("offsetHeight")}var o,p,q=[9,13,27,38,40],r=200,s=a.$eval(c.typeaheadMinLength);s||0===s||(s=1);var t,u,v=a.$eval(c.typeaheadWaitMs)||0,w=a.$eval(c.typeaheadEditable)!==!1,x=e(c.typeaheadLoading).assign||angular.noop,y=e(c.typeaheadOnSelect),z=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,A=e(c.typeaheadNoResults).assign||angular.noop,B=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,C=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,D=c.typeaheadAppendToElementId||!1,E=a.$eval(c.typeaheadFocusFirst)!==!1,F=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,G=e(c.ngModel),H=e(c.ngModel+"($$$p)"),I=function(b,c){return angular.isFunction(G(a))&&p&&p.$options&&p.$options.getterSetter?H(b,{$$$p:c}):G.assign(b,c)},J=l.parse(c.uibTypeahead),K=a.$new(),L=a.$on("$destroy",function(){K.$destroy()});K.$on("$destroy",L);var M="typeahead-"+K.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":M});var N=angular.element("
");N.attr({id:M,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(c.typeaheadTemplateUrl)&&N.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&N.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var O=function(){K.matches=[],K.activeIdx=-1,b.attr("aria-expanded",!1)},P=function(a){return M+"-option-"+a};K.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",P(a))});var Q=function(a,b){return K.matches.length>b&&a?a.toUpperCase()===K.matches[b].label.toUpperCase():!1},R=function(c){var d={$viewValue:c};x(a,!0),A(a,!1),f.when(J.source(a,d)).then(function(e){var f=c===o.$viewValue;if(f&&t)if(e&&e.length>0){K.activeIdx=E?0:-1,A(a,!1),K.matches.length=0;for(var g=0;g0?K.activeIdx:K.matches.length)-1,K.$digest()):13===a.which||9===a.which?K.$apply(function(){K.select(K.activeIdx)}):27===a.which&&(a.stopPropagation(),O(),K.$digest())}}),b.bind("blur",function(){z&&K.matches.length&&-1!==K.activeIdx&&!u&&(u=!0,K.$apply(function(){K.select(K.activeIdx)})),t=!1,u=!1});var W=function(a){b[0]!==a.target&&3!==a.which&&0!==K.matches.length&&(O(),j.$$phase||K.$digest())};h.bind("click",W),a.$on("$destroy",function(){h.unbind("click",W),(C||D)&&X.remove(),C&&(angular.element(i).unbind("resize",m),h.find("body").unbind("scroll",m)),N.remove()});var X=d(N)(K);C?h.find("body").append(X):D!==!1?angular.element(h[0].getElementById(D)).append(X):b.after(X),this.init=function(b,c){o=b,p=c,o.$parsers.unshift(function(b){return t=!0,0===s||b&&b.length>=s?v>0?(V(),U(b)):R(b):(x(a,!1),V(),O()),w?b:b?void o.$setValidity("editable",!1):(o.$setValidity("editable",!0),null)}),o.$formatters.push(function(b){var c,d,e={};return w||o.$setValidity("editable",!0),B?(e.$model=b,B(a,e)):(e[J.itemName]=b,c=J.viewMapper(a,e),e[J.itemName]=void 0,d=J.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",function(){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"template/typeahead/typeahead-match.html";a(g).then(function(a){b(a.trim())(d,function(a){e.replaceWith(a)})})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"$&"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("ui.bootstrap.typeahead").value("$typeaheadSuppressWarning",!1).service("typeaheadParser",["$parse","uibTypeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d){return d||c.warn("typeaheadParser is now deprecated. Use uibTypeaheadParser instead."),b}]).directive("typeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","typeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k){var l=[9,13,27,38,40],m=200;return{require:["ngModel","^?ngModelOptions"],link:function(n,o,p,q){function r(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),V&&d.cancel(V),V=d(function(){N.matches.length&&s(),N.moveInProgress=!1},m)}function s(){N.position=F?h.offset(o):h.position(o),N.position.top+=o.prop("offsetHeight")}k||j.warn("typeahead is now deprecated. Use uib-typeahead instead.");var t=q[0],u=q[1],v=n.$eval(p.typeaheadMinLength);v||0===v||(v=1);var w,x,y=n.$eval(p.typeaheadWaitMs)||0,z=n.$eval(p.typeaheadEditable)!==!1,A=b(p.typeaheadLoading).assign||angular.noop,B=b(p.typeaheadOnSelect),C=angular.isDefined(p.typeaheadSelectOnBlur)?n.$eval(p.typeaheadSelectOnBlur):!1,D=b(p.typeaheadNoResults).assign||angular.noop,E=p.typeaheadInputFormatter?b(p.typeaheadInputFormatter):void 0,F=p.typeaheadAppendToBody?n.$eval(p.typeaheadAppendToBody):!1,G=p.typeaheadAppendToElementId||!1,H=n.$eval(p.typeaheadFocusFirst)!==!1,I=p.typeaheadSelectOnExact?n.$eval(p.typeaheadSelectOnExact):!1,J=b(p.ngModel),K=b(p.ngModel+"($$$p)"),L=function(a,b){return angular.isFunction(J(n))&&u&&u.$options&&u.$options.getterSetter?K(a,{$$$p:b}):J.assign(a,b)},M=i.parse(p.typeahead),N=n.$new(),O=n.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());o.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q=angular.element("
");Q.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(p.typeaheadTemplateUrl)&&Q.attr("template-url",p.typeaheadTemplateUrl),angular.isDefined(p.typeaheadPopupTemplateUrl)&&Q.attr("popup-template-url",p.typeaheadPopupTemplateUrl);var R=function(){N.matches=[],N.activeIdx=-1,o.attr("aria-expanded",!1)},S=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?o.removeAttr("aria-activedescendant"):o.attr("aria-activedescendant",S(a))});var T=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},U=function(a){var b={$viewValue:a};A(n,!0),D(n,!1),c.when(M.source(n,b)).then(function(c){var d=a===t.$viewValue;if(d&&w)if(c&&c.length>0){N.activeIdx=H?0:-1,D(n,!1),N.matches.length=0;for(var e=0;e=v?y>0?(Y(),X(a)):U(a):(A(n,!1),Y(),R()),z?a:a?void t.$setValidity("editable",!1):(t.$setValidity("editable",!0),null)}),t.$formatters.push(function(a){var b,c,d={};return z||t.$setValidity("editable",!0),E?(d.$model=a,E(n,d)):(d[M.itemName]=a,b=M.viewMapper(n,d),d[M.itemName]=void 0,c=M.viewMapper(n,d),b!==c?b:a)}),N.select=function(a){var b,c,e={};x=!0,e[M.itemName]=c=N.matches[a].model,b=M.modelMapper(n,e),L(n,b),t.$setValidity("editable",!0),t.$setValidity("parse",!0),B(n,{$item:c,$model:b,$label:M.viewMapper(n,e)}),R(),N.$eval(p.typeaheadFocusOnSelect)!==!1&&d(function(){o[0].focus()},0,!1)},o.bind("keydown",function(a){if(0!==N.matches.length&&-1!==l.indexOf(a.which)){if(-1===N.activeIdx&&(9===a.which||13===a.which))return R(),void N.$digest();a.preventDefault(),40===a.which?(N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest()):38===a.which?(N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest()):13===a.which||9===a.which?N.$apply(function(){N.select(N.activeIdx)}):27===a.which&&(a.stopPropagation(),R(),N.$digest())}}),o.bind("blur",function(){C&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){N.select(N.activeIdx)})),w=!1,x=!1});var Z=function(a){o[0]!==a.target&&3!==a.which&&0!==N.matches.length&&(R(),g.$$phase||N.$digest())};e.bind("click",Z),n.$on("$destroy",function(){e.unbind("click",Z),(F||G)&&$.remove(),F&&(angular.element(f).unbind("resize",r),e.find("body").unbind("scroll",r)),Q.remove()});var $=a(Q)(N);F?e.find("body").append($):G!==!1?angular.element(e[0].getElementById(G)).append($):o.after($)}}}]).directive("typeaheadPopup",["$typeaheadSuppressWarning","$log",function(a,b){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(c,d,e){a||b.warn("typeahead-popup is now deprecated. Use uib-typeahead-popup instead."),c.templateUrl=e.templateUrl,c.isOpen=function(){return c.matches.length>0},c.isActive=function(a){return c.active==a},c.selectActive=function(a){c.active=a},c.selectMatch=function(a){c.select({activeIdx:a})}}}}]).directive("typeaheadMatch",["$templateRequest","$compile","$parse","$typeaheadSuppressWarning","$log",function(a,b,c,d,e){return{restrict:"EA",scope:{index:"=",match:"=",query:"="},link:function(f,g,h){d||e.warn("typeahead-match is now deprecated. Use uib-typeahead-match instead.");var i=c(h.templateUrl)(f.$parent)||"template/typeahead/typeahead-match.html";a(i).then(function(a){b(a.trim())(f,function(a){g.replaceWith(a)})})}}}]).filter("typeaheadHighlight",["$sce","$injector","$log","$typeaheadSuppressWarning",function(a,b,c,d){function e(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function f(a){return/<.*>/g.test(a)}var g;return g=b.has("$sanitize"),function(b,h){return d||c.warn("typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead."),!g&&f(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=h?(""+b).replace(new RegExp(e(h),"gi"),"$&"):b,g||(b=a.trustAsHtml(b)),b}}]),angular.module("template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion-group.html",'
\n
\n

\n {{heading}}\n

\n
\n
\n
\n
\n
\n')}]),angular.module("template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion.html",'
')}]),angular.module("template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("template/alert/alert.html",'\n')}]),angular.module("template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("template/carousel/carousel.html",'')}]),angular.module("template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("template/carousel/slide.html",'
\n')}]),angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/datepicker.html",'
\n \n \n \n
')}]),angular.module("template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/day.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{::label.abbr}}
{{ weekNumbers[$index] }}\n \n
\n')}]),angular.module("template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/month.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/popup.html",'\n')}]),angular.module("template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/year.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("template/modal/backdrop.html",'
\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(a){a.put("template/modal/window.html",'\n')}]),angular.module("template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pager.html",'\n')}]),angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pagination.html",'\n')}]),angular.module("template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-popup.html",'\n
\n
\n\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-popup.html",'\n
\n
\n\n')}]),angular.module("template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-template-popup.html",'\n
\n
\n\n')}]),angular.module("template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-html.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-template.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/bar.html",'
\n')}]),angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progress.html",'
')}]),angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progressbar.html",'
\n
\n
\n')}]),angular.module("template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("template/rating/rating.html",'\n ({{ $index < value ? \'*\' : \' \' }})\n \n\n'); +}]),angular.module("template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tab.html",'
  • \n {{heading}}\n
  • \n')}]),angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tabset.html",'
    \n \n
    \n
    \n
    \n
    \n
    \n')}]),angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("template/timepicker/timepicker.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
     
    \n \n :\n \n
     
    \n')}]),angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-match.html",'\n')}]),angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-popup.html",'\n')}]),!angular.$$csp()&&angular.element(document).find("head").prepend(''); \ No newline at end of file diff --git a/www/libs/angular-bootstrap/ui-bootstrap-tpls-1.2.4.min.js b/www/libs/angular-bootstrap/ui-bootstrap-tpls-1.2.4.min.js new file mode 100644 index 0000000..0eab296 --- /dev/null +++ b/www/libs/angular-bootstrap/ui-bootstrap-tpls-1.2.4.min.js @@ -0,0 +1,10 @@ +/* + * angular-ui-bootstrap + * http://angular-ui.github.io/bootstrap/ + + * Version: 1.2.4 - 2016-03-06 + * License: MIT + */angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.debounce","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/popup.html","uib/template/datepicker/year.html","uib/template/modal/backdrop.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function(a,b,c,d){var e=d.has("$animateCss")?d.get("$animateCss"):null;return{link:function(d,f,g){function h(){f.hasClass("collapse")&&f.hasClass("in")||b.resolve(l(d)).then(function(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{addClass:"in",easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start()["finally"](i):a.addClass(f,"in",{to:{height:f[0].scrollHeight+"px"}}).then(i)})}function i(){f.removeClass("collapsing").addClass("collapse").css({height:"auto"}),m(d)}function j(){return f.hasClass("collapse")||f.hasClass("in")?void b.resolve(n(d)).then(function(){f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),e?e(f,{removeClass:"in",to:{height:"0"}}).start()["finally"](k):a.removeClass(f,"in",{to:{height:"0"}}).then(k)}):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse"),o(d)}var l=c(g.expanding),m=c(g.expanded),n=c(g.collapsing),o=c(g.collapsed);d.$eval(g.uibCollapse)||f.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css({height:"auto"}),d.$watch(g.uibCollapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass||"panel-default",a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)};var e="accordiongroup-"+a.$id+"-"+Math.floor(1e4*Math.random());a.headingId=e+"-tab",a.panelId=e+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:"^uibAccordionGroup",link:function(a,b,c,d){a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){if(a){var c=angular.element(b[0].querySelector("[uib-accordion-header]"));c.html(""),c.append(a)}})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"uib/template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function(a){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(b,c,d,e){var f=e[0],g=e[1],h=a(d.uibUncheckable);c.find("input").css({display:"none"}),g.$render=function(){c.toggleClass(f.activeClass,angular.equals(g.$modelValue,b.$eval(d.uibBtnRadio)))},c.on(f.toggleEvent,function(){if(!d.disabled){var a=c.hasClass(f.activeClass);(!a||angular.isDefined(d.uncheckable))&&b.$apply(function(){g.$setViewValue(a?null:b.$eval(d.uibBtnRadio)),g.$render()})}}),d.uibUncheckable&&b.$watch(h,function(a){d.$set("uncheckable",a?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function(a,b,c,d,e){function f(){for(;t.length;)t.shift()}function g(a){for(var b=0;b1){q[d].element.data(r,c.direction);var j=p.getCurrentIndex();angular.isNumber(j)&&q[j].element&&q[j].element.data(r,c.direction),a.$currentTransition=!0,e.on("addClass",q[d].element,function(b,c){if("close"===c&&(a.$currentTransition=null,e.off("addClass",b),t.length)){var d=t.pop().slide,g=d.index,i=g>p.getCurrentIndex()?"next":"prev";f(),h(d,g,i)}})}a.active=c.index,s=c.index,g(d),l()}}function i(a){for(var b=0;b0&&(n=c(m,b))}function m(){var b=+a.interval;o&&!isNaN(b)&&b>0&&q.length?a.next():a.pause()}var n,o,p=this,q=p.slides=a.slides=[],r="uib-slideDirection",s=a.active,t=[],u=!1;p.addSlide=function(b,c){q.push({slide:b,element:c}),q.sort(function(a,b){return+a.slide.index>+b.slide.index}),(b.index===a.active||1===q.length&&!angular.isNumber(a.active))&&(a.$currentTransition&&(a.$currentTransition=null),s=b.index,a.active=b.index,g(s),p.select(q[i(b)]),1===q.length&&a.play())},p.getCurrentIndex=function(){for(var a=0;a0&&s===c?c>=q.length?(s=q.length-1,a.active=s,g(s),p.select(q[q.length-1])):(s=c,a.active=s,g(s),p.select(q[c])):s>c&&(s--,a.active=s),0===q.length&&(s=null,a.active=null,f())},p.select=a.select=function(b,c){var d=i(b.slide);void 0===c&&(c=d>p.getCurrentIndex()?"next":"prev"),b.slide.index===s||a.$currentTransition?b&&b.slide.index!==s&&a.$currentTransition&&t.push(q[d]):h(b.slide,d,c)},a.indexOfSlide=function(a){return+a.slide.index},a.isActive=function(b){return a.active===b.slide.index},a.pause=function(){a.noPause||(o=!1,j())},a.play=function(){o||(o=!0,l())},a.$on("$destroy",function(){u=!0,j()}),a.$watch("noTransition",function(a){e.enabled(b,!a)}),a.$watch("interval",l),a.$watchCollection("slides",k),a.$watch("active",function(a){if(angular.isNumber(a)&&s!==a){for(var b=0;b-1){var g=!1;a=a.split("");for(var h=f;h-1){a=a.split(""),e[f]="("+d.regex+")",a[f]="$";for(var g=f+1,h=f+d.key.length;h>g;g++)e[g]="",a[g]="$";a=a.join(""),c.push({index:f,key:d.key,apply:d[b],matcher:d.regex})}}),{regex:new RegExp("^"+e.join("")+"$"),map:d(c,"index")}}function f(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}function g(a){return parseInt(a,10)}function h(a,b){return a&&b?l(a,b):a}function i(a,b){return a&&b?l(a,b,!0):a}function j(a,b){var c=Date.parse("Jan 01, 1970 00:00:00 "+a)/6e4;return isNaN(c)?b:c}function k(a,b){return a=new Date(a.getTime()),a.setMinutes(a.getMinutes()+b),a}function l(a,b,c){c=c?-1:1;var d=j(b,a.getTimezoneOffset());return k(a,c*(d-a.getTimezoneOffset()))}var m,n,o=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){m=b.id,this.parsers={},this.formatters={},n=[{key:"yyyy",regex:"\\d{4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yyyy")}},{key:"yy",regex:"\\d{2}",apply:function(a){this.year=+a+2e3},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yy")}},{key:"y",regex:"\\d{1,4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"y")}},{key:"M!",regex:"0?[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){var b=a.getMonth();return/^[0-9]$/.test(b)?c(a,"MM"):c(a,"M")}},{key:"MMMM",regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)},formatter:function(a){return c(a,"MMMM")}},{key:"MMM",regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)},formatter:function(a){return c(a,"MMM")}},{key:"MM",regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"MM")}},{key:"M",regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"M")}},{key:"d!",regex:"[0-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){var b=a.getDate();return/^[1-9]$/.test(b)?c(a,"dd"):c(a,"d")}},{key:"dd",regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"dd")}},{key:"d",regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"d")}},{key:"EEEE",regex:b.DATETIME_FORMATS.DAY.join("|"),formatter:function(a){return c(a,"EEEE")}},{key:"EEE",regex:b.DATETIME_FORMATS.SHORTDAY.join("|"),formatter:function(a){return c(a,"EEE")}},{key:"HH",regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"HH")}},{key:"hh",regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"hh")}},{key:"H",regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"H")}},{key:"h",regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"h")}},{key:"mm",regex:"[0-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"mm")}},{key:"m",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"m")}},{key:"sss",regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a},formatter:function(a){return c(a,"sss")}},{key:"ss",regex:"[0-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"ss")}},{key:"s",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"s")}},{key:"a",regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)},formatter:function(a){return c(a,"a")}},{key:"Z",regex:"[+-]\\d{4}",apply:function(a){var b=a.match(/([+-])(\d{2})(\d{2})/),c=b[1],d=b[2],e=b[3];this.hours+=g(c+d),this.minutes+=g(c+e)},formatter:function(a){return c(a,"Z")}},{key:"ww",regex:"[0-4][0-9]|5[0-3]",formatter:function(a){return c(a,"ww")}},{key:"w",regex:"[0-9]|[1-4][0-9]|5[0-3]",formatter:function(a){return c(a,"w")}},{key:"GGGG",regex:b.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g,"\\s"),formatter:function(a){return c(a,"GGGG")}},{key:"GGG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GGG")}},{key:"GG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GG")}},{key:"G",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"G")}}]},this.init(),this.filter=function(a,c){if(!angular.isDate(a)||isNaN(a)||!c)return"";c=b.DATETIME_FORMATS[c]||c,b.id!==m&&this.init(),this.formatters[c]||(this.formatters[c]=e(c,"formatter"));var d=this.formatters[c],f=d.map,g=c;return f.reduce(function(b,c,d){var e=g.match(new RegExp("(.*)"+c.key));e&&angular.isString(e[1])&&(b+=e[1],g=g.replace(e[1]+c.key,""));var h=d===f.length-1?g:"";return c.apply?b+c.apply.call(null,a)+h:b+h},"")},this.parse=function(c,d,g){if(!angular.isString(c)||!d)return c;d=b.DATETIME_FORMATS[d]||d,d=d.replace(o,"\\$&"),b.id!==m&&this.init(),this.parsers[d]||(this.parsers[d]=e(d,"apply"));var h=this.parsers[d],i=h.regex,j=h.map,k=c.match(i),l=!1;if(k&&k.length){var n,p;angular.isDate(g)&&!isNaN(g.getTime())?n={year:g.getFullYear(),month:g.getMonth(),date:g.getDate(),hours:g.getHours(),minutes:g.getMinutes(),seconds:g.getSeconds(),milliseconds:g.getMilliseconds()}:(g&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var q=1,r=k.length;r>q;q++){var s=j[q-1];"Z"===s.matcher&&(l=!0),s.apply&&s.apply.call(n,k[q])}var t=l?Date.prototype.setUTCFullYear:Date.prototype.setFullYear,u=l?Date.prototype.setUTCHours:Date.prototype.setHours;return f(n.year,n.month,n.date)&&(!angular.isDate(g)||isNaN(g.getTime())||l?(p=new Date(0),t.call(p,n.year,n.month,n.date),u.call(p,n.hours||0,n.minutes||0,n.seconds||0,n.milliseconds||0)):(p=new Date(g),t.call(p,n.year,n.month,n.date),u.call(p,n.hours,n.minutes,n.seconds,n.milliseconds))),p}},this.toTimezone=h,this.fromTimezone=i,this.timezoneToOffset=j,this.addDateMinutes=k,this.convertTimezoneToLocal=l}]),angular.module("ui.bootstrap.isClass",[]).directive("uibIsClass",["$animate",function(a){var b=/^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/,c=/^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/;return{restrict:"A",compile:function(d,e){function f(a,b,c){i.push(a),j.push({scope:a,element:b}),o.forEach(function(b,c){g(b,a)}),a.$on("$destroy",h)}function g(b,d){var e=b.match(c),f=d.$eval(e[1]),g=e[2],h=k[b];if(!h){var i=function(b){var c=null;j.some(function(a){var d=a.scope.$eval(m);return d===b?(c=a,!0):void 0}),h.lastActivated!==c&&(h.lastActivated&&a.removeClass(h.lastActivated.element,f),c&&a.addClass(c.element,f),h.lastActivated=c)};k[b]=h={lastActivated:null,scope:d,watchFn:i,compareWithExp:g,watcher:d.$watch(g,i)}}h.watchFn(d.$eval(g))}function h(a){var b=a.targetScope,c=i.indexOf(b);if(i.splice(c,1),j.splice(c,1),i.length){var d=i[0];angular.forEach(k,function(a){a.scope===b&&(a.watcher=d.$watch(a.compareWithExp,a.watchFn),a.scope=d)})}else k={}}var i=[],j=[],k={},l=e.uibIsClass.match(b),m=l[2],n=l[1],o=n.split(",");return f}}}]),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){var c,d={normal:/(auto|scroll)/,hidden:/(auto|scroll|hidden)/},e={auto:/\s?auto?\s?/i,primary:/^(top|bottom|left|right)$/,secondary:/^(top|bottom|left|right|center)$/,vertical:/^(top|bottom)$/};return{getRawNode:function(a){return a.nodeName?a:a[0]||a},parseStyle:function(a){return a=parseFloat(a),isFinite(a)?a:0},offsetParent:function(c){function d(a){return"static"===(b.getComputedStyle(a).position||"static")}c=this.getRawNode(c);for(var e=c.offsetParent||a[0].documentElement;e&&e!==a[0].documentElement&&d(e);)e=e.offsetParent;return e||a[0].documentElement},scrollbarWidth:function(){if(angular.isUndefined(c)){var b=angular.element('
    ');a.find("body").append(b),c=b[0].offsetWidth-b[0].clientWidth,c=isFinite(c)?c:0,b.remove()}return c},isScrollable:function(a,c){a=this.getRawNode(a);var e=c?d.hidden:d.normal,f=b.getComputedStyle(a);return e.test(f.overflow+f.overflowY+f.overflowX)},scrollParent:function(c,e){c=this.getRawNode(c);var f=e?d.hidden:d.normal,g=a[0].documentElement,h=b.getComputedStyle(c),i="absolute"===h.position,j=c.parentElement||g;if(j===g||"fixed"===h.position)return g;for(;j.parentElement&&j!==g;){var k=b.getComputedStyle(j);if(i&&"static"!==k.position&&(i=!1),!i&&f.test(k.overflow+k.overflowY+k.overflowX))break;j=j.parentElement}return j},position:function(c,d){c=this.getRawNode(c);var e=this.offset(c);if(d){var f=b.getComputedStyle(c);e.top-=this.parseStyle(f.marginTop),e.left-=this.parseStyle(f.marginLeft)}var g=this.offsetParent(c),h={top:0,left:0};return g!==a[0].documentElement&&(h=this.offset(g),h.top+=g.clientTop-g.scrollTop,h.left+=g.clientLeft-g.scrollLeft),{width:Math.round(angular.isNumber(e.width)?e.width:c.offsetWidth),height:Math.round(angular.isNumber(e.height)?e.height:c.offsetHeight),top:Math.round(e.top-h.top),left:Math.round(e.left-h.left)}},offset:function(c){c=this.getRawNode(c);var d=c.getBoundingClientRect();return{width:Math.round(angular.isNumber(d.width)?d.width:c.offsetWidth),height:Math.round(angular.isNumber(d.height)?d.height:c.offsetHeight),top:Math.round(d.top+(b.pageYOffset||a[0].documentElement.scrollTop)),left:Math.round(d.left+(b.pageXOffset||a[0].documentElement.scrollLeft))}},viewportOffset:function(c,d,e){c=this.getRawNode(c),e=e!==!1?!0:!1;var f=c.getBoundingClientRect(),g={top:0,left:0,bottom:0,right:0},h=d?a[0].documentElement:this.scrollParent(c),i=h.getBoundingClientRect();if(g.top=i.top+h.clientTop,g.left=i.left+h.clientLeft,h===a[0].documentElement&&(g.top+=b.pageYOffset,g.left+=b.pageXOffset),g.bottom=g.top+h.clientHeight,g.right=g.left+h.clientWidth,e){var j=b.getComputedStyle(h);g.top+=this.parseStyle(j.paddingTop),g.bottom-=this.parseStyle(j.paddingBottom),g.left+=this.parseStyle(j.paddingLeft),g.right-=this.parseStyle(j.paddingRight)}return{top:Math.round(f.top-g.top),bottom:Math.round(g.bottom-f.bottom),left:Math.round(f.left-g.left),right:Math.round(g.right-f.right)}},parsePlacement:function(a){var b=e.auto.test(a);return b&&(a=a.replace(e.auto,"")),a=a.split("-"),a[0]=a[0]||"top",e.primary.test(a[0])||(a[0]="top"),a[1]=a[1]||"center",e.secondary.test(a[1])||(a[1]="center"),b?a[2]=!0:a[2]=!1,a},positionElements:function(a,c,d,f){a=this.getRawNode(a),c=this.getRawNode(c);var g=angular.isDefined(c.offsetWidth)?c.offsetWidth:c.prop("offsetWidth"),h=angular.isDefined(c.offsetHeight)?c.offsetHeight:c.prop("offsetHeight");d=this.parsePlacement(d);var i=f?this.offset(a):this.position(a),j={top:0,left:0,placement:""};if(d[2]){var k=this.viewportOffset(a,f),l=b.getComputedStyle(c),m={width:g+Math.round(Math.abs(this.parseStyle(l.marginLeft)+this.parseStyle(l.marginRight))),height:h+Math.round(Math.abs(this.parseStyle(l.marginTop)+this.parseStyle(l.marginBottom)))};if(d[0]="top"===d[0]&&m.height>k.top&&m.height<=k.bottom?"bottom":"bottom"===d[0]&&m.height>k.bottom&&m.height<=k.top?"top":"left"===d[0]&&m.width>k.left&&m.width<=k.right?"right":"right"===d[0]&&m.width>k.right&&m.width<=k.left?"left":d[0],d[1]="top"===d[1]&&m.height-i.height>k.bottom&&m.height-i.height<=k.top?"bottom":"bottom"===d[1]&&m.height-i.height>k.top&&m.height-i.height<=k.bottom?"top":"left"===d[1]&&m.width-i.width>k.right&&m.width-i.width<=k.left?"right":"right"===d[1]&&m.width-i.width>k.left&&m.width-i.width<=k.right?"left":d[1],"center"===d[1])if(e.vertical.test(d[0])){var n=i.width/2-g/2;k.left+n<0&&m.width-i.width<=k.right?d[1]="left":k.right+n<0&&m.width-i.width<=k.left&&(d[1]="right")}else{var o=i.height/2-m.height/2;k.top+o<0&&m.height-i.height<=k.bottom?d[1]="top":k.bottom+o<0&&m.height-i.height<=k.top&&(d[1]="bottom")}}switch(d[0]){case"top":j.top=i.top-h;break;case"bottom":j.top=i.top+i.height;break;case"left":j.left=i.left-g;break;case"right":j.left=i.left+i.width}switch(d[1]){case"top":j.top=i.top;break;case"bottom":j.top=i.top+i.height-h;break;case"left":j.left=i.left;break;case"right":j.left=i.left+i.width-g;break;case"center":e.vertical.test(d[0])?j.left=i.left+i.width/2-g/2:j.top=i.top+i.height/2-h/2}return j.top=Math.round(j.top),j.left=Math.round(j.left),j.placement="center"===d[1]?d[0]:d[0]+"-"+d[1],j},positionArrow:function(a,c){a=this.getRawNode(a);var d=a.querySelector(".tooltip-inner, .popover-inner");if(d){var f=angular.element(d).hasClass("tooltip-inner"),g=f?a.querySelector(".tooltip-arrow"):a.querySelector(".arrow");if(g){var h={top:"",bottom:"",left:"",right:""};if(c=this.parsePlacement(c),"center"===c[1])return void angular.element(g).css(h);var i="border-"+c[0]+"-width",j=b.getComputedStyle(g)[i],k="border-";k+=e.vertical.test(c[0])?c[0]+"-"+c[1]:c[1]+"-"+c[0],k+="-radius";var l=b.getComputedStyle(f?d:a)[k];switch(c[0]){case"top":h.bottom=f?"0":"-"+j;break;case"bottom":h.top=f?"0":"-"+j;break;case"left":h.right=f?"0":"-"+j;break;case"right":h.left=f?"0":"-"+j}h[c[1]]=l,angular.element(g).css(h)}}}}}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.position"]).value("$datepickerSuppressError",!1).value("uibDatepickerAttributeWarning",!0).constant("uibDatepickerConfig",{datepickerMode:"day",formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",maxDate:null,maxMode:"year",minDate:null,minMode:"day",ngModelOptions:{},shortcutPropagation:!1,showWeeks:!0,yearColumns:5,yearRows:4}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$locale","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError","uibDatepickerAttributeWarning","uibDateParser",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){a.datepickerMode=b,q&&(a.datepickerOptions.datepickerMode=b)}var m=this,n={$setViewValue:angular.noop},o={},p=[],q=!!b.datepickerOptions;if(this.modes=["day","month","year"],q)["customClass","dateDisabled","datepickerMode","formatDay","formatDayHeader","formatDayTitle","formatMonth","formatMonthTitle","formatYear","initDate","maxDate","maxMode","minDate","minMode","showWeeks","shortcutPropagation","startingDay","yearColumns","yearRows"].forEach(function(b){switch(b){case"customClass":case"dateDisabled":a[b]=a.datepickerOptions[b]||angular.noop;break;case"datepickerMode":a.datepickerMode=angular.isDefined(a.datepickerOptions.datepickerMode)?a.datepickerOptions.datepickerMode:h.datepickerMode;break;case"formatDay":case"formatDayHeader":case"formatDayTitle":case"formatMonth":case"formatMonthTitle":case"formatYear":m[b]=angular.isDefined(a.datepickerOptions[b])?d(a.datepickerOptions[b])(a.$parent):h[b];break;case"showWeeks":case"shortcutPropagation":case"yearColumns":case"yearRows":m[b]=angular.isDefined(a.datepickerOptions[b])?a.datepickerOptions[b]:h[b];break;case"startingDay":angular.isDefined(a.datepickerOptions.startingDay)?m.startingDay=a.datepickerOptions.startingDay:angular.isNumber(h.startingDay)?m.startingDay=h.startingDay:m.startingDay=(e.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7;break;case"maxDate":case"minDate":a.datepickerOptions[b]?a.$watch(function(){return a.datepickerOptions[b]},function(a){a?angular.isDate(a)?m[b]=k.fromTimezone(new Date(a),o.timezone):m[b]=new Date(g(a,"medium")):m[b]=null,m.refreshView()}):m[b]=h[b]?k.fromTimezone(new Date(h[b]),o.timezone):null;break;case"maxMode":case"minMode":a.datepickerOptions[b]?a.$watch(function(){return a.datepickerOptions[b]},function(c){m[b]=a[b]=angular.isDefined(c)?c:datepickerOptions[b],("minMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)m.modes.indexOf(m[b]))&&(a.datepickerMode=m[b],a.datepickerOptions.datepickerMode=m[b])}):m[b]=a[b]=h[b]||null;break;case"initDate":a.datepickerOptions.initDate?(m.activeDate=k.fromTimezone(a.datepickerOptions.initDate,o.timezone)||new Date,a.$watch(function(){return a.datepickerOptions.initDate},function(a){a&&(n.$isEmpty(n.$modelValue)||n.$invalid)&&(m.activeDate=k.fromTimezone(a,o.timezone),m.refreshView())})):m.activeDate=new Date}});else{if(angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle"],function(c){m[c]=angular.isDefined(b[c])?d(b[c])(a.$parent):h[c],angular.isDefined(b[c])&&j&&f.warn("uib-datepicker "+c+" attribute usage is deprecated, use datepicker-options attribute instead")}),angular.forEach(["showWeeks","yearRows","yearColumns","shortcutPropagation"],function(c){m[c]=angular.isDefined(b[c])?a.$parent.$eval(b[c]):h[c],angular.isDefined(b[c])&&j&&f.warn("uib-datepicker "+c+" attribute usage is deprecated, use datepicker-options attribute instead")}),angular.forEach(["dateDisabled","customClass"],function(a){angular.isDefined(b[a])&&j&&f.warn("uib-datepicker "+a+" attribute usage is deprecated, use datepicker-options attribute instead")}),angular.isDefined(b.startingDay)?(j&&f.warn("uib-datepicker startingDay attribute usage is deprecated, use datepicker-options attribute instead"),m.startingDay=a.$parent.$eval(b.startingDay)):angular.isNumber(h.startingDay)?m.startingDay=h.startingDay:m.startingDay=(e.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7,angular.forEach(["minDate","maxDate"],function(c){b[c]?(j&&f.warn("uib-datepicker "+c+" attribute usage is deprecated, use datepicker-options attribute instead"),p.push(a.$parent.$watch(b[c],function(a){a?angular.isDate(a)?m[c]=k.fromTimezone(new Date(a),o.timezone):m[c]=new Date(g(a,"medium")):m[c]=null,m.refreshView()}))):m[c]=h[c]?k.fromTimezone(new Date(h[c]),o.timezone):null}),angular.forEach(["minMode","maxMode"],function(c){b[c]?(j&&f.warn("uib-datepicker "+c+" attribute usage is deprecated, use datepicker-options attribute instead"),p.push(a.$parent.$watch(b[c],function(d){m[c]=a[c]=angular.isDefined(d)?d:b[c],("minMode"===c&&m.modes.indexOf(a.datepickerMode)m.modes.indexOf(m[c]))&&(a.datepickerMode=m[c])}))):m[c]=a[c]=h[c]||null}),angular.isDefined(b.initDate)){j&&f.warn("uib-datepicker initDate attribute usage is deprecated, use datepicker-options attribute instead");var r=k.fromTimezone(a.$parent.$eval(b.initDate),o.timezone);this.activeDate=isNaN(r)?new Date:r,p.push(a.$parent.$watch(b.initDate,function(a){a&&(n.$isEmpty(n.$modelValue)||n.$invalid)&&(a=k.fromTimezone(a,o.timezone),m.activeDate=isNaN(a)?new Date:a,m.refreshView())}))}else this.activeDate=new Date;b.datepickerMode&&j&&f.warn("uib-datepicker datepickerMode attribute usage is deprecated, use datepicker-options attribute instead"),a.datepickerMode=a.datepickerMode||h.datepickerMode}a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),a.disabled=angular.isDefined(b.disabled)||!1,angular.isDefined(b.ngDisabled)&&p.push(a.$parent.$watch(b.ngDisabled,function(b){a.disabled=b,m.refreshView()})),a.isActive=function(b){return 0===m.compare(b.date,m.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){n=a,o=a.$options||h.ngModelOptions,this.activeDate=n.$modelValue||new Date,n.$render=function(){m.render()}},this.render=function(){if(n.$viewValue){var a=new Date(n.$viewValue),b=!isNaN(a);b?this.activeDate=k.fromTimezone(a,o.timezone):i||f.error('Datepicker directive: "ng-model" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){a.selectedDt=null,this._refreshView(),a.activeDt&&(a.activeDateId=a.activeDt.uid);var b=n.$viewValue?new Date(n.$viewValue):null;b=k.fromTimezone(b,o.timezone),n.$setValidity("dateDisabled",!b||this.element&&!this.isDisabled(b))}},this.createDateObject=function(b,c){var d=n.$viewValue?new Date(n.$viewValue):null;d=k.fromTimezone(d,o.timezone);var e=new Date;e=k.fromTimezone(e,o.timezone);var f=this.compare(b,e),g={date:b,label:k.filter(b,c),selected:d&&0===this.compare(b,d),disabled:this.isDisabled(b),past:0>f,current:0===f,future:f>0,customClass:this.customClass(b)||null};return d&&0===this.compare(b,d)&&(a.selectedDt=g),m.activeDate&&0===this.compare(g.date,m.activeDate)&&(a.activeDt=g),g},this.isDisabled=function(b){return a.disabled||this.minDate&&this.compare(b,this.minDate)<0||this.maxDate&&this.compare(b,this.maxDate)>0||a.dateDisabled&&a.dateDisabled({date:b,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c; +},a.select=function(b){if(a.datepickerMode===m.minMode){var c=n.$viewValue?k.fromTimezone(new Date(n.$viewValue),o.timezone):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),c=k.toTimezone(c,o.timezone),n.$setViewValue(c),n.$render()}else m.activeDate=b,l(m.modes[m.modes.indexOf(a.datepickerMode)-1]),a.$emit("uib:datepicker.mode")},a.move=function(a){var b=m.activeDate.getFullYear()+a*(m.step.years||0),c=m.activeDate.getMonth()+a*(m.step.months||0);m.activeDate.setFullYear(b,c,1),m.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===m.maxMode&&1===b||a.datepickerMode===m.minMode&&-1===b||(l(m.modes[m.modes.indexOf(a.datepickerMode)+b]),a.$emit("uib:datepicker.mode"))},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var s=function(){m.element[0].focus()};a.$on("uib:datepicker.focus",s),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey&&!a.disabled)if(b.preventDefault(),m.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(m.isDisabled(m.activeDate))return;a.select(m.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(m.handleKeyDown(c,b),m.refreshView()):a.toggleMode("up"===c?1:-1)},a.$on("$destroy",function(){for(;p.length;)p.shift()()})}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth(),a.getDate()),d=new Date(b.getFullYear(),b.getMonth(),b.getDate());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth()),d=new Date(b.getFullYear(),b.getMonth());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/f,10)*f+1}var e,f;this.element=b,this.yearpickerInit=function(){e=this.yearColumns,f=this.yearRows*e,this.step={years:f}},this._refreshView=function(){for(var b,c=new Array(f),g=0,h=d(this.activeDate.getFullYear());f>g;g++)b=new Date(this.activeDate),b.setFullYear(h+g,0,1),c[g]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+g});a.title=[c[0].label,c[f-1].label].join(" - "),a.rows=this.split(c,e),a.columns=e},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=e:"right"===a?c+=1:"down"===a?c+=e:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*f:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+f-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",datepickerOptions:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/day.html"},require:["^uibDatepicker","uibDaypicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/month.html"},require:["^uibDatepicker","uibMonthpicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/year.html"},require:["^uibDatepicker","uibYearpicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}).value("uibDatepickerPopupAttributeWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepicker/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","uibDatepickerPopupAttributeWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){function q(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function r(b){var c=l.parse(b,x,a.date);if(isNaN(c))for(var d=0;d
    "),a.ngModelOptions=angular.copy(H),a.ngModelOptions.timezone=null,a.ngModelOptions.updateOnDefault===!0&&(a.ngModelOptions.updateOn=a.ngModelOptions.updateOn?a.ngModelOptions.updateOn+" default":"default"),D.attr({"ng-model":"date","ng-model-options":"ngModelOptions","ng-change":"dateSelection(date)","template-url":B}),E=angular.element(D.children()[0]),E.attr("template-url",C),L&&"month"===c.type&&(E.attr("datepicker-mode",'"month"'),E.attr("min-mode","month")),a.datepickerOptions&&E.attr("datepicker-options","datepickerOptions"),angular.forEach(["minMode","maxMode","datepickerMode","shortcutPropagation"],function(b){if(c[b]){p&&e.warn("uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead");var d=f(c[b]),g={get:function(){return d(a.$parent)}};if(E.attr(q(b),"watchData."+b),"datepickerMode"===b){var h=d.assign;g.set=function(b){h(a.$parent,b)}}Object.defineProperty(a.watchData,b,g)}}),angular.forEach(["minDate","maxDate","initDate"],function(b){if(c[b]){p&&e.warn("uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead");var d=f(c[b]);M.push(a.$parent.$watch(d,function(c){if("minDate"===b||"maxDate"===b)null===c?K[b]=null:angular.isDate(c)?K[b]=l.fromTimezone(new Date(c),H.timezone):K[b]=new Date(k(c,"medium")),a.watchData[b]=null===c?null:K[b];else{var d=c?new Date(c):new Date;a.watchData[b]=l.fromTimezone(d,H.timezone)}})),E.attr(q(b),"watchData."+b)}}),c.dateDisabled&&(p&&e.warn("uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead"),E.attr("date-disabled","dateDisabled({ date: date, mode: mode })")),angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRows","yearColumns"],function(a){angular.isDefined(c[a])&&(p&&e.warn("uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead"),E.attr(q(a),c[a]))}),c.customClass&&(p&&e.warn("uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead"),E.attr("custom-class","customClass({ date: date, mode: mode })")),L?G.$formatters.push(function(b){return a.date=l.fromTimezone(b,H.timezone),b}):(G.$$parserName="date",G.$validators.date=t,G.$parsers.unshift(s),G.$formatters.push(function(b){return G.$isEmpty(b)?(a.date=b,b):(a.date=l.fromTimezone(b,H.timezone),angular.isNumber(a.date)&&(a.date=new Date(a.date)),l.filter(a.date,x))})),G.$viewChangeListeners.push(function(){a.date=r(G.$viewValue)}),b.on("keydown",v),I=d(D)(a),D.remove(),z?h.find("body").append(I):b.after(I),a.$on("$destroy",function(){for(a.isOpen===!0&&(i.$$phase||a.$apply(function(){a.isOpen=!1})),I.remove(),b.off("keydown",v),h.off("click",u),F&&F.off("scroll",w),angular.element(g).off("resize",w);M.length;)M.shift()()})},a.getText=function(b){return a[b+"Text"]||m[b+"Text"]},a.isDisabled=function(b){return"today"===b&&(b=new Date),a.watchData.minDate&&a.compare(b,K.minDate)<0||a.watchData.maxDate&&a.compare(b,K.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?l.filter(a.date,x):null;b.val(d),G.$setViewValue(d),y&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(c.stopPropagation(),a.isOpen=!1,b[0].focus())},a.select=function(b,c){if(c.stopPropagation(),"today"===b){var d=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(d.getFullYear(),d.getMonth(),d.getDate())):b=new Date(d.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(c){c.stopPropagation(),a.isOpen=!1,b[0].focus()},a.disabled=angular.isDefined(c.disabled)||!1,c.ngDisabled&&M.push(a.$parent.$watch(f(c.ngDisabled),function(b){a.disabled=b})),a.$watch("isOpen",function(d){d?a.disabled?a.isOpen=!1:n(function(){w(),A&&a.$broadcast("uib:datepicker.focus"),h.on("click",u);var d=c.popupPlacement?c.popupPlacement:m.placement;z||j.parsePlacement(d)[2]?(F=F||angular.element(j.scrollParent(b)),F&&F.on("scroll",w)):F=null,angular.element(g).on("resize",w)},0,!1):(h.off("click",u),F&&F.off("scroll",w),angular.element(g).off("resize",w))}),a.$on("uib:datepicker.mode",function(){n(w,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function(a){return function(b,c){var d;return function(){var e=this,f=Array.prototype.slice.call(arguments);d&&a.cancel(d),d=a(function(){b.apply(e,f)},c)}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b){c||(a.on("click",d),a.on("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.off("click",d),a.off("keydown",e))};var d=function(a){if(c&&!(a&&"disabled"===c.getAutoClose()||a&&3===a.which)){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&-1!==[38,40].indexOf(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.appendToOpenClass,q=e.openClass,r=angular.noop,s=c.onToggle?d(c.onToggle):angular.noop,t=!1,u=null,v=!1,w=i.find("body");b.addClass("dropdown"),this.init=function(){if(c.isOpen&&(m=d(c.isOpen),r=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),angular.isDefined(c.dropdownAppendTo)){var e=d(c.dropdownAppendTo)(o);e&&(u=angular.element(e))}t=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.keyboardNav),t&&!u&&(u=w),u&&n.dropdownMenu&&(u.append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen,angular.isFunction(r)&&r(o,o.isOpen),o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return v},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):b.find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(u&&n.dropdownMenu){var e,i,m=h.positionElements(b,n.dropdownMenu,"bottom-left",!0);if(e={top:m.top+"px",display:c?"block":"none"},i=n.dropdownMenu.hasClass("dropdown-menu-right"),i?(e.left="auto",e.right=window.innerWidth-(m.left+b.prop("offsetWidth"))+"px"):(e.left=m.left+"px",e.right="auto"),!t){var v=h.offset(u);e.top=m.top-v.top+"px",i?e.right=window.innerWidth-(m.left-v.left+b.prop("offsetWidth"))+"px":e.left=m.left-v.left+"px"}n.dropdownMenu.css(e)}var w=u?u:b,x=w.hasClass(u?p:q);if(x===!c&&g[c?"addClass":"removeClass"](w,u?p:q).then(function(){angular.isDefined(c)&&c!==d&&s(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var y=angular.element('');n.dropdownMenu.replaceWith(y),n.dropdownMenu=y}f.close(o),n.selectedOption=null}angular.isFunction(r)&&r(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==o.getAutoClose()&&(o.isOpen=!1)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c0&&(b=t.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function l(){if(p&&-1===i()){var a=q;m(p,q,function(){a=null}),p=void 0,q=void 0}}function m(b,c,d,e){function g(){g.done||(g.done=!0,a.leave(b).then(function(){b.remove(),e&&e.resolve()}),c.$destroy(),d&&d())}var h,i=null,j=function(){return h||(h=f.defer(),i=h.promise),function(){h.resolve()}};return c.$broadcast(v.NOW_CLOSING_EVENT,j),f.when(i).then(g)}function n(a){if(a.isDefaultPrevented())return a;var b=t.top();if(b)switch(a.which){case 27:b.value.keyboard&&(a.preventDefault(),e.$apply(function(){v.dismiss(b.key,"escape key press")}));break;case 9:v.loadFocusElementList(b);var c=!1;a.shiftKey?(v.isFocusInFirstItem(a)||v.isModalFocused(a,b))&&(c=v.focusLastFocusableElement()):v.isFocusInLastItem(a)&&(c=v.focusFirstFocusableElement()),c&&(a.preventDefault(),a.stopPropagation())}}function o(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var p,q,r,s="modal-open",t=h.createNew(),u=g.createNew(),v={NOW_CLOSING_EVENT:"modal.stack.now-closing"},w=0,x="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(i,function(a){q&&(q.index=a)}),c.on("keydown",n),e.$on("$destroy",function(){c.off("keydown",n)}),v.open=function(b,f){var g=c[0].activeElement,h=f.openedClass||s;k(!1),t.add(b,{deferred:f.deferred,renderDeferred:f.renderDeferred,closedDeferred:f.closedDeferred,modalScope:f.scope,backdrop:f.backdrop,keyboard:f.keyboard,openedClass:f.openedClass,windowTopClass:f.windowTopClass,animation:f.animation,appendTo:f.appendTo}),u.put(h,b);var j=f.appendTo,l=i();if(!j.length)throw new Error("appendTo element not found. Make sure that the element passed is in DOM.");l>=0&&!p&&(q=e.$new(!0),q.modalOptions=f,q.index=l,p=angular.element('
    '),p.attr("backdrop-class",f.backdropClass),f.animation&&p.attr("modal-animation","true"),d(p)(q),a.enter(p,j));var m=angular.element('
    ');m.attr({"template-url":f.windowTemplateUrl,"window-class":f.windowClass,"window-top-class":f.windowTopClass,size:f.size,index:t.length()-1,animate:"animate"}).html(f.content),f.animation&&m.attr("modal-animation","true"),a.enter(d(m)(f.scope),j).then(function(){f.scope.$$uibDestructionScheduled||a.addClass(j,h)}),t.top().value.modalDomEl=m,t.top().value.modalOpener=g,v.clearFocusListCache()},v.close=function(a,b){var c=t.get(a);return c&&o(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),j(a,c.value.modalOpener),!0):!c},v.dismiss=function(a,b){var c=t.get(a);return c&&o(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),j(a,c.value.modalOpener),!0):!c},v.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},v.getTop=function(){return t.top()},v.modalRendered=function(a){var b=t.get(a);b&&b.value.renderDeferred.resolve()},v.focusFirstFocusableElement=function(){return r.length>0?(r[0].focus(),!0):!1},v.focusLastFocusableElement=function(){return r.length>0?(r[r.length-1].focus(),!0):!1},v.isModalFocused=function(a,b){if(a&&b){var c=b.value.modalDomEl;if(c&&c.length)return(a.target||a.srcElement)===c[0]}return!1},v.isFocusInFirstItem=function(a){return r.length>0?(a.target||a.srcElement)===r[0]:!1},v.isFocusInLastItem=function(a){return r.length>0?(a.target||a.srcElement)===r[r.length-1]:!1},v.clearFocusListCache=function(){r=[],w=0},v.loadFocusElementList=function(a){if((void 0===r||!r.length)&&a){var b=a.value.modalDomEl;b&&b.length&&(r=b[0].querySelectorAll(x))}},v}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$rootScope","$q","$document","$templateRequest","$controller","$uibResolve","$uibModalStack",function(b,c,d,e,f,g,h){function i(a){return a.template?c.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(e){function j(){return r}var l=c.defer(),m=c.defer(),n=c.defer(),o=c.defer(),p={result:l.promise,opened:m.promise,closed:n.promise,rendered:o.promise,close:function(a){return h.close(p,a)},dismiss:function(a){return h.dismiss(p,a)}};if(e=angular.extend({},a.options,e),e.resolve=e.resolve||{},e.appendTo=e.appendTo||d.find("body").eq(0),!e.template&&!e.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=c.all([i(e),g.resolve(e.resolve,{},null,null)]);return q=k=c.all([k]).then(j,j).then(function(a){var c=e.scope||b,d=c.$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var g,i,j={};e.controller&&(j.$scope=d,j.$uibModalInstance=p,angular.forEach(a[1],function(a,b){j[b]=a}),i=f(e.controller,j,!0),e.controllerAs?(g=i.instance,e.bindToController&&(g.$close=d.$close,g.$dismiss=d.$dismiss,angular.extend(g,c)),g=i(),d[e.controllerAs]=g):g=i(),angular.isFunction(g.$onInit)&&g.$onInit()),h.open(p,{scope:d,deferred:l,renderDeferred:o,closedDeferred:n,content:a[0],animation:e.animation,backdrop:e.backdrop,keyboard:e.keyboard,backdropClass:e.backdropClass,windowTopClass:e.windowTopClass,windowClass:e.windowClass,windowTemplateUrl:e.windowTemplateUrl,size:e.size,openedClass:e.openedClass,appendTo:e.appendTo}),m.resolve(!0)},function(a){m.reject(a),l.reject(a)})["finally"](function(){k===q&&(k=null)}),p},j}]};return a}),angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(a){return{create:function(b,c,d){b.setNumPages=d.numPages?a(d.numPages).assign:angular.noop,b.ngModelCtrl={$setViewValue:angular.noop},b._watchers=[],b.init=function(a,e){b.ngModelCtrl=a,b.config=e,a.$render=function(){b.render()},d.itemsPerPage?b._watchers.push(c.$parent.$watch(d.itemsPerPage,function(a){b.itemsPerPage=parseInt(a,10),c.totalPages=b.calculateTotalPages(),b.updatePage()})):b.itemsPerPage=e.itemsPerPage,c.$watch("totalItems",function(a,d){(angular.isDefined(a)||a!==d)&&(c.totalPages=b.calculateTotalPages(),b.updatePage())})},b.calculateTotalPages=function(){var a=b.itemsPerPage<1?1:Math.ceil(c.totalItems/b.itemsPerPage);return Math.max(a||0,1)},b.render=function(){c.page=parseInt(b.ngModelCtrl.$viewValue,10)||1},c.selectPage=function(a,d){d&&d.preventDefault();var e=!c.ngDisabled||!d;e&&c.page!==a&&a>0&&a<=c.totalPages&&(d&&d.target&&d.target.blur(),b.ngModelCtrl.$setViewValue(a),b.ngModelCtrl.$render())},c.getText=function(a){return c[a+"Text"]||b.config[a+"Text"]},c.noPrevious=function(){return 1===c.page},c.noNext=function(){return c.page===c.totalPages},b.updatePage=function(){b.setNumPages(c.$parent,c.totalPages),c.page>c.totalPages?c.selectPage(c.totalPages):b.ngModelCtrl.$render()},c.$on("$destroy",function(){for(;b._watchers.length;)b._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(a,b,c,d){a.align=angular.isDefined(b.align)?a.$parent.$eval(b.align):d.align,c.create(this,a,b)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPagerController",controllerAs:"pager",templateUrl:function(a,b){return b.templateUrl||"uib/template/pager/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&f.init(g,a)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(a,b,c,d,e){function f(a,b,c){return{number:a,text:b,active:c}}function g(a,b){var c=[],d=1,e=b,g=angular.isDefined(i)&&b>i;g&&(j?(d=Math.max(a-Math.floor(i/2),1),e=d+i-1,e>b&&(e=b,d=e-i+1)):(d=(Math.ceil(a/i)-1)*i+1,e=Math.min(d+i-1,b)));for(var h=d;e>=h;h++){var n=f(h,m(h),h===a);c.push(n)}if(g&&i>0&&(!j||k||l)){if(d>1){if(!l||d>3){var o=f(d-1,"...",!1);c.unshift(o)}if(l){if(3===d){var p=f(2,"2",!1);c.unshift(p)}var q=f(1,"1",!1); +c.unshift(q)}}if(b>e){if(!l||b-2>e){var r=f(e+1,"...",!1);c.push(r)}if(l){if(e===b-2){var s=f(b-1,b-1,!1);c.push(s)}var t=f(b,b,!1);c.push(t)}}}return c}var h=this,i=angular.isDefined(b.maxSize)?a.$parent.$eval(b.maxSize):e.maxSize,j=angular.isDefined(b.rotate)?a.$parent.$eval(b.rotate):e.rotate,k=angular.isDefined(b.forceEllipses)?a.$parent.$eval(b.forceEllipses):e.forceEllipses,l=angular.isDefined(b.boundaryLinkNumbers)?a.$parent.$eval(b.boundaryLinkNumbers):e.boundaryLinkNumbers,m=angular.isDefined(b.pageLabel)?function(c){return a.$parent.$eval(b.pageLabel,{$page:c})}:angular.identity;a.boundaryLinks=angular.isDefined(b.boundaryLinks)?a.$parent.$eval(b.boundaryLinks):e.boundaryLinks,a.directionLinks=angular.isDefined(b.directionLinks)?a.$parent.$eval(b.directionLinks):e.directionLinks,d.create(this,a,b),b.maxSize&&h._watchers.push(a.$parent.$watch(c(b.maxSize),function(a){i=parseInt(a,10),h.render()}));var n=this.render;this.render=function(){n(),a.page>0&&a.page<=a.totalPages&&(a.pages=g(a.page,a.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"uib/template/pagination/pagination.html"},replace:!0,link:function(a,c,d,e){var f=e[0],g=e[1];g&&f.init(g,b)}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",placementClassPrefix:"",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",outsideClick:"outsideClick",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){function n(a){if(27===a.which){var b=o.top();b&&(b.value.close(),o.removeTop(),b=null)}}var o=m.createNew();return h.on("keypress",n),k.$on("$destroy",function(){h.off("keypress",n)}),function(e,k,m,n){function p(a){var b=(a||n.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}n=angular.extend({},b,d,n);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="
    ';return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){N.isOpen?q():m()}function m(){(!M||a.$eval(d[k+"Enable"]))&&(u(),x(),N.popupDelay?G||(G=g(r,N.popupDelay,!1)):r())}function q(){s(),N.popupCloseDelay?H||(H=g(t,N.popupCloseDelay,!1)):t()}function r(){return s(),u(),N.content?(v(),void N.$evalAsync(function(){N.isOpen=!0,y(!0),S()})):angular.noop}function s(){G&&(g.cancel(G),G=null),I&&(g.cancel(I),I=null)}function t(){N&&N.$evalAsync(function(){N&&(N.isOpen=!1,y(!1),N.animation?F||(F=g(w,150,!1)):w())})}function u(){H&&(g.cancel(H),H=null),F&&(g.cancel(F),F=null)}function v(){D||(E=N.$new(),D=c(E,function(a){K?h.find("body").append(a):b.after(a)}),z())}function w(){s(),u(),A(),D&&(D.remove(),D=null),E&&(E.$destroy(),E=null)}function x(){N.title=d[k+"Title"],Q?N.content=Q(a):N.content=d[e],N.popupClass=d[k+"Class"],N.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:n.placement;var b=i.parsePlacement(N.placement);J=b[1]?b[0]+"-"+b[1]:b[0];var c=parseInt(d[k+"PopupDelay"],10),f=parseInt(d[k+"PopupCloseDelay"],10);N.popupDelay=isNaN(c)?n.popupDelay:c,N.popupCloseDelay=isNaN(f)?n.popupCloseDelay:f}function y(b){P&&angular.isFunction(P.assign)&&P.assign(a,b)}function z(){R.length=0,Q?(R.push(a.$watch(Q,function(a){N.content=a,!a&&N.isOpen&&t()})),R.push(E.$watch(function(){O||(O=!0,E.$$postDigest(function(){O=!1,N&&N.isOpen&&S()}))}))):R.push(d.$observe(e,function(a){N.content=a,!a&&N.isOpen?t():S()})),R.push(d.$observe(k+"Title",function(a){N.title=a,N.isOpen&&S()})),R.push(d.$observe(k+"Placement",function(a){N.placement=a?a:n.placement;var b=i.parsePlacement(N.placement);J=b[1]?b[0]+"-"+b[1]:b[0],N.isOpen&&S()}))}function A(){R.length&&(angular.forEach(R,function(a){a()}),R.length=0)}function B(a){N&&N.isOpen&&D&&(b[0].contains(a.target)||D[0].contains(a.target)||q())}function C(){var a=d[k+"Trigger"];T(),L=p(a),"none"!==L.show&&L.show.forEach(function(a,c){"outsideClick"===a?(b.on("click",j),h.on("click",B)):a===L.hide[c]?b.on(a,j):a&&(b.on(a,m),b.on(L.hide[c],q)),b.on("keypress",function(a){27===a.which&&q()})})}var D,E,F,G,H,I,J,K=angular.isDefined(n.appendToBody)?n.appendToBody:!1,L=p(void 0),M=angular.isDefined(d[k+"Enable"]),N=a.$new(!0),O=!1,P=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,Q=n.useContentExp?l(d[e]):!1,R=[],S=function(){D&&D.html()&&(I||(I=g(function(){var a=i.positionElements(b,D,N.placement,K);D.css({top:a.top+"px",left:a.left+"px"}),D.hasClass(a.placement.split("-")[0])||(D.removeClass(J.split("-")[0]),D.addClass(a.placement.split("-")[0])),D.hasClass(n.placementClassPrefix+a.placement)||(D.removeClass(n.placementClassPrefix+J),D.addClass(n.placementClassPrefix+a.placement)),D.hasClass("uib-position-measure")?(i.positionArrow(D,a.placement),D.removeClass("uib-position-measure")):J!==a.placement&&i.positionArrow(D,a.placement),J=a.placement,I=null},0,!1)))};N.origScope=a,N.isOpen=!1,o.add(N,{close:t}),N.contentExp=function(){return N.content},d.$observe("disabled",function(a){a&&s(),a&&N.isOpen&&t()}),P&&a.$watch(P,function(a){N&&!a===N.isOpen&&j()});var T=function(){L.show.forEach(function(a){"outsideClick"===a?b.off("click",j):(b.off(a,m),b.off(a,j))}),L.hide.forEach(function(a){"outsideClick"===a?h.off("click",B):b.off(a,q)})};C();var U=a.$eval(d[k+"Animation"]);N.animation=angular.isDefined(U)?!!U:n.animation;var V,W=k+"AppendToBody";V=W in d&&void 0===d[W]?!0:a.$eval(d[W]),K=angular.isDefined(V)?V:K,a.$on("$destroy",function(){T(),w(),o.remove(N),N=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",["$uibPosition",function(a){return{restrict:"A",link:function(b,c,d){if(b.placement){var e=a.parsePlacement(b.placement);c.addClass(e[0])}b.popupClass&&c.addClass(b.popupClass),b.animation()&&c.addClass(d.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){function d(){return angular.isDefined(a.maxParam)?a.maxParam:c.max}var e=this,f=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=d(),this.addBar=function(a,b,c){f||b.css({transition:"none"}),this.bars.push(a),a.max=d(),a.title=c&&angular.isDefined(c.title)?c.title:"progressbar",a.$watch("value",function(b){a.recalculatePercentage()}),a.recalculatePercentage=function(){var b=e.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);b>100&&(a.percent-=b-100)},a.$on("$destroy",function(){b=null,e.removeBar(a)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("maxParam",function(a){e.bars.forEach(function(a){a.max=d(),a.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{maxParam:"=?max"},templateUrl:"uib/template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"uib/template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",maxParam:"=?max",type:"@"},templateUrl:"uib/template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop},e=this;this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue,a.title=e.getTitle(a.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){function b(a){for(var b=0;bb.index?1:a.index0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===u[1]&&(b+=12)),b):void 0}function i(){var b=+a.minutes;return b>=0&&60>b?b:void 0}function j(){var b=+a.seconds;return b>=0&&60>b?b:void 0}function k(a){return null===a?"":angular.isDefined(a)&&a.toString().length<2?"0"+a:a.toString()}function l(a){m(),t.$setViewValue(new Date(r)),n(a)}function m(){t.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1,a.invalidSeconds=!1}function n(b){if(t.$modelValue){var c=r.getHours(),d=r.getMinutes(),e=r.getSeconds();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:k(c),"m"!==b&&(a.minutes=k(d)),a.meridian=r.getHours()<12?u[0]:u[1],"s"!==b&&(a.seconds=k(e)),a.meridian=r.getHours()<12?u[0]:u[1]}else a.hours=null,a.minutes=null,a.seconds=null,a.meridian=u[0]}function o(a){r=q(r,a),l()}function p(a,b){return q(a,60*b)}function q(a,b){var c=new Date(a.getTime()+1e3*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes(),c.getSeconds()),d}var r=new Date,s=[],t={$setViewValue:angular.noop},u=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){t=b,t.$render=this.render,t.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=d.eq(2),i=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;i&&this.setupMousewheelEvents(e,f,h);var j=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;j&&this.setupArrowkeyEvents(e,f,h),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f,h)};var v=g.hourStep;c.hourStep&&s.push(a.$parent.$watch(d(c.hourStep),function(a){v=+a}));var w=g.minuteStep;c.minuteStep&&s.push(a.$parent.$watch(d(c.minuteStep),function(a){w=+a}));var x;s.push(a.$parent.$watch(d(c.min),function(a){var b=new Date(a);x=isNaN(b)?void 0:b}));var y;s.push(a.$parent.$watch(d(c.max),function(a){var b=new Date(a);y=isNaN(b)?void 0:b}));var z=!1;c.ngDisabled&&s.push(a.$parent.$watch(d(c.ngDisabled),function(a){z=a})),a.noIncrementHours=function(){var a=p(r,60*v);return z||a>y||r>a&&x>a},a.noDecrementHours=function(){var a=p(r,60*-v);return z||x>a||a>r&&a>y},a.noIncrementMinutes=function(){var a=p(r,w);return z||a>y||r>a&&x>a},a.noDecrementMinutes=function(){var a=p(r,-w);return z||x>a||a>r&&a>y},a.noIncrementSeconds=function(){var a=q(r,A);return z||a>y||r>a&&x>a},a.noDecrementSeconds=function(){var a=q(r,-A);return z||x>a||a>r&&a>y},a.noToggleMeridian=function(){return r.getHours()<12?z||p(r,720)>y:z||p(r,-720)0};b.bind("mousewheel wheel",function(b){z||a.$apply(e(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){z||a.$apply(e(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()}),d.bind("mousewheel wheel",function(b){z||a.$apply(e(b)?a.incrementSeconds():a.decrementSeconds()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c,d){b.bind("keydown",function(b){z||(38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply()))}),c.bind("keydown",function(b){z||(38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply()))}),d.bind("keydown",function(b){z||(38===b.which?(b.preventDefault(),a.incrementSeconds(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementSeconds(),a.$apply()))})},this.setupInputEvents=function(b,c,d){if(a.readonlyInput)return a.updateHours=angular.noop,a.updateMinutes=angular.noop,void(a.updateSeconds=angular.noop);var e=function(b,c,d){t.$setViewValue(null),t.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c),angular.isDefined(d)&&(a.invalidSeconds=d)};a.updateHours=function(){var a=h(),b=i();t.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(r.setHours(a),r.setMinutes(b),x>r||r>y?e(!0):l("h")):e(!0)},b.bind("blur",function(b){t.$setTouched(),null===a.hours||""===a.hours?e(!0):!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=k(a.hours)})}),a.updateMinutes=function(){var a=i(),b=h();t.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(r.setHours(b),r.setMinutes(a),x>r||r>y?e(void 0,!0):l("m")):e(void 0,!0)},c.bind("blur",function(b){t.$setTouched(),null===a.minutes?e(void 0,!0):!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=k(a.minutes)})}),a.updateSeconds=function(){var a=j();t.$setDirty(),angular.isDefined(a)?(r.setSeconds(a),l("s")):e(void 0,void 0,!0)},d.bind("blur",function(b){!a.invalidSeconds&&a.seconds<10&&a.$apply(function(){a.seconds=k(a.seconds)})})},this.render=function(){var b=t.$viewValue;isNaN(b)?(t.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(r=b),x>r||r>y?(t.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):m(),n())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*v*60)},a.decrementHours=function(){a.noDecrementHours()||o(60*-v*60)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(60*w)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(60*-w)},a.incrementSeconds=function(){a.noIncrementSeconds()||o(A)},a.decrementSeconds=function(){a.noDecrementSeconds()||o(-A)},a.toggleMeridian=function(){var b=i(),c=h();a.noToggleMeridian()||(angular.isDefined(b)&&angular.isDefined(c)?o(720*(r.getHours()<12?60:-60)):a.meridian=a.meridian===u[0]?u[1]:u[0])},a.blur=function(){t.$setTouched()},a.$on("$destroy",function(){for(;s.length;)s.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(a){return{require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(b,c){return c.templateUrl||a.templateUrl},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),Y()}function o(){N.position=D?l.offset(b):l.position(b),N.position.top+=b.prop("offsetHeight")}var p,q,r=[9,13,27,38,40],s=200,t=a.$eval(c.typeaheadMinLength);t||0===t||(t=1),a.$watch(c.typeaheadMinLength,function(a){t=a||0===a?a:1});var u=a.$eval(c.typeaheadWaitMs)||0,v=a.$eval(c.typeaheadEditable)!==!1;a.$watch(c.typeaheadEditable,function(a){v=a!==!1});var w,x,y=e(c.typeaheadLoading).assign||angular.noop,z=e(c.typeaheadOnSelect),A=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,B=e(c.typeaheadNoResults).assign||angular.noop,C=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,D=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,E=c.typeaheadAppendTo?a.$eval(c.typeaheadAppendTo):null,F=a.$eval(c.typeaheadFocusFirst)!==!1,G=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,H=e(c.typeaheadIsOpen).assign||angular.noop,I=a.$eval(c.typeaheadShowHint)||!1,J=e(c.ngModel),K=e(c.ngModel+"($$$p)"),L=function(b,c){return angular.isFunction(J(a))&&q&&q.$options&&q.$options.getterSetter?K(b,{$$$p:c}):J.assign(b,c)},M=m.parse(c.uibTypeahead),N=a.$new(),O=a.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q,R;I&&(Q=angular.element("
    "),Q.css("position","relative"),b.after(Q),R=b.clone(),R.attr("placeholder",""),R.attr("tabindex","-1"),R.val(""),R.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),b.css({position:"relative","vertical-align":"top","background-color":"transparent"}),Q.append(R),R.after(b));var S=angular.element("
    ");S.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(c.typeaheadTemplateUrl)&&S.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&S.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var T=function(){I&&R.val("")},U=function(){N.matches=[],N.activeIdx=-1,b.attr("aria-expanded",!1),T()},V=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",V(a))});var W=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},X=function(c,d){var e={$viewValue:c};y(a,!0),B(a,!1),f.when(M.source(a,e)).then(function(f){var g=c===p.$viewValue;if(g&&w)if(f&&f.length>0){N.activeIdx=F?0:-1,B(a,!1),N.matches.length=0;for(var h=0;h0&&i.slice(0,c.length).toUpperCase()===c.toUpperCase()?R.val(c+i.slice(c.length)):R.val("")}}else U(),B(a,!0);g&&y(a,!1)},function(){U(),y(a,!1),B(a,!0)})};D&&(angular.element(i).on("resize",n),h.find("body").on("scroll",n));var Y=k(function(){N.matches.length&&o(),N.moveInProgress=!1},s);N.moveInProgress=!1,N.query=void 0;var Z,$=function(a){Z=g(function(){X(a)},u)},_=function(){Z&&g.cancel(Z)};U(),N.assignIsOpen=function(b){H(a,b)},N.select=function(d,e){var f,h,i={};x=!0,i[M.itemName]=h=N.matches[d].model,f=M.modelMapper(a,i),L(a,f),p.$setValidity("editable",!0),p.$setValidity("parse",!0),z(a,{$item:h,$model:f,$label:M.viewMapper(a,i),$event:e}),U(),N.$eval(c.typeaheadFocusOnSelect)!==!1&&g(function(){b[0].focus()},0,!1)},b.on("keydown",function(b){if(0!==N.matches.length&&-1!==r.indexOf(b.which)){if(-1===N.activeIdx&&(9===b.which||13===b.which)||9===b.which&&b.shiftKey)return U(),void N.$digest();b.preventDefault();var c;switch(b.which){case 9:case 13:N.$apply(function(){angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(N.activeIdx,b)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(N.activeIdx,b)});break;case 27:b.stopPropagation(),U(),a.$digest();break;case 38:N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop;break;case 40:N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop}}}),b.bind("focus",function(a){w=!0,0!==t||p.$viewValue||g(function(){X(p.$viewValue,a)},0)}),b.bind("blur",function(a){A&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){angular.isObject(N.debounceUpdate)&&angular.isNumber(N.debounceUpdate.blur)?k(function(){N.select(N.activeIdx,a)},N.debounceUpdate.blur):N.select(N.activeIdx,a)})),!v&&p.$error.editable&&(p.$viewValue="",b.val("")),w=!1,x=!1});var aa=function(c){b[0]!==c.target&&3!==c.which&&0!==N.matches.length&&(U(),j.$$phase||a.$digest())};h.on("click",aa),a.$on("$destroy",function(){h.off("click",aa),(D||E)&&ba.remove(),D&&(angular.element(i).off("resize",n),h.find("body").off("scroll",n)),S.remove(),I&&Q.remove()});var ba=d(S)(N);D?h.find("body").append(ba):E?angular.element(E).eq(0).append(ba):b.after(ba),this.init=function(b,c){p=b,q=c,N.debounceUpdate=p.$options&&e(p.$options.debounce)(a),p.$parsers.unshift(function(b){return w=!0,0===t||b&&b.length>=t?u>0?(_(),$(b)):X(b):(y(a,!1),_(),U()),v?b:b?void p.$setValidity("editable",!1):(p.$setValidity("editable",!0),null)}),p.$formatters.push(function(b){var c,d,e={};return v||p.$setValidity("editable",!0),C?(e.$model=b,C(a,e)):(e[M.itemName]=b,c=M.viewMapper(a,e),e[M.itemName]=void 0,d=M.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",["$$debounce",function(a){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&",assignIsOpen:"&",debounce:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"uib/template/typeahead/typeahead-popup.html"},link:function(b,c,d){b.templateUrl=d.templateUrl,b.isOpen=function(){var a=b.matches.length>0;return b.assignIsOpen({isOpen:a}),a},b.isActive=function(a){return b.active===a},b.selectActive=function(a){b.active=a},b.selectMatch=function(c,d){var e=b.debounce();angular.isNumber(e)||angular.isObject(e)?a(function(){b.select({activeIdx:c,evt:d})},angular.isNumber(e)?e:e["default"]):b.select({activeIdx:c,evt:d})}}}}]).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"uib/template/typeahead/typeahead-match.html";a(g).then(function(a){var c=angular.element(a.trim());e.replaceWith(c),b(c)(d)})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"$&"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("uib/template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion-group.html",'
    \n \n
    \n
    \n
    \n
    \n'); +}]),angular.module("uib/template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion.html",'
    ')}]),angular.module("uib/template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("uib/template/alert/alert.html",'\n')}]),angular.module("uib/template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/carousel.html",'\n')}]),angular.module("uib/template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/slide.html",'
    \n')}]),angular.module("uib/template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/datepicker.html",'
    \n \n \n \n
    \n')}]),angular.module("uib/template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/day.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {{::label.abbr}}
    {{ weekNumbers[$index] }}\n \n
    \n')}]),angular.module("uib/template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/month.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n')}]),angular.module("uib/template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/popup.html",'
    \n \n
    \n')}]),angular.module("uib/template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/year.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n')}]),angular.module("uib/template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/backdrop.html",'\n')}]),angular.module("uib/template/modal/window.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/window.html",'\n')}]),angular.module("uib/template/pager/pager.html",[]).run(["$templateCache",function(a){a.put("uib/template/pager/pager.html",'\n')}]),angular.module("uib/template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("uib/template/pagination/pager.html",'\n')}]),angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("uib/template/pagination/pagination.html",'\n')}]),angular.module("uib/template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-html-popup.html",'
    \n
    \n
    \n
    \n')}]),angular.module("uib/template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-popup.html",'
    \n
    \n
    \n
    \n')}]),angular.module("uib/template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-template-popup.html",'
    \n
    \n
    \n
    \n')}]),angular.module("uib/template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-html.html",'
    \n
    \n\n
    \n

    \n
    \n
    \n
    \n')}]),angular.module("uib/template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-template.html",'
    \n
    \n\n
    \n

    \n
    \n
    \n
    \n')}]),angular.module("uib/template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover.html",'
    \n
    \n\n
    \n

    \n
    \n
    \n
    \n')}]),angular.module("uib/template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/bar.html",'
    \n')}]),angular.module("uib/template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progress.html",'
    ')}]),angular.module("uib/template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progressbar.html",'
    \n
    \n
    \n')}]),angular.module("uib/template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("uib/template/rating/rating.html",'\n ({{ $index < value ? \'*\' : \' \' }})\n \n\n')}]),angular.module("uib/template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tab.html",'\n')}]),angular.module("uib/template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tabset.html",'
    \n \n
    \n
    \n
    \n
    \n
    \n')}]),angular.module("uib/template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/timepicker/timepicker.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      
    \n \n :\n \n :\n \n
      
    \n')}]),angular.module("uib/template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-match.html",'\n')}]),angular.module("uib/template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-popup.html",'\n')}]),angular.module("ui.bootstrap.carousel").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibCarouselCss&&angular.element(document).find("head").prepend(''),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.position").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibPositionCss&&angular.element(document).find("head").prepend(''),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerCss&&angular.element(document).find("head").prepend(''),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTooltipCss&&angular.element(document).find("head").prepend(''),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTimepickerCss&&angular.element(document).find("head").prepend(''),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTypeaheadCss&&angular.element(document).find("head").prepend(''),angular.$$uibTypeaheadCss=!0}); \ No newline at end of file diff --git a/www/libs/angular-cookies/.bower.json b/www/libs/angular-cookies/.bower.json new file mode 100644 index 0000000..594f90b --- /dev/null +++ b/www/libs/angular-cookies/.bower.json @@ -0,0 +1,19 @@ +{ + "name": "angular-cookies", + "version": "1.4.2", + "main": "./angular-cookies.js", + "ignore": [], + "dependencies": { + "angular": "1.4.2" + }, + "homepage": "https://github.com/angular/bower-angular-cookies", + "_release": "1.4.2", + "_resolution": { + "type": "version", + "tag": "v1.4.2", + "commit": "623ebfe717d03a18029f90ca21eb7f53f379795f" + }, + "_source": "git://github.com/angular/bower-angular-cookies.git", + "_target": "1.4.2", + "_originalSource": "angular-cookies" +} \ No newline at end of file diff --git a/www/libs/angular-cookies/angular-cookies.min.js b/www/libs/angular-cookies/angular-cookies.min.js new file mode 100644 index 0000000..181624c --- /dev/null +++ b/www/libs/angular-cookies/angular-cookies.min.js @@ -0,0 +1,9 @@ +/* + AngularJS v1.4.5 + (c) 2010-2015 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(p,g,l){'use strict';function m(b,a,f){var c=f.baseHref(),k=b[0];return function(b,d,e){var f,h;e=e||{};h=e.expires;f=g.isDefined(e.path)?e.path:c;d===l&&(h="Thu, 01 Jan 1970 00:00:00 GMT",d="");g.isString(h)&&(h=new Date(h));d=encodeURIComponent(b)+"="+encodeURIComponent(d);d=d+(f?";path="+f:"")+(e.domain?";domain="+e.domain:"");d+=h?";expires="+h.toUTCString():"";d+=e.secure?";secure":"";e=d.length+1;4096 4096 bytes)!");k.cookie=d}}g.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,f){return{get:function(c){return a()[c]},getObject:function(c){return(c=this.get(c))?g.fromJson(c):c},getAll:function(){return a()},put:function(c,a,n){f(c,a,n?g.extend({},b,n):b)},putObject:function(c,b,a){this.put(c,g.toJson(b),a)},remove:function(a,k){f(a,l,k?g.extend({},b,k):b)}}}]}]);g.module("ngCookies").factory("$cookieStore", +["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,f){b.putObject(a,f)},remove:function(a){b.remove(a)}}}]);m.$inject=["$document","$log","$browser"];g.module("ngCookies").provider("$$cookieWriter",function(){this.$get=m})})(window,window.angular); +//# sourceMappingURL=angular-cookies.min.js.map diff --git a/www/libs/angular-cookies/angular-cookies.min.js.map b/www/libs/angular-cookies/angular-cookies.min.js.map new file mode 100644 index 0000000..84e6a57 --- /dev/null +++ b/www/libs/angular-cookies/angular-cookies.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-cookies.min.js", +"lineCount":8, +"mappings":"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", +"sources":["angular-cookies.js"], +"names":["window","angular","undefined","$$CookieWriter","$document","$log","$browser","cookiePath","baseHref","rawDocument","name","value","options","path","expires","isDefined","isString","Date","str","encodeURIComponent","domain","toUTCString","secure","cookieLength","length","warn","cookie","module","provider","$CookiesProvider","defaults","$get","$$cookieReader","$$cookieWriter","get","key","getObject","fromJson","getAll","put","extend","putObject","toJson","remove","factory","$cookies","$inject","$$CookieWriterProvider"] +} diff --git a/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.css b/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.css new file mode 100644 index 0000000..5620b65 --- /dev/null +++ b/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.css @@ -0,0 +1 @@ +.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.adf-move{cursor:move;cursor:-webkit-grabbing}.edit .column{min-height:90pt;border:1px dashed #ccc;padding-top:15px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}pre.edit{margin-top:15px}.column .placeholder{opacity:.4;background:#E8E8E8;border:1px dashed #505050;margin-bottom:15px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.dashboard-container h1 a,.widget h3 a{text-decoration:none}.padding-bottom{padding-bottom:5px}.adf-flip{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.dashboard-modal.widget-fullscreen .modal-dialog{width:98%} \ No newline at end of file diff --git a/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.js b/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.js new file mode 100644 index 0000000..1545eb1 --- /dev/null +++ b/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.js @@ -0,0 +1,2 @@ +!function(e,t){"use strict";angular.module("adf",["adf.provider","ui.bootstrap"]).value("adfTemplatePath","../src/templates/").value("rowTemplate",'').value("columnTemplate",'').value("adfVersion","0.11.0"),angular.module("adf").directive("adfDashboardColumn",["$log","$compile","$rootScope","adfTemplatePath","rowTemplate","dashboard",function(e,t,i,o,l,a){function d(e,t,o){var l=t.widgets;e.$apply(function(){l.splice(o.newIndex,0,l.splice(o.oldIndex,1)[0]),i.$broadcast("adfWidgetMovedInColumn")})}function n(e,t){for(var i=null,o=0;o0)for(var i=e.widgets.shift();i;)t.widgets.push(i),i=e.widgets.shift()}function r(e,t,i){return i=i||0,angular.isDefined(e.rows)&&angular.forEach(e.rows,function(e){angular.forEach(e.columns,function(e){e.widgets||(e.widgets=[]),angular.isDefined(t[i])&&(angular.isDefined(e.rows)||(n(t[i],e),i++)),i=r(e,t,i)})}),i}function s(e,t){return t=t||[],angular.isDefined(e.rows)&&angular.forEach(e.rows,function(e){angular.forEach(e.columns,function(e){t.push(e),s(e,t)})}),t}function c(e,t){var i=s(e),o=0;for(e.rows=angular.copy(t.rows);o{}',l='
    \n
    \n loading ...\n
    \n
    ',a=function(){return!0};this.widget=function(t,i){var o=angular.extend({reload:!1,frameless:!1},i);if(o.edit){var l={reload:!0,immediate:!1,apply:a};angular.extend(l,o.edit),o.edit=l}return e[t]=o,this},this.widgetsPath=function(e){return t=e,this},this.structure=function(e,t){return i[e]=t,this},this.messageTemplate=function(e){return o=e,this},this.loadingTemplate=function(e){return l=e,this},this.$get=function(){var a=0;return{widgets:e,widgetsPath:t,structures:i,messageTemplate:o,loadingTemplate:l,id:function(){return(new Date).getTime()+"-"+ ++a},idEquals:function(e,t){return e&&t&&e.toString()===t.toString()}}}}),angular.module("adf").directive("adfDashboardRow",["$compile","adfTemplatePath","columnTemplate",function(e,t,i){return{restrict:"E",replace:!0,scope:{row:"=",adfModel:"=",editMode:"=",continuousEditMode:"=",options:"="},templateUrl:t+"dashboard-row.html",link:function(t,o){angular.isDefined(t.row.columns)&&angular.isArray(t.row.columns)&&e(i)(t,function(e){o.append(e)})}}}]),angular.module("adf").directive("adfWidgetContent",["$log","$q","$sce","$http","$templateCache","$compile","$controller","$injector","dashboard",function(e,t,i,o,l,a,d,n,r){function s(e){var t=e;return e.indexOf("{widgetsPath}")>=0&&(t=e.replace("{widgetsPath}",r.widgetsPath).replace("//","/"),0===t.indexOf("/")&&(t=t.substring(1))),t}function c(e){var a=t.defer();if(e.template)a.resolve(e.template);else if(e.templateUrl){var d=l.get(e.templateUrl);if(d)a.resolve(d);else{var n=i.getTrustedResourceUrl(s(e.templateUrl));o.get(n).success(function(t){l.put(e.templateUrl,t),a.resolve(t)}).error(function(){a.reject("could not load template")})}}return a.promise}function u(i,o,l){var s=i.model,u=i.content;o.html(r.loadingTemplate);var g=i.$new();s.config||(s.config={}),g.config=s.config;var f={$scope:g,widget:s,config:s.config},p={};return p.$tpl=c(u),u.resolve&&angular.forEach(u.resolve,function(e,t){angular.isString(e)?p[t]=n.get(e):p[t]=n.invoke(e,e,f)}),t.all(p).then(function(e){angular.extend(e,f);var t=e.$tpl;if(o.html(t),u.controller){var i=d(u.controller,e);u.controllerAs&&(g[u.controllerAs]=i),o.children().data("$ngControllerController",i)}a(o.contents())(g)},function(t){var i="Could not resolve all promises";t&&(i+=": "+t),e.warn(i),o.html(r.messageTemplate.replace(/{}/g,i))}),l&&l.$destroy(),g}return{replace:!0,restrict:"EA",transclude:!1,scope:{model:"=",content:"="},link:function(e,t){var i=u(e,t,null);e.$on("widgetConfigChanged",function(){i=u(e,t,i)}),e.$on("widgetReload",function(){i=u(e,t,i)})}}}]),angular.module("adf").directive("adfWidget",["$injector","$q","$log","$uibModal","$rootScope","dashboard","adfTemplatePath",function(e,t,i,o,l,a,d){function n(e){var t=e.definition;if(t){var o=a.widgets[t.type];if(o){t.title||(t.title=o.title),t.titleTemplateUrl||(t.titleTemplateUrl=d+"widget-title.html",o.titleTemplateUrl&&(t.titleTemplateUrl=o.titleTemplateUrl)),t.titleTemplateUrl||(t.frameless=o.frameless),t.styleClass||(t.styleClass=o.styleClass),t.wid||(t.wid=a.id()),e.widget=angular.copy(o);var l=t.config;l?angular.isString(l)&&(l=angular.fromJson(l)):l={},e.config=l,e.widgetState||(e.widgetState={},e.widgetState.isCollapsed=o.collapsed===!0?o.collapsed:!1)}else i.warn("could not find widget "+t.type)}else i.debug("definition not specified, widget was probably removed")}function r(a,n){var r=a.definition;if(r){var s=function(){var e=a.col;if(e){var t=e.widgets.indexOf(r);t>=0&&e.widgets.splice(t,1)}n.remove(),l.$broadcast("adfWidgetRemovedFromColumn")};a.remove=function(){if(a.options.enableConfirmDelete){var e=a.$new(),t=d+"widget-delete.html";r.deleteTemplateUrl&&(t=r.deleteTemplateUrl);var i={scope:e,templateUrl:t,backdrop:"static"},l=o.open(i);e.closeDialog=function(){l.close(),e.$destroy()},e.deleteDialog=function(){s(),e.closeDialog()}}else s()},a.reload=function(){a.$broadcast("widgetReload")},a.edit=function(){function i(e){var i;if("boolean"==typeof e){var o=t.defer();e?o.resolve():o.reject(),i=o.promise}else i=t.when(e);return i}var l=a.$new();l.definition=angular.copy(r);var n=d+"widget-edit.html";r.editTemplateUrl&&(n=r.editTemplateUrl);var s={scope:l,templateUrl:n,backdrop:"static"},c=o.open(s);l.closeDialog=function(){c.close(),l.$destroy()},l.saveDialog=function(){l.validationError=null;var t=a.widget,o=t.edit.apply,d={widget:t,definition:l.definition,config:l.definition.config},n=e.invoke(o,o,d);i(n).then(function(){r.title=l.definition.title,angular.extend(r.config,l.definition.config),t.edit&&t.edit.reload&&a.$broadcast("widgetConfigChanged"),l.closeDialog()},function(e){e?l.validationError=e:l.validationError="Validation durring apply failed"})}}}else i.debug("widget not found")}return{replace:!0,restrict:"EA",transclude:!1,templateUrl:d+"widget.html",scope:{definition:"=",col:"=column",editMode:"=",options:"=",widgetState:"="},controller:["$scope",function(e){e.$on("adfDashboardCollapseExpand",function(t,i){e.widgetState.isCollapsed=i.collapseExpandStatus}),e.$on("adfWidgetEnterEditMode",function(t,i){a.idEquals(e.definition.wid,i.wid)&&e.edit()}),e.widgetClasses=function(t,i){var o=i.styleClass||"";return(!t.frameless||e.editMode)&&(o+=" panel panel-default"),o},e.openFullScreen=function(){var t=e.definition,i=e.$new(),l={scope:i,templateUrl:d+"widget-fullscreen.html",size:t.modalSize||"lg",backdrop:"static",windowClass:t.fullScreen?"dashboard-modal widget-fullscreen":"dashboard-modal"},a=o.open(l);i.closeDialog=function(){a.close(),i.$destroy()}}}],compile:function(){return{pre:n,post:r}}}}]),angular.module("adf").run(["$templateCache",function(e){e.put("../src/templates/dashboard-column.html",'
    '),e.put("../src/templates/dashboard-edit.html",' '),e.put("../src/templates/dashboard-row.html","
    "),e.put("../src/templates/dashboard-title.html",'

    {{model.title}}

    '),e.put("../src/templates/dashboard.html",'
    '),e.put("../src/templates/widget-add.html",' '),e.put("../src/templates/widget-delete.html",' '),e.put("../src/templates/widget-edit.html",'
    '),e.put("../src/templates/widget-fullscreen.html",' '),e.put("../src/templates/widget-title.html",'

    {{definition.title}}

    '),e.put("../src/templates/widget.html",'
    ')}])}(window); +//# sourceMappingURL=angular-dashboard-framework.min.js.map diff --git a/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.js.map b/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.js.map new file mode 100644 index 0000000..d99937c --- /dev/null +++ b/www/libs/angular-dashboard-framework/dist/angular-dashboard-framework.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["adf.js","column.js","dashboard.js","provider.js","row.js","widget-content.js","widget.js","angular-dashboard-framework.tpl.js","angular-dashboard-framework.js"],"names":["window","undefined","angular","module","value","directive","$log","$compile","$rootScope","adfTemplatePath","rowTemplate","dashboard","moveWidgetInColumn","$scope","column","evt","widgets","$apply","splice","newIndex","oldIndex","$broadcast","findWidget","index","widget","i","length","w","idEquals","wid","findColumn","model","rows","r","j","columns","c","cid","getId","el","id","getAttribute","addWidgetToColumn","targetColumn","from","sourceColumn","item","warn","removeWidgetFromColumn","applySortable","$element","sortable","Sortable","create","group","handle","ghostClass","animation","onAdd","onRemove","onUpdate","on","destroy","restrict","replace","scope","editMode","continuousEditMode","adfModel","options","templateUrl","link","col","isDefined","isArray","cloned","append","$timeout","$uibModal","stringToBoolean","string","toLowerCase","Boolean","copyWidgets","source","target","shift","push","fillStructure","root","counter","forEach","row","readColumns","changeStructure","structure","copy","createConfiguration","type","cfg","config","findFirstWidgetColumn","error","addNewWidgetToModel","name","unshift","isEditModeImmediate","edit","immediate","openEditMode","transclude","collapsible","editable","maximizable","adfWidgetFilter","controller","widgetFilter","structureName","$watch","oldVal","newVal","structures","title","titleTemplateUrl","editClass","toggleEditMode","modelCopy","$on","collapseAll","collapseExpandStatus","cancelEditMode","editDashboardDialog","editDashboardScope","$new","adfEditTemplatePath","editTemplateUrl","instance","open","backdrop","info","closeDialog","close","$destroy","addWidgetDialog","addScope","isFunction","adfAddTemplatePath","addTemplateUrl","opts","addWidget","$attr","enableConfirmDelete","enableconfirmdelete","provider","widgetsPath","messageTemplate","loadingTemplate","defaultApplyFunction","this","extend","reload","frameless","apply","path","template","$get","Date","getTime","other","toString","columnTemplate","$q","$sce","$http","$templateCache","$controller","$injector","parseUrl","url","parsedUrl","indexOf","substring","getTemplate","deferred","defer","resolve","tpl","get","getTrustedResourceUrl","success","response","put","reject","promise","compileWidget","currentScope","content","html","templateScope","base","resolvers","$tpl","key","isString","invoke","all","then","locals","templateCtrl","controllerAs","children","data","contents","reason","msg","preLink","definition","styleClass","fromJson","widgetState","isCollapsed","collapsed","debug","postLink","deleteWidget","remove","deleteScope","deleteTemplateUrl","deleteDialog","createApplyPromise","result","when","editScope","saveDialog","validationError","applyFn","err","event","args","widgetClasses","classes","openFullScreen","fullScreenScope","size","modalSize","windowClass","compile","pre","post","run"],"mappings":"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","file":"angular-dashboard-framework.min.js","sourcesContent":["/*\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n'use strict';\n\nangular.module('adf', ['adf.provider', 'ui.bootstrap'])\n .value('adfTemplatePath', '../src/templates/')\n .value('rowTemplate', '')\n .value('columnTemplate', '')\n .value('adfVersion', '<>');\n","/*\n* The MIT License\n*\n* Copyright (c) 2015, Sebastian Sdorra\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\n\n/* global angular */\nangular.module('adf')\n .directive('adfDashboardColumn', function ($log, $compile, $rootScope, adfTemplatePath, rowTemplate, dashboard) {\n 'use strict';\n\n /**\n * moves a widget in between a column\n */\n function moveWidgetInColumn($scope, column, evt){\n var widgets = column.widgets;\n // move widget and apply to scope\n $scope.$apply(function(){\n widgets.splice(evt.newIndex, 0, widgets.splice(evt.oldIndex, 1)[0]);\n $rootScope.$broadcast('adfWidgetMovedInColumn');\n });\n }\n\n /**\n * finds a widget by its id in the column\n */\n function findWidget(column, index){\n var widget = null;\n for (var i=0; i 0 ){\n var w = source.widgets.shift();\n while (w){\n target.widgets.push(w);\n w = source.widgets.shift();\n }\n }\n }\n\n /**\n * Copy widget from old columns to the new model\n * @param object root the model\n * @param array of columns\n * @param counter\n */\n function fillStructure(root, columns, counter) {\n counter = counter || 0;\n\n if (angular.isDefined(root.rows)) {\n angular.forEach(root.rows, function (row) {\n angular.forEach(row.columns, function (column) {\n // if the widgets prop doesn't exist, create a new array for it.\n // this allows ui.sortable to do it's thing without error\n if (!column.widgets) {\n column.widgets = [];\n }\n\n // if a column exist at the counter index, copy over the column\n if (angular.isDefined(columns[counter])) {\n // do not add widgets to a column, which uses nested rows\n if (!angular.isDefined(column.rows)){\n copyWidgets(columns[counter], column);\n counter++;\n }\n }\n\n // run fillStructure again for any sub rows/columns\n counter = fillStructure(column, columns, counter);\n });\n });\n }\n return counter;\n }\n\n /**\n * Read Columns: recursively searches an object for the 'columns' property\n * @param object model\n * @param array an array of existing columns; used when recursion happens\n */\n function readColumns(root, columns) {\n columns = columns || [];\n\n if (angular.isDefined(root.rows)) {\n angular.forEach(root.rows, function (row) {\n angular.forEach(row.columns, function (col) {\n columns.push(col);\n // keep reading columns until we can't any more\n readColumns(col, columns);\n });\n });\n }\n\n return columns;\n }\n\n function changeStructure(model, structure){\n var columns = readColumns(model);\n var counter = 0;\n\n model.rows = angular.copy(structure.rows);\n\n while ( counter < columns.length ){\n counter = fillStructure(model, columns, counter);\n }\n }\n\n function createConfiguration(type){\n var cfg = {};\n var config = dashboard.widgets[type].config;\n if (config){\n cfg = angular.copy(config);\n }\n return cfg;\n }\n\n /**\n * Find first widget column in model.\n *\n * @param dashboard model\n */\n function findFirstWidgetColumn(model){\n var column = null;\n if (!angular.isArray(model.rows)){\n $log.error('model does not have any rows');\n return null;\n }\n for (var i=0; i=}` - An optional map of dependencies which should\n * be injected into the controller. If any of these dependencies are promises, the widget\n * will wait for them all to be resolved or one to be rejected before the controller is\n * instantiated.\n * If all the promises are resolved successfully, the values of the resolved promises are\n * injected.\n *\n * The map object is:\n * - `key` – `{string}`: a name of a dependency to be injected into the controller.\n * - `factory` - `{string|function}`: If `string` then it is an alias for a service.\n * Otherwise if function, then it is {@link http://docs.angularjs.org/api/AUTO.$injector#invoke injected}\n * and the return value is treated as the dependency. If the result is a promise, it is\n * resolved before its value is injected into the controller.\n * - `edit` - `{object}` - Edit modus of the widget.\n * - `controller` - `{string=|function()=}` - Same as above, but for the edit mode of the widget.\n * - `controllerAs` - `{string=}` - Same as above, but for the edit mode of the widget.\n * - `template` - `{string=|function()=}` - Same as above, but for the edit mode of the widget.\n * - `templateUrl` - `{string=}` - Same as above, but for the edit mode of the widget.\n * - `resolve` - `{Object.=}` - Same as above, but for the edit mode of the widget.\n * - `reload` - {boolean} - true if the widget should be reloaded, after the edit mode is closed.\n * Default is true.\n * - `immediate` - {boolean} - The widget enters the edit mode immediately after creation. Default is false.\n * - `apply` - `{function()=}` - The apply function is called, before the widget is saved.\n * The function have to return a boolean or an promise which can be resolved to a boolean.\n * The function can use injection.\n *\n * @returns {Object} self\n */\n this.widget = function(name, widget){\n var w = angular.extend({reload: false, frameless: false}, widget);\n if ( w.edit ){\n var edit = {\n reload: true,\n immediate: false,\n apply: defaultApplyFunction\n };\n angular.extend(edit, w.edit);\n w.edit = edit;\n }\n widgets[name] = w;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#widgetsPath\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Sets the path to the directory which contains the widgets. The widgets\n * path is used for widgets with a templateUrl which contains the\n * placeholder {widgetsPath}. The placeholder is replaced with the\n * configured value, before the template is loaded, but the template is\n * cached with the unmodified templateUrl (e.g.: {widgetPath}/src/widgets).\n * The default value of widgetPaths is ''.\n *\n *\n * @param {string} path to the directory which contains the widgets\n *\n * @returns {Object} self\n */\n this.widgetsPath = function(path){\n widgetsPath = path;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#structure\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Registers a new structure.\n *\n * @param {string} name of the structure\n * @param {object} structure to be registered.\n *\n * Object properties:\n *\n * - `rows` - `{Array.}` - Rows of the dashboard structure.\n * - `styleClass` - `{string}` - CSS Class of the row.\n * - `columns` - `{Array.}` - Columns of the row.\n * - `styleClass` - `{string}` - CSS Class of the column.\n *\n * @returns {Object} self\n */\n this.structure = function(name, structure){\n structures[name] = structure;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#messageTemplate\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Changes the template for messages.\n *\n * @param {string} template for messages.\n *\n * @returns {Object} self\n */\n this.messageTemplate = function(template){\n messageTemplate = template;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#loadingTemplate\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Changes the template which is displayed as\n * long as the widget resources are not resolved.\n *\n * @param {string} template loading template\n *\n * @returns {Object} self\n */\n this.loadingTemplate = function(template){\n loadingTemplate = template;\n return this;\n };\n\n /**\n * @ngdoc service\n * @name adf.dashboard\n * @description\n *\n * The dashboard holds all options, structures and widgets.\n *\n * @property {Array.} widgets Array of registered widgets.\n * @property {string} widgetsPath Default path for widgets.\n * @property {Array.} structures Array of registered structures.\n * @property {string} messageTemplate Template for messages.\n * @property {string} loadingTemplate Template for widget loading.\n *\n * @returns {Object} self\n */\n this.$get = function(){\n var cid = 0;\n\n return {\n widgets: widgets,\n widgetsPath: widgetsPath,\n structures: structures,\n messageTemplate: messageTemplate,\n loadingTemplate: loadingTemplate,\n\n /**\n * @ngdoc method\n * @name adf.dashboard#id\n * @methodOf adf.dashboard\n * @description\n *\n * Creates an ongoing numeric id. The method is used to create ids for\n * columns and widgets in the dashboard.\n */\n id: function(){\n return new Date().getTime() + '-' + (++cid);\n },\n\n /**\n * @ngdoc method\n * @name adf.dashboard#idEqual\n * @methodOf adf.dashboard\n * @description\n *\n * Checks if the given ids are equal.\n *\n * @param {string} id widget or column id\n * @param {string} other widget or column id\n */\n idEquals: function(id, other){\n // use toString, because old ids are numbers\n return ((id) && (other)) && (id.toString() === other.toString());\n }\n };\n };\n\n });\n","/*\n* The MIT License\n*\n* Copyright (c) 2015, Sebastian Sdorra\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\n\n/* global angular */\nangular.module('adf')\n .directive('adfDashboardRow', function ($compile, adfTemplatePath, columnTemplate) {\n 'use strict';\n\n return {\n restrict: 'E',\n replace: true,\n scope: {\n row: '=',\n adfModel: '=',\n editMode: '=',\n continuousEditMode: '=',\n options: '='\n },\n templateUrl: adfTemplatePath + 'dashboard-row.html',\n link: function($scope, $element) {\n if (angular.isDefined($scope.row.columns) && angular.isArray($scope.row.columns)) {\n $compile(columnTemplate)($scope, function(cloned) {\n $element.append(cloned);\n });\n }\n }\n };\n });\n","/*\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n'use strict';\n\nangular.module('adf')\n .directive('adfWidgetContent', function($log, $q, $sce, $http, $templateCache,\n $compile, $controller, $injector, dashboard) {\n\n function parseUrl(url) {\n var parsedUrl = url;\n if (url.indexOf('{widgetsPath}') >= 0) {\n parsedUrl = url.replace('{widgetsPath}', dashboard.widgetsPath)\n .replace('//', '/');\n if (parsedUrl.indexOf('/') === 0) {\n parsedUrl = parsedUrl.substring(1);\n }\n }\n return parsedUrl;\n }\n\n function getTemplate(widget) {\n var deferred = $q.defer();\n\n if (widget.template) {\n deferred.resolve(widget.template);\n } else if (widget.templateUrl) {\n // try to fetch template from cache\n var tpl = $templateCache.get(widget.templateUrl);\n if (tpl) {\n deferred.resolve(tpl);\n } else {\n var url = $sce.getTrustedResourceUrl(parseUrl(widget.templateUrl));\n $http.get(url)\n .success(function(response) {\n // put response to cache, with unmodified url as key\n $templateCache.put(widget.templateUrl, response);\n deferred.resolve(response);\n })\n .error(function() {\n deferred.reject('could not load template');\n });\n }\n }\n\n return deferred.promise;\n }\n\n function compileWidget($scope, $element, currentScope) {\n var model = $scope.model;\n var content = $scope.content;\n\n // display loading template\n $element.html(dashboard.loadingTemplate);\n\n // create new scope\n var templateScope = $scope.$new();\n\n // pass config object to scope\n if (!model.config) {\n model.config = {};\n }\n\n templateScope.config = model.config;\n\n // local injections\n var base = {\n $scope: templateScope,\n widget: model,\n config: model.config\n };\n\n // get resolve promises from content object\n var resolvers = {};\n resolvers.$tpl = getTemplate(content);\n if (content.resolve) {\n angular.forEach(content.resolve, function(promise, key) {\n if (angular.isString(promise)) {\n resolvers[key] = $injector.get(promise);\n } else {\n resolvers[key] = $injector.invoke(promise, promise, base);\n }\n });\n }\n\n // resolve all resolvers\n $q.all(resolvers).then(function(locals) {\n angular.extend(locals, base);\n\n // compile & render template\n var template = locals.$tpl;\n $element.html(template);\n if (content.controller) {\n var templateCtrl = $controller(content.controller, locals);\n if (content.controllerAs) {\n templateScope[content.controllerAs] = templateCtrl;\n }\n $element.children().data('$ngControllerController', templateCtrl);\n }\n $compile($element.contents())(templateScope);\n }, function(reason) {\n // handle promise rejection\n var msg = 'Could not resolve all promises';\n if (reason) {\n msg += ': ' + reason;\n }\n $log.warn(msg);\n $element.html(dashboard.messageTemplate.replace(/{}/g, msg));\n });\n\n // destroy old scope\n if (currentScope) {\n currentScope.$destroy();\n }\n\n return templateScope;\n }\n\n return {\n replace: true,\n restrict: 'EA',\n transclude: false,\n scope: {\n model: '=',\n content: '='\n },\n link: function($scope, $element) {\n var currentScope = compileWidget($scope, $element, null);\n $scope.$on('widgetConfigChanged', function() {\n currentScope = compileWidget($scope, $element, currentScope);\n });\n $scope.$on('widgetReload', function() {\n currentScope = compileWidget($scope, $element, currentScope);\n });\n }\n };\n\n });\n","/*\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n'use strict';\n\nangular.module('adf')\n .directive('adfWidget', function($injector, $q, $log, $uibModal, $rootScope, dashboard, adfTemplatePath) {\n\n function preLink($scope) {\n var definition = $scope.definition;\n if (definition) {\n var w = dashboard.widgets[definition.type];\n if (w) {\n // pass title\n if (!definition.title) {\n definition.title = w.title;\n }\n\n if (!definition.titleTemplateUrl) {\n definition.titleTemplateUrl = adfTemplatePath + 'widget-title.html';\n if (w.titleTemplateUrl) {\n definition.titleTemplateUrl = w.titleTemplateUrl;\n }\n }\n\n if (!definition.titleTemplateUrl) {\n definition.frameless = w.frameless;\n }\n\n if (!definition.styleClass) {\n definition.styleClass = w.styleClass;\n }\n\n // set id for sortable\n if (!definition.wid) {\n definition.wid = dashboard.id();\n }\n\n // pass copy of widget to scope\n $scope.widget = angular.copy(w);\n\n // create config object\n var config = definition.config;\n if (config) {\n if (angular.isString(config)) {\n config = angular.fromJson(config);\n }\n } else {\n config = {};\n }\n\n // pass config to scope\n $scope.config = config;\n\n // collapse exposed $scope.widgetState property\n if (!$scope.widgetState) {\n $scope.widgetState = {};\n $scope.widgetState.isCollapsed= (w.collapsed === true) ? w.collapsed : false;\n }\n\n } else {\n $log.warn('could not find widget ' + definition.type);\n }\n } else {\n $log.debug('definition not specified, widget was probably removed');\n }\n }\n\n function postLink($scope, $element) {\n var definition = $scope.definition;\n if (definition) {\n // bind close function\n\n var deleteWidget = function() {\n var column = $scope.col;\n if (column) {\n var index = column.widgets.indexOf(definition);\n if (index >= 0) {\n column.widgets.splice(index, 1);\n }\n }\n $element.remove();\n $rootScope.$broadcast('adfWidgetRemovedFromColumn');\n };\n\n $scope.remove = function() {\n if ($scope.options.enableConfirmDelete) {\n var deleteScope = $scope.$new();\n var deleteTemplateUrl = adfTemplatePath + 'widget-delete.html';\n if (definition.deleteTemplateUrl) {\n deleteTemplateUrl = definition.deleteTemplateUrl;\n }\n var opts = {\n scope: deleteScope,\n templateUrl: deleteTemplateUrl,\n backdrop: 'static'\n };\n var instance = $uibModal.open(opts);\n\n deleteScope.closeDialog = function() {\n instance.close();\n deleteScope.$destroy();\n };\n deleteScope.deleteDialog = function() {\n deleteWidget();\n deleteScope.closeDialog();\n };\n } else {\n deleteWidget();\n }\n };\n\n // bind reload function\n $scope.reload = function() {\n $scope.$broadcast('widgetReload');\n };\n\n // bind edit function\n $scope.edit = function() {\n var editScope = $scope.$new();\n editScope.definition = angular.copy(definition);\n\n var adfEditTemplatePath = adfTemplatePath + 'widget-edit.html';\n if (definition.editTemplateUrl) {\n adfEditTemplatePath = definition.editTemplateUrl;\n }\n\n var opts = {\n scope: editScope,\n templateUrl: adfEditTemplatePath,\n backdrop: 'static'\n };\n\n var instance = $uibModal.open(opts);\n\n editScope.closeDialog = function() {\n instance.close();\n editScope.$destroy();\n };\n\n // TODO create util method\n function createApplyPromise(result){\n var promise;\n if (typeof result === 'boolean'){\n var deferred = $q.defer();\n if (result){\n deferred.resolve();\n } else {\n deferred.reject();\n }\n promise = deferred.promise;\n } else {\n promise = $q.when(result);\n }\n return promise;\n }\n\n editScope.saveDialog = function() {\n // clear validation error\n editScope.validationError = null;\n\n // build injection locals\n var widget = $scope.widget;\n var applyFn = widget.edit.apply;\n var locals = {\n widget: widget,\n definition: editScope.definition,\n config: editScope.definition.config\n };\n\n // invoke apply function and apply if success\n var result = $injector.invoke(applyFn, applyFn, locals);\n createApplyPromise(result).then(function(){\n definition.title = editScope.definition.title;\n angular.extend(definition.config, editScope.definition.config);\n if (widget.edit && widget.edit.reload) {\n // reload content after edit dialog is closed\n $scope.$broadcast('widgetConfigChanged');\n }\n editScope.closeDialog();\n }, function(err){\n if (err){\n editScope.validationError = err;\n } else {\n editScope.validationError = 'Validation durring apply failed';\n }\n });\n };\n\n };\n } else {\n $log.debug('widget not found');\n }\n }\n\n return {\n replace: true,\n restrict: 'EA',\n transclude: false,\n templateUrl: adfTemplatePath + 'widget.html',\n scope: {\n definition: '=',\n col: '=column',\n editMode: '=',\n options: '=',\n widgetState: '='\n },\n controller: function($scope) {\n\n $scope.$on('adfDashboardCollapseExpand', function(event, args) {\n $scope.widgetState.isCollapsed = args.collapseExpandStatus;\n });\n\n $scope.$on('adfWidgetEnterEditMode', function(event, widget){\n if (dashboard.idEquals($scope.definition.wid, widget.wid)){\n $scope.edit();\n }\n });\n\n $scope.widgetClasses = function(w, definition){\n var classes = definition.styleClass || '';\n if (!w.frameless || $scope.editMode){\n classes += ' panel panel-default';\n }\n return classes;\n };\n\n $scope.openFullScreen = function() {\n var definition = $scope.definition;\n var fullScreenScope = $scope.$new();\n var opts = {\n scope: fullScreenScope,\n templateUrl: adfTemplatePath + 'widget-fullscreen.html',\n size: definition.modalSize || 'lg', // 'sm', 'lg'\n backdrop: 'static',\n windowClass: (definition.fullScreen) ? 'dashboard-modal widget-fullscreen' : 'dashboard-modal'\n };\n\n var instance = $uibModal.open(opts);\n fullScreenScope.closeDialog = function() {\n instance.close();\n fullScreenScope.$destroy();\n };\n };\n },\n compile: function() {\n\n /**\n * use pre link, because link of widget-content\n * is executed before post link widget\n */\n return {\n pre: preLink,\n post: postLink\n };\n }\n };\n\n });\n","angular.module(\"adf\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"../src/templates/dashboard-column.html\",\"
    \");\n$templateCache.put(\"../src/templates/dashboard-edit.html\",\" \");\n$templateCache.put(\"../src/templates/dashboard-row.html\",\"
    \");\n$templateCache.put(\"../src/templates/dashboard-title.html\",\"

    {{model.title}}

    \");\n$templateCache.put(\"../src/templates/dashboard.html\",\"
    \");\n$templateCache.put(\"../src/templates/widget-add.html\",\" \");\n$templateCache.put(\"../src/templates/widget-delete.html\",\" \");\n$templateCache.put(\"../src/templates/widget-edit.html\",\"
    \");\n$templateCache.put(\"../src/templates/widget-fullscreen.html\",\" \");\n$templateCache.put(\"../src/templates/widget-title.html\",\"

    {{definition.title}}

    \");\n$templateCache.put(\"../src/templates/widget.html\",\"
    \");}]);","(function(window, undefined) {'use strict';\n/*\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\nangular.module('adf', ['adf.provider', 'ui.bootstrap'])\n .value('adfTemplatePath', '../src/templates/')\n .value('rowTemplate', '')\n .value('columnTemplate', '')\n .value('adfVersion', '0.11.0');\n\n/*\n* The MIT License\n*\n* Copyright (c) 2015, Sebastian Sdorra\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\n\n/* global angular */\nangular.module('adf')\n .directive('adfDashboardColumn', function ($log, $compile, $rootScope, adfTemplatePath, rowTemplate, dashboard) {\n \n\n /**\n * moves a widget in between a column\n */\n function moveWidgetInColumn($scope, column, evt){\n var widgets = column.widgets;\n // move widget and apply to scope\n $scope.$apply(function(){\n widgets.splice(evt.newIndex, 0, widgets.splice(evt.oldIndex, 1)[0]);\n $rootScope.$broadcast('adfWidgetMovedInColumn');\n });\n }\n\n /**\n * finds a widget by its id in the column\n */\n function findWidget(column, index){\n var widget = null;\n for (var i=0; i 0 ){\n var w = source.widgets.shift();\n while (w){\n target.widgets.push(w);\n w = source.widgets.shift();\n }\n }\n }\n\n /**\n * Copy widget from old columns to the new model\n * @param object root the model\n * @param array of columns\n * @param counter\n */\n function fillStructure(root, columns, counter) {\n counter = counter || 0;\n\n if (angular.isDefined(root.rows)) {\n angular.forEach(root.rows, function (row) {\n angular.forEach(row.columns, function (column) {\n // if the widgets prop doesn't exist, create a new array for it.\n // this allows ui.sortable to do it's thing without error\n if (!column.widgets) {\n column.widgets = [];\n }\n\n // if a column exist at the counter index, copy over the column\n if (angular.isDefined(columns[counter])) {\n // do not add widgets to a column, which uses nested rows\n if (!angular.isDefined(column.rows)){\n copyWidgets(columns[counter], column);\n counter++;\n }\n }\n\n // run fillStructure again for any sub rows/columns\n counter = fillStructure(column, columns, counter);\n });\n });\n }\n return counter;\n }\n\n /**\n * Read Columns: recursively searches an object for the 'columns' property\n * @param object model\n * @param array an array of existing columns; used when recursion happens\n */\n function readColumns(root, columns) {\n columns = columns || [];\n\n if (angular.isDefined(root.rows)) {\n angular.forEach(root.rows, function (row) {\n angular.forEach(row.columns, function (col) {\n columns.push(col);\n // keep reading columns until we can't any more\n readColumns(col, columns);\n });\n });\n }\n\n return columns;\n }\n\n function changeStructure(model, structure){\n var columns = readColumns(model);\n var counter = 0;\n\n model.rows = angular.copy(structure.rows);\n\n while ( counter < columns.length ){\n counter = fillStructure(model, columns, counter);\n }\n }\n\n function createConfiguration(type){\n var cfg = {};\n var config = dashboard.widgets[type].config;\n if (config){\n cfg = angular.copy(config);\n }\n return cfg;\n }\n\n /**\n * Find first widget column in model.\n *\n * @param dashboard model\n */\n function findFirstWidgetColumn(model){\n var column = null;\n if (!angular.isArray(model.rows)){\n $log.error('model does not have any rows');\n return null;\n }\n for (var i=0; i=}` - An optional map of dependencies which should\n * be injected into the controller. If any of these dependencies are promises, the widget\n * will wait for them all to be resolved or one to be rejected before the controller is\n * instantiated.\n * If all the promises are resolved successfully, the values of the resolved promises are\n * injected.\n *\n * The map object is:\n * - `key` – `{string}`: a name of a dependency to be injected into the controller.\n * - `factory` - `{string|function}`: If `string` then it is an alias for a service.\n * Otherwise if function, then it is {@link http://docs.angularjs.org/api/AUTO.$injector#invoke injected}\n * and the return value is treated as the dependency. If the result is a promise, it is\n * resolved before its value is injected into the controller.\n * - `edit` - `{object}` - Edit modus of the widget.\n * - `controller` - `{string=|function()=}` - Same as above, but for the edit mode of the widget.\n * - `controllerAs` - `{string=}` - Same as above, but for the edit mode of the widget.\n * - `template` - `{string=|function()=}` - Same as above, but for the edit mode of the widget.\n * - `templateUrl` - `{string=}` - Same as above, but for the edit mode of the widget.\n * - `resolve` - `{Object.=}` - Same as above, but for the edit mode of the widget.\n * - `reload` - {boolean} - true if the widget should be reloaded, after the edit mode is closed.\n * Default is true.\n * - `immediate` - {boolean} - The widget enters the edit mode immediately after creation. Default is false.\n * - `apply` - `{function()=}` - The apply function is called, before the widget is saved.\n * The function have to return a boolean or an promise which can be resolved to a boolean.\n * The function can use injection.\n *\n * @returns {Object} self\n */\n this.widget = function(name, widget){\n var w = angular.extend({reload: false, frameless: false}, widget);\n if ( w.edit ){\n var edit = {\n reload: true,\n immediate: false,\n apply: defaultApplyFunction\n };\n angular.extend(edit, w.edit);\n w.edit = edit;\n }\n widgets[name] = w;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#widgetsPath\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Sets the path to the directory which contains the widgets. The widgets\n * path is used for widgets with a templateUrl which contains the\n * placeholder {widgetsPath}. The placeholder is replaced with the\n * configured value, before the template is loaded, but the template is\n * cached with the unmodified templateUrl (e.g.: {widgetPath}/src/widgets).\n * The default value of widgetPaths is ''.\n *\n *\n * @param {string} path to the directory which contains the widgets\n *\n * @returns {Object} self\n */\n this.widgetsPath = function(path){\n widgetsPath = path;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#structure\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Registers a new structure.\n *\n * @param {string} name of the structure\n * @param {object} structure to be registered.\n *\n * Object properties:\n *\n * - `rows` - `{Array.}` - Rows of the dashboard structure.\n * - `styleClass` - `{string}` - CSS Class of the row.\n * - `columns` - `{Array.}` - Columns of the row.\n * - `styleClass` - `{string}` - CSS Class of the column.\n *\n * @returns {Object} self\n */\n this.structure = function(name, structure){\n structures[name] = structure;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#messageTemplate\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Changes the template for messages.\n *\n * @param {string} template for messages.\n *\n * @returns {Object} self\n */\n this.messageTemplate = function(template){\n messageTemplate = template;\n return this;\n };\n\n /**\n * @ngdoc method\n * @name adf.dashboardProvider#loadingTemplate\n * @methodOf adf.dashboardProvider\n * @description\n *\n * Changes the template which is displayed as\n * long as the widget resources are not resolved.\n *\n * @param {string} template loading template\n *\n * @returns {Object} self\n */\n this.loadingTemplate = function(template){\n loadingTemplate = template;\n return this;\n };\n\n /**\n * @ngdoc service\n * @name adf.dashboard\n * @description\n *\n * The dashboard holds all options, structures and widgets.\n *\n * @property {Array.} widgets Array of registered widgets.\n * @property {string} widgetsPath Default path for widgets.\n * @property {Array.} structures Array of registered structures.\n * @property {string} messageTemplate Template for messages.\n * @property {string} loadingTemplate Template for widget loading.\n *\n * @returns {Object} self\n */\n this.$get = function(){\n var cid = 0;\n\n return {\n widgets: widgets,\n widgetsPath: widgetsPath,\n structures: structures,\n messageTemplate: messageTemplate,\n loadingTemplate: loadingTemplate,\n\n /**\n * @ngdoc method\n * @name adf.dashboard#id\n * @methodOf adf.dashboard\n * @description\n *\n * Creates an ongoing numeric id. The method is used to create ids for\n * columns and widgets in the dashboard.\n */\n id: function(){\n return new Date().getTime() + '-' + (++cid);\n },\n\n /**\n * @ngdoc method\n * @name adf.dashboard#idEqual\n * @methodOf adf.dashboard\n * @description\n *\n * Checks if the given ids are equal.\n *\n * @param {string} id widget or column id\n * @param {string} other widget or column id\n */\n idEquals: function(id, other){\n // use toString, because old ids are numbers\n return ((id) && (other)) && (id.toString() === other.toString());\n }\n };\n };\n\n });\n\n/*\n* The MIT License\n*\n* Copyright (c) 2015, Sebastian Sdorra\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\n\n/* global angular */\nangular.module('adf')\n .directive('adfDashboardRow', function ($compile, adfTemplatePath, columnTemplate) {\n \n\n return {\n restrict: 'E',\n replace: true,\n scope: {\n row: '=',\n adfModel: '=',\n editMode: '=',\n continuousEditMode: '=',\n options: '='\n },\n templateUrl: adfTemplatePath + 'dashboard-row.html',\n link: function($scope, $element) {\n if (angular.isDefined($scope.row.columns) && angular.isArray($scope.row.columns)) {\n $compile(columnTemplate)($scope, function(cloned) {\n $element.append(cloned);\n });\n }\n }\n };\n });\n\n/*\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\nangular.module('adf')\n .directive('adfWidgetContent', function($log, $q, $sce, $http, $templateCache,\n $compile, $controller, $injector, dashboard) {\n\n function parseUrl(url) {\n var parsedUrl = url;\n if (url.indexOf('{widgetsPath}') >= 0) {\n parsedUrl = url.replace('{widgetsPath}', dashboard.widgetsPath)\n .replace('//', '/');\n if (parsedUrl.indexOf('/') === 0) {\n parsedUrl = parsedUrl.substring(1);\n }\n }\n return parsedUrl;\n }\n\n function getTemplate(widget) {\n var deferred = $q.defer();\n\n if (widget.template) {\n deferred.resolve(widget.template);\n } else if (widget.templateUrl) {\n // try to fetch template from cache\n var tpl = $templateCache.get(widget.templateUrl);\n if (tpl) {\n deferred.resolve(tpl);\n } else {\n var url = $sce.getTrustedResourceUrl(parseUrl(widget.templateUrl));\n $http.get(url)\n .success(function(response) {\n // put response to cache, with unmodified url as key\n $templateCache.put(widget.templateUrl, response);\n deferred.resolve(response);\n })\n .error(function() {\n deferred.reject('could not load template');\n });\n }\n }\n\n return deferred.promise;\n }\n\n function compileWidget($scope, $element, currentScope) {\n var model = $scope.model;\n var content = $scope.content;\n\n // display loading template\n $element.html(dashboard.loadingTemplate);\n\n // create new scope\n var templateScope = $scope.$new();\n\n // pass config object to scope\n if (!model.config) {\n model.config = {};\n }\n\n templateScope.config = model.config;\n\n // local injections\n var base = {\n $scope: templateScope,\n widget: model,\n config: model.config\n };\n\n // get resolve promises from content object\n var resolvers = {};\n resolvers.$tpl = getTemplate(content);\n if (content.resolve) {\n angular.forEach(content.resolve, function(promise, key) {\n if (angular.isString(promise)) {\n resolvers[key] = $injector.get(promise);\n } else {\n resolvers[key] = $injector.invoke(promise, promise, base);\n }\n });\n }\n\n // resolve all resolvers\n $q.all(resolvers).then(function(locals) {\n angular.extend(locals, base);\n\n // compile & render template\n var template = locals.$tpl;\n $element.html(template);\n if (content.controller) {\n var templateCtrl = $controller(content.controller, locals);\n if (content.controllerAs) {\n templateScope[content.controllerAs] = templateCtrl;\n }\n $element.children().data('$ngControllerController', templateCtrl);\n }\n $compile($element.contents())(templateScope);\n }, function(reason) {\n // handle promise rejection\n var msg = 'Could not resolve all promises';\n if (reason) {\n msg += ': ' + reason;\n }\n $log.warn(msg);\n $element.html(dashboard.messageTemplate.replace(/{}/g, msg));\n });\n\n // destroy old scope\n if (currentScope) {\n currentScope.$destroy();\n }\n\n return templateScope;\n }\n\n return {\n replace: true,\n restrict: 'EA',\n transclude: false,\n scope: {\n model: '=',\n content: '='\n },\n link: function($scope, $element) {\n var currentScope = compileWidget($scope, $element, null);\n $scope.$on('widgetConfigChanged', function() {\n currentScope = compileWidget($scope, $element, currentScope);\n });\n $scope.$on('widgetReload', function() {\n currentScope = compileWidget($scope, $element, currentScope);\n });\n }\n };\n\n });\n\n/*\n * The MIT License\n *\n * Copyright (c) 2015, Sebastian Sdorra\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\nangular.module('adf')\n .directive('adfWidget', function($injector, $q, $log, $uibModal, $rootScope, dashboard, adfTemplatePath) {\n\n function preLink($scope) {\n var definition = $scope.definition;\n if (definition) {\n var w = dashboard.widgets[definition.type];\n if (w) {\n // pass title\n if (!definition.title) {\n definition.title = w.title;\n }\n\n if (!definition.titleTemplateUrl) {\n definition.titleTemplateUrl = adfTemplatePath + 'widget-title.html';\n if (w.titleTemplateUrl) {\n definition.titleTemplateUrl = w.titleTemplateUrl;\n }\n }\n\n if (!definition.titleTemplateUrl) {\n definition.frameless = w.frameless;\n }\n\n if (!definition.styleClass) {\n definition.styleClass = w.styleClass;\n }\n\n // set id for sortable\n if (!definition.wid) {\n definition.wid = dashboard.id();\n }\n\n // pass copy of widget to scope\n $scope.widget = angular.copy(w);\n\n // create config object\n var config = definition.config;\n if (config) {\n if (angular.isString(config)) {\n config = angular.fromJson(config);\n }\n } else {\n config = {};\n }\n\n // pass config to scope\n $scope.config = config;\n\n // collapse exposed $scope.widgetState property\n if (!$scope.widgetState) {\n $scope.widgetState = {};\n $scope.widgetState.isCollapsed= (w.collapsed === true) ? w.collapsed : false;\n }\n\n } else {\n $log.warn('could not find widget ' + definition.type);\n }\n } else {\n $log.debug('definition not specified, widget was probably removed');\n }\n }\n\n function postLink($scope, $element) {\n var definition = $scope.definition;\n if (definition) {\n // bind close function\n\n var deleteWidget = function() {\n var column = $scope.col;\n if (column) {\n var index = column.widgets.indexOf(definition);\n if (index >= 0) {\n column.widgets.splice(index, 1);\n }\n }\n $element.remove();\n $rootScope.$broadcast('adfWidgetRemovedFromColumn');\n };\n\n $scope.remove = function() {\n if ($scope.options.enableConfirmDelete) {\n var deleteScope = $scope.$new();\n var deleteTemplateUrl = adfTemplatePath + 'widget-delete.html';\n if (definition.deleteTemplateUrl) {\n deleteTemplateUrl = definition.deleteTemplateUrl;\n }\n var opts = {\n scope: deleteScope,\n templateUrl: deleteTemplateUrl,\n backdrop: 'static'\n };\n var instance = $uibModal.open(opts);\n\n deleteScope.closeDialog = function() {\n instance.close();\n deleteScope.$destroy();\n };\n deleteScope.deleteDialog = function() {\n deleteWidget();\n deleteScope.closeDialog();\n };\n } else {\n deleteWidget();\n }\n };\n\n // bind reload function\n $scope.reload = function() {\n $scope.$broadcast('widgetReload');\n };\n\n // bind edit function\n $scope.edit = function() {\n var editScope = $scope.$new();\n editScope.definition = angular.copy(definition);\n\n var adfEditTemplatePath = adfTemplatePath + 'widget-edit.html';\n if (definition.editTemplateUrl) {\n adfEditTemplatePath = definition.editTemplateUrl;\n }\n\n var opts = {\n scope: editScope,\n templateUrl: adfEditTemplatePath,\n backdrop: 'static'\n };\n\n var instance = $uibModal.open(opts);\n\n editScope.closeDialog = function() {\n instance.close();\n editScope.$destroy();\n };\n\n // TODO create util method\n function createApplyPromise(result){\n var promise;\n if (typeof result === 'boolean'){\n var deferred = $q.defer();\n if (result){\n deferred.resolve();\n } else {\n deferred.reject();\n }\n promise = deferred.promise;\n } else {\n promise = $q.when(result);\n }\n return promise;\n }\n\n editScope.saveDialog = function() {\n // clear validation error\n editScope.validationError = null;\n\n // build injection locals\n var widget = $scope.widget;\n var applyFn = widget.edit.apply;\n var locals = {\n widget: widget,\n definition: editScope.definition,\n config: editScope.definition.config\n };\n\n // invoke apply function and apply if success\n var result = $injector.invoke(applyFn, applyFn, locals);\n createApplyPromise(result).then(function(){\n definition.title = editScope.definition.title;\n angular.extend(definition.config, editScope.definition.config);\n if (widget.edit && widget.edit.reload) {\n // reload content after edit dialog is closed\n $scope.$broadcast('widgetConfigChanged');\n }\n editScope.closeDialog();\n }, function(err){\n if (err){\n editScope.validationError = err;\n } else {\n editScope.validationError = 'Validation durring apply failed';\n }\n });\n };\n\n };\n } else {\n $log.debug('widget not found');\n }\n }\n\n return {\n replace: true,\n restrict: 'EA',\n transclude: false,\n templateUrl: adfTemplatePath + 'widget.html',\n scope: {\n definition: '=',\n col: '=column',\n editMode: '=',\n options: '=',\n widgetState: '='\n },\n controller: function($scope) {\n\n $scope.$on('adfDashboardCollapseExpand', function(event, args) {\n $scope.widgetState.isCollapsed = args.collapseExpandStatus;\n });\n\n $scope.$on('adfWidgetEnterEditMode', function(event, widget){\n if (dashboard.idEquals($scope.definition.wid, widget.wid)){\n $scope.edit();\n }\n });\n\n $scope.widgetClasses = function(w, definition){\n var classes = definition.styleClass || '';\n if (!w.frameless || $scope.editMode){\n classes += ' panel panel-default';\n }\n return classes;\n };\n\n $scope.openFullScreen = function() {\n var definition = $scope.definition;\n var fullScreenScope = $scope.$new();\n var opts = {\n scope: fullScreenScope,\n templateUrl: adfTemplatePath + 'widget-fullscreen.html',\n size: definition.modalSize || 'lg', // 'sm', 'lg'\n backdrop: 'static',\n windowClass: (definition.fullScreen) ? 'dashboard-modal widget-fullscreen' : 'dashboard-modal'\n };\n\n var instance = $uibModal.open(opts);\n fullScreenScope.closeDialog = function() {\n instance.close();\n fullScreenScope.$destroy();\n };\n };\n },\n compile: function() {\n\n /**\n * use pre link, because link of widget-content\n * is executed before post link widget\n */\n return {\n pre: preLink,\n post: postLink\n };\n }\n };\n\n });\n\nangular.module(\"adf\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"../src/templates/dashboard-column.html\",\"
    \");\n$templateCache.put(\"../src/templates/dashboard-edit.html\",\" \");\n$templateCache.put(\"../src/templates/dashboard-row.html\",\"
    \");\n$templateCache.put(\"../src/templates/dashboard-title.html\",\"

    {{model.title}}

    \");\n$templateCache.put(\"../src/templates/dashboard.html\",\"
    \");\n$templateCache.put(\"../src/templates/widget-add.html\",\" \");\n$templateCache.put(\"../src/templates/widget-delete.html\",\" \");\n$templateCache.put(\"../src/templates/widget-edit.html\",\"
    \");\n$templateCache.put(\"../src/templates/widget-fullscreen.html\",\" \");\n$templateCache.put(\"../src/templates/widget-title.html\",\"

    {{definition.title}}

    \");\n$templateCache.put(\"../src/templates/widget.html\",\"
    \");}]);})(window);"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/www/libs/angular-file-saver/angular-file-saver.bundle.min.js b/www/libs/angular-file-saver/angular-file-saver.bundle.min.js new file mode 100644 index 0000000..02ffdad --- /dev/null +++ b/www/libs/angular-file-saver/angular-file-saver.bundle.min.js @@ -0,0 +1 @@ +!function e(t,n,r){function o(a,c){if(!n[a]){if(!t[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var f=n[a]={exports:{}};t[a][0].call(f.exports,function(e){var n=t[a][1][e];return o(n?n:e)},f,f.exports,e,t,n,r)}return n[a].exports}for(var i="function"==typeof require&&require,a=0;as;s++)o+=String.fromCharCode(i[s]);n.push(o)}else if("Blob"===t(e)||"File"===t(e)){if(!a)throw new c("NOT_READABLE_ERR");var f=new a;n.push(f.readAsBinaryString(e))}else e instanceof r?"base64"===e.encoding&&b?n.push(b(e.data)):"URI"===e.encoding?n.push(decodeURIComponent(e.data)):"raw"===e.encoding&&n.push(e.data):("string"!=typeof e&&(e+=""),n.push(unescape(encodeURIComponent(e))))},o.getBlob=function(e){return arguments.length||(e=null),new r(this.data.join(""),e,"raw")},o.toString=function(){return"[object BlobBuilder]"},i.slice=function(e,t,n){var o=arguments.length;return 3>o&&(n=null),new r(this.data.slice(e,o>1?t:this.data.length),n,this.encoding)},i.toString=function(){return"[object Blob]"},i.close=function(){this.size=0,delete this.data},n}(e);e.Blob=function(e,t){var r=t?t.type||"":"",o=new n;if(e)for(var i=0,a=e.length;a>i;i++)Uint8Array&&e[i]instanceof Uint8Array?o.append(e[i].buffer):o.append(e[i]);var c=o.getBlob(r);return!c.slice&&c.webkitSlice&&(c.slice=c.webkitSlice),c};var r=Object.getPrototypeOf||function(e){return e.__proto__};e.Blob.prototype=r(new e.Blob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this)},{}],2:[function(e,t,n){var r=r||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),c=e.webkitRequestFileSystem,s=e.requestFileSystem||c||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},f="application/octet-stream",l=0,d=500,p=function(t){var r=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?r():setTimeout(r,d)},v=function(e,t,n){t=[].concat(t);for(var r=t.length;r--;){var o=e["on"+t[r]];if("function"==typeof o)try{o.call(e,n||e)}catch(i){u(i)}}},b=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},h=function(t,u,d){d||(t=b(t));var h,w,g,R=this,y=t.type,S=!1,m=function(){v(R,"writestart progress write writeend".split(" "))},E=function(){if(w&&a&&"undefined"!=typeof FileReader){var r=new FileReader;return r.onloadend=function(){var e=r.result;w.location.href="data:attachment/file"+e.slice(e.search(/[,;]/)),R.readyState=R.DONE,m()},r.readAsDataURL(t),void(R.readyState=R.INIT)}if((S||!h)&&(h=n().createObjectURL(t)),w)w.location.href=h;else{var o=e.open(h,"_blank");void 0==o&&a&&(e.location.href=h)}R.readyState=R.DONE,m(),p(h)},O=function(e){return function(){return R.readyState!==R.DONE?e.apply(this,arguments):void 0}},U={create:!0,exclusive:!1};return R.readyState=R.INIT,u||(u="download"),o?(h=n().createObjectURL(t),r.href=h,r.download=u,void setTimeout(function(){i(r),m(),p(h),R.readyState=R.DONE})):(e.chrome&&y&&y!==f&&(g=t.slice||t.webkitSlice,t=g.call(t,0,t.size,f),S=!0),c&&"download"!==u&&(u+=".download"),(y===f||c)&&(w=e),s?(l+=t.size,void s(e.TEMPORARY,l,O(function(e){e.root.getDirectory("saved",U,O(function(e){var n=function(){e.getFile(u,U,O(function(e){e.createWriter(O(function(n){n.onwriteend=function(t){w.location.href=e.toURL(),R.readyState=R.DONE,v(R,"writeend",t),p(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&E()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=R["on"+e]}),n.write(t),R.abort=function(){n.abort(),R.readyState=R.DONE},R.readyState=R.WRITING}),E)}),E)};e.getFile(u,{create:!1},O(function(e){e.remove(),n()}),O(function(e){e.code===e.NOT_FOUND_ERR?n():E()}))}),E)}),E)):void E())},w=h.prototype,g=function(e,t,n){return new h(e,t,n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=b(e)),navigator.msSaveOrOpenBlob(e,t||"download")}:(w.abort=function(){var e=this;e.readyState=e.DONE,v(e,"abort")},w.readyState=w.INIT=0,w.WRITING=1,w.DONE=2,w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null,g)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof t&&t.exports?t.exports.saveAs=r:"undefined"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return r})},{}],3:[function(e,t,n){"use strict";angular.module("ngFileSaver",[]).factory("FileSaver",["Blob","SaveAs","FileSaverUtils",e("./angular-file-saver.service")]).factory("FileSaverUtils",[e("./utils/utils.service.js")]).factory("Blob",["$window",e("./dependencies/blob-bundle.service.js")]).factory("SaveAs",[e("./dependencies/file-saver-bundle.service.js")])},{"./angular-file-saver.service":4,"./dependencies/blob-bundle.service.js":5,"./dependencies/file-saver-bundle.service.js":6,"./utils/utils.service.js":7}],4:[function(e,t,n){"use strict";t.exports=function(e,t,n){function r(e,r){try{t(e,r)}catch(o){n.handleErrors(o.message)}}return{saveAs:function(e){e=angular.extend({},e);var t=e.data,o=e.filename;return n.isBlobInstance(t)||n.handleErrors("Data argument should be a blob instance"),n.isString(o)||n.handleErrors("Filename argument should be a string"),r(t,o)}}}},{}],5:[function(e,t,n){"use strict";e("Blob.js"),t.exports=function(e){return e.Blob}},{"Blob.js":1}],6:[function(e,t,n){"use strict";t.exports=function(){return e("FileSaver.js").saveAs||function(){}}},{"FileSaver.js":2}],7:[function(e,t,n){"use strict";t.exports=function(){return{handleErrors:function(e){throw new Error(e)},isString:function(e){return"string"==typeof e||e instanceof String},isUndefined:function(e){return"undefined"==typeof e},isBlobInstance:function(e){return e instanceof Blob}}}},{}]},{},[3]); \ No newline at end of file diff --git a/www/libs/angular-moment/angular-moment.min.js b/www/libs/angular-moment/angular-moment.min.js new file mode 100644 index 0000000..7d1e1f5 --- /dev/null +++ b/www/libs/angular-moment/angular-moment.min.js @@ -0,0 +1,2 @@ +"format amd";!function(){"use strict";function a(a){return angular.isUndefined(a)||null===a}function b(){try{return require("moment")}catch(a){throw new Error("Please install moment via npm. Please reference to: https://github.com/urish/angular-moment")}}function c(c,d){if("undefined"==typeof d){if("function"!=typeof require)throw new Error("Moment cannot be found by angular-moment! Please reference to: https://github.com/urish/angular-moment");d=b()}return c.module("angularMoment",[]).constant("angularMomentConfig",{preprocess:null,timezone:null,format:null,statefulFilters:!0}).constant("moment",d).constant("amTimeAgoConfig",{withoutSuffix:!1,serverTime:null,titleFormat:null,fullDateThreshold:null,fullDateFormat:null}).directive("amTimeAgo",["$window","moment","amMoment","amTimeAgoConfig",function(b,d,e,f){return function(g,h,i){function j(){var a;if(p)a=p;else if(f.serverTime){var b=(new Date).getTime(),c=b-v+f.serverTime;a=d(c)}else a=d();return a}function k(){q&&(b.clearTimeout(q),q=null)}function l(a){var c=j().diff(a,"day"),d=t&&c>=t;if(d?h.text(a.format(u)):h.text(a.from(j(),r)),s&&y&&h.attr("title",a.local().format(s)),!d){var e=Math.abs(j().diff(a,"minute")),f=3600;1>e?f=1:60>e?f=30:180>e&&(f=300),q=b.setTimeout(function(){l(a)},1e3*f)}}function m(a){x&&h.attr("datetime",a)}function n(){if(k(),o){var a=e.preprocessDate(o);l(a),m(a.toISOString())}}var o,p,q=null,r=f.withoutSuffix,s=f.titleFormat,t=f.fullDateThreshold,u=f.fullDateFormat,v=(new Date).getTime(),w=i.amTimeAgo,x="TIME"===h[0].nodeName.toUpperCase(),y=!h.attr("title");g.$watch(w,function(b){return a(b)||""===b?(k(),void(o&&(h.text(""),m(""),o=null))):(o=b,void n())}),c.isDefined(i.amFrom)&&g.$watch(i.amFrom,function(b){p=a(b)||""===b?null:d(b),n()}),c.isDefined(i.amWithoutSuffix)&&g.$watch(i.amWithoutSuffix,function(a){"boolean"==typeof a?(r=a,n()):r=f.withoutSuffix}),i.$observe("amFullDateThreshold",function(a){t=a,n()}),i.$observe("amFullDateFormat",function(a){u=a,n()}),g.$on("$destroy",function(){k()}),g.$on("amMoment:localeChanged",function(){n()})}}]).service("amMoment",["moment","$rootScope","$log","angularMomentConfig",function(a,b,d,e){var f=null;this.changeLocale=function(d,e){var f=a.locale(d,e);return c.isDefined(d)&&b.$broadcast("amMoment:localeChanged"),f},this.changeTimezone=function(c){a.tz&&a.tz.setDefault?(a.tz.setDefault(c),b.$broadcast("amMoment:timezoneChanged")):d.warn("angular-moment: changeTimezone() works only with moment-timezone.js v0.3.0 or greater."),e.timezone=c,f=c},this.preprocessDate=function(b){return f!==e.timezone&&this.changeTimezone(e.timezone),e.preprocess?e.preprocess(b):a(!isNaN(parseFloat(b))&&isFinite(b)?parseInt(b,10):b)}}]).filter("amParse",["moment",function(a){return function(b,c){return a(b,c)}}]).filter("amFromUnix",["moment",function(a){return function(b){return a.unix(b)}}]).filter("amUtc",["moment",function(a){return function(b){return a.utc(b)}}]).filter("amUtcOffset",["amMoment",function(a){function b(b,c){return a.preprocessDate(b).utcOffset(c)}return b}]).filter("amLocal",["moment",function(a){return function(b){return a.isMoment(b)?b.local():null}}]).filter("amTimezone",["amMoment","angularMomentConfig","$log",function(a,b,c){function d(b,d){var e=a.preprocessDate(b);return d?e.tz?e.tz(d):(c.warn("angular-moment: named timezone specified but moment.tz() is undefined. Did you forget to include moment-timezone.js ?"),e):e}return d}]).filter("amCalendar",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(b){if(a(b))return"";var d=c.preprocessDate(b);return d.isValid()?d.calendar():""}return e.$stateful=d.statefulFilters,e}]).filter("amDifference",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(d,e,f,g){if(a(d))return"";var h=c.preprocessDate(d),i=a(e)?b():c.preprocessDate(e);return h.isValid()&&i.isValid()?h.diff(i,f,g):""}return e.$stateful=d.statefulFilters,e}]).filter("amDateFormat",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(b,d){if(a(b))return"";var e=c.preprocessDate(b);return e.isValid()?e.format(d):""}return e.$stateful=d.statefulFilters,e}]).filter("amDurationFormat",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b.duration(c,d).humanize(e)}return d.$stateful=c.statefulFilters,d}]).filter("amTimeAgo",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(d,e,f){var g,h;return a(d)?"":(d=c.preprocessDate(d),g=b(d),g.isValid()?(h=b(f),!a(f)&&h.isValid()?g.from(h,e):g.fromNow(e)):"")}return e.$stateful=d.statefulFilters,e}]).filter("amSubtract",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b(c).subtract(parseInt(d,10),e)}return d.$stateful=c.statefulFilters,d}]).filter("amAdd",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b(c).add(parseInt(d,10),e)}return d.$stateful=c.statefulFilters,d}]).filter("amStartOf",["moment","angularMomentConfig",function(b,c){function d(c,d){return a(c)?"":b(c).startOf(d)}return d.$stateful=c.statefulFilters,d}]).filter("amEndOf",["moment","angularMomentConfig",function(b,c){function d(c,d){return a(c)?"":b(c).endOf(d)}return d.$stateful=c.statefulFilters,d}])}"function"==typeof define&&define.amd?define(["angular","moment"],c):"undefined"!=typeof module&&module&&module.exports?(c(require("angular"),require("moment")),module.exports="angularMoment"):c(angular,("undefined"!=typeof global?global:window).moment)}(); +//# sourceMappingURL=angular-moment.min.js.map \ No newline at end of file diff --git a/www/libs/angular-moment/angular-moment.min.js.map b/www/libs/angular-moment/angular-moment.min.js.map new file mode 100644 index 0000000..fb20b30 --- /dev/null +++ b/www/libs/angular-moment/angular-moment.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["angular-moment.js"],"names":["isUndefinedOrNull","val","angular","isUndefined","requireMoment","require","e","Error","angularMoment","moment","module","constant","preprocess","timezone","format","statefulFilters","withoutSuffix","serverTime","titleFormat","fullDateThreshold","fullDateFormat","directive","$window","amMoment","amTimeAgoConfig","scope","element","attr","getNow","now","currentFrom","localNow","Date","getTime","nowMillis","localDate","cancelTimer","activeTimeout","clearTimeout","updateTime","momentInstance","daysAgo","diff","showFullDate","text","from","setTitleTime","local","howOld","Math","abs","secondsUntilUpdate","setTimeout","updateDateTimeAttr","value","isTimeElement","updateMoment","currentValue","momentValue","preprocessDate","toISOString","modelName","amTimeAgo","nodeName","toUpperCase","$watch","isDefined","amFrom","amWithoutSuffix","$observe","newValue","$on","service","$rootScope","$log","angularMomentConfig","defaultTimezone","this","changeLocale","locale","customization","result","$broadcast","changeTimezone","tz","setDefault","warn","isNaN","parseFloat","isFinite","parseInt","filter","unix","utc","amUtcOffset","offset","utcOffset","isMoment","amTimezone","aMoment","amCalendarFilter","date","isValid","calendar","$stateful","amDifferenceFilter","otherValue","unit","usePrecision","date2","amDateFormatFilter","amDurationFormatFilter","suffix","duration","humanize","amTimeAgoFilter","dateFrom","fromNow","amSubtractFilter","amount","type","subtract","amAddFilter","add","amStartOfFilter","startOf","amEndOfFilter","endOf","define","amd","exports","global","window"],"mappings":"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","file":"angular-moment.min.js"} \ No newline at end of file diff --git a/www/libs/angular-nvd3/dist/angular-nvd3-1.0.9 b/www/libs/angular-nvd3/dist/angular-nvd3-1.0.9 new file mode 100644 index 0000000..e69de29 diff --git a/www/libs/angular-nvd3/dist/angular-nvd3.min.js b/www/libs/angular-nvd3/dist/angular-nvd3.min.js new file mode 100644 index 0000000..4aced57 --- /dev/null +++ b/www/libs/angular-nvd3/dist/angular-nvd3.min.js @@ -0,0 +1 @@ +!function(window){"use strict";var nv=window.nv;"undefined"!=typeof exports&&(nv=require("nvd3")),angular.module("nvd3",[]).directive("nvd3",["nvd3Utils",function(nvd3Utils){return{restrict:"AE",scope:{data:"=",options:"=",api:"=?",events:"=?",config:"=?",onReady:"&?"},link:function(scope,element,attrs){function configure(chart,options,chartType){chart&&options&&angular.forEach(chart,function(value,key){"_"===key[0]||("dispatch"===key?(void 0!==options[key]&&null!==options[key]||scope._config.extended&&(options[key]={}),configureEvents(value,options[key])):"tooltip"===key?(void 0!==options[key]&&null!==options[key]||scope._config.extended&&(options[key]={}),configure(chart[key],options[key],chartType)):"contentGenerator"===key?options[key]&&chart[key](options[key]):-1===["axis","clearHighlights","defined","highlightPoint","nvPointerEventsClass","options","rangeBand","rangeBands","scatter","open","close","node"].indexOf(key)&&(void 0===options[key]||null===options[key]?scope._config.extended&&(options[key]=value()):chart[key](options[key])))})}function configureEvents(dispatch,options){dispatch&&options&&angular.forEach(dispatch,function(value,key){void 0===options[key]||null===options[key]?scope._config.extended&&(options[key]=value.on):dispatch.on(key+"._",options[key])})}function configureWrapper(name){var _=nvd3Utils.deepExtend(defaultWrapper(name),scope.options[name]||{});scope._config.extended&&(scope.options[name]=_);var wrapElement=angular.element("
    ").html(_.html||"").addClass(name).addClass(_.className).removeAttr("style").css(_.css);_.html||wrapElement.text(_.text),_.enable&&("title"===name?element.prepend(wrapElement):"subtitle"===name?angular.element(element[0].querySelector(".title")).after(wrapElement):"caption"===name&&element.append(wrapElement))}function configureStyles(){var _=nvd3Utils.deepExtend(defaultStyles(),scope.options.styles||{});scope._config.extended&&(scope.options.styles=_),angular.forEach(_.classes,function(value,key){value?element.addClass(key):element.removeClass(key)}),element.removeAttr("style").css(_.css)}function defaultWrapper(_){switch(_){case"title":return{enable:!1,text:"Write Your Title",className:"h4",css:{width:scope.options.chart.width+"px",textAlign:"center"}};case"subtitle":return{enable:!1,text:"Write Your Subtitle",css:{width:scope.options.chart.width+"px",textAlign:"center"}};case"caption":return{enable:!1,text:"Figure 1. Write Your Caption text.",css:{width:scope.options.chart.width+"px",textAlign:"center"}}}}function defaultStyles(){return{classes:{"with-3d-shadow":!0,"with-transitions":!0,gallery:!1},css:{}}}function dataWatchFn(newData,oldData){newData!==oldData&&(scope._config.disabled||(scope._config.refreshDataOnly?scope.api.update():scope.api.refresh()))}var defaultConfig={extended:!1,visible:!0,disabled:!1,refreshDataOnly:!0,deepWatchOptions:!0,deepWatchData:!0,deepWatchDataDepth:2,debounce:10,debounceImmediate:!0};scope.isReady=!1,scope._config=angular.extend(defaultConfig,scope.config),scope.api={refresh:function(){scope.api.updateWithOptions(),scope.isReady=!0},refreshWithTimeout:function(t){setTimeout(function(){scope.api.refresh()},t)},update:function(){scope.chart&&scope.svg?"sunburstChart"===scope.options.chart.type?scope.svg.datum(angular.copy(scope.data)).call(scope.chart):scope.svg.datum(scope.data).call(scope.chart):scope.api.refresh()},updateWithTimeout:function(t){setTimeout(function(){scope.api.update()},t)},updateWithOptions:function(options){if(arguments.length){if(scope.options=options,scope._config.deepWatchOptions&&!scope._config.disabled)return}else options=scope.options;scope.api.clearElement(),angular.isDefined(options)!==!1&&scope._config.visible&&(scope.chart=nv.models[options.chart.type](),scope.chart.id=Math.random().toString(36).substr(2,15),angular.forEach(scope.chart,function(value,key){"_"===key[0]||["clearHighlights","highlightPoint","id","options","resizeHandler","state","open","close","tooltipContent"].indexOf(key)>=0||("dispatch"===key?(void 0!==options.chart[key]&&null!==options.chart[key]||scope._config.extended&&(options.chart[key]={}),configureEvents(scope.chart[key],options.chart[key])):["bars","bars1","bars2","boxplot","bullet","controls","discretebar","distX","distY","focus","interactiveLayer","legend","lines","lines1","lines2","multibar","pie","scatter","scatters1","scatters2","sparkline","stack1","stack2","sunburst","tooltip","x2Axis","xAxis","y1Axis","y2Axis","y3Axis","y4Axis","yAxis","yAxis1","yAxis2"].indexOf(key)>=0||"stacked"===key&&"stackedAreaChart"===options.chart.type?(void 0!==options.chart[key]&&null!==options.chart[key]||scope._config.extended&&(options.chart[key]={}),configure(scope.chart[key],options.chart[key],options.chart.type)):"focusHeight"===key&&"lineChart"===options.chart.type||"focusHeight"===key&&"lineWithFocusChart"===options.chart.type||("xTickFormat"!==key&&"yTickFormat"!==key||"lineWithFocusChart"!==options.chart.type)&&("tooltips"===key&&"boxPlotChart"===options.chart.type||("tooltipXContent"!==key&&"tooltipYContent"!==key||"scatterChart"!==options.chart.type)&&("x"!==key&&"y"!==key||"forceDirectedGraph"!==options.chart.type)&&(void 0===options.chart[key]||null===options.chart[key]?scope._config.extended&&("barColor"===key?options.chart[key]=value()():options.chart[key]=value()):scope.chart[key](options.chart[key]))))}),scope.api.updateWithData(),(options.title||scope._config.extended)&&configureWrapper("title"),(options.subtitle||scope._config.extended)&&configureWrapper("subtitle"),(options.caption||scope._config.extended)&&configureWrapper("caption"),(options.styles||scope._config.extended)&&configureStyles(),nv.addGraph(function(){return scope.chart?(scope.chart.resizeHandler&&scope.chart.resizeHandler.clear(),scope.chart.resizeHandler=nv.utils.windowResize(function(){scope.chart&&scope.chart.update&&scope.chart.update()}),void 0!==options.chart.zoom&&["scatterChart","lineChart","candlestickBarChart","cumulativeLineChart","historicalBarChart","ohlcBarChart","stackedAreaChart"].indexOf(options.chart.type)>-1&&nvd3Utils.zoom(scope,options),scope.chart):void 0},options.chart.callback))},updateWithData:function(data){if(arguments.length){if(scope.data=data,scope._config.deepWatchData&&!scope._config.disabled)return}else data="sunburstChart"===scope.options.chart.type?angular.copy(scope.data):scope.data;if(data){d3.select(element[0]).select("svg").remove();var h,w;scope.svg=d3.select(element[0]).insert("svg",".caption"),(h=scope.options.chart.height)&&(isNaN(+h)||(h+="px"),scope.svg.attr("height",h).style({height:h})),(w=scope.options.chart.width)?(isNaN(+w)||(w+="px"),scope.svg.attr("width",w).style({width:w})):scope.svg.attr("width","100%").style({width:"100%"}),scope.svg.datum(data).call(scope.chart),scope.chart&&scope.chart.zoomRender&&scope.chart.zoomRender()}},clearElement:function(){if(element.find(".title").remove(),element.find(".subtitle").remove(),element.find(".caption").remove(),element.empty(),scope.chart&&scope.chart.tooltip&&scope.chart.tooltip.id&&d3.select("#"+scope.chart.tooltip.id()).remove(),nv.graphs&&scope.chart)for(var i=nv.graphs.length-1;i>=0;i--)nv.graphs[i]&&nv.graphs[i].id===scope.chart.id&&nv.graphs.splice(i,1);nv.tooltip&&nv.tooltip.cleanup&&nv.tooltip.cleanup(),scope.chart&&scope.chart.resizeHandler&&scope.chart.resizeHandler.clear(),scope.chart=null},getScope:function(){return scope},getElement:function(){return element}},scope._config.deepWatchOptions&&scope.$watch("options",nvd3Utils.debounce(function(newOptions){scope._config.disabled||scope.api.refresh()},scope._config.debounce,scope._config.debounceImmediate),!0),scope._config.deepWatchData&&(1===scope._config.deepWatchDataDepth?scope.$watchCollection("data",dataWatchFn):scope.$watch("data",dataWatchFn,2===scope._config.deepWatchDataDepth)),scope.$watch("config",function(newConfig,oldConfig){newConfig!==oldConfig&&(scope._config=angular.extend(defaultConfig,newConfig),scope.api.refresh())},!0),scope._config.deepWatchOptions||scope._config.deepWatchData||scope.api.refresh(),angular.forEach(scope.events,function(eventHandler,event){scope.$on(event,function(e,args){return eventHandler(e,scope,args)})}),element.on("$destroy",function(){scope.api.clearElement()}),scope.$watch("isReady",function(isReady){isReady&&scope.onReady&&"function"==typeof scope.onReady()&&scope.onReady()(scope,element)})}}}]).factory("nvd3Utils",function(){return{debounce:function(func,wait,immediate){var timeout;return function(){var context=this,args=arguments,later=function(){timeout=null,immediate||func.apply(context,args)},callNow=immediate&&!timeout;clearTimeout(timeout),timeout=setTimeout(later,wait),callNow&&func.apply(context,args)}},deepExtend:function(dst){var me=this;return angular.forEach(arguments,function(obj){obj!==dst&&angular.forEach(obj,function(value,key){dst[key]&&dst[key].constructor&&dst[key].constructor===Object?me.deepExtend(dst[key],value):dst[key]=value})}),dst},zoom:function(scope,options){var zoom=options.chart.zoom,enabled="undefined"==typeof zoom.enabled||null===zoom.enabled?!0:zoom.enabled;if(enabled){var fixDomain,d3zoom,zoomed,unzoomed,zoomend,xScale=scope.chart.xAxis.scale(),yScale=scope.chart.yAxis.scale(),xDomain=scope.chart.xDomain||xScale.domain,yDomain=scope.chart.yDomain||yScale.domain,x_boundary=xScale.domain().slice(),y_boundary=yScale.domain().slice(),scale=zoom.scale||1,translate=zoom.translate||[0,0],scaleExtent=zoom.scaleExtent||[1,10],useFixedDomain=zoom.useFixedDomain||!1,useNiceScale=zoom.useNiceScale||!1,horizontalOff=zoom.horizontalOff||!1,verticalOff=zoom.verticalOff||!1,unzoomEventType=zoom.unzoomEventType||"dblclick.zoom";useNiceScale&&(xScale.nice(),yScale.nice()),fixDomain=function(domain,boundary){return domain[0]=Math.min(Math.max(domain[0],boundary[0]),boundary[1]-boundary[1]/scaleExtent[1]),domain[1]=Math.max(boundary[0]+boundary[1]/scaleExtent[1],Math.min(domain[1],boundary[1])),domain},zoomed=function(){if(void 0!==zoom.zoomed){var domains=zoom.zoomed(xScale.domain(),yScale.domain());horizontalOff||xDomain([domains.x1,domains.x2]),verticalOff||yDomain([domains.y1,domains.y2])}else horizontalOff||xDomain(useFixedDomain?fixDomain(xScale.domain(),x_boundary):xScale.domain()),verticalOff||yDomain(useFixedDomain?fixDomain(yScale.domain(),y_boundary):yScale.domain());scope.chart&&scope.chart.update()},unzoomed=function(){if(void 0!==zoom.unzoomed){var domains=zoom.unzoomed(xScale.domain(),yScale.domain());horizontalOff||xDomain([domains.x1,domains.x2]),verticalOff||yDomain([domains.y1,domains.y2])}else horizontalOff||xDomain(x_boundary),verticalOff||yDomain(y_boundary);d3zoom.scale(scale).translate(translate),scope.chart&&scope.chart.update()},zoomend=function(){void 0!==zoom.zoomend&&zoom.zoomend()},d3zoom=d3.behavior.zoom().x(xScale).y(yScale).scaleExtent(scaleExtent).on("zoom",zoomed).on("zoomend",zoomend),scope.svg&&(scope.svg.call(d3zoom),d3zoom.scale(scale).translate(translate).event(scope.svg),"none"!==unzoomEventType&&scope.svg.on(unzoomEventType,unzoomed)),scope.chart&&(scope.chart.zoomRender=function(){d3zoom.scale(scale).translate(translate),xScale=scope.chart.xAxis.scale(),yScale=scope.chart.yAxis.scale(),xDomain=scope.chart.xDomain||xScale.domain,yDomain=scope.chart.yDomain||yScale.domain,x_boundary=xScale.domain().slice(),y_boundary=yScale.domain().slice(),d3zoom.x(xScale).y(yScale),scope.svg.call(d3zoom),"none"!==unzoomEventType&&scope.svg.on(unzoomEventType,unzoomed)})}}}})}(window); \ No newline at end of file diff --git a/www/libs/angular-patternfly/angular-patternfly.min.css b/www/libs/angular-patternfly/angular-patternfly.min.css new file mode 100644 index 0000000..41c78b0 --- /dev/null +++ b/www/libs/angular-patternfly/angular-patternfly.min.css @@ -0,0 +1 @@ +.card-pf-aggregate-status-alt .card-pf-body{padding-bottom:20px}.card-pf-aggregate-status-alt .card-pf-title{line-height:22px;margin:20px 0 10px;font-weight:300}.card-pf-aggregate-status-alt .card-pf-aggregate-status-count{font-size:24px}.card-pf-aggregate-status-alt .card-pf-aggregate-status-title{display:block;font-size:12px}.card-pf-aggregate-status-alt .card-pf-aggregate-status-notifications .card-pf-aggregate-status-notification{border-left:none}.card-pf-aggregate-status-alt .card-pf-aggregate-status-notifications .fa,.card-pf-aggregate-status-alt .card-pf-aggregate-status-notifications .pficon{position:relative;top:-1px}.card-pf-heading-no-bottom{margin:0 -20px 0;padding:0 20px}.card-pf-icon-image{height:18px;margin:0 5px 5px}.empty-chart-content{text-align:center}.empty-chart-content .pficon{font-size:24px}.empty-chart-content span{vertical-align:middle;width:100%}.utilization-trend-chart-pf .donut-chart-pf{width:100%;float:left;padding-top:15px}.utilization-trend-chart-pf h3{font-weight:400}.utilization-trend-chart-pf .current-values{border-bottom:1px solid #d1d1d1;float:left;padding:0 5px 10px 0;width:100%}.utilization-trend-chart-pf .available-count{margin:3px 0;padding-left:0;padding-right:5px}.utilization-trend-chart-pf .available-text{font-size:12px;font-weight:400;line-height:14px;margin:2px 0;padding:0 5px}.utilization-trend-chart-pf .radial-chart{float:left;padding-top:10px;width:100%}.utilization-trend-chart-pf .sparkline-chart{float:left;margin-left:-5px;margin-right:-5px;width:100%}.utilization-trend-chart-pf .legend-text{color:inherit;display:block;font-size:12px;font-weight:400;margin-left:0}.utilization-trend-chart-pf.data-unavailable-pf .current-values{color:transparent}.card-view-pf{overflow:auto;padding-top:20px;padding-left:2px}.card-view-pf .card{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.175);background:#fff;border-top:2px solid transparent;box-shadow:0 1px 1px rgba(0,0,0,.175);display:block;float:left;height:290px;margin-right:20px;margin-bottom:20px;padding:10px;position:relative;text-align:center;width:260px}.card-view-pf .card .card-check-box{left:10px;position:absolute;top:8px;width:20px;z-index:3;visibility:hidden}.card-view-pf .card-content{height:100%;margin:2px 0 10px;overflow:auto;width:100%}.card-view-pf .card-title{color:#1186C1;font-weight:500;font-size:16px;line-height:1.1;margin-top:0}.card-view-pf .card.active,.card-view-pf .card.active:focus,.card-view-pf .card.active:hover{border:solid 3px #00a8e1}.card-view-pf .card:focus,.card-view-pf .card:hover{-webkit-box-shadow:0 3px 10px -2px rgba(0,0,0,.24);-moz-box-shadow:0 3px 10px -2px rgba(0,0,0,.24);box-shadow:0 3px 10px -2px rgba(0,0,0,.24);border:1px solid #d1d1d1}.card-view-pf .card.active .pficon,.card-view-pf .card.active:focus .pficon,.card-view-pf .card.active:hover .pficon{color:#fff}.card-view-pf .card.active .card-check-box,.card-view-pf .card:hover .card-check-box{visibility:visible}.card-view-pf .card.disabled,.card.disabled:focus,.card.disabled:hover{border:1px solid #eee;color:#999;cursor:not-allowed;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.trend-card-large-pf .trend-header-pf{font-size:16px;font-weight:400;display:block;margin-left:10px}.trend-card-small-pf .trend-header-pf{font-size:12px;font-weight:400;display:block;margin-left:10px}.trend-card-large-pf .trend-title-big-pf{font-size:26px;font-weight:300;margin-left:10px}.trend-card-small-pf .trend-title-big-pf{font-size:17px;font-weight:400;margin-left:10px}.trend-card-large-pf .trend-title-small-pf{font-size:12px;font-weight:400}.trend-card-small-pf .trend-title-small-pf{font-size:10px;font-weight:400}.trend-flat-details{display:table;margin-top:5px}@media (min-width:768px){.trend-flat-details{margin-top:25px}}.trend-flat-details-cell{display:table-cell;vertical-align:bottom;min-width:70px}.trend-header-compact-pf{display:block;font-size:12px;font-weight:400}.trend-title-compact-big-pf{font-size:36px;font-weight:300;line-height:1}.trend-title-compact-small-pf{font-size:12px;font-weight:400}.trend-title-flat-big-pf{font-size:26px;font-weight:300;line-height:1;margin-right:15px}.trend-label-flat-pf{font-size:12px;font-weight:400;line-height:1}.trend-label-flat-strong-pf{display:block;font-size:12px;font-weight:700;line-height:1}.trend-footer-pf{font-size:10px;font-weight:400;color:#333;margin-left:10px}.data-unavailable-pf .trend-footer-pf,.data-unavailable-pf [class*=trend-label-],.data-unavailable-pf [class*=trend-title-]{color:transparent}.filter-pf a{cursor:pointer}.filter-pf.filter-fields .form-group{padding-left:0;width:275px}.filter-select .btn-default{font-size:12px;font-style:italic;font-weight:400;background-color:#fff;background-image:none;color:#999}.sort-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0;margin-left:10px}.sort-pf .btn-link:hover{color:#0099d3}.input-group .input-group-btn .dropdown-menu>.selected>a{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}@media (min-width:768px){.toolbar-pf-actions .toolbar-apf-filter{padding-left:0}}.toolbar-pf-actions .dropdown-menu a,.toolbar-pf-actions .toolbar-pf-view-selector a{cursor:pointer}.toolbar-pf-actions .dropdown-kebab-pf{float:right}.toolbar-pf-include-actions{display:inline-block;margin:0 5px}.dropdown-kebab-pf.invisible{opacity:0;pointer-events:none}.utilization-bar-chart-pf .progress-bar{-webkit-transition:width .75s ease-in-out;-moz-transition:width .75s ease-in-out;-o-transition:width .75s ease-in-out;transition:width .75s ease-in-out}.utilization-bar-chart-pf .progress-bar.animate{width:0!important}.heatmap-pf-container{position:relative}.heatmap-pf-container-pf .loading{position:absolute;top:100px;right:50%;z-index:10}.heatmap-pf-container .heatmap-container{margin-left:-1px}.heatmap-pf-svg{width:100%;height:100%}.heatmap-pf-legend-container{list-style-type:none;margin-top:5px;padding:0;overflow:auto}.heatmap-pf-legend-items{float:left}.legend-pf-color-box{width:11px;height:11px;margin-left:5px;margin-right:5px;display:inline-block}.legend-pf-color-box:first-of-type{margin-left:0}.legend-pf-text{font-size:11px;font-weight:400;line-height:11px;padding-right:5px}.toolbar-pf-actions.no-filter-results{margin-bottom:10px}accordion>.panel-group .panel-default .panel-title>a:before{content:"\f105"}accordion>.panel-group .panel-open .panel-title>a:before{content:"\f107"}.navbar-brand-txt{line-height:34px}.toast-pf .dropdown-menu>li>a,.toast-pf-action>a{cursor:pointer}.wizard-pf-footer .tooltip-wrapper{border:none;box-shadow:none;display:inline-block;margin-left:5px;padding:0;text-align:center}.wizard-pf-footer .tooltip-wrapper .btn[disabled]{pointer-events:none}.wizard-pf-singlestep{margin-left:0}.wizard-pf-position-override{position:relative}.wizard-pf-footer-inline{text-align:left}.wizard-pf-cancel-inline{margin-left:25px}.pf-expand-placeholder{margin-right:15px} diff --git a/www/libs/angular-patternfly/angular-patternfly.min.js b/www/libs/angular-patternfly/angular-patternfly.min.js new file mode 100644 index 0000000..fd36623 --- /dev/null +++ b/www/libs/angular-patternfly/angular-patternfly.min.js @@ -0,0 +1,4 @@ +function mergeDeep(dst){"use strict";return angular.forEach(arguments,function(obj){obj!==dst&&angular.forEach(obj,function(value,key){dst[key]&&dst[key].constructor&&dst[key].constructor===Object?mergeDeep(dst[key],value):dst[key]=value})}),dst}angular.module("patternfly.card",[]),angular.module("patternfly.charts",["patternfly.utils","ui.bootstrap","ngSanitize"]),angular.module("patternfly.filters",["patternfly.select","ui.bootstrap"]),angular.module("patternfly.form",[]),angular.module("patternfly.modals",["ui.bootstrap.modal","ui.bootstrap.tpls"]),angular.module("patternfly.navigation",["ui.bootstrap"]),angular.module("patternfly.notification",["patternfly.utils"]),angular.module("patternfly",["patternfly.autofocus","patternfly.card","patternfly.filters","patternfly.form","patternfly.modals","patternfly.navigation","patternfly.notification","patternfly.select","patternfly.sort","patternfly.toolbars","patternfly.utils","patternfly.validation","patternfly.views","patternfly.wizard"]),angular.module("patternfly.sort",["ui.bootstrap"]),angular.module("patternfly.toolbars",["patternfly.utils","patternfly.filters","patternfly.sort","patternfly.views"]),angular.module("patternfly.utils",["ui.bootstrap"]),angular.module("patternfly.views",["patternfly.utils","patternfly.filters","patternfly.sort","patternfly.charts"]),angular.module("patternfly.wizard",["ui.bootstrap.modal","ui.bootstrap.tpls","patternfly.form"]),angular.module("patternfly.autofocus",[]).directive("pfFocused",["$timeout",function($timeout){"use strict";return{restrict:"A",link:function(scope,element,attrs){scope.$watch(attrs.pfFocused,function(newValue){$timeout(function(){newValue&&(element[0].focus(),element[0].select&&element[0].select())})})}}}]),angular.module("patternfly.card").directive("pfAggregateStatusCard",function(){"use strict";return{restrict:"A",scope:{status:"=",showTopBorder:"@?",altLayout:"@?",layout:"@?"},templateUrl:"card/aggregate-status/aggregate-status-card.html",link:function(scope){scope.shouldShowTopBorder="true"===scope.showTopBorder,scope.isAltLayout="true"===scope.altLayout||"tall"===scope.layout,scope.isMiniLayout="mini"===scope.layout}}}),angular.module("patternfly.card").directive("pfCard",function(){"use strict";return{restrict:"A",transclude:!0,templateUrl:"card/basic/card.html",scope:{headTitle:"@",subTitle:"@?",showTopBorder:"@?",showTitlesSeparator:"@?",footer:"=?",filter:"=?"},controller:["$scope",function($scope){$scope.filter&&!$scope.currentFilter&&($scope.filter.defaultFilter?$scope.currentFilter=$scope.filter.filters[$scope.filter.defaultFilter]:$scope.currentFilter=$scope.filter.filters[0]),$scope.footerCallBackFn=function(){$scope.footerCallBackResult=$scope.footer.callBackFn()},$scope.filterCallBackFn=function(f){$scope.currentFilter=f,$scope.filter.callBackFn&&($scope.filterCallBackResult=$scope.filter.callBackFn(f))},$scope.showHeader=function(){return $scope.headTitle||$scope.showFilterInHeader()},$scope.showFilterInHeader=function(){return $scope.filter&&$scope.filter.filters&&$scope.filter.position&&"header"===$scope.filter.position},$scope.showFilterInFooter=function(){return $scope.filter&&$scope.filter.filters&&(!$scope.filter.position||"footer"===$scope.filter.position)}}],link:function(scope){scope.shouldShowTitlesSeparator=!scope.showTitlesSeparator||"true"===scope.showTitlesSeparator}}}),function(){"use strict";var patternflyDefaults=$().c3ChartDefaults();angular.module("patternfly.charts").constant("c3ChartDefaults",{getDefaultColors:patternflyDefaults.getDefaultColors,getDefaultDonut:patternflyDefaults.getDefaultDonut,getDefaultDonutSize:patternflyDefaults.getDefaultDonutSize,getDefaultDonutColor:patternflyDefaults.getDefaultDonutColors,getDefaultDonutLegend:patternflyDefaults.getDefaultDonutLegend,getDefaultDonutConfig:patternflyDefaults.getDefaultDonutConfig,getDefaultSparklineArea:patternflyDefaults.getDefaultSparklineArea,getDefaultSparklineSize:patternflyDefaults.getDefaultSparklineSize,getDefaultSparklineAxis:patternflyDefaults.getDefaultSparklineAxis,getDefaultSparklineColor:patternflyDefaults.getDefaultColors,getDefaultSparklineLegend:patternflyDefaults.getDefaultSparklineLegend,getDefaultSparklinePoint:patternflyDefaults.getDefaultSparklinePoint,getDefaultSparklineTooltip:patternflyDefaults.getDefaultSparklineTooltip,getDefaultSparklineConfig:patternflyDefaults.getDefaultSparklineConfig,getDefaultLineConfig:patternflyDefaults.getDefaultLineConfig})}(),function(){"use strict";angular.module("patternfly.charts").directive("pfC3Chart",["$timeout",function($timeout){return{restrict:"A",scope:{config:"=",getChartCallback:"="},template:'
    ',replace:!0,link:function(scope,element,attrs){scope.$watch("config",function(){$timeout(function(){var chart,chartData=scope.config;chartData&&(chartData.bindto="#"+attrs.id,chart=c3.generate(chartData),scope.getChartCallback&&scope.getChartCallback(chart))})},!0)}}}])}(),angular.module("patternfly.charts").directive("pfDonutPctChart",["pfUtils","$timeout",function(pfUtils,$timeout){"use strict";return{restrict:"A",scope:{config:"=",data:"=",chartHeight:"=?",centerLabel:"=?"},replace:!0,templateUrl:"charts/donut/donut-pct-chart.html",controller:["$scope",function($scope){var donutTooltip;$scope.donutChartId="donutChart",$scope.config.chartId&&($scope.donutChartId=$scope.config.chartId+$scope.donutChartId),$scope.updateAvailable=function(){$scope.data.available=$scope.data.total-$scope.data.used},void 0===$scope.data.available&&$scope.updateAvailable(),$scope.getStatusColor=function(used,thresholds){var color=pfUtils.colorPalette.blue;return thresholds&&(color=pfUtils.colorPalette.green,used>=thresholds.error?color=pfUtils.colorPalette.red:used>=thresholds.warning&&(color=pfUtils.colorPalette.orange)),color},$scope.statusDonutColor=function(scope){var color,percentUsed;return color={pattern:[]},percentUsed=scope.data.used/scope.data.total*100,color.pattern[0]=$scope.getStatusColor(percentUsed,scope.config.thresholds),color.pattern[1]=pfUtils.colorPalette.black300,color},donutTooltip=function(scope){return{contents:function(d){var tooltipHtml;return tooltipHtml=scope.config.tooltipFn?''+scope.config.tooltipFn(d)+"":''+Math.round(100*d[0].ratio)+"% "+$scope.config.units+" "+d[0].name+""}}},$scope.getDonutData=function(scope){return{columns:[["Used",scope.data.used],["Available",scope.data.available]],type:"donut",donut:{label:{show:!1}},groups:[["used","available"]],order:null}},$scope.getCenterLabelText=function(){var centerLabelText;return centerLabelText={bigText:$scope.data.used,smText:$scope.config.units+" Used"},$scope.config.centerLabelFn?(centerLabelText.bigText=$scope.config.centerLabelFn(),centerLabelText.smText=""):"none"===$scope.centerLabel?(centerLabelText.bigText="",centerLabelText.smText=""):"available"===$scope.centerLabel?(centerLabelText.bigText=$scope.data.available,centerLabelText.smText=$scope.config.units+" Available"):"percent"===$scope.centerLabel&&(centerLabelText.bigText=Math.round($scope.data.used/$scope.data.total*100)+"%",centerLabelText.smText="of "+$scope.data.total+" "+$scope.config.units),centerLabelText},$scope.updateAll=function(scope){$scope.updateAvailable(),$scope.config.data=pfUtils.merge($scope.config.data,$scope.getDonutData($scope)),$scope.config.color=$scope.statusDonutColor($scope),$scope.config.tooltip=donutTooltip(scope),$scope.config.data.onclick=$scope.config.onClickFn},$scope.config=pfUtils.merge($().c3ChartDefaults().getDefaultDonutConfig(),$scope.config),$scope.updateAll($scope)}],link:function(scope,element){var setupDonutChartTitle=function(){$timeout(function(){var donutChartTitle,centerLabelText;donutChartTitle=d3.select(element[0]).select("text.c3-chart-arcs-title"),donutChartTitle&&(centerLabelText=scope.getCenterLabelText(),donutChartTitle.selectAll("*").remove(),centerLabelText.bigText&&!centerLabelText.smText?donutChartTitle.text(centerLabelText.bigText):(donutChartTitle.insert("tspan").text(centerLabelText.bigText).classed("donut-title-big-pf",!0).attr("dy",0).attr("x",0),donutChartTitle.insert("tspan").text(centerLabelText.smText).classed("donut-title-small-pf",!0).attr("dy",20).attr("x",0)))},300)};scope.$watch("config",function(){scope.updateAll(scope),setupDonutChartTitle()},!0),scope.$watch("chartHeight",function(){scope.chartHeight&&(scope.config.size.height=scope.chartHeight)}),scope.$watch("data",function(){scope.updateAll(scope),setupDonutChartTitle()},!0),scope.$watch("centerLabel",function(){setupDonutChartTitle()})}}}]),angular.module("patternfly.charts").directive("pfEmptyChart",function(){"use strict";return{restrict:"A",scope:{chartHeight:"=?"},replace:!0,templateUrl:"charts/empty-chart.html",controller:["$scope",function($scope){$scope.setSizeStyles=function(){var height=$scope.chartHeight||40,topPadding=Math.min(Math.round((height-40)/2),20);$scope.sizeStyles={height:height+"px","padding-top":topPadding+"px"}},$scope.setSizeStyles()}],link:function(scope){scope.$watch("chartHeight",function(){scope.setSizeStyles()})}}}),angular.module("patternfly.charts").directive("pfHeatmapLegend",function(){"use strict";return{restrict:"A",scope:{legend:"=?",legendColors:"=?"},templateUrl:"charts/heatmap/heatmap-legend.html",controller:["$scope",function($scope){var heatmapColorPatternDefaults=["#d4f0fa","#F9D67A","#EC7A08","#CE0000"],legendLabelDefaults=["< 70%","70-80%","80-90%","> 90%"];$scope.legendColors||($scope.legendColors=heatmapColorPatternDefaults),$scope.legend||($scope.legend=legendLabelDefaults)}],link:function($scope){var index,items=[];for(index=$scope.legend.length-1;index>=0;index--)items.push({text:$scope.legend[index],color:$scope.legendColors[index]});$scope.legendItems=items}}}),angular.module("patternfly.charts").directive("pfHeatmap",["$compile","$window",function($compile,$window){"use strict";return{restrict:"A",scope:{data:"=",chartDataAvailable:"=?",height:"=?",chartTitle:"=?",showLegend:"=?",legendLabels:"=?",maxBlockSize:"@",minBlockSize:"@",blockPadding:"@",thresholds:"=?",heatmapColorPattern:"=?",clickAction:"=?",rangeOnHover:"=?",rangeHoverSize:"@",rangeTooltips:"=?"},templateUrl:"charts/heatmap/heatmap.html",controller:["$scope",function($scope){var thresholdDefaults=[.7,.8,.9],heatmapColorPatternDefaults=["#d4f0fa","#F9D67A","#EC7A08","#CE0000"],legendLabelDefaults=["< 70%","70-80%","80-90%","> 90%"],rangeTooltipDefaults=["< 70%","70-80%","80-90%","> 90%"],heightDefault=200;void 0===$scope.maxBlockSize||isNaN($scope.maxBlockSize)?$scope.maxSize=64:($scope.maxSize=parseInt($scope.maxBlockSize),$scope.maxSize<5?$scope.maxSize=5:$scope.maxSize>50&&($scope.maxSize=50)),void 0===$scope.minBlockSize||isNaN($scope.minBlockSize)?$scope.minSize=2:$scope.minSize=parseInt($scope.minBlockSize),void 0===$scope.blockPadding||isNaN($scope.blockPadding)?$scope.padding=2:$scope.padding=parseInt($scope.blockPadding),void 0===$scope.rangeHoverSize||isNaN($scope.rangeHoverSize)?$scope.rangeHoverSize=15:$scope.rangeHoverSize=parseInt($scope.rangeHoverSize),$scope.rangeOnHover=void 0===$scope.rangeOnHover||$scope.rangeOnHover?!0:!1,$scope.rangeTooltips||($scope.rangeTooltips=rangeTooltipDefaults),$scope.thresholds||($scope.thresholds=thresholdDefaults),$scope.heatmapColorPattern||($scope.heatmapColorPattern=heatmapColorPatternDefaults),$scope.legendLabels||($scope.legendLabels=legendLabelDefaults),$scope.height=$scope.height||heightDefault,$scope.showLegend=$scope.showLegend||void 0===$scope.showLegend,$scope.loadingDone=!1}],link:function(scope,element,attrs){var containerWidth,containerHeight,blockSize,numberOfRows,thisComponent=element[0].querySelector(".heatmap-pf-svg"),setStyles=function(){scope.containerStyles={height:scope.height+"px",display:scope.chartDataAvailable===!1?"none":"block"}},setSizes=function(){var parentContainer=element[0].querySelector(".heatmap-container");containerWidth=parentContainer.clientWidth,containerHeight=parentContainer.clientHeight,blockSize=determineBlockSize(),blockSize-scope.padding>scope.maxSize?(blockSize=scope.padding+scope.maxSize,numberOfRows=Math.ceil(Math.sqrt(scope.data.length)),(blockSize*numberOfRows>containerWidth||blockSize*numberOfRows>containerHeight)&&(numberOfRows=0===blockSize?0:Math.floor(containerHeight/blockSize))):blockSize-scope.paddingcontainerWidth||blockSize*numberOfRows>containerHeight)&&(numberOfRows=0===blockSize?0:Math.floor(containerHeight/blockSize))):numberOfRows=0===blockSize?0:Math.floor(containerHeight/blockSize)},determineBlockSize=function(){var sx,sy,x=containerWidth,y=containerHeight,n=scope.data?scope.data.length:0,px=Math.ceil(Math.sqrt(n*x/y)),py=Math.ceil(Math.sqrt(n*y/x));return sx=Math.floor(px*y/x)*px '+tipRows+"
    "},$scope.sparklineTooltip=function(){return{contents:function(d){var tipRows,percentUsed=0;if($scope.config.tooltipFn)tipRows=$scope.config.tooltipFn(d);else switch($scope.config.tooltipType){case"usagePerDay":$scope.chartData.dataAvailable!==!1&&$scope.chartData.total>0&&(percentUsed=Math.round(d[0].value/$scope.chartData.total*100)),tipRows=' '+d[0].x.toLocaleDateString()+' '+percentUsed+'%: '+d[0].value+" "+($scope.config.units?$scope.config.units+" ":"")+d[0].name+"";break;case"valuePerDay":tipRows=' '+d[0].x.toLocaleDateString()+' '+d[0].value+" "+d[0].name+"";break;case"percentage":percentUsed=Math.round(d[0].value/$scope.chartData.total*100),tipRows=' '+percentUsed+"%";break;default:tipRows=$().c3ChartDefaults().getDefaultSparklineTooltip().contents(d)}return $scope.getTooltipTableHTML(tipRows)},position:function(data,width,height,element){var center,top,chartBox,graphOffsetX,x;try{return center=parseInt(element.getAttribute("x")),top=parseInt(element.getAttribute("y")),chartBox=document.querySelector("#"+$scope.sparklineChartId).getBoundingClientRect(),graphOffsetX=document.querySelector("#"+$scope.sparklineChartId+" g.c3-axis-y").getBoundingClientRect().right,x=Math.max(0,center+graphOffsetX-chartBox.left-Math.floor(width/2)),{top:top-height,left:Math.min(x,chartBox.width-width)}}catch(e){}}}},void 0===$scope.showXAxis&&($scope.showXAxis=void 0!==$scope.config.showAxis&&$scope.config.showAxis),void 0===$scope.showYAxis&&($scope.showYAxis=void 0!==$scope.config.showAxis&&$scope.config.showAxis),$scope.defaultConfig=$().c3ChartDefaults().getDefaultSparklineConfig(),$scope.defaultConfig.axis={x:{show:$scope.showXAxis===!0,type:"timeseries",tick:{format:function(){return""}}},y:{show:$scope.showYAxis===!0,tick:{format:function(){return""}}}},$scope.defaultConfig.tooltip=$scope.sparklineTooltip(),$scope.chartHeight&&($scope.defaultConfig.size.height=$scope.chartHeight),$scope.defaultConfig.units="",$scope.config.data=pfUtils.merge($scope.config.data,$scope.getSparklineData($scope.chartData)),$scope.chartConfig=pfUtils.merge($scope.defaultConfig,$scope.config)}],link:function(scope){scope.$watch("config",function(){scope.config.data=pfUtils.merge(scope.config.data,scope.getSparklineData(scope.chartData)),scope.chartConfig=pfUtils.merge(scope.defaultConfig,scope.config)},!0),scope.$watch("chartHeight",function(){scope.chartHeight&&(scope.chartConfig.size.height=scope.chartHeight)}),scope.$watch("showXAxis",function(){scope.chartConfig.axis.x.show=scope.showXAxis===!0}),scope.$watch("showYAxis",function(){scope.chartConfig.axis.y.show=scope.showYAxis===!0}),scope.$watch("chartData",function(){scope.chartConfig.data=pfUtils.merge(scope.chartConfig.data,scope.getSparklineData(scope.chartData))},!0)}}}]),angular.module("patternfly.charts").directive("pfTrendsChart",function(){"use strict";return{restrict:"A",scope:{config:"=",chartData:"=",chartHeight:"=?",showXAxis:"=?",showYAxis:"=?"},replace:!0,templateUrl:"charts/trends/trends-chart.html",controller:["$scope",function($scope){var SMALL=30,LARGE=60;$scope.getPercentageValue=function(){var pctValue=0;return $scope.chartData.dataAvailable!==!1&&$scope.chartData.total>0&&(pctValue=Math.round($scope.getLatestValue()/$scope.chartData.total*100)),pctValue},$scope.getLatestValue=function(){var latestValue=0;return $scope.chartData.yData&&$scope.chartData.yData.length>0&&(latestValue=$scope.chartData.yData[$scope.chartData.yData.length-1]),latestValue},$scope.getChartHeight=function(){var retValue=LARGE;return $scope.chartHeight?retValue=$scope.chartHeight:"small"===$scope.config.layout&&(retValue=SMALL),retValue}}],link:function(scope){scope.$watch("config",function(){scope.showLargeCardLayout=!scope.config.layout||"large"===scope.config.layout,scope.showSmallCardLayout="small"===scope.config.layout,scope.showActualValue=!scope.config.valueType||"actual"===scope.config.valueType,scope.showPercentageValue="percentage"===scope.config.valueType},!0)}}}),angular.module("patternfly.charts").directive("pfUtilizationBarChart",["$timeout",function($timeout){"use strict";return{restrict:"A",scope:{chartData:"=",chartTitle:"=",chartFooter:"=",units:"=",thresholdError:"=?",thresholdWarning:"=?",footerLabelFormat:"@?",layout:"=?"},templateUrl:"charts/utilization-bar/utilization-bar-chart.html",link:function(scope){scope.$watch("chartData",function(newVal,oldVal){"undefined"!=typeof newVal&&(scope.chartData.percentageUsed=Math.round(100*(scope.chartData.used/scope.chartData.total)),(scope.thresholdError||scope.thresholdWarning)&&(scope.isError=scope.chartData.percentageUsed>=scope.thresholdError,scope.isWarn=scope.chartData.percentageUsed>=scope.thresholdWarning&&scope.chartData.percentageUsedcharsMaxLimit&&($scope.ngModel=$scope.ngModel.substring(0,charsMaxLimit),charsLength=$scope.ngModel.length,remainingChars=charsMaxLimit-charsLength),$scope.remainingChars=remainingChars,$scope.remainingCharsWarning=charsWarnRemaining>=remainingChars?!0:!1,countRemainingFld.text(remainingChars),countRemainingFld.toggleClass("chars-warn-remaining-pf",charsWarnRemaining>=remainingChars),0>remainingChars?$scope.$emit("overCharsMaxLimit",$attributes.id):$scope.$emit("underCharsMaxLimit",$attributes.id)};$scope.$watch("ngModel",function(){checkCharactersRemaining()}),$element.bind("keypress",function(event){blockInputAtMaxLimit&&$element.val().length>=charsMaxLimit&&8!==event.keyCode&&event.preventDefault()})}}}]),angular.module("patternfly.modals").directive("pfAboutModalTransclude",["$parse",function($parse){"use strict";return{link:function(scope,element,attrs){element.append($parse(attrs.pfAboutModalTransclude)(scope))}}}]).directive("pfAboutModal",function(){"use strict";return{restrict:"A",scope:{additionalInfo:"=?",copyright:"=?",close:"&onClose",imgAlt:"=?",imgSrc:"=?",isOpen:"=?",productInfo:"=",title:"=?"},templateUrl:"modals/about-modal.html",transclude:!0,controller:["$scope","$uibModal","$transclude",function($scope,$uibModal,$transclude){void 0===$scope.isOpen&&($scope.isOpen=!1),$scope.openModal=function(){$uibModal.open({controller:["$scope","$uibModalInstance","content",function($scope,$uibModalInstance,content){$scope.template=content,$scope.close=function(){$uibModalInstance.close()},$scope.$watch(function(){return $scope.isOpen},function(newValue){newValue===!1&&$uibModalInstance.close()})}],resolve:{content:function(){var transcludedContent;return $transclude(function(clone){transcludedContent=clone; +}),transcludedContent}},scope:$scope,templateUrl:"about-modal-template.html"}).result.then(function(){$scope.close()},function(){$scope.close()})}}],link:function(scope,element,attrs){var isOpenListener=scope.$watch("isOpen",function(newVal,oldVal){newVal===!0&&scope.openModal()});scope.$on("$destroy",isOpenListener)}}}),angular.module("patternfly.navigation").directive("pfVerticalNavigation",["$location","$rootScope","$window","$document","$timeout","$injector",function(location,rootScope,$window,$document,$timeout,$injector){"use strict";var $state;return $injector.has("$state")&&($state=$injector.get("$state")),{restrict:"A",scope:{brandSrc:"@",brandAlt:"@",showBadges:"@",persistentSecondary:"@",pinnableMenus:"@",hiddenIcons:"@",items:"=",navigateCallback:"=?",itemClickCallback:"=?",updateActiveItemsOnClick:"@",ignoreMobile:"@"},replace:!0,templateUrl:"navigation/vertical-navigation.html",transclude:!0,controller:["$scope",function($scope){var routeChangeListener;$scope.showBadges="true"===$scope.showBadges,$scope.persistentSecondary="true"===$scope.persistentSecondary,$scope.pinnableMenus="true"===$scope.pinnableMenus,$scope.hiddenIcons="true"===$scope.hiddenIcons,$scope.updateActiveItemsOnClick="true"===$scope.updateActiveItemsOnClick,$scope.ignoreMobile="true"===$scope.ignoreMobile,$scope.activeSecondary=!1,$scope.clearActiveItems=function(){$scope.items.forEach(function(item){item.isActive=!1,item.children&&item.children.forEach(function(secondary){secondary.isActive=!1,secondary.children&&secondary.children.forEach(function(tertiary){tertiary.isActive=!1})})})},$scope.setActiveItems=function(){var updatedRoute="#"+location.path();$scope.items.forEach(function(topLevel){updatedRoute.indexOf(topLevel.href)>-1&&(topLevel.isActive=!0),topLevel.children&&topLevel.children.forEach(function(secondLevel){updatedRoute.indexOf(secondLevel.href)>-1&&(secondLevel.isActive=!0,topLevel.isActive=!0),secondLevel.children&&secondLevel.children.forEach(function(thirdLevel){updatedRoute.indexOf(thirdLevel.href)>-1&&(thirdLevel.isActive=!0,secondLevel.isActive=!0,topLevel.isActive=!0)})})})},$scope.updateActiveItemsOnClick||(routeChangeListener=rootScope.$on("$routeChangeSuccess",function(event,next,current){$scope.clearActiveItems(),$scope.setActiveItems()}),$scope.$on("$destroy",routeChangeListener))}],link:function($scope){var breakpoints={tablet:768,desktop:1200},getBodyContentElement=function(){return angular.element(document.querySelector(".container-pf-nav-pf-vertical"))},explicitCollapse=!1,hoverDelay=500,hideDelay=hoverDelay+200,initBodyElement=function(){var bodyContentElement=getBodyContentElement();$scope.showBadges&&bodyContentElement.addClass("nav-pf-vertical-with-badges"),$scope.persistentSecondary&&bodyContentElement.addClass("nav-pf-persistent-secondary"),$scope.hiddenIcons&&bodyContentElement.addClass("hidden-icons-pf")},updateMobileMenu=function(selected,secondaryItem){$scope.items.forEach(function(item){item.isMobileItem=!1,item.children&&item.children.forEach(function(nextSecondary){nextSecondary.isMobileItem=!1})}),selected?(selected.isMobileItem=!0,secondaryItem?(secondaryItem.isMobileItem=!0,$scope.showMobileSecondary=!1,$scope.showMobileTertiary=!0):($scope.showMobileSecondary=!0,$scope.showMobileTertiary=!1)):($scope.showMobileSecondary=!1,$scope.showMobileTertiary=!1)},checkNavState=function(){var width=$window.innerWidth,bodyContentElement=getBodyContentElement();!$scope.ignoreMobile&&width0&&item.children.forEach(function(secondaryItem){secondaryItem.isHover&&(hover=!0)})}),hover},updateSecondaryCollapsedState=function(setCollapsed,collapsedItem){var bodyContentElement=getBodyContentElement();collapsedItem&&(collapsedItem.secondaryCollapsed=setCollapsed),setCollapsed?($scope.collapsedSecondaryNav=!0,bodyContentElement.addClass("collapsed-secondary-nav-pf")):($scope.items&&$scope.items.forEach(function(item){item.secondaryCollasped=!1}),$scope.collapsedSecondaryNav=!1,bodyContentElement.removeClass("collapsed-secondary-nav-pf"))},updateTertiaryCollapsedState=function(setCollapsed,collapsedItem){var bodyContentElement=getBodyContentElement();collapsedItem&&(collapsedItem.tertiaryCollapsed=setCollapsed),setCollapsed?($scope.collapsedTertiaryNav=!0,bodyContentElement.addClass("collapsed-tertiary-nav-pf"),updateSecondaryCollapsedState(!1)):($scope.items&&$scope.items.forEach(function(item){item.children&&item.children.length>0&&item.children.forEach(function(secondaryItem){secondaryItem.tertiaryCollasped=!1})}),$scope.collapsedTertiaryNav=!1,bodyContentElement.removeClass("collapsed-tertiary-nav-pf"))};$scope.showMobileNav=!1,$scope.showMobileSecondary=!1,$scope.showMobileTertiary=!1,$scope.hoverSecondaryNav=!1,$scope.hoverTertiaryNav=!1,$scope.collapsedSecondaryNav=!1,$scope.collapsedTertiaryNav=!1,$scope.navCollapsed=!1,$scope.forceHidden=!1,$scope.handleNavBarToggleClick=function(){$scope.inMobileState?$scope.showMobileNav?$scope.showMobileNav=!1:(updateMobileMenu(),$scope.showMobileNav=!0):$scope.navCollapsed?expandMenu():collapseMenu()},$scope.handlePrimaryClick=function(item,event){$scope.inMobileState?item.children&&item.children.length>0?updateMobileMenu(item):(updateMobileMenu(),navigateToItem(item)):navigateToItem(item)},$scope.handleSecondaryClick=function(primary,secondary,event){$scope.inMobileState?secondary.children&&secondary.children.length>0?updateMobileMenu(primary,secondary):(updateMobileMenu(),navigateToItem(secondary)):navigateToItem(secondary)},$scope.handleTertiaryClick=function(primary,secondary,tertiary,event){$scope.inMobileState&&updateMobileMenu(),navigateToItem(tertiary)},$scope.handlePrimaryHover=function(item){item.children&&item.children.length>0&&($scope.inMobileState||(void 0!==item.navUnHoverTimeout?($timeout.cancel(item.navUnHoverTimeout),item.navUnHoverTimeout=void 0):void 0!==$scope.navHoverTimeout||item.isHover||(item.navHoverTimeout=$timeout(function(){$scope.hoverSecondaryNav=!0,item.isHover=!0,item.navHoverTimeout=void 0},hoverDelay))))},$scope.handlePrimaryUnHover=function(item){item.children&&item.children.length>0&&(void 0!==item.navHoverTimeout?($timeout.cancel(item.navHoverTimeout),item.navHoverTimeout=void 0):void 0===item.navUnHoverTimeout&&item.isHover&&(item.navUnHoverTimeout=$timeout(function(){item.isHover=!1,primaryHover()||($scope.hoverSecondaryNav=!1),item.navUnHoverTimeout=void 0},hideDelay)))},$scope.handleSecondaryHover=function(item){item.children&&item.children.length>0&&($scope.inMobileState||(void 0!==item.navUnHoverTimeout?($timeout.cancel(item.navUnHoverTimeout),item.navUnHoverTimeout=void 0):void 0===$scope.navHoverTimeout&&(item.navHoverTimeout=$timeout(function(){$scope.hoverTertiaryNav=!0,item.isHover=!0,item.navHoverTimeout=void 0},hoverDelay))))},$scope.handleSecondaryUnHover=function(item){item.children&&item.children.length>0&&(void 0!==item.navHoverTimeout?($timeout.cancel(item.navHoverTimeout),item.navHoverTimeout=void 0):void 0===item.navUnHoverTimeout&&(item.navUnHoverTimeout=$timeout(function(){item.isHover=!1,secondaryHover()||($scope.hoverTertiaryNav=!1),item.navUnHoverTimeout=void 0},hideDelay)))},$scope.collapseSecondaryNav=function(item,event){$scope.inMobileState?updateMobileMenu():item.secondaryCollapsed?(updateSecondaryCollapsedState(!1,item),forceHideSecondaryMenu()):updateSecondaryCollapsedState(!0,item),$scope.hoverSecondaryNav=!1,event.stopImmediatePropagation()},$scope.collapseTertiaryNav=function(item,event){$scope.inMobileState?$scope.items.forEach(function(primaryItem){primaryItem.children&&primaryItem.children.forEach(function(secondaryItem){secondaryItem===item&&updateMobileMenu(primaryItem)})}):item.tertiaryCollapsed?(updateTertiaryCollapsedState(!1,item),forceHideSecondaryMenu()):updateTertiaryCollapsedState(!0,item),$scope.hoverSecondaryNav=!1,$scope.hoverTertiaryNav=!1,event.stopImmediatePropagation()},initBodyElement(),checkNavState(),angular.element($window).bind("resize",function(){checkNavState(),$timeout(function(){try{$scope.$apply()}catch(e){}})})}}}]),angular.module("patternfly.notification").directive("pfInlineNotification",function(){"use strict";return{scope:{pfNotificationType:"=",pfNotificationMessage:"=",pfNotificationHeader:"=",pfNotificationPersistent:"=",pfNotificationIndex:"="},restrict:"E",templateUrl:"notification/inline-notification.html"}}),angular.module("patternfly.notification").directive("pfNotificationDrawer",["$window","$timeout",function($window,$timeout){"use strict";return{restrict:"A",scope:{drawerHidden:"=?",allowExpand:"=?",drawerExpanded:"=?",drawerTitle:"@",notificationGroups:"=",actionButtonTitle:"@",actionButtonCallback:"=?",titleInclude:"@",headingInclude:"@",subheadingInclude:"@",notificationBodyInclude:"@",notificationFooterInclude:"@",customScope:"=?"},templateUrl:"notification/notification-drawer.html",controller:["$scope",function($scope){(!$scope.allowExpand||angular.isUndefined($scope.drawerExpanded))&&($scope.drawerExpanded=!1)}],link:function(scope,element){scope.$watch("notificationGroups",function(){var openFound=!1;scope.notificationGroups.forEach(function(group){group.open&&(openFound?group.open=!1:openFound=!0)})}),scope.$watch("drawerHidden",function(){$timeout(function(){angular.element($window).triggerHandler("resize")},100)}),scope.toggleCollapse=function(selectedGroup){selectedGroup.open?selectedGroup.open=!1:(scope.notificationGroups.forEach(function(group){group.open=!1}),selectedGroup.open=!0)},scope.toggleExpandDrawer=function(){scope.drawerExpanded=!scope.drawerExpanded},scope.groupHeight&&element.find(".panel-group").css("height",scope.groupHeight),scope.groupClass&&element.find(".panel-group").addClass(scope.groupClass)}}}]),angular.module("patternfly.notification").provider("Notifications",function(){"use strict";this.delay=8e3,this.verbose=!0,this.notifications={},this.persist={error:!0,httpError:!0},this.setDelay=function(delay){return this.delay=delay,this},this.setVerbose=function(verbose){return this.verbose=verbose,this},this.setPersist=function(persist){this.persist=persist},this.$get=["$rootScope","$timeout","$log",function($rootScope,$timeout,$log){function createNotifyMethod(mode){return function(message,header,persistent,closeCallback,actionTitle,actionCallback,menuActions){angular.isUndefined(header)&&(header=modes[mode].header),angular.isUndefined(persistent)&&(persistent=persist[mode]),notifications.message(modes[mode].type,header,message,persistent,closeCallback,actionTitle,actionCallback,menuActions),verbose&&$log[modes[mode].log](message)}}var delay=this.delay,notifications=this.notifications,verbose=this.verbose,persist=this.persist,modes={info:{type:"info",header:"Info!",log:"info"},success:{type:"success",header:"Success!",log:"info"},error:{type:"danger",header:"Error!",log:"error"},warn:{type:"warning",header:"Warning!",log:"warn"}};return $rootScope.notifications={},$rootScope.notifications.data=[],$rootScope.notifications.remove=function(index){$rootScope.notifications.data.splice(index,1)},$rootScope.notifications||($rootScope.notifications.data=[]),notifications.message=function(type,header,message,isPersistent,closeCallback,actionTitle,actionCallback,menuActions){var notification={type:type,header:header,message:message,isPersistent:isPersistent,closeCallback:closeCallback,actionTitle:actionTitle,actionCallback:actionCallback,menuActions:menuActions};notification.show=!0,$rootScope.notifications.data.push(notification),notification.isPersistent||(notification.viewing=!1,$timeout(function(){notification.show=!1,notification.viewing||notifications.remove(notification)},delay))},angular.forEach(modes,function(mode,index){notifications[index]=createNotifyMethod(index)}),notifications.httpError=function(message,httpResponse){message+=" ("+(httpResponse.data.message||httpResponse.data.cause||httpResponse.data.cause||httpResponse.data.errorMessage)+")",notifications.message("danger","Error!",message,persist.httpError),verbose&&$log.error(message)},notifications.remove=function(notification){var index=$rootScope.notifications.data.indexOf(notification);-1!==index&¬ifications.removeIndex(index)},notifications.removeIndex=function(index){$rootScope.notifications.remove(index)},notifications.setViewing=function(notification,viewing){notification.viewing=viewing,viewing||notification.show||notifications.remove(notification)},notifications.data=$rootScope.notifications.data,notifications}]}),angular.module("patternfly.notification").directive("pfNotificationList",function(){"use strict";function NotificationListController($scope,$rootScope){$scope.notifications=$rootScope.notifications}return NotificationListController.$inject=["$scope","$rootScope"],{restrict:"E",controller:NotificationListController,templateUrl:"notification/notification-list.html"}}),angular.module("patternfly.notification").directive("pfToastNotificationList",function(){"use strict";return{restrict:"A",scope:{notifications:"=",showClose:"=?",closeCallback:"=?",updateViewing:"=?"},templateUrl:"notification/toast-notification-list.html",controller:["$scope",function($scope){$scope.handleClose=function(notification){angular.isFunction($scope.closeCallback)&&$scope.closeCallback(notification)},$scope.handleViewingChange=function(isViewing,notification){angular.isFunction($scope.updateViewing)&&$scope.updateViewing(isViewing,notification)}}]}}),angular.module("patternfly.notification").directive("pfToastNotification",function(){"use strict";return{scope:{notificationType:"@",message:"@",header:"@",showClose:"@",closeCallback:"=?",actionTitle:"@",actionCallback:"=?",menuActions:"=?",updateViewing:"=?",data:"=?"},restrict:"A",templateUrl:"notification/toast-notification.html",controller:["$scope",function($scope){$scope.notificationType=$scope.notificationType||"info",$scope.updateShowClose=function(){$scope.showCloseButton="true"===$scope.showClose&&(angular.isUndefined($scope.menuActions)||$scope.menuActions.length<1)},$scope.handleClose=function(){angular.isFunction($scope.closeCallback)&&$scope.closeCallback($scope.data)},$scope.handleAction=function(){angular.isFunction($scope.actionCallback)&&$scope.actionCallback($scope.data)},$scope.handleMenuAction=function(menuAction){menuAction&&angular.isFunction(menuAction.actionFn)&&menuAction.isDisabled!==!0&&menuAction.actionFn(menuAction,$scope.data)},$scope.handleEnter=function(){angular.isFunction($scope.updateViewing)&&$scope.updateViewing(!0,$scope.data)},$scope.handleLeave=function(){angular.isFunction($scope.updateViewing)&&$scope.updateViewing(!1,$scope.data)},$scope.updateShowClose()}],link:function(scope){scope.$watch("showClose",function(){scope.updateShowClose()}),scope.$watch("menuActions",function(){scope.updateShowClose()})}}}),angular.module("patternfly.select",[]).directive("pfSelect",["$timeout",function($timeout){"use strict";return{restrict:"A",require:"?ngModel",scope:{selectPickerOptions:"=pfSelect"},link:function(scope,element,attrs,ngModel){var optionCollectionList,optionCollectionExpr,optionCollection,$render=ngModel.$render,selectpickerRefresh=function(argument){scope.$applyAsync(function(){element.selectpicker("refresh")})},selectpickerDestroy=function(){element.selectpicker("destroy")};element.selectpicker(scope.selectPickerOptions),ngModel.$render=function(){$render.apply(this,arguments),selectpickerRefresh()},attrs.ngOptions&&(optionCollectionList=attrs.ngOptions.split("in "),optionCollectionExpr=optionCollectionList[optionCollectionList.length-1].split(/track by|\|/),optionCollection=optionCollectionExpr[0],scope.$parent.$watchCollection(optionCollection,selectpickerRefresh)),attrs.ngModel&&scope.$parent.$watch(attrs.ngModel,selectpickerRefresh),attrs.$observe("disabled",selectpickerRefresh),scope.$on("$destroy",selectpickerDestroy)}}}]),angular.module("patternfly.sort").directive("pfSort",function(){"use strict";return{restrict:"A",scope:{config:"="},templateUrl:"sort/sort.html",controller:["$scope",function($scope){$scope.setupConfig=function(){var updated=!1;void 0===$scope.config.fields&&($scope.config.fields=[]),$scope.config.fields.length>0&&(void 0===$scope.config.currentField&&($scope.config.currentField=$scope.config.fields[0],updated=!0),void 0===$scope.config.isAscending&&($scope.config.isAscending=!0,updated=!0)),updated===!0&&$scope.config.onSortChange&&$scope.config.onSortChange($scope.config.currentField,$scope.config.isAscending)},$scope.selectField=function(field){$scope.config.currentField=field,$scope.config.onSortChange&&$scope.config.onSortChange($scope.config.currentField,$scope.config.isAscending)},$scope.changeDirection=function(){$scope.config.isAscending=!$scope.config.isAscending,$scope.config.onSortChange&&$scope.config.onSortChange($scope.config.currentField,$scope.config.isAscending)},$scope.getSortIconClass=function(){var iconClass;return iconClass="numeric"===$scope.config.currentField.sortType?$scope.config.isAscending?"fa fa-sort-numeric-asc":"fa fa-sort-numeric-desc":$scope.config.isAscending?"fa fa-sort-alpha-asc":"fa fa-sort-alpha-desc"},$scope.setupConfig()}],link:function(scope,element,attrs){scope.$watch("config",function(){scope.setupConfig()},!0)}}}),angular.module("patternfly.toolbars").directive("pfToolbar",function(){"use strict";return{restrict:"A",scope:{config:"="},replace:!0,transclude:{actions:"?"},templateUrl:"toolbars/toolbar.html",controller:["$scope",function($scope){$scope.viewSelected=function(viewId){$scope.config.viewsConfig.currentView=viewId,$scope.config.viewsConfig.onViewSelect&&!$scope.checkViewDisabled(viewId)&&$scope.config.viewsConfig.onViewSelect(viewId)},$scope.isViewSelected=function(viewId){return $scope.config.viewsConfig&&$scope.config.viewsConfig.currentView===viewId},$scope.checkViewDisabled=function(view){return $scope.config.viewsConfig.checkViewDisabled&&$scope.config.viewsConfig.checkViewDisabled(view)},$scope.filterExists=function(filter){var foundFilter=_.findWhere($scope.config.filterConfig.appliedFilters,{title:filter.title,value:filter.value});return void 0!==foundFilter},$scope.addFilter=function(field,value){var newFilter={id:field.id,title:field.title,value:value};$scope.filterExists(newFilter)||($scope.config.filterConfig.appliedFilters.push(newFilter),$scope.config.filterConfig.onFilterChange&&$scope.config.filterConfig.onFilterChange($scope.config.filterConfig.appliedFilters))},$scope.handleAction=function(action){action&&action.actionFn&&action.isDisabled!==!0&&action.actionFn(action)}}],link:function(scope,element,attrs){scope.$watch("config",function(){scope.config&&scope.config.viewsConfig&&scope.config.viewsConfig.views&&(scope.config.viewsConfig.viewsList=angular.copy(scope.config.viewsConfig.views),scope.config.viewsConfig.currentView||(scope.config.viewsConfig.currentView=scope.config.viewsConfig.viewsList[0]))},!0)}}}),angular.module("patternfly.utils").directive("pfFixedAccordion",["$window","$timeout",function($window,$timeout){"use strict";return{restrict:"A",scope:{scrollSelector:"@",groupHeight:"@",groupClass:"@"},link:function($scope,$element,$attrs){var setCollapseHeights=function(){var height,openPanel,contentHeight,bodyHeight,overflowY="hidden",parentElement=$element.find(".panel-group");height=parentElement.height(),openPanel=parentElement.find(".collapse.in"),openPanel&&openPanel.length>0&&openPanel.removeClass("in"),contentHeight=0,parentElement.children().each(function(index,groupHeading){var headingElement=angular.element(groupHeading);contentHeight+=headingElement.prop("offsetHeight"),contentHeight+=parseInt(headingElement.css("margin-top")),contentHeight+=parseInt(headingElement.css("margin-bottom"))}),bodyHeight=height-contentHeight,25>bodyHeight&&(bodyHeight=25,overflowY="auto"),openPanel&&openPanel.length>0&&openPanel.addClass("in"),$timeout(function(){parentElement.find(".panel-collapse").each(function(index,collapsePanel){var selected,$sibling,$panel=angular.element(collapsePanel),scrollElement=$panel,innerHeight=0;angular.isDefined($scope.scrollSelector)&&(selected=angular.element($panel.find($scope.scrollSelector)),1===selected.length&&(scrollElement=angular.element(selected[0]),$panel.children().each(function(j,sibling){sibling!==scrollElement[0]&&($sibling=angular.element(sibling),innerHeight+=$sibling.prop("offsetHeight"),innerHeight+=parseInt($sibling.css("margin-top")),innerHeight+=parseInt($sibling.css("margin-bottom")))}))),angular.element(scrollElement).css("max-height",bodyHeight-innerHeight+"px"),angular.element(scrollElement).css("overflow-y","auto")})}),angular.element(parentElement).css("overflow-y",overflowY)};$scope.groupHeight&&$element.find(".panel-group").css("height",$scope.groupHeight),$scope.groupClass&&$element.find(".panel-group").addClass($scope.groupClass),$timeout(function(){setCollapseHeights()},100),angular.element($window).bind("resize",function(){setCollapseHeights()})}}}]),angular.module("patternfly.utils").directive("pfTransclude",function(){"use strict";return{restrict:"A",link:function($scope,$element,$attrs,controller,$transclude){var iChildScope,iScopeType;if(!$transclude)throw new Error("pfTransclude - Illegal use of pfTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}");switch(iScopeType=$attrs.pfTransclude||"sibling"){case"sibling":$transclude(function(clone){$element.empty(),$element.append(clone)});break;case"parent":$transclude($scope,function(clone){$element.empty(),$element.append(clone)});break;case"child":iChildScope=$scope.$new(),$transclude(iChildScope,function(clone){$element.empty(),$element.append(clone),$element.on("$destroy",function(){iChildScope.$destroy()})})}}}}),function(){"use strict";angular.module("patternfly.utils").constant("pfUtils",{merge:function(source1,source2){var retValue;return retValue="function"==typeof angular.merge?this.angularMerge(source1,source2):"function"==typeof _.merge?this._merge(source1,source2):"function"==typeof $.extend?this.$extend(source1,source2):this.mergeDeep(source1,source2)},angularMerge:function(source1,source2){return angular.merge({},source1,source2)},_merge:function(source1,source2){return _.merge({},source1,source2)},$extend:function(source1,source2){return $.extend(!0,angular.copy(source1),source2)},mergeDeep:function(source1,source2){return mergeDeep({},angular.copy(source1),angular.copy(source2))},colorPalette:$.pfPaletteColors})}(),angular.module("patternfly.validation",[]).directive("pfValidation",["$timeout",function($timeout){"use strict";return{restrict:"A",require:"ngModel",scope:{pfValidation:"&",pfValidationDisabled:"="},link:function(scope,element,attrs,ctrl){function validate(){var valid,val=scope.inputCtrl.$modelValue,valFunc=scope.pfValidation({input:val});attrs.pfValidation||(valFunc=!0),valid=!val||valFunc||""===val,toggleErrorClass(scope.valEnabled&&!valid?!0:!1)}function toggleErrorClass(add){var messageElement=element.next(),parentElement=element.parent(),hasErrorM=parentElement.hasClass("has-error"),wasHidden=messageElement.hasClass("ng-hide");scope.inputCtrl.$setValidity("pf-validation",!add),add&&(hasErrorM||parentElement.addClass("has-error"),wasHidden&&messageElement.removeClass("ng-hide")),add||(hasErrorM&&parentElement.removeClass("has-error"),wasHidden||messageElement.addClass("ng-hide"))}scope.inputCtrl=ctrl,scope.valEnabled=!attrs.pfValidationDisabled,scope.$watch("pfValidationDisabled",function(newVal){scope.valEnabled=!newVal,newVal?(scope.inputCtrl.$setValidity("pfValidation",!0),toggleErrorClass(!1)):validate()}),attrs.pfValidation?$timeout(function(){validate()},0):!scope.inputCtrl.$valid&&scope.inputCtrl.$dirty&&toggleErrorClass(!0),scope.$watch("inputCtrl.$valid",function(isValid){toggleErrorClass(isValid?!1:!0)}),scope.$watch("inputCtrl.$modelValue",function(){validate()})}}}]),angular.module("patternfly.views").directive("pfCardView",["pfUtils",function(pfUtils){"use strict";return{restrict:"A",scope:{config:"=?",items:"=",eventId:"@id"},transclude:!0,templateUrl:"views/cardview/card-view.html",controller:["$scope",function($scope){if($scope.defaultConfig={selectItems:!1,multiSelect:!1,dblClick:!1,selectionMatchProp:"uuid",selectedItems:[],checkDisabled:!1,showSelectBox:!0,onSelect:null,onSelectionChange:null,onCheckBoxChange:null,onClick:null,onDblClick:null},$scope.config=pfUtils.merge($scope.defaultConfig,$scope.config),$scope.config.selectItems&&$scope.config.showSelectBox)throw new Error("pfCardView - Illegal use of pfCardView directive! Cannot allow both select box and click selection in the same card view.")}],link:function(scope,element,attrs){attrs.$observe("config",function(){scope.config=pfUtils.merge(scope.defaultConfig,scope.config),scope.config.selectItems||(scope.config.selectedItems=[]),!scope.config.multiSelect&&scope.config.selectedItems&&scope.config.selectedItems.length>0&&(scope.config.selectedItems=[scope.config.selectedItems[0]])}),scope.itemClick=function(e,item){var alreadySelected,selectionChanged=!1,continueEvent=!0;return scope.checkDisabled(item)?continueEvent:(scope.config&&scope.config.selectItems&&item&&(scope.config.multiSelect&&!scope.config.dblClick?(alreadySelected=_.find(scope.config.selectedItems,function(itemObj){return itemObj===item}),alreadySelected?scope.config.selectedItems=_.without(scope.config.selectedItems,item):(scope.config.selectedItems.push(item),selectionChanged=!0)):scope.config.selectedItems[0]===item?(scope.config.dblClick||(scope.config.selectedItems=[],selectionChanged=!0),continueEvent=!1):(scope.config.selectedItems=[item],selectionChanged=!0),selectionChanged&&scope.config.onSelect&&scope.config.onSelect(item,e),selectionChanged&&scope.config.onSelectionChange&&scope.config.onSelectionChange(scope.config.selectedItems,e)),scope.config.onClick&&scope.config.onClick(item,e),continueEvent)},scope.dblClick=function(e,item){scope.config.onDblClick&&scope.config.onDblClick(item,e)},scope.checkBoxChange=function(item){scope.config.onCheckBoxChange&&scope.config.onCheckBoxChange(item)},scope.isSelected=function(item){var matchProp=scope.config.selectionMatchProp,selected=!1;if(scope.config.showSelectBox)selected=item.selected;else if(scope.config.selectedItems.length)return _.find(scope.config.selectedItems,function(itemObj){return itemObj[matchProp]===item[matchProp]});return selected},scope.checkDisabled=function(item){return scope.config.checkDisabled&&scope.config.checkDisabled(item)}}}}]),angular.module("patternfly.views").directive("pfListView",["$timeout","$window","pfUtils",function($timeout,$window,pfUtils){"use strict";return{restrict:"A",scope:{config:"=?",items:"=",actionButtons:"=?",enableButtonForItemFn:"=?",menuActions:"=?",hideMenuForItemFn:"=?",menuClassForItemFn:"=?",updateMenuActionForItemFn:"=?",actions:"=?",updateActionForItemFn:"=?",customScope:"=?"},transclude:{expandedContent:"?listExpandedContent"},templateUrl:"views/listview/list-view.html",controller:["$scope","$element",function($scope,$element){var setDropMenuLocation=function(parentDiv){var dropButton=parentDiv.querySelector(".dropdown-toggle"),dropMenu=parentDiv.querySelector(".dropdown-menu"),parentRect=$element[0].getBoundingClientRect(),buttonRect=dropButton.getBoundingClientRect(),menuRect=dropMenu.getBoundingClientRect(),menuTop=buttonRect.top-menuRect.height,menuBottom=buttonRect.top+buttonRect.height+menuRect.height;menuBottom<=parentRect.top+parentRect.height||menuTop0&&(scope.config.selectedItems=[scope.config.selectedItems[0]])}),scope.itemClick=function(e,item){var alreadySelected,selectionChanged=!1,continueEvent=!0;return scope.checkDisabled(item)?continueEvent:(scope.config&&scope.config.selectItems&&item&&(scope.config.multiSelect&&!scope.config.dblClick?(alreadySelected=_.find(scope.config.selectedItems,function(itemObj){return itemObj===item}),alreadySelected?scope.config.selectedItems=_.without(scope.config.selectedItems,item):(scope.config.selectedItems.push(item),selectionChanged=!0)):scope.config.selectedItems[0]===item?(scope.config.dblClick||(scope.config.selectedItems=[],selectionChanged=!0),continueEvent=!1):(scope.config.selectedItems=[item],selectionChanged=!0),selectionChanged&&scope.config.onSelect&&scope.config.onSelect(item,e),selectionChanged&&scope.config.onSelectionChange&&scope.config.onSelectionChange(scope.config.selectedItems,e)),scope.config.onClick&&scope.config.onClick(item,e),continueEvent)},scope.dblClick=function(e,item){return scope.checkDisabled(item)?continueEvent:void(scope.config.onDblClick&&scope.config.onDblClick(item,e))},scope.checkBoxChange=function(item){scope.config.onCheckBoxChange&&scope.config.onCheckBoxChange(item)},scope.isSelected=function(item){var matchProp=scope.config.selectionMatchProp,selected=!1;return scope.config.showSelectBox?selected=item.selected:scope.config.selectItems&&scope.config.selectedItems.length&&(selected=_.find(scope.config.selectedItems,function(itemObj){return itemObj[matchProp]===item[matchProp]})),selected},scope.checkDisabled=function(item){return scope.config.checkDisabled&&scope.config.checkDisabled(item)}}}}]),function(){"use strict";angular.module("patternfly.views").constant("pfViewUtils",{getDashboardView:function(title){return{id:"dashboardView",title:title||"Dashboard View",iconClass:"fa fa-dashboard"}},getCardView:function(title){return{id:"cardView",title:title||"Card View",iconClass:"fa fa-th"}},getListView:function(title){return{id:"listView",title:title||"List View",iconClass:"fa fa-th-list"}},getTableView:function(title){return{id:"tableView",title:title||"Table View",iconClass:"fa fa-table"}},getTopologyView:function(title){return{id:"topologyView",title:title||"Topology View",iconClass:"fa fa-sitemap"}}})}(),function(){"use strict";function pfWizardButtonDirective(action){angular.module("patternfly.wizard").directive(action,function(){return{restrict:"A",require:"^pf-wizard",scope:{callback:"=?"},link:function($scope,$element,$attrs,wizard){$element.on("click",function(e){e.preventDefault(),$scope.$apply(function(){$scope.$eval($attrs[action]),wizard[action.replace("pfWiz","").toLowerCase()]($scope.callback)})})}}})}pfWizardButtonDirective("pfWizNext"),pfWizardButtonDirective("pfWizPrevious"),pfWizardButtonDirective("pfWizFinish"),pfWizardButtonDirective("pfWizCancel"),pfWizardButtonDirective("pfWizReset")}(),angular.module("patternfly.wizard").directive("pfWizard",["$window",function($window){"use strict";return{restrict:"A",transclude:!0,scope:{title:"@",hideIndicators:"=?",currentStep:"=?",cancelTitle:"=?",backTitle:"=?",nextTitle:"=?",backCallback:"=?",nextCallback:"=?",onFinish:"&",onCancel:"&",wizardReady:"=?",wizardDone:"=?",loadingWizardTitle:"=?",loadingSecondaryInformation:"=?",contentHeight:"=?",embedInPage:"=?"},templateUrl:"wizard/wizard.html",controller:["$scope","$timeout",function($scope,$timeout){var firstRun=!0,stepIdx=function(step){var idx=0,res=-1;return angular.forEach($scope.getEnabledSteps(),function(currStep){currStep===step&&(res=idx),idx++}),res},unselectAll=function(){angular.forEach($scope.getEnabledSteps(),function(step){step.selected=!1}),$scope.selectedStep=null},watchSelectedStep=function(){$scope.nextStepEnabledWatcher&&$scope.nextStepEnabledWatcher(),$scope.nextStepTooltipWatcher&&$scope.nextStepTooltipWatcher(),$scope.prevStepEnabledWatcher&&$scope.prevStepEnabledWatcher(),$scope.prevStepTooltipWatcher&&$scope.prevStepTooltipWatcher(),$scope.nextStepEnabledWatcher=$scope.$watch("selectedStep.nextEnabled",function(value){$scope.nextEnabled=value}),$scope.nextStepTooltipWatcher=$scope.$watch("selectedStep.nextTooltip",function(value){$scope.nextTooltip=value}),$scope.prevStepEnabledWatcher=$scope.$watch("selectedStep.prevEnabled",function(value){$scope.prevEnabled=value}),$scope.prevStepTooltipWatcher=$scope.$watch("selectedStep.prevTooltip",function(value){$scope.prevTooltip=value})},stepByTitle=function(titleToFind){var foundStep=null;return angular.forEach($scope.getEnabledSteps(),function(step){step.title===titleToFind&&(foundStep=step)}),foundStep};$scope.steps=[],$scope.context={},this.context=$scope.context,angular.isUndefined($scope.wizardReady)&&($scope.wizardReady=!0),angular.isUndefined($scope.contentHeight)&&($scope.contentHeight="300px"),this.contentHeight=$scope.contentHeight,$scope.contentStyle={height:$scope.contentHeight,"max-height":$scope.contentHeight,"overflow-y":"auto"},this.contentStyle=$scope.contentStyle,$scope.nextEnabled=!1,$scope.prevEnabled=!1,$scope.cancelTitle||($scope.cancelTitle="Cancel"),$scope.backTitle||($scope.backTitle="< Back"),$scope.nextTitle||($scope.nextTitle="Next >"),$scope.getEnabledSteps=function(){return $scope.steps.filter(function(step){return"true"!==step.disabled})},this.getReviewSteps=function(){return $scope.steps.filter(function(step){return!step.disabled&&(!angular.isUndefined(step.reviewTemplate)||step.getReviewSteps().length>0)})},$scope.currentStepNumber=function(){return stepIdx($scope.selectedStep)+1},$scope.getStepNumber=function(step){return stepIdx(step)+1},$scope.$watch("currentStep",function(step){step&&$scope.selectedStep&&$scope.selectedStep.title!==$scope.currentStep&&$scope.goTo(stepByTitle($scope.currentStep))}),$scope.$watch("[editMode, steps.length]",function(){var editMode=$scope.editMode;angular.isUndefined(editMode)||null===editMode||(editMode?angular.forEach($scope.getEnabledSteps(),function(step){step.completed=!0}):angular.forEach($scope.getEnabledSteps(),function(step,stepIndex){stepIndex>=$scope.currentStepNumber()-1&&(step.completed=!1)}))},!0),$scope.goTo=function(step,resetStepNav){$scope.wizardDone||$scope.selectedStep&&!$scope.selectedStep.okToNavAway||step===$scope.selectedStep||((firstRun||$scope.getStepNumber(step)<$scope.currentStepNumber()&&$scope.selectedStep.isPrevEnabled()||$scope.selectedStep.isNextEnabled())&&(unselectAll(),!firstRun&&resetStepNav&&step.substeps&&step.resetNav(),$scope.selectedStep=step,step.selected=!0,$timeout(function(){angular.isFunction(step.onShow)&&step.onShow()},100),watchSelectedStep(),$scope.currentStep=step.title,step.substeps||$scope.$emit("wizard:stepChanged",{step:step,index:stepIdx(step)}),firstRun=!1),$scope.selectedStep.substeps?$scope.firstStep=0===stepIdx($scope.selectedStep)&&1===$scope.selectedStep.currentStepNumber():$scope.firstStep=0===stepIdx($scope.selectedStep))},$scope.stepClick=function(step){step.allowClickNav&&$scope.goTo(step,!0)},this.addStep=function(step){var insertBefore=_.find($scope.steps,function(nextStep){return nextStep.stepPriority>step.stepPriority});insertBefore?$scope.steps.splice($scope.steps.indexOf(insertBefore),0,step):$scope.steps.push(step),$scope.wizardReady&&$scope.getEnabledSteps().length>0&&step===$scope.getEnabledSteps()[0]&&$scope.goTo($scope.getEnabledSteps()[0])},this.isWizardDone=function(){return $scope.wizardDone},this.updateSubStepNumber=function(value){$scope.firstStep=0===stepIdx($scope.selectedStep)&&0===value},this.currentStepTitle=function(){return $scope.selectedStep.title},this.currentStepDescription=function(){return $scope.selectedStep.description},this.currentStep=function(){return $scope.selectedStep},this.totalStepCount=function(){return $scope.getEnabledSteps().length},this.getEnabledSteps=function(){return $scope.getEnabledSteps()},this.currentStepNumber=function(){return $scope.currentStepNumber()},this.getStepNumber=function(step){return $scope.getStepNumber(step)},this.goTo=function(step,resetStepNav){var stepTo,enabledSteps=$scope.getEnabledSteps();stepTo=angular.isNumber(step)?enabledSteps[step]:stepByTitle(step),$scope.goTo(stepTo,resetStepNav)},this.next=function(callback){var enabledSteps=$scope.getEnabledSteps(),index=stepIdx($scope.selectedStep);if(!$scope.selectedStep.substeps||!$scope.selectedStep.next(callback)){if(angular.isFunction(callback)){if(!callback($scope.selectedStep))return;index===enabledSteps.length-1?this.finish():enabledSteps[index+1].substeps&&enabledSteps[index+1].resetNav()}$scope.selectedStep.completed=!0,index===enabledSteps.length-1?this.finish():$scope.goTo(enabledSteps[index+1])}},this.previous=function(callback){var index=stepIdx($scope.selectedStep);if((!$scope.selectedStep.substeps||!$scope.selectedStep.previous(callback))&&angular.isFunction(callback)&&callback($scope.selectedStep)){if(0===index)throw new Error("Can't go back. It's already in step 0");$scope.goTo($scope.getEnabledSteps()[index-1])}},this.finish=function(){$scope.onFinish&&$scope.onFinish()!==!1&&this.reset()},this.cancel=function(){$scope.onCancel&&$scope.onCancel()!==!1&&this.reset()},this.reset=function(){angular.forEach($scope.getEnabledSteps(),function(step){step.completed=!1}),this.goTo(0)}}],link:function($scope){$scope.$watch("wizardReady",function(){$scope.wizardReady&&$scope.goTo($scope.getEnabledSteps()[0])})}}}]),angular.module("patternfly.wizard").directive("pfWizardReviewPage",function(){"use strict";return{restrict:"A",scope:{shown:"=",wizardData:"="},require:"^pf-wizard",templateUrl:"wizard/wizard-review-page.html",controller:["$scope",function($scope){$scope.toggleShowReviewDetails=function(step){step.showReviewDetails===!0?step.showReviewDetails=!1:step.showReviewDetails=!0},$scope.getSubStepNumber=function(step,substep){return step.getStepDisplayNumber(substep)},$scope.getReviewSubSteps=function(reviewStep){return reviewStep.getReviewSteps()},$scope.reviewSteps=[],$scope.updateReviewSteps=function(wizard){$scope.reviewSteps=wizard.getReviewSteps()}}],link:function($scope,$element,$attrs,wizard){$scope.$watch("shown",function(value){value&&$scope.updateReviewSteps(wizard)})}}}),angular.module("patternfly.wizard").directive("pfWizardStep",function(){"use strict";return{restrict:"A",transclude:!0,scope:{stepTitle:"@",stepId:"@",stepPriority:"@",substeps:"=?",nextEnabled:"=?",prevEnabled:"=?",nextTooltip:"=?",prevTooltip:"=?",disabled:"@?wzDisabled",okToNavAway:"=?",allowClickNav:"=?",description:"@",wizardData:"=",onShow:"=?",showReview:"@?",showReviewDetails:"@?",reviewTemplate:"@?"},require:"^pf-wizard",templateUrl:"wizard/wizard-step.html",controller:["$scope","$timeout",function($scope,$timeout){var firstRun=!0,stepIdx=function(step){var idx=0,res=-1;return angular.forEach($scope.getEnabledSteps(),function(currStep){currStep===step&&(res=idx),idx++}),res},unselectAll=function(){angular.forEach($scope.getEnabledSteps(),function(step){step.selected=!1}),$scope.selectedStep=null},watchSelectedStep=function(){$scope.nextStepEnabledWatcher&&$scope.nextStepEnabledWatcher(),$scope.nextStepTooltipWatcher&&$scope.nextStepTooltipWatcher(),$scope.prevStepEnabledWatcher&&$scope.prevStepEnabledWatcher(),$scope.prevStepTooltipWatcher&&$scope.prevStepTooltipWatcher(),$scope.nextStepEnabledWatcher=$scope.$watch("selectedStep.nextEnabled",function(value){$scope.nextEnabled=value}),$scope.nextStepTooltipWatcher=$scope.$watch("selectedStep.nextTooltip",function(value){$scope.nextTooltip=value}),$scope.prevStepEnabledWatcher=$scope.$watch("selectedStep.prevEnabled",function(value){$scope.prevEnabled=value}),$scope.prevStepTooltipWatcher=$scope.$watch("selectedStep.prevTooltip",function(value){$scope.prevTooltip=value})},stepByTitle=function(titleToFind){var foundStep=null;return angular.forEach($scope.getEnabledSteps(),function(step){step.stepTitle===titleToFind&&(foundStep=step)}),foundStep};$scope.steps=[],$scope.context={},this.context=$scope.context,angular.isUndefined($scope.nextEnabled)&&($scope.nextEnabled=!0),angular.isUndefined($scope.prevEnabled)&&($scope.prevEnabled=!0),angular.isUndefined($scope.showReview)&&($scope.showReview=!1),angular.isUndefined($scope.showReviewDetails)&&($scope.showReviewDetails=!1),angular.isUndefined($scope.stepPriority)?$scope.stepPriority=999:$scope.stepPriority=parseInt($scope.stepPriority),angular.isUndefined($scope.okToNavAway)&&($scope.okToNavAway=!0),angular.isUndefined($scope.allowClickNav)&&($scope.allowClickNav=!0),$scope.getEnabledSteps=function(){return $scope.steps.filter(function(step){return"true"!==step.disabled})},$scope.getReviewSteps=function(){var reviewSteps=$scope.getEnabledSteps().filter(function(step){return!angular.isUndefined(step.reviewTemplate)});return reviewSteps},$scope.resetNav=function(){$scope.goTo($scope.getEnabledSteps()[0])},$scope.currentStepNumber=function(){return stepIdx($scope.selectedStep)+1},$scope.getStepNumber=function(step){return stepIdx(step)+1},$scope.isNextEnabled=function(){var enabled=angular.isUndefined($scope.nextEnabled)||$scope.nextEnabled;return $scope.substeps&&angular.forEach($scope.getEnabledSteps(),function(step){enabled=enabled&&step.nextEnabled}),enabled},$scope.isPrevEnabled=function(){var enabled=angular.isUndefined($scope.prevEnabled)||$scope.prevEnabled;return $scope.substeps&&angular.forEach($scope.getEnabledSteps(),function(step){enabled=enabled&&step.prevEnabled}),enabled},$scope.getStepDisplayNumber=function(step){return $scope.pageNumber+String.fromCharCode(65+stepIdx(step))+"."},$scope.$watch("currentStep",function(step){step&&$scope.selectedStep&&$scope.selectedStep.stepTitle!==$scope.currentStep&&$scope.goTo(stepByTitle($scope.currentStep))}),$scope.$watch("[editMode, steps.length]",function(){var editMode=$scope.editMode;angular.isUndefined(editMode)||null===editMode||(editMode?angular.forEach($scope.getEnabledSteps(),function(step){step.completed=!0}):angular.forEach($scope.getEnabledSteps(),function(step,stepIndex){stepIndex>=$scope.currentStepNumber()-1&&(step.completed=!1)}))},!0),$scope.prevStepsComplete=function(nextStep){var nextIdx=stepIdx(nextStep),complete=!0;return angular.forEach($scope.getEnabledSteps(),function(step,stepIndex){nextIdx>stepIndex&&(complete=complete&&step.nextEnabled)}),complete},$scope.goTo=function(step){!$scope.wizard.isWizardDone()&&step.okToNavAway&&step!==$scope.selectedStep&&(firstRun||$scope.getStepNumber(step)<$scope.currentStepNumber()&&$scope.selectedStep.prevEnabled||$scope.prevStepsComplete(step))&&(unselectAll(),$scope.selectedStep=step,step&&(step.selected=!0,angular.isFunction($scope.selectedStep.onShow)&&$scope.selectedStep.onShow(),watchSelectedStep(),$scope.currentStep=step.stepTitle,$scope.selected&&($scope.$emit("wizard:stepChanged",{step:step,index:stepIdx(step)}),firstRun=!1)),$scope.wizard.updateSubStepNumber(stepIdx($scope.selectedStep)))},$scope.stepClick=function(step){step.allowClickNav&&$scope.goTo(step)},$scope.$watch("selected",function(){$scope.selected&&$scope.selectedStep&&$scope.$emit("wizard:stepChanged",{step:$scope.selectedStep,index:stepIdx($scope.selectedStep)})}),this.addStep=function(step){var insertBefore=_.find($scope.steps,function(nextStep){return nextStep.stepPriority>step.stepPriority});insertBefore?$scope.steps.splice($scope.steps.indexOf(insertBefore),0,step):$scope.steps.push(step)},this.currentStepTitle=function(){return $scope.selectedStep.stepTitle},this.currentStepDescription=function(){return $scope.selectedStep.description},this.currentStep=function(){return $scope.selectedStep},this.totalStepCount=function(){return $scope.getEnabledSteps().length},this.getEnabledSteps=function(){return $scope.getEnabledSteps()},this.currentStepNumber=function(){return $scope.currentStepNumber()},this.goTo=function(step){var stepTo,enabledSteps=$scope.getEnabledSteps();stepTo=angular.isNumber(step)?enabledSteps[step]:stepByTitle(step),$scope.goTo(stepTo)},$scope.next=function(callback){var enabledSteps=$scope.getEnabledSteps(),index=stepIdx($scope.selectedStep);return angular.isFunction(callback)?callback($scope.selectedStep)?index===enabledSteps.length-1?!1:($scope.goTo(enabledSteps[index+1]),!0):!0:($scope.selectedStep.completed=!0,index===enabledSteps.length-1?!1:($scope.goTo(enabledSteps[index+1]),!0))},$scope.previous=function(callback){var index=stepIdx($scope.selectedStep),goPrev=!1;return angular.isFunction(callback)&&callback($scope.selectedStep)&&0!==index&&($scope.goTo($scope.getEnabledSteps()[index-1]),goPrev=!0),goPrev},$scope.substeps&&!$scope.onShow&&($scope.onShow=function(){$timeout(function(){$scope.selectedStep||$scope.goTo($scope.getEnabledSteps()[0])},10)})}],link:function($scope,$element,$attrs,wizard){$scope.$watch($attrs.ngShow,function(value){$scope.pageNumber=wizard.getStepNumber($scope)}),$scope.title=$scope.stepTitle,$scope.contentStyle=wizard.contentStyle,wizard.addStep($scope),$scope.wizard=wizard}}}),angular.module("patternfly.wizard").directive("pfWizardSubstep",function(){"use strict";return{restrict:"A",transclude:!0,scope:{stepTitle:"@",stepId:"@",stepPriority:"@",nextEnabled:"=?",prevEnabled:"=?",okToNavAway:"=?",allowClickNav:"=?",disabled:"@?wzDisabled",description:"@",wizardData:"=",onShow:"=?",showReviewDetails:"@?",reviewTemplate:"@?"},require:"^pf-wizard-step",templateUrl:"wizard/wizard-substep.html",controller:["$scope",function($scope){angular.isUndefined($scope.nextEnabled)&&($scope.nextEnabled=!0),angular.isUndefined($scope.prevEnabled)&&($scope.prevEnabled=!0),angular.isUndefined($scope.showReviewDetails)&&($scope.showReviewDetails=!1),angular.isUndefined($scope.stepPriority)?$scope.stepPriority=999:$scope.stepPriority=parseInt($scope.stepPriority),angular.isUndefined($scope.okToNavAway)&&($scope.okToNavAway=!0),angular.isUndefined($scope.allowClickNav)&&($scope.allowClickNav=!0),$scope.isPrevEnabled=function(){var enabled=angular.isUndefined($scope.prevEnabled)||$scope.prevEnabled;return $scope.substeps&&angular.forEach($scope.getEnabledSteps(),function(step){enabled=enabled&&step.prevEnabled}),enabled}}],link:function($scope,$element,$attrs,step){$scope.title=$scope.stepTitle,step.addStep($scope)}}}),angular.module("patternfly.card").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("card/aggregate-status/aggregate-status-card.html",'

    {{status.count}} {{status.title}} {{status.count}} {{status.title}}

    {{ notification.count }} {{ notification.count }}

    {{status.count}} {{status.title}} {{status.count}} {{status.title}}

    {{status.notification.count}} {{status.notification.count}}

    '),$templateCache.put("card/basic/card-filter.html",'
    '),$templateCache.put("card/basic/card.html","

    {{headTitle}}

    {{subTitle}}
    ")}]),angular.module("patternfly.charts").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("charts/donut/donut-pct-chart.html",'
    '),$templateCache.put("charts/empty-chart.html",'
    No data available
    '),$templateCache.put("charts/heatmap/heatmap-legend.html",'
    • {{item.text}}
    '),$templateCache.put("charts/heatmap/heatmap.html",'

    {{chartTitle}}

    '),$templateCache.put("charts/line/line-chart.html",'
    '),$templateCache.put("charts/sparkline/sparkline-chart.html",'
    '),$templateCache.put("charts/trends/trends-chart.html",'
    {{config.title}} {{getLatestValue()}} {{config.units}} {{getPercentageValue() + \'%\'}} of {{chartData.total + \' \' + config.units}}
    {{config.timeFrame}}
    {{getLatestValue()}} {{config.units}} {{getPercentageValue() + \'%\'}} of {{chartData.total + \' \' + config.units}} {{config.title}}
    {{getPercentageValue() + \'%\'}}
    {{config.trendLabel}} {{getLatestValue()}} of {{chartData.total + \' \' + config.units}}
    '),$templateCache.put("charts/utilization-bar/utilization-bar-chart.html",'
    {{chartTitle}}
    {{chartData.used}} of {{chartData.total}} {{units}} Used {{chartData.percentageUsed}}% Used
    {{chartTitle}}
    {{chartData.used}} {{units}} Used {{chartData.percentageUsed}}% Used
    '),$templateCache.put("charts/utilization-trend/utilization-trend-chart.html",'

    {{config.title}}

    {{currentValue}}

    {{currentText}}
    of {{chartData.total}} {{config.units}}
    {{legendLeftText}} {{legendRightText}}
    '); +}]),angular.module("patternfly.filters").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("filters/filter-fields.html",'
    '),$templateCache.put("filters/filter-results.html",'
    {{config.resultsCount}} Results

    Active filters:

    • {{filter.title}}: {{filter.value}}

    Clear All Filters

    '),$templateCache.put("filters/filter.html","
    ")}]),angular.module("patternfly.form").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("form/datepicker/datepicker.html",'
    '),$templateCache.put("form/datetimepicker/datetimepicker.html",'
    '),$templateCache.put("form/form-buttons/form-buttons.html",'
    '),$templateCache.put("form/form-group/form-group.html",'
    • {{ message }}
    ')}]),angular.module("patternfly.modals").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("modals/about-modal.html",'')}]),angular.module("patternfly.navigation").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("navigation/vertical-navigation.html","
    ')}]),angular.module("patternfly.notification").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("notification/inline-notification.html",'
    {{pfNotificationHeader}} {{pfNotificationMessage}}
    '),$templateCache.put("notification/notification-drawer.html",'

    {{drawerTitle}}

    '),$templateCache.put("notification/notification-list.html",'
    '),$templateCache.put("notification/notification.html",'
    {{pfNotificationHeader}} {{pfNotificationMessage}}
    '),$templateCache.put("notification/toast-notification-list.html",'
    '),$templateCache.put("notification/toast-notification.html",'
    {{header}} {{message}} {{message}}
    ')}]),angular.module("patternfly.sort").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("sort/sort.html",'
    ')}]),angular.module("patternfly.toolbars").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("toolbars/toolbar.html",'
    ')}]),angular.module("patternfly.views").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("views/cardview/card-view.html",'
    '),$templateCache.put("views/listview/list-view.html",'
    ')}]),angular.module("patternfly.wizard").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("wizard/wizard-review-page.html",''),$templateCache.put("wizard/wizard-step.html",'
    '),$templateCache.put("wizard/wizard-substep.html",''),$templateCache.put("wizard/wizard.html",'
    ')}]); diff --git a/www/libs/angular-patternfly/version-3.18.1 b/www/libs/angular-patternfly/version-3.18.1 new file mode 100644 index 0000000..e69de29 diff --git a/www/libs/angular-resource/angular-resource.min.js b/www/libs/angular-resource/angular-resource.min.js new file mode 100644 index 0000000..302090c --- /dev/null +++ b/www/libs/angular-resource/angular-resource.min.js @@ -0,0 +1,13 @@ +/* + AngularJS v1.4.5 + (c) 2010-2015 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(I,c,B){'use strict';function D(s,e){e=e||{};c.forEach(e,function(c,k){delete e[k]});for(var k in s)!s.hasOwnProperty(k)||"$"===k.charAt(0)&&"$"===k.charAt(1)||(e[k]=s[k]);return e}var x=c.$$minErr("$resource"),C=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;c.module("ngResource",["ng"]).provider("$resource",function(){var s=/^https?:\/\/[^\/]*/,e=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}}; +this.$get=["$http","$q",function(k,F){function v(c,h){this.template=c;this.defaults=r({},e.defaults,h);this.urlParams={}}function y(l,h,p,f){function d(b,q){var d={};q=r({},h,q);t(q,function(a,q){w(a)&&(a=a());var m;if(a&&a.charAt&&"@"==a.charAt(0)){m=b;var c=a.substr(1);if(null==c||""===c||"hasOwnProperty"===c||!C.test("."+c))throw x("badmember",c);for(var c=c.split("."),g=0,h=c.length;g=c;d--)f.end&&f.end(e[d]);e.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,e=[],m=a,l;for(e.last=function(){return e[e.length-1]};a;){l="";k=!0;if(e.last()&&w[e.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+e.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");f.chars&&f.chars(q(b));return""}),c("",e.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e", +b)===b&&(f.comment&&f.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),f.chars&&f.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML= +a.replace(//g,">")}function r(a,f){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,e){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,e){var k=h.lowercase(e),g="img"===a&&"src"===k|| +"background"===k;!0!==O[k]||!0===D[k]&&!f(d,g)||(c(" "),c(e),c('="'),c(B(d)),c('"'))}),c(e?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c(""));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^]*?)>/i, +I=/"\u201d\u2019]/i,d=/^mailto:/i;return function(c,b){function k(a){a&&g.push(E(a))}function e(a, +c){g.push("');k(c);g.push("")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(f);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),e(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular); +//# sourceMappingURL=angular-sanitize.min.js.map diff --git a/www/libs/angular-sanitize/angular-sanitize.min.js.map b/www/libs/angular-sanitize/angular-sanitize.min.js.map new file mode 100644 index 0000000..2f360f4 --- /dev/null +++ b/www/libs/angular-sanitize/angular-sanitize.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-sanitize.min.js", +"lineCount":15, +"mappings":"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", +"sources":["angular-sanitize.js"], +"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","makeMap","str","lowercaseKeys","obj","items","split","i","length","lowercase","htmlParser","html","handler","parseStartTag","tag","tagName","rest","unary","blockElements","stack","last","inlineElements","parseEndTag","optionalEndTagElements","voidElements","push","attrs","replace","ATTR_REGEXP","match","name","doubleQuotedValue","singleQuotedValue","unquotedValue","decodeEntities","start","pos","end","index","text","stack.last","specialElements","RegExp","all","COMMENT_REGEXP","CDATA_REGEXP","indexOf","lastIndexOf","comment","substring","DOCTYPE_REGEXP","test","BEGING_END_TAGE_REGEXP","END_TAG_REGEXP","BEGIN_TAG_REGEXP","START_TAG_REGEXP","$sanitizeMinErr","value","hiddenPre","innerHTML","textContent","encodeEntities","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignore","out","bind","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","extend","svgElements","htmlAttrs","svgAttrs","document","createElement","module","provider","$SanitizeProvider","$get","$$sanitizeUri","uri","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","target","addText","addLink","url","isDefined","raw","substr"] +} diff --git a/www/libs/angular-sanitize/index.js b/www/libs/angular-sanitize/index.js new file mode 100644 index 0000000..dd5d22e --- /dev/null +++ b/www/libs/angular-sanitize/index.js @@ -0,0 +1,2 @@ +require('./angular-sanitize'); +module.exports = 'ngSanitize'; diff --git a/www/libs/angular-translate-loader-static-files/atlsf.min.js b/www/libs/angular-translate-loader-static-files/atlsf.min.js new file mode 100644 index 0000000..e51283e --- /dev/null +++ b/www/libs/angular-translate-loader-static-files/atlsf.min.js @@ -0,0 +1,6 @@ +/*! + * angular-translate - v2.8.1 - 2015-10-01 + * + * Copyright (c) 2015 The angular-translate team, Pascal Precht; Licensed MIT + */ +!function(a,b){"function"==typeof define&&define.amd?define([],function(){return b()}):"object"==typeof exports?module.exports=b():b()}(this,function(){function a(a,b){"use strict";return function(c){if(!(c&&(angular.isArray(c.files)||angular.isString(c.prefix)&&angular.isString(c.suffix))))throw new Error("Couldn't load static files, no files and prefix or suffix specified!");c.files||(c.files=[{prefix:c.prefix,suffix:c.suffix}]);for(var d=function(d){if(!d||!angular.isString(d.prefix)||!angular.isString(d.suffix))throw new Error("Couldn't load static file, no prefix or suffix specified!");return b(angular.extend({url:[d.prefix,c.key,d.suffix].join(""),method:"GET",params:""},c.$http)).then(function(a){return a.data},function(){return a.reject(c.key)})},e=a.defer(),f=[],g=c.files.length,h=0;g>h;h++)f.push(d({prefix:c.files[h].prefix,key:c.key,suffix:c.files[h].suffix}));return a.all(f).then(function(a){for(var b=a.length,c={},d=0;b>d;d++)for(var f in a[d])c[f]=a[d][f];e.resolve(c)},function(a){e.reject(a)}),e.promise}}return angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",a),a.$inject=["$q","$http"],a.displayName="$translateStaticFilesLoader","pascalprecht.translate"}); \ No newline at end of file diff --git a/www/libs/angular-translate-loader-url/atlu.min.js b/www/libs/angular-translate-loader-url/atlu.min.js new file mode 100644 index 0000000..caec108 --- /dev/null +++ b/www/libs/angular-translate-loader-url/atlu.min.js @@ -0,0 +1,6 @@ +/*! + * angular-translate - v2.8.1 - 2015-10-01 + * + * Copyright (c) 2015 The angular-translate team, Pascal Precht; Licensed MIT + */ +!function(a,b){"function"==typeof define&&define.amd?define([],function(){return b()}):"object"==typeof exports?module.exports=b():b()}(this,function(){function a(a,b){"use strict";return function(c){if(!c||!c.url)throw new Error("Couldn't use urlLoader since no url is given!");var d={};return d[c.queryParameter||"lang"]=c.key,b(angular.extend({url:c.url,params:d,method:"GET"},c.$http)).then(function(a){return a.data},function(){return a.reject(c.key)})}}return angular.module("pascalprecht.translate").factory("$translateUrlLoader",a),a.$inject=["$q","$http"],a.displayName="$translateUrlLoader","pascalprecht.translate"}); \ No newline at end of file diff --git a/www/libs/angular-translate/angular-translate.min.js b/www/libs/angular-translate/angular-translate.min.js new file mode 100644 index 0000000..6db6b84 --- /dev/null +++ b/www/libs/angular-translate/angular-translate.min.js @@ -0,0 +1,6 @@ +/*! + * angular-translate - v2.8.1 - 2015-10-01 + * + * Copyright (c) 2015 The angular-translate team, Pascal Precht; Licensed MIT + */ +!function(a,b){"function"==typeof define&&define.amd?define([],function(){return b()}):"object"==typeof exports?module.exports=b():b()}(this,function(){function a(a){"use strict";var b=a.storageKey(),c=a.storage(),d=function(){var d=a.preferredLanguage();angular.isString(d)?a.use(d):c.put(b,a.use())};d.displayName="fallbackFromIncorrectStorageValue",c?c.get(b)?a.use(c.get(b))["catch"](d):d():angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}function b(){"use strict";var a,b,c=null,d=!1,e=!1;b={sanitize:function(a,b){return"text"===b&&(a=g(a)),a},escape:function(a,b){return"text"===b&&(a=f(a)),a},sanitizeParameters:function(a,b){return"params"===b&&(a=h(a,g)),a},escapeParameters:function(a,b){return"params"===b&&(a=h(a,f)),a}},b.escaped=b.escapeParameters,this.addStrategy=function(a,c){return b[a]=c,this},this.removeStrategy=function(a){return delete b[a],this},this.useStrategy=function(a){return d=!0,c=a,this},this.$get=["$injector","$log",function(f,g){var h={},i=function(a,c,d){return angular.forEach(d,function(d){if(angular.isFunction(d))a=d(a,c);else if(angular.isFunction(b[d]))a=b[d](a,c);else{if(!angular.isString(b[d]))throw new Error("pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: '"+d+"'");if(!h[b[d]])try{h[b[d]]=f.get(b[d])}catch(e){throw h[b[d]]=function(){},new Error("pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: '"+d+"'")}a=h[b[d]](a,c)}}),a},j=function(){d||e||(g.warn("pascalprecht.translate.$translateSanitization: No sanitization strategy has been configured. This can have serious security implications. See http://angular-translate.github.io/docs/#/guide/19_security for details."),e=!0)};return f.has("$sanitize")&&(a=f.get("$sanitize")),{useStrategy:function(a){return function(b){a.useStrategy(b)}}(this),sanitize:function(a,b,d){if(c||j(),arguments.length<3&&(d=c),!d)return a;var e=angular.isArray(d)?d:[d];return i(a,b,e)}}}];var f=function(a){var b=angular.element("
    ");return b.text(a),b.html()},g=function(b){if(!a)throw new Error("pascalprecht.translate.$translateSanitization: Error cannot find $sanitize service. Either include the ngSanitize module (https://docs.angularjs.org/api/ngSanitize) or use a sanitization strategy which does not depend on $sanitize, such as 'escape'.");return a(b)},h=function(a,b){if(angular.isObject(a)){var c=angular.isArray(a)?[]:{};return angular.forEach(a,function(a,d){c[d]=h(a,b)}),c}return angular.isNumber(a)?a:b(a)}}function c(a,b,c,d){"use strict";var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t={},u=[],v=a,w=[],x="translate-cloak",y=!1,z=!1,A=".",B=!1,C=0,D=!0,E="default",F={"default":function(a){return(a||"").split("-").join("_")},java:function(a){var b=(a||"").split("-").join("_"),c=b.split("_");return c.length>1?c[0].toLowerCase()+"_"+c[1].toUpperCase():b},bcp47:function(a){var b=(a||"").split("_").join("-"),c=b.split("-");return c.length>1?c[0].toLowerCase()+"-"+c[1].toUpperCase():b}},G="2.8.1",H=function(){if(angular.isFunction(d.getLocale))return d.getLocale();var a,c,e=b.$get().navigator,f=["language","browserLanguage","systemLanguage","userLanguage"];if(angular.isArray(e.languages))for(a=0;ac;c++)if(a[c]===b)return c;return-1},K=function(){return this.toString().replace(/^\s+|\s+$/g,"")},L=function(a){for(var b=[],c=angular.lowercase(a),d=0,e=u.length;e>d;d++)b.push(angular.lowercase(u[d]));if(J(b,c)>-1)return a;if(f){var g;for(var h in f){var i=!1,j=Object.prototype.hasOwnProperty.call(f,h)&&angular.lowercase(h)===angular.lowercase(a);if("*"===h.slice(-1)&&(i=h.slice(0,-1)===a.slice(0,h.length-1)),(j||i)&&(g=f[h],J(b,angular.lowercase(g))>-1))return g}}if(a){var k=a.split("_");if(k.length>1&&J(b,angular.lowercase(k[0]))>-1)return k[0]}return a},M=function(a,b){if(!a&&!b)return t;if(a&&!b){if(angular.isString(a))return t[a]}else angular.isObject(t[a])||(t[a]={}),angular.extend(t[a],N(b));return this};this.translations=M,this.cloakClassName=function(a){return a?(x=a,this):x},this.nestedObjectDelimeter=function(a){return a?(A=a,this):A};var N=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(h=a[e],angular.isObject(h)?N(h,b.concat(e),c,e):(f=b.length?""+b.join(A)+A+e:e,b.length&&e===d&&(g=""+b.join(A),c[g]="@:"+f),c[f]=h));return c};N.displayName="flatObject",this.addInterpolation=function(a){return w.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return n=a,this},this.useSanitizeValueStrategy=function(a){return c.useStrategy(a),this},this.preferredLanguage=function(a){return a?(O(a),this):e};var O=function(a){return a&&(e=a),e};this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(q=a,this):q},this.translationNotFoundIndicatorRight=function(a){return a?(r=a,this):r},this.fallbackLanguage=function(a){return P(a),this};var P=function(a){return a?(angular.isString(a)?(h=!0,g=[a]):angular.isArray(a)&&(h=!1,g=a),angular.isString(e)&&J(g,e)<0&&g.push(e),this):h?g[0]:g};this.use=function(a){if(a){if(!t[a]&&!o)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return i=a,this}return i};var Q=function(a){return a?(v=a,this):l?l+v:v};this.storageKey=Q,this.useUrlLoader=function(a,b){return this.useLoader("$translateUrlLoader",angular.extend({url:a},b))},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return o=a,p=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return k=a,this},this.storagePrefix=function(a){return a?(l=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return m=a,this},this.usePostCompiling=function(a){return y=!!a,this},this.forceAsyncReload=function(a){return z=!!a,this},this.uniformLanguageTag=function(a){return a?angular.isString(a)&&(a={standard:a}):a={},E=a.standard,this},this.determinePreferredLanguage=function(a){var b=a&&angular.isFunction(a)?a():I();return e=u.length?L(b):b,this},this.registerAvailableLanguageKeys=function(a,b){return a?(u=a,b&&(f=b),this):u},this.useLoaderCache=function(a){return a===!1?s=void 0:a===!0?s=!0:"undefined"==typeof a?s="$translationCache":a&&(s=a),this},this.directivePriority=function(a){return void 0===a?C:(C=a,this)},this.statefulFilter=function(a){return void 0===a?D:(D=a,this)},this.$get=["$log","$injector","$rootScope","$q",function(a,b,c,d){var f,l,u,E=b.get(n||"$translateDefaultInterpolation"),F=!1,H={},I={},R=function(a,b,c,h){if(angular.isArray(a)){var j=function(a){for(var e={},f=[],g=function(a){var f=d.defer(),g=function(b){e[a]=b,f.resolve([a,b])};return R(a,b,c,h).then(g,g),f.promise},i=0,j=a.length;j>i;i++)f.push(g(a[i]));return d.all(f).then(function(){return e})};return j(a)}var m=d.defer();a&&(a=K.apply(a));var n=function(){var a=e?I[e]:I[i];if(l=0,k&&!a){var b=f.get(v);if(a=I[b],g&&g.length){var c=J(g,b);l=0===c?1:0,J(g,e)<0&&g.push(e)}}return a}();if(n){var o=function(){ca(a,b,c,h).then(m.resolve,m.reject)};o.displayName="promiseResolved",n["finally"](o,m.reject)}else ca(a,b,c,h).then(m.resolve,m.reject);return m.promise},S=function(a){return q&&(a=[q,a].join(" ")),r&&(a=[a,r].join(" ")),a},T=function(a){i=a,k&&f.put(R.storageKey(),i),c.$emit("$translateChangeSuccess",{language:a}),E.setLocale(i);var b=function(a,b){H[b].setLocale(i)};b.displayName="eachInterpolatorLocaleSetter",angular.forEach(H,b),c.$emit("$translateChangeEnd",{language:a})},U=function(a){if(!a)throw"No language key specified for loading.";var e=d.defer();c.$emit("$translateLoadingStart",{language:a}),F=!0;var f=s;"string"==typeof f&&(f=b.get(f));var g=angular.extend({},p,{key:a,$http:angular.extend({},{cache:f},p.$http)}),h=function(b){var d={};c.$emit("$translateLoadingSuccess",{language:a}),angular.isArray(b)?angular.forEach(b,function(a){angular.extend(d,N(a))}):angular.extend(d,N(b)),F=!1,e.resolve({key:a,table:d}),c.$emit("$translateLoadingEnd",{language:a})};h.displayName="onLoaderSuccess";var i=function(a){c.$emit("$translateLoadingError",{language:a}),e.reject(a),c.$emit("$translateLoadingEnd",{language:a})};return i.displayName="onLoaderError",b.get(o)(g).then(h,i),e.promise};if(k&&(f=b.get(k),!f.get||!f.put))throw new Error("Couldn't use storage '"+k+"', missing get() or put() method!");if(w.length){var V=function(a){var c=b.get(a);c.setLocale(e||i),H[c.getInterpolationIdentifier()]=c};V.displayName="interpolationFactoryAdder",angular.forEach(w,V)}var W=function(a){var b=d.defer();if(Object.prototype.hasOwnProperty.call(t,a))b.resolve(t[a]);else if(I[a]){var c=function(a){M(a.key,a.table),b.resolve(a.table)};c.displayName="translationTableResolver",I[a].then(c,b.reject)}else b.reject();return b.promise},X=function(a,b,c,e){var f=d.defer(),g=function(d){if(Object.prototype.hasOwnProperty.call(d,b)){e.setLocale(a);var g=d[b];"@:"===g.substr(0,2)?X(a,g.substr(2),c,e).then(f.resolve,f.reject):f.resolve(e.interpolate(d[b],c)),e.setLocale(i)}else f.reject()};return g.displayName="fallbackTranslationResolver",W(a).then(g,f.reject),f.promise},Y=function(a,b,c,d){var e,f=t[a];if(f&&Object.prototype.hasOwnProperty.call(f,b)){if(d.setLocale(a),e=d.interpolate(f[b],c),"@:"===e.substr(0,2))return Y(a,e.substr(2),c,d);d.setLocale(i)}return e},Z=function(a,c){if(m){var d=b.get(m)(a,i,c);return void 0!==d?d:a}return a},$=function(a,b,c,e,f){var h=d.defer();if(a0?u:l,a,b,c,d)},ba=function(a,b,c){return _(u>0?u:l,a,b,c)},ca=function(a,b,c,e){var f=d.defer(),h=i?t[i]:t,j=c?H[c]:E;if(h&&Object.prototype.hasOwnProperty.call(h,a)){var k=h[a];"@:"===k.substr(0,2)?R(k.substr(2),b,c,e).then(f.resolve,f.reject):f.resolve(j.interpolate(k,b))}else{var l;m&&!F&&(l=Z(a,b)),i&&g&&g.length?aa(a,b,j,e).then(function(a){f.resolve(a)},function(a){f.reject(S(a))}):m&&!F&&l?e?f.resolve(e):f.resolve(l):e?f.resolve(e):f.reject(S(a))}return f.promise},da=function(a,b,c){var d,e=i?t[i]:t,f=E;if(H&&Object.prototype.hasOwnProperty.call(H,c)&&(f=H[c]),e&&Object.prototype.hasOwnProperty.call(e,a)){var h=e[a];d="@:"===h.substr(0,2)?da(h.substr(2),b,c):f.interpolate(h,b)}else{var j;m&&!F&&(j=Z(a,b)),i&&g&&g.length?(l=0,d=ba(a,b,f)):d=m&&!F&&j?j:S(a)}return d},ea=function(a){j===a&&(j=void 0),I[a]=void 0};R.preferredLanguage=function(a){return a&&O(a),e},R.cloakClassName=function(){return x},R.nestedObjectDelimeter=function(){return A},R.fallbackLanguage=function(a){if(void 0!==a&&null!==a){if(P(a),o&&g&&g.length)for(var b=0,c=g.length;c>b;b++)I[g[b]]||(I[g[b]]=U(g[b]));R.use(R.use())}return h?g[0]:g},R.useFallbackLanguage=function(a){if(void 0!==a&&null!==a)if(a){var b=J(g,a);b>-1&&(u=b)}else u=0},R.proposedLanguage=function(){return j},R.storage=function(){return f},R.use=function(a){if(!a)return i;var b=d.defer();c.$emit("$translateChangeStart",{language:a});var e=L(a);return e&&(a=e),!z&&t[a]||!o||I[a]?j===a&&I[a]?I[a].then(function(a){return b.resolve(a.key),a},function(a){return b.reject(a),d.reject(a)}):(b.resolve(a),T(a)):(j=a,I[a]=U(a).then(function(c){return M(c.key,c.table),b.resolve(c.key),j===a&&T(c.key),c},function(a){return c.$emit("$translateChangeError",{language:a}),b.reject(a),c.$emit("$translateChangeEnd",{language:a}),d.reject(a)}),I[a]["finally"](function(){ea(a)})),b.promise},R.storageKey=function(){return Q()},R.isPostCompilingEnabled=function(){return y},R.isForceAsyncReloadEnabled=function(){return z},R.refresh=function(a){function b(){f.resolve(),c.$emit("$translateRefreshEnd",{language:a})}function e(){f.reject(),c.$emit("$translateRefreshEnd",{language:a})}if(!o)throw new Error("Couldn't refresh translation table, no loader registered!");var f=d.defer();if(c.$emit("$translateRefreshStart",{language:a}),a)if(t[a]){var h=function(c){M(c.key,c.table),a===i&&T(i),b()};h.displayName="refreshPostProcessor",U(a).then(h,e)}else e();else{var j=[],k={};if(g&&g.length)for(var l=0,m=g.length;m>l;l++)j.push(U(g[l])),k[g[l]]=!0;i&&!k[i]&&j.push(U(i));var n=function(a){t={},angular.forEach(a,function(a){M(a.key,a.table)}),i&&T(i),b()};n.displayName="refreshPostProcessor",d.all(j).then(n,e)}return f.promise},R.instant=function(a,b,c){if(null===a||angular.isUndefined(a))return a;if(angular.isArray(a)){for(var d={},f=0,h=a.length;h>f;f++)d[a[f]]=R.instant(a[f],b,c);return d}if(angular.isString(a)&&a.length<1)return a;a&&(a=K.apply(a));var j,k=[];e&&k.push(e),i&&k.push(i),g&&g.length&&(k=k.concat(g));for(var l=0,n=k.length;n>l;l++){var o=k[l];if(t[o]&&("undefined"!=typeof t[o][a]?j=da(a,b,c):(q||r)&&(j=S(a))),"undefined"!=typeof j)break}return j||""===j||(j=E.interpolate(a,b),m&&!F&&(j=Z(a,b))),j},R.versionInfo=function(){return G},R.loaderCache=function(){return s},R.directivePriority=function(){return C},R.statefulFilter=function(){return D},R.isReady=function(){return B};var fa=d.defer();fa.promise.then(function(){B=!0}),R.onReady=function(a){var b=d.defer();return angular.isFunction(a)&&b.promise.then(a),B?b.resolve():fa.promise.then(b.resolve),b.promise};var ga=c.$on("$translateReady",function(){fa.resolve(),ga(),ga=null}),ha=c.$on("$translateChangeEnd",function(){fa.resolve(),ha(),ha=null});if(o){if(angular.equals(t,{})&&R.use()&&R.use(R.use()),g&&g.length)for(var ia=function(a){return M(a.key,a.table),c.$emit("$translateChangeEnd",{language:a.key}),a},ja=0,ka=g.length;ka>ja;ja++){var la=g[ja];(z||!t[la])&&(I[la]=U(la).then(ia))}}else c.$emit("$translateReady",{language:R.use()});return R}]}function d(a,b){"use strict";var c,d={},e="default";return d.setLocale=function(a){c=a},d.getInterpolationIdentifier=function(){return e},d.useSanitizeValueStrategy=function(a){return b.useStrategy(a),this},d.interpolate=function(c,d){d=d||{},d=b.sanitize(d,"params");var e=a(c)(d);return e=b.sanitize(e,"text")},d}function e(a,b,c,d,e,g){"use strict";var h=function(){return this.toString().replace(/^\s+|\s+$/g,"")};return{restrict:"AE",scope:!0,priority:a.directivePriority(),compile:function(b,i){var j=i.translateValues?i.translateValues:void 0,k=i.translateInterpolation?i.translateInterpolation:void 0,l=b[0].outerHTML.match(/translate-value-+/i),m="^(.*)("+c.startSymbol()+".*"+c.endSymbol()+")(.*)",n="^(.*)"+c.startSymbol()+"(.*)"+c.endSymbol()+"(.*)";return function(b,o,p){b.interpolateParams={},b.preText="",b.postText="",b.translateNamespace=f(b);var q={},r=function(a,c,d){if(c.translateValues&&angular.extend(a,e(c.translateValues)(b.$parent)),l)for(var f in d)if(Object.prototype.hasOwnProperty.call(c,f)&&"translateValue"===f.substr(0,14)&&"translateValues"!==f){var g=angular.lowercase(f.substr(14,1))+f.substr(15);a[g]=d[f]}},s=function(a){if(angular.isFunction(s._unwatchOld)&&(s._unwatchOld(),s._unwatchOld=void 0),angular.equals(a,"")||!angular.isDefined(a)){var d=h.apply(o.text()),e=d.match(m);if(angular.isArray(e)){b.preText=e[1],b.postText=e[3],q.translate=c(e[2])(b.$parent);var f=d.match(n);angular.isArray(f)&&f[2]&&f[2].length&&(s._unwatchOld=b.$watch(f[2],function(a){q.translate=a,y()}))}else q.translate=d}else q.translate=a;y()},t=function(a){p.$observe(a,function(b){q[a]=b,y()})};r(b.interpolateParams,p,i);var u=!0;p.$observe("translate",function(a){"undefined"==typeof a?s(""):""===a&&u||(q.translate=a,y()),u=!1});for(var v in p)p.hasOwnProperty(v)&&"translateAttr"===v.substr(0,13)&&t(v);if(p.$observe("translateDefault",function(a){b.defaultText=a}),j&&p.$observe("translateValues",function(a){a&&b.$parent.$watch(function(){angular.extend(b.interpolateParams,e(a)(b.$parent))})}),l){var w=function(a){p.$observe(a,function(c){var d=angular.lowercase(a.substr(14,1))+a.substr(15);b.interpolateParams[d]=c})};for(var x in p)Object.prototype.hasOwnProperty.call(p,x)&&"translateValue"===x.substr(0,14)&&"translateValues"!==x&&w(x)}var y=function(){for(var a in q)q.hasOwnProperty(a)&&void 0!==q[a]&&z(a,q[a],b,b.interpolateParams,b.defaultText,b.translateNamespace)},z=function(b,c,d,e,f,g){c?(g&&"."===c.charAt(0)&&(c=g+c),a(c,e,k,f).then(function(a){A(a,d,!0,b)},function(a){A(a,d,!1,b)})):A(c,d,!1,b)},A=function(b,c,e,f){if("translate"===f){e||"undefined"==typeof c.defaultText||(b=c.defaultText),o.empty().append(c.preText+b+c.postText);var g=a.isPostCompilingEnabled(),h="undefined"!=typeof i.translateCompile,j=h&&"false"!==i.translateCompile;(g&&!h||j)&&d(o.contents())(c)}else{e||"undefined"==typeof c.defaultText||(b=c.defaultText);var k=p.$attr[f];"data-"===k.substr(0,5)&&(k=k.substr(5)),k=k.substr(15),o.attr(k,b)}};(j||l||p.translateDefault)&&b.$watch("interpolateParams",y,!0);var B=g.$on("$translateChangeSuccess",y);o.text().length?s(p.translate?p.translate:""):p.translate&&s(p.translate),y(),b.$on("$destroy",B)}}}}function f(a){"use strict";return a.translateNamespace?a.translateNamespace:a.$parent?f(a.$parent):void 0}function g(a){"use strict";return{compile:function(b){var c=function(){b.addClass(a.cloakClassName())},d=function(){b.removeClass(a.cloakClassName())};return a.onReady(function(){d()}),c(),function(b,e,f){f.translateCloak&&f.translateCloak.length&&f.$observe("translateCloak",function(b){a(b).then(d,c)})}}}}function h(){"use strict";return{restrict:"A",scope:!0,compile:function(){return{pre:function(a,b,c){a.translateNamespace=f(a),a.translateNamespace&&"."===c.translateNamespace.charAt(0)?a.translateNamespace+=c.translateNamespace:a.translateNamespace=c.translateNamespace}}}}}function f(a){"use strict";return a.translateNamespace?a.translateNamespace:a.$parent?f(a.$parent):void 0}function i(a,b){"use strict";var c=function(c,d,e){return angular.isObject(d)||(d=a(d)(this)),b.instant(c,d,e)};return b.statefulFilter()&&(c.$stateful=!0),c}function j(a){"use strict";return a("translations")}return angular.module("pascalprecht.translate",["ng"]).run(a),a.$inject=["$translate"],a.displayName="runTranslate",angular.module("pascalprecht.translate").provider("$translateSanitization",b),angular.module("pascalprecht.translate").constant("pascalprechtTranslateOverrider",{}).provider("$translate",c),c.$inject=["$STORAGE_KEY","$windowProvider","$translateSanitizationProvider","pascalprechtTranslateOverrider"],c.displayName="displayName",angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",d),d.$inject=["$interpolate","$translateSanitization"],d.displayName="$translateDefaultInterpolation",angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",e),e.$inject=["$translate","$q","$interpolate","$compile","$parse","$rootScope"],e.displayName="translateDirective",angular.module("pascalprecht.translate").directive("translateCloak",g),g.$inject=["$translate"],g.displayName="translateCloakDirective",angular.module("pascalprecht.translate").directive("translateNamespace",h),h.displayName="translateNamespaceDirective",angular.module("pascalprecht.translate").filter("translate",i),i.$inject=["$parse","$translate"],i.displayName="translateFilterFactory",angular.module("pascalprecht.translate").factory("$translationCache",j),j.$inject=["$cacheFactory"],j.displayName="$translationCache","pascalprecht.translate"}); \ No newline at end of file diff --git a/www/libs/angular-ui-router/angular-ui-router.min.js b/www/libs/angular-ui-router/angular-ui-router.min.js new file mode 100644 index 0000000..18d8307 --- /dev/null +++ b/www/libs/angular-ui-router/angular-ui-router.min.js @@ -0,0 +1,7 @@ +/** + * State-based routing for AngularJS + * @version v0.2.15 + * @link http://angular-ui.github.com/ + * @license MIT License, http://www.opensource.org/licenses/MIT + */ +"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(a,b,c){"use strict";function d(a,b){return N(new(N(function(){},{prototype:a})),b)}function e(a){return M(arguments,function(b){b!==a&&M(b,function(b,c){a.hasOwnProperty(c)||(a[c]=b)})}),a}function f(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function g(a){if(Object.keys)return Object.keys(a);var b=[];return M(a,function(a,c){b.push(c)}),b}function h(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function i(a,b,c,d){var e,i=f(c,d),j={},k=[];for(var l in i)if(i[l].params&&(e=g(i[l].params),e.length))for(var m in e)h(k,e[m])>=0||(k.push(e[m]),j[e[m]]=a[e[m]]);return N({},j,b)}function j(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e "));if(s[c]=d,J(a))q.push(c,[function(){return b.get(a)}],j);else{var e=b.annotate(a);M(e,function(a){a!==c&&i.hasOwnProperty(a)&&n(i[a],a)}),q.push(c,a,e)}r.pop(),s[c]=f}}function o(a){return K(a)&&a.then&&a.$$promises}if(!K(i))throw new Error("'invocables' must be an object");var p=g(i||{}),q=[],r=[],s={};return M(i,n),i=r=s=null,function(d,f,g){function h(){--u||(v||e(t,f.$$values),r.$$values=t,r.$$promises=r.$$promises||!0,delete r.$$inheritedValues,n.resolve(t))}function i(a){r.$$failure=a,n.reject(a)}function j(c,e,f){function j(a){l.reject(a),i(a)}function k(){if(!H(r.$$failure))try{l.resolve(b.invoke(e,g,t)),l.promise.then(function(a){t[c]=a,h()},j)}catch(a){j(a)}}var l=a.defer(),m=0;M(f,function(a){s.hasOwnProperty(a)&&!d.hasOwnProperty(a)&&(m++,s[a].then(function(b){t[a]=b,--m||k()},j))}),m||k(),s[c]=l.promise}if(o(d)&&g===c&&(g=f,f=d,d=null),d){if(!K(d))throw new Error("'locals' must be an object")}else d=k;if(f){if(!o(f))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else f=l;var n=a.defer(),r=n.promise,s=r.$$promises={},t=N({},d),u=1+q.length/3,v=!1;if(H(f.$$failure))return i(f.$$failure),r;f.$$inheritedValues&&e(t,m(f.$$inheritedValues,p)),N(s,f.$$promises),f.$$values?(v=e(t,m(f.$$values,p)),r.$$inheritedValues=m(f.$$values,p),h()):(f.$$inheritedValues&&(r.$$inheritedValues=m(f.$$inheritedValues,p)),f.then(h,i));for(var w=0,x=q.length;x>w;w+=3)d.hasOwnProperty(q[w])?h():j(q[w],q[w+1],q[w+2]);return r}},this.resolve=function(a,b,c,d){return this.study(a)(b,c,d)}}function q(a,b,c){this.fromConfig=function(a,b,c){return H(a.template)?this.fromString(a.template,b):H(a.templateUrl)?this.fromUrl(a.templateUrl,b):H(a.templateProvider)?this.fromProvider(a.templateProvider,b,c):null},this.fromString=function(a,b){return I(a)?a(b):a},this.fromUrl=function(c,d){return I(c)&&(c=c(d)),null==c?null:a.get(c,{cache:b,headers:{Accept:"text/html"}}).then(function(a){return a.data})},this.fromProvider=function(a,b,d){return c.invoke(a,null,d||{params:b})}}function r(a,b,e){function f(b,c,d,e){if(q.push(b),o[b])return o[b];if(!/^\w+(-+\w+)*(?:\[\])?$/.test(b))throw new Error("Invalid parameter name '"+b+"' in pattern '"+a+"'");if(p[b])throw new Error("Duplicate parameter name '"+b+"' in pattern '"+a+"'");return p[b]=new P.Param(b,c,d,e),p[b]}function g(a,b,c,d){var e=["",""],f=a.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!b)return f;switch(c){case!1:e=["(",")"+(d?"?":"")];break;case!0:e=["?(",")?"];break;default:e=["("+c+"|",")?"]}return f+e[0]+b+e[1]}function h(e,f){var g,h,i,j,k;return g=e[2]||e[3],k=b.params[g],i=a.substring(m,e.index),h=f?e[4]:e[4]||("*"==e[1]?".*":null),j=P.type(h||"string")||d(P.type("string"),{pattern:new RegExp(h,b.caseInsensitive?"i":c)}),{id:g,regexp:h,segment:i,type:j,cfg:k}}b=N({params:{}},K(b)?b:{});var i,j=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,k=/([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l="^",m=0,n=this.segments=[],o=e?e.params:{},p=this.params=e?e.params.$$new():new P.ParamSet,q=[];this.source=a;for(var r,s,t;(i=j.exec(a))&&(r=h(i,!1),!(r.segment.indexOf("?")>=0));)s=f(r.id,r.type,r.cfg,"path"),l+=g(r.segment,s.type.pattern.source,s.squash,s.isOptional),n.push(r.segment),m=j.lastIndex;t=a.substring(m);var u=t.indexOf("?");if(u>=0){var v=this.sourceSearch=t.substring(u);if(t=t.substring(0,u),this.sourcePath=a.substring(0,m+u),v.length>0)for(m=0;i=k.exec(v);)r=h(i,!0),s=f(r.id,r.type,r.cfg,"search"),m=j.lastIndex}else this.sourcePath=a,this.sourceSearch="";l+=g(t)+(b.strict===!1?"/?":"")+"$",n.push(t),this.regexp=new RegExp(l,b.caseInsensitive?"i":c),this.prefix=n[0],this.$$paramNames=q}function s(a){N(this,a)}function t(){function a(a){return null!=a?a.toString().replace(/\//g,"%2F"):a}function e(a){return null!=a?a.toString().replace(/%2F/g,"/"):a}function f(){return{strict:p,caseInsensitive:m}}function i(a){return I(a)||L(a)&&I(a[a.length-1])}function j(){for(;w.length;){var a=w.shift();if(a.pattern)throw new Error("You cannot override a type's .pattern at runtime.");b.extend(u[a.name],l.invoke(a.def))}}function k(a){N(this,a||{})}P=this;var l,m=!1,p=!0,q=!1,u={},v=!0,w=[],x={string:{encode:a,decode:e,is:function(a){return null==a||!H(a)||"string"==typeof a},pattern:/[^/]*/},"int":{encode:a,decode:function(a){return parseInt(a,10)},is:function(a){return H(a)&&this.decode(a.toString())===a},pattern:/\d+/},bool:{encode:function(a){return a?1:0},decode:function(a){return 0!==parseInt(a,10)},is:function(a){return a===!0||a===!1},pattern:/0|1/},date:{encode:function(a){return this.is(a)?[a.getFullYear(),("0"+(a.getMonth()+1)).slice(-2),("0"+a.getDate()).slice(-2)].join("-"):c},decode:function(a){if(this.is(a))return a;var b=this.capture.exec(a);return b?new Date(b[1],b[2]-1,b[3]):c},is:function(a){return a instanceof Date&&!isNaN(a.valueOf())},equals:function(a,b){return this.is(a)&&this.is(b)&&a.toISOString()===b.toISOString()},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:b.toJson,decode:b.fromJson,is:b.isObject,equals:b.equals,pattern:/[^/]*/},any:{encode:b.identity,decode:b.identity,equals:b.equals,pattern:/.*/}};t.$$getDefaultValue=function(a){if(!i(a.value))return a.value;if(!l)throw new Error("Injectable functions cannot be called at configuration time");return l.invoke(a.value)},this.caseInsensitive=function(a){return H(a)&&(m=a),m},this.strictMode=function(a){return H(a)&&(p=a),p},this.defaultSquashPolicy=function(a){if(!H(a))return q;if(a!==!0&&a!==!1&&!J(a))throw new Error("Invalid squash policy: "+a+". Valid policies: false, true, arbitrary-string");return q=a,a},this.compile=function(a,b){return new r(a,N(f(),b))},this.isMatcher=function(a){if(!K(a))return!1;var b=!0;return M(r.prototype,function(c,d){I(c)&&(b=b&&H(a[d])&&I(a[d]))}),b},this.type=function(a,b,c){if(!H(b))return u[a];if(u.hasOwnProperty(a))throw new Error("A type named '"+a+"' has already been defined.");return u[a]=new s(N({name:a},b)),c&&(w.push({name:a,def:c}),v||j()),this},M(x,function(a,b){u[b]=new s(N({name:b},a))}),u=d(u,{}),this.$get=["$injector",function(a){return l=a,v=!1,j(),M(x,function(a,b){u[b]||(u[b]=new s(a))}),this}],this.Param=function(a,b,d,e){function f(a){var b=K(a)?g(a):[],c=-1===h(b,"value")&&-1===h(b,"type")&&-1===h(b,"squash")&&-1===h(b,"array");return c&&(a={value:a}),a.$$fn=i(a.value)?a.value:function(){return a.value},a}function j(b,c,d){if(b.type&&c)throw new Error("Param '"+a+"' has two type configurations.");return c?c:b.type?b.type instanceof s?b.type:new s(b.type):"config"===d?u.any:u.string}function k(){var b={array:"search"===e?"auto":!1},c=a.match(/\[\]$/)?{array:!0}:{};return N(b,c,d).array}function m(a,b){var c=a.squash;if(!b||c===!1)return!1;if(!H(c)||null==c)return q;if(c===!0||J(c))return c;throw new Error("Invalid squash policy: '"+c+"'. Valid policies: false, true, or arbitrary string")}function p(a,b,d,e){var f,g,i=[{from:"",to:d||b?c:""},{from:null,to:d||b?c:""}];return f=L(a.replace)?a.replace:[],J(e)&&f.push({from:e,to:c}),g=o(f,function(a){return a.from}),n(i,function(a){return-1===h(g,a.from)}).concat(f)}function r(){if(!l)throw new Error("Injectable functions cannot be called at configuration time");var a=l.invoke(d.$$fn);if(null!==a&&a!==c&&!w.type.is(a))throw new Error("Default value ("+a+") for parameter '"+w.id+"' is not an instance of Type ("+w.type.name+")");return a}function t(a){function b(a){return function(b){return b.from===a}}function c(a){var c=o(n(w.replace,b(a)),function(a){return a.to});return c.length?c[0]:a}return a=c(a),H(a)?w.type.$normalize(a):r()}function v(){return"{Param:"+a+" "+b+" squash: '"+z+"' optional: "+y+"}"}var w=this;d=f(d),b=j(d,b,e);var x=k();b=x?b.$asArray(x,"search"===e):b,"string"!==b.name||x||"path"!==e||d.value!==c||(d.value="");var y=d.value!==c,z=m(d,y),A=p(d,x,y,z);N(this,{id:a,type:b,location:e,array:x,squash:z,replace:A,isOptional:y,value:t,dynamic:c,config:d,toString:v})},k.prototype={$$new:function(){return d(this,N(new k,{$$parent:this}))},$$keys:function(){for(var a=[],b=[],c=this,d=g(k.prototype);c;)b.push(c),c=c.$$parent;return b.reverse(),M(b,function(b){M(g(b),function(b){-1===h(a,b)&&-1===h(d,b)&&a.push(b)})}),a},$$values:function(a){var b={},c=this;return M(c.$$keys(),function(d){b[d]=c[d].value(a&&a[d])}),b},$$equals:function(a,b){var c=!0,d=this;return M(d.$$keys(),function(e){var f=a&&a[e],g=b&&b[e];d[e].type.equals(f,g)||(c=!1)}),c},$$validates:function(a){var d,e,f,g,h,i=this.$$keys();for(d=0;de;e++)if(b(j[e]))return;k&&b(k)}}function n(){return i=i||e.$on("$locationChangeSuccess",m)}var o,p=g.baseHref(),q=d.url();return l||n(),{sync:function(){m()},listen:function(){return n()},update:function(a){return a?void(q=d.url()):void(d.url()!==q&&(d.url(q),d.replace()))},push:function(a,b,e){var f=a.format(b||{});null!==f&&b&&b["#"]&&(f+="#"+b["#"]),d.url(f),o=e&&e.$$avoidResync?d.url():c,e&&e.replace&&d.replace()},href:function(c,e,f){if(!c.validates(e))return null;var g=a.html5Mode();b.isObject(g)&&(g=g.enabled);var i=c.format(e);if(f=f||{},g||null===i||(i="#"+a.hashPrefix()+i),null!==i&&e&&e["#"]&&(i+="#"+e["#"]),i=h(i,g,f.absolute),!f.absolute||!i)return i;var j=!g&&i?"/":"",k=d.port();return k=80===k||443===k?"":":"+k,[d.protocol(),"://",d.host(),k,j,i].join("")}}}var i,j=[],k=null,l=!1;this.rule=function(a){if(!I(a))throw new Error("'rule' must be a function");return j.push(a),this},this.otherwise=function(a){if(J(a)){var b=a;a=function(){return b}}else if(!I(a))throw new Error("'rule' must be a function");return k=a,this},this.when=function(a,b){var c,h=J(b);if(J(a)&&(a=d.compile(a)),!h&&!I(b)&&!L(b))throw new Error("invalid 'handler' in when()");var i={matcher:function(a,b){return h&&(c=d.compile(b),b=["$match",function(a){return c.format(a)}]),N(function(c,d){return g(c,b,a.exec(d.path(),d.search()))},{prefix:J(a.prefix)?a.prefix:""})},regex:function(a,b){if(a.global||a.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(c=b,b=["$match",function(a){return f(c,a)}]),N(function(c,d){return g(c,b,a.exec(d.path()))},{prefix:e(a)})}},j={matcher:d.isMatcher(a),regex:a instanceof RegExp};for(var k in j)if(j[k])return this.rule(i[k](a,b));throw new Error("invalid 'what' in when()")},this.deferIntercept=function(a){a===c&&(a=!0),l=a},this.$get=h,h.$inject=["$location","$rootScope","$injector","$browser"]}function v(a,e){function f(a){return 0===a.indexOf(".")||0===a.indexOf("^")}function m(a,b){if(!a)return c;var d=J(a),e=d?a:a.name,g=f(e);if(g){if(!b)throw new Error("No reference point given for path '"+e+"'");b=m(b);for(var h=e.split("."),i=0,j=h.length,k=b;j>i;i++)if(""!==h[i]||0!==i){if("^"!==h[i])break;if(!k.parent)throw new Error("Path '"+e+"' not valid for state '"+b.name+"'");k=k.parent}else k=b;h=h.slice(i).join("."),e=k.name+(k.name&&h?".":"")+h}var l=z[e];return!l||!d&&(d||l!==a&&l.self!==a)?c:l}function n(a,b){A[a]||(A[a]=[]),A[a].push(b)}function p(a){for(var b=A[a]||[];b.length;)q(b.shift())}function q(b){b=d(b,{self:b,resolve:b.resolve||{},toString:function(){return this.name}});var c=b.name;if(!J(c)||c.indexOf("@")>=0)throw new Error("State must have a valid name");if(z.hasOwnProperty(c))throw new Error("State '"+c+"'' is already defined");var e=-1!==c.indexOf(".")?c.substring(0,c.lastIndexOf(".")):J(b.parent)?b.parent:K(b.parent)&&J(b.parent.name)?b.parent.name:"";if(e&&!z[e])return n(e,b.self);for(var f in C)I(C[f])&&(b[f]=C[f](b,C.$delegates[f]));return z[c]=b,!b[B]&&b.url&&a.when(b.url,["$match","$stateParams",function(a,c){y.$current.navigable==b&&j(a,c)||y.transitionTo(b,a,{inherit:!0,location:!1})}]),p(c),b}function r(a){return a.indexOf("*")>-1}function s(a){for(var b=a.split("."),c=y.$current.name.split("."),d=0,e=b.length;e>d;d++)"*"===b[d]&&(c[d]="*");return"**"===b[0]&&(c=c.slice(h(c,b[1])),c.unshift("**")),"**"===b[b.length-1]&&(c.splice(h(c,b[b.length-2])+1,Number.MAX_VALUE),c.push("**")),b.length!=c.length?!1:c.join("")===b.join("")}function t(a,b){return J(a)&&!H(b)?C[a]:I(b)&&J(a)?(C[a]&&!C.$delegates[a]&&(C.$delegates[a]=C[a]),C[a]=b,this):this}function u(a,b){return K(a)?b=a:b.name=a,q(b),this}function v(a,e,f,h,l,n,p,q,t){function u(b,c,d,f){var g=a.$broadcast("$stateNotFound",b,c,d);if(g.defaultPrevented)return p.update(),D;if(!g.retry)return null;if(f.$retry)return p.update(),E;var h=y.transition=e.when(g.retry);return h.then(function(){return h!==y.transition?A:(b.options.$retry=!0,y.transitionTo(b.to,b.toParams,b.options))},function(){return D}),p.update(),h}function v(a,c,d,g,i,j){function m(){var c=[];return M(a.views,function(d,e){var g=d.resolve&&d.resolve!==a.resolve?d.resolve:{};g.$template=[function(){return f.load(e,{view:d,locals:i.globals,params:n,notify:j.notify})||""}],c.push(l.resolve(g,i.globals,i.resolve,a).then(function(c){if(I(d.controllerProvider)||L(d.controllerProvider)){var f=b.extend({},g,i.globals);c.$$controller=h.invoke(d.controllerProvider,null,f)}else c.$$controller=d.controller;c.$$state=a,c.$$controllerAs=d.controllerAs,i[e]=c}))}),e.all(c).then(function(){return i.globals})}var n=d?c:k(a.params.$$keys(),c),o={$stateParams:n};i.resolve=l.resolve(a.resolve,o,i.resolve,a);var p=[i.resolve.then(function(a){i.globals=a})];return g&&p.push(g),e.all(p).then(m).then(function(a){return i})}var A=e.reject(new Error("transition superseded")),C=e.reject(new Error("transition prevented")),D=e.reject(new Error("transition aborted")),E=e.reject(new Error("transition failed"));return x.locals={resolve:null,globals:{$stateParams:{}}},y={params:{},current:x.self,$current:x,transition:null},y.reload=function(a){return y.transitionTo(y.current,n,{reload:a||!0,inherit:!1,notify:!0})},y.go=function(a,b,c){return y.transitionTo(a,b,N({inherit:!0,relative:y.$current},c))},y.transitionTo=function(b,c,f){c=c||{},f=N({location:!0,inherit:!1,relative:null,notify:!0,reload:!1,$retry:!1},f||{});var g,j=y.$current,l=y.params,o=j.path,q=m(b,f.relative),r=c["#"];if(!H(q)){var s={to:b,toParams:c,options:f},t=u(s,j.self,l,f);if(t)return t;if(b=s.to,c=s.toParams,f=s.options,q=m(b,f.relative),!H(q)){if(!f.relative)throw new Error("No such state '"+b+"'");throw new Error("Could not resolve '"+b+"' from state '"+f.relative+"'")}}if(q[B])throw new Error("Cannot transition to abstract state '"+b+"'");if(f.inherit&&(c=i(n,c||{},y.$current,q)),!q.params.$$validates(c))return E;c=q.params.$$values(c),b=q;var z=b.path,D=0,F=z[D],G=x.locals,I=[];if(f.reload){if(J(f.reload)||K(f.reload)){if(K(f.reload)&&!f.reload.name)throw new Error("Invalid reload state object");var L=f.reload===!0?o[0]:m(f.reload);if(f.reload&&!L)throw new Error("No such reload state '"+(J(f.reload)?f.reload:f.reload.name)+"'");for(;F&&F===o[D]&&F!==L;)G=I[D]=F.locals,D++,F=z[D]}}else for(;F&&F===o[D]&&F.ownParams.$$equals(c,l);)G=I[D]=F.locals,D++,F=z[D];if(w(b,c,j,l,G,f))return r&&(c["#"]=r),y.params=c,O(y.params,n),f.location&&b.navigable&&b.navigable.url&&(p.push(b.navigable.url,c,{$$avoidResync:!0,replace:"replace"===f.location}),p.update(!0)),y.transition=null,e.when(y.current);if(c=k(b.params.$$keys(),c||{}),f.notify&&a.$broadcast("$stateChangeStart",b.self,c,j.self,l).defaultPrevented)return a.$broadcast("$stateChangeCancel",b.self,c,j.self,l),p.update(),C;for(var M=e.when(G),P=D;P=D;d--)g=o[d],g.self.onExit&&h.invoke(g.self.onExit,g.self,g.locals.globals),g.locals=null;for(d=D;d=0?e:e+"@"+(f?f.state.name:"")}function B(a,b){var c,d=a.match(/^\s*({[^}]*})\s*$/);if(d&&(a=b+"("+d[1]+")"),c=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!c||4!==c.length)throw new Error("Invalid state ref '"+a+"'");return{state:c[1],paramExpr:c[3]||null}}function C(a){var b=a.parent().inheritedData("$uiView");return b&&b.state&&b.state.name?b.state:void 0}function D(a,c){var d=["location","inherit","reload","absolute"];return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(e,f,g,h){var i=B(g.uiSref,a.current.name),j=null,k=C(f)||a.$current,l="[object SVGAnimatedString]"===Object.prototype.toString.call(f.prop("href"))?"xlink:href":"href",m=null,n="A"===f.prop("tagName").toUpperCase(),o="FORM"===f[0].nodeName,p=o?"action":l,q=!0,r={relative:k,inherit:!0},s=e.$eval(g.uiSrefOpts)||{};b.forEach(d,function(a){a in s&&(r[a]=s[a])});var t=function(c){if(c&&(j=b.copy(c)),q){m=a.href(i.state,j,r);var d=h[1]||h[0];return d&&d.$$addStateInfo(i.state,j),null===m?(q=!1,!1):void g.$set(p,m)}};i.paramExpr&&(e.$watch(i.paramExpr,function(a,b){a!==j&&t(a)},!0),j=b.copy(e.$eval(i.paramExpr))),t(),o||f.bind("click",function(b){var d=b.which||b.button;if(!(d>1||b.ctrlKey||b.metaKey||b.shiftKey||f.attr("target"))){var e=c(function(){a.go(i.state,j,r)});b.preventDefault();var g=n&&!m?1:0;b.preventDefault=function(){g--<=0&&c.cancel(e)}}})}}}function E(a,b,c){return{restrict:"A",controller:["$scope","$element","$attrs",function(b,d,e){function f(){g()?d.addClass(i):d.removeClass(i)}function g(){for(var a=0;ae;e++){g=h[e];var l=this.params[g],m=d[e+1];for(f=0;fe;e++)g=h[e],k[g]=this.params[g].value(b[g]);return k},r.prototype.parameters=function(a){return H(a)?this.params[a]||null:this.$$paramNames},r.prototype.validates=function(a){return this.params.$$validates(a)},r.prototype.format=function(a){function b(a){return encodeURIComponent(a).replace(/-/g,function(a){return"%5C%"+a.charCodeAt(0).toString(16).toUpperCase()})}a=a||{};var c=this.segments,d=this.parameters(),e=this.params;if(!this.validates(a))return null;var f,g=!1,h=c.length-1,i=d.length,j=c[0];for(f=0;i>f;f++){var k=h>f,l=d[f],m=e[l],n=m.value(a[l]),p=m.isOptional&&m.type.equals(m.value(),n),q=p?m.squash:!1,r=m.type.encode(n);if(k){var s=c[f+1];if(q===!1)null!=r&&(j+=L(r)?o(r,b).join("-"):encodeURIComponent(r)),j+=s;else if(q===!0){var t=j.match(/\/$/)?/\/?(.*)/:/(.*)/;j+=s.match(t)[1]}else J(q)&&(j+=q+s)}else{if(null==r||p&&q!==!1)continue;L(r)||(r=[r]),r=o(r,encodeURIComponent).join("&"+l+"="),j+=(g?"&":"?")+(l+"="+r),g=!0}}return j},s.prototype.is=function(a,b){return!0},s.prototype.encode=function(a,b){return a},s.prototype.decode=function(a,b){return a},s.prototype.equals=function(a,b){return a==b},s.prototype.$subPattern=function(){var a=this.pattern.toString();return a.substr(1,a.length-2)},s.prototype.pattern=/.*/,s.prototype.toString=function(){return"{Type:"+this.name+"}"},s.prototype.$normalize=function(a){return this.is(a)?a:this.decode(a)},s.prototype.$asArray=function(a,b){function d(a,b){function d(a,b){return function(){return a[b].apply(a,arguments)}}function e(a){return L(a)?a:H(a)?[a]:[]}function f(a){switch(a.length){case 0:return c;case 1:return"auto"===b?a[0]:a;default:return a}}function g(a){return!a}function h(a,b){return function(c){c=e(c);var d=o(c,a);return b===!0?0===n(d,g).length:f(d)}}function i(a){return function(b,c){var d=e(b),f=e(c);if(d.length!==f.length)return!1;for(var g=0;ginput,.editable-wrap .editable-controls>select,.editable-wrap .editable-controls>textarea{margin-bottom:0}.editable-wrap .editable-input{display:inline-block}.editable-buttons{display:inline-block;vertical-align:top}.editable-buttons button{margin-left:5px}.editable-input.editable-has-buttons{width:auto}.editable-bstime .editable-input input[type=text]{width:46px}.editable-bstime .well-small{margin-bottom:0;padding:10px}.editable-range output{display:inline-block;min-width:30px;vertical-align:top;text-align:center}.editable-color input[type=color]{width:50px}.editable-checkbox label span,.editable-checklist label span,.editable-radiolist label span{margin-left:7px;margin-right:10px}.editable-hide{display:none!important}.editable-click,a.editable-click{text-decoration:none;color:#428bca;border-bottom:dashed 1px #428bca}.editable-click:hover,a.editable-click:hover{text-decoration:none;color:#2a6496;border-bottom-color:#2a6496}.editable-empty,.editable-empty:hover,.editable-empty:focus,a.editable-empty,a.editable-empty:hover,a.editable-empty:focus{font-style:italic;color:#D14;text-decoration:none} \ No newline at end of file diff --git a/www/libs/angular-xeditable/js/xeditable.min.js b/www/libs/angular-xeditable/js/xeditable.min.js new file mode 100644 index 0000000..8080f15 --- /dev/null +++ b/www/libs/angular-xeditable/js/xeditable.min.js @@ -0,0 +1,6 @@ +/*! +angular-xeditable - 0.1.9 +Edit-in-place for angular.js +Build date: 2015-03-26 +*/ +angular.module("xeditable",[]).value("editableOptions",{theme:"default",icon_set:"default",buttons:"right",blurElem:"cancel",blurForm:"ignore",activate:"focus",isDisabled:!1,activationEvent:"click"}),angular.module("xeditable").directive("editableBsdate",["editableDirectiveFactory",function(a){return a({directiveName:"editableBsdate",inputTpl:"
    ",render:function(){this.parent.render.call(this);var a=angular.element(''),b=angular.element(''),c=angular.element('');a.attr("datepicker-popup",this.attrs.eDatepickerPopupXEditable||"yyyy/MM/dd"),a.attr("is-open",this.attrs.eIsOpen),a.attr("date-disabled",this.attrs.eDateDisabled),a.attr("datepicker-popup",this.attrs.eDatepickerPopup),a.attr("datepicker-mode",this.attrs.eDatepickerMode||"day"),a.attr("min-date",this.attrs.eMinDate),a.attr("max-date",this.attrs.eMaxDate),a.attr("show-weeks",this.attrs.eShowWeeks||!0),a.attr("starting-day",this.attrs.eStartingDay||0),a.attr("init-date",this.attrs.eInitDate||new Date),a.attr("min-mode",this.attrs.eMinMode||"day"),a.attr("max-mode",this.attrs.eMaxMode||"year"),a.attr("format-day",this.attrs.eFormatDay||"dd"),a.attr("format-month",this.attrs.eFormatMonth||"MMMM"),a.attr("format-year",this.attrs.eFormatYear||"yyyy"),a.attr("format-day-header",this.attrs.eFormatDayHeader||"EEE"),a.attr("format-day-title",this.attrs.eFormatDayTitle||"MMMM yyyy"),a.attr("format-month-title",this.attrs.eFormatMonthTitle||"yyyy"),a.attr("year-range",this.attrs.eYearRange||20),a.attr("show-button-bar",this.attrs.eShowButtonBar||!0),a.attr("current-text",this.attrs.eCurrentText||"Today"),a.attr("clear-text",this.attrs.eClearText||"Clear"),a.attr("close-text",this.attrs.eCloseText||"Done"),a.attr("close-on-date-selection",this.attrs.eCloseOnDateSelection||!0),a.attr("date-picker-append-to-body",this.attrs.eDatePickerAppendToBody||!1),a.attr("date-disabled",this.attrs.eDateDisabled),b.attr("ng-click",this.attrs.eNgClick),c.append(b),this.inputEl.prepend(a),this.inputEl.append(c),this.inputEl.removeAttr("class"),this.inputEl.attr("class","input-group")}})}]),angular.module("xeditable").directive("editableBstime",["editableDirectiveFactory",function(a){return a({directiveName:"editableBstime",inputTpl:"",render:function(){this.parent.render.call(this);var a=angular.element('
    ');a.attr("ng-model",this.inputEl.attr("ng-model")),this.inputEl.removeAttr("ng-model"),this.attrs.eNgChange&&(a.attr("ng-change",this.inputEl.attr("ng-change")),this.inputEl.removeAttr("ng-change")),this.inputEl.wrap(a)}})}]),angular.module("xeditable").directive("editableCheckbox",["editableDirectiveFactory",function(a){return a({directiveName:"editableCheckbox",inputTpl:'',render:function(){this.parent.render.call(this),this.attrs.eTitle&&(this.inputEl.wrap(""),this.inputEl.parent().append(this.attrs.eTitle))},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){setTimeout(function(){a.scope.$apply(function(){a.scope.$form.$submit()})},500)})}})}]),angular.module("xeditable").directive("editableChecklist",["editableDirectiveFactory","editableNgOptionsParser",function(a,b){return a({directiveName:"editableChecklist",inputTpl:"",useCopy:!0,render:function(){this.parent.render.call(this);var a=b(this.attrs.eNgOptions),c='';this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("ng-options"),this.inputEl.html(c)}})}]),angular.module("xeditable").directive("editableCombodate",["editableDirectiveFactory","editableCombodate",function(a,b){return a({directiveName:"editableCombodate",inputTpl:'',render:function(){this.parent.render.call(this);var a=b.getInstance(this.inputEl,{value:new Date(this.scope.$data)}),c=this;a.$widget.find("select").bind("change",function(){c.scope.$data=new Date(a.getValue()).toISOString()})}})}]),function(){var a="text|password|email|tel|number|url|search|color|date|datetime|time|month|week|file".split("|");angular.forEach(a,function(a){var b="editable"+a.charAt(0).toUpperCase()+a.slice(1);angular.module("xeditable").directive(b,["editableDirectiveFactory",function(c){return c({directiveName:b,inputTpl:''})}])}),angular.module("xeditable").directive("editableRange",["editableDirectiveFactory",function(a){return a({directiveName:"editableRange",inputTpl:'',render:function(){this.parent.render.call(this),this.inputEl.after("{{$data}}")}})}])}(),angular.module("xeditable").directive("editableRadiolist",["editableDirectiveFactory","editableNgOptionsParser",function(a,b){return a({directiveName:"editableRadiolist",inputTpl:"",render:function(){this.parent.render.call(this);var a=b(this.attrs.eNgOptions),c='';this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("ng-options"),this.inputEl.html(c)},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){setTimeout(function(){a.scope.$apply(function(){a.scope.$form.$submit()})},500)})}})}]),angular.module("xeditable").directive("editableSelect",["editableDirectiveFactory",function(a){return a({directiveName:"editableSelect",inputTpl:"",autosubmit:function(){var a=this;a.inputEl.bind("change",function(){a.scope.$apply(function(){a.scope.$form.$submit()})})}})}]),angular.module("xeditable").directive("editableTextarea",["editableDirectiveFactory",function(a){return a({directiveName:"editableTextarea",inputTpl:"",addListeners:function(){var a=this;a.parent.addListeners.call(a),a.single&&"no"!==a.buttons&&a.autosubmit()},autosubmit:function(){var a=this;a.inputEl.bind("keydown",function(b){(b.ctrlKey||b.metaKey)&&13===b.keyCode&&a.scope.$apply(function(){a.scope.$form.$submit()})})}})}]),angular.module("xeditable").factory("editableController",["$q","editableUtils",function(a,b){function c(a,c,d,e,f,g,h,i,j,k){var l,m,n=this;n.scope=a,n.elem=d,n.attrs=c,n.inputEl=null,n.editorEl=null,n.single=!0,n.error="",n.theme=f[h.theme]||f["default"],n.parent={},n.icon_set="default"===h.icon_set?g["default"][h.theme]:g.external[h.icon_set],n.inputTpl="",n.directiveName="",n.useCopy=!1,n.single=null,n.buttons="right",n.init=function(b){if(n.single=b,n.name=c.eName||c[n.directiveName],!c[n.directiveName])throw"You should provide value for `"+n.directiveName+"` in editable element!";l=e(c[n.directiveName]),n.buttons=n.single?n.attrs.buttons||h.buttons:"no",c.eName&&n.scope.$watch("$data",function(a){n.scope.$form.$data[c.eName]=a}),c.onshow&&(n.onshow=function(){return n.catchError(e(c.onshow)(a))}),c.onhide&&(n.onhide=function(){return e(c.onhide)(a)}),c.oncancel&&(n.oncancel=function(){return e(c.oncancel)(a)}),c.onbeforesave&&(n.onbeforesave=function(){return n.catchError(e(c.onbeforesave)(a))}),c.onaftersave&&(n.onaftersave=function(){return n.catchError(e(c.onaftersave)(a))}),a.$parent.$watch(c[n.directiveName],function(){n.setLocalValue(),n.handleEmpty()})},n.render=function(){var a=n.theme;n.inputEl=angular.element(n.inputTpl),n.controlsEl=angular.element(a.controlsTpl),n.controlsEl.append(n.inputEl),"no"!==n.buttons&&(n.buttonsEl=angular.element(a.buttonsTpl),n.submitEl=angular.element(a.submitTpl),n.cancelEl=angular.element(a.cancelTpl),n.icon_set&&(n.submitEl.find("span").addClass(n.icon_set.ok),n.cancelEl.find("span").addClass(n.icon_set.cancel)),n.buttonsEl.append(n.submitEl).append(n.cancelEl),n.controlsEl.append(n.buttonsEl),n.inputEl.addClass("editable-has-buttons")),n.errorEl=angular.element(a.errorTpl),n.controlsEl.append(n.errorEl),n.editorEl=angular.element(n.single?a.formTpl:a.noformTpl),n.editorEl.append(n.controlsEl);for(var d in c.$attr)if(!(d.length<=1)){var e=!1,f=d.substring(1,2);if("e"===d.substring(0,1)&&f===f.toUpperCase()&&(e=d.substring(1),"Form"!==e&&"NgSubmit"!==e)){e=e.substring(0,1).toLowerCase()+b.camelToDash(e.substring(1));var g="value"!==e&&""===c[d]?e:c[d];n.inputEl.attr(e,g)}}n.inputEl.addClass("editable-input"),n.inputEl.attr("ng-model","$data"),n.editorEl.addClass(b.camelToDash(n.directiveName)),n.single&&(n.editorEl.attr("editable-form","$form"),n.editorEl.attr("blur",n.attrs.blur||("no"===n.buttons?"cancel":h.blurElem))),angular.isFunction(a.postrender)&&a.postrender.call(n)},n.setLocalValue=function(){n.scope.$data=n.useCopy?angular.copy(l(a.$parent)):l(a.$parent)},n.show=function(){return n.setLocalValue(),n.render(),d.after(n.editorEl),j(n.editorEl)(a),n.addListeners(),d.addClass("editable-hide"),n.onshow()},n.hide=function(){return n.editorEl.remove(),d.removeClass("editable-hide"),n.onhide()},n.cancel=function(){n.oncancel()},n.addListeners=function(){n.inputEl.bind("keyup",function(a){if(n.single)switch(a.keyCode){case 27:n.scope.$apply(function(){n.scope.$form.$cancel()})}}),n.single&&"no"===n.buttons&&n.autosubmit(),n.editorEl.bind("click",function(a){a.which&&1!==a.which||n.scope.$form.$visible&&(n.scope.$form._clicked=!0)})},n.setWaiting=function(a){a?(m=!n.inputEl.attr("disabled")&&!n.inputEl.attr("ng-disabled")&&!n.inputEl.attr("ng-enabled"),m&&(n.inputEl.attr("disabled","disabled"),n.buttonsEl&&n.buttonsEl.find("button").attr("disabled","disabled"))):m&&(n.inputEl.removeAttr("disabled"),n.buttonsEl&&n.buttonsEl.find("button").removeAttr("disabled"))},n.activate=function(a,b){setTimeout(function(){var c=n.inputEl[0];"focus"===h.activate&&c.focus&&(a&&(b=b||a,c.onfocus=function(){var c=this;setTimeout(function(){c.setSelectionRange(a,b)})}),c.focus()),"select"===h.activate&&c.select&&c.select()},0)},n.setError=function(b){angular.isObject(b)||(a.$error=b,n.error=b)},n.catchError=function(a,b){return angular.isObject(a)&&b!==!0?k.when(a).then(angular.bind(this,function(a){this.catchError(a,!0)}),angular.bind(this,function(a){this.catchError(a,!0)})):b&&angular.isObject(a)&&a.status&&200!==a.status&&a.data&&angular.isString(a.data)?(this.setError(a.data),a=a.data):angular.isString(a)&&this.setError(a),a},n.save=function(){l.assign(a.$parent,n.useCopy?angular.copy(n.scope.$data):n.scope.$data)},n.handleEmpty=function(){var b=l(a.$parent),c=null===b||void 0===b||""===b||angular.isArray(b)&&0===b.length;d.toggleClass("editable-empty",c)},n.autosubmit=angular.noop,n.onshow=angular.noop,n.onhide=angular.noop,n.oncancel=angular.noop,n.onbeforesave=angular.noop,n.onaftersave=angular.noop}return c.$inject=["$scope","$attrs","$element","$parse","editableThemes","editableIcons","editableOptions","$rootScope","$compile","$q"],c}]),angular.module("xeditable").factory("editableDirectiveFactory",["$parse","$compile","editableThemes","$rootScope","$document","editableController","editableFormController","editableOptions",function(a,b,c,d,e,f,g,h){return function(b){return{restrict:"A",scope:!0,require:[b.directiveName,"?^form"],controller:f,link:function(c,f,i,j){var k,l=j[0],m=!1;if(j[1])k=j[1],m=!0;else if(i.eForm){var n=a(i.eForm)(c);if(n)k=n,m=!0;else for(var o=0;o=0&&a.splice(c,1),b},camelToDash:function(a){var b=/[A-Z]/g;return a.replace(b,function(a,b){return(b?"-":"")+a.toLowerCase()})},dashToCamel:function(a){var b=/([\:\-\_]+(.))/g,c=/^moz([A-Z])/;return a.replace(b,function(a,b,c,d){return d?c.toUpperCase():c}).replace(c,"Moz$1")}}}]),angular.module("xeditable").factory("editableNgOptionsParser",[function(){function a(a){var c;if(!(c=a.match(b)))throw"ng-options parse error";var d,e=c[2]||c[1],f=c[4]||c[6],g=c[5],h=(c[3]||"",c[2]?c[1]:f),i=c[7],j=c[8],k=j?c[8]:null;return void 0===g?(d=f+" in "+i,void 0!==j&&(d+=" track by "+k)):d="("+g+", "+f+") in "+i,{ngRepeat:d,locals:{valueName:f,keyName:g,valueFn:h,displayFn:e}}}var b=/^\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+(.*?))?$/;return a}]),angular.module("xeditable").factory("editableCombodate",[function(){function a(a,b){if(this.$element=angular.element(a),"INPUT"!=this.$element[0].nodeName)throw"Combodate should be applied to INPUT element";this.defaults={format:"YYYY-MM-DD HH:mm",template:"D / MMM / YYYY H : mm",value:null,minYear:1970,maxYear:2015,yearDescending:!0,minuteStep:5,secondStep:1,firstItem:"empty",errorClass:null,customClass:"",roundTime:!0,smartDays:!0},this.options=angular.extend({},this.defaults,b),this.init()}return a.prototype={constructor:a,init:function(){if(this.map={day:["D","date"],month:["M","month"],year:["Y","year"],hour:["[Hh]","hours"],minute:["m","minutes"],second:["s","seconds"],ampm:["[Aa]",""]},this.$widget=angular.element('').html(this.getTemplate()),this.initCombos(),this.options.smartDays){var a=this;this.$widget.find("select").bind("change",function(b){(angular.element(b.target).hasClass("month")||angular.element(b.target).hasClass("year"))&&a.fillCombo("day")})}this.$widget.find("select").css("width","auto"),this.$element.css("display","none").after(this.$widget),this.setValue(this.$element.val()||this.options.value)},getTemplate:function(){var a=this.options.template,b=this.options.customClass;return angular.forEach(this.map,function(b){b=b[0];var c=new RegExp(b+"+"),d=b.length>1?b.substring(1,2):b;a=a.replace(c,"{"+d+"}")}),a=a.replace(/ /g," "),angular.forEach(this.map,function(c,d){c=c[0];var e=c.length>1?c.substring(1,2):c;a=a.replace("{"+e+"}",'')}),a},initCombos:function(){for(var a in this.map){var b=this.$widget[0].querySelectorAll("."+a);this["$"+a]=b.length?angular.element(b):null,this.fillCombo(a)}},fillCombo:function(a){var b=this["$"+a];if(b){var c="fill"+a.charAt(0).toUpperCase()+a.slice(1),d=this[c](),e=b.val();b.html("");for(var f=0;f'+d[f][1]+"");b.val(e)}},fillCommon:function(a){var b,c=[];if("name"===this.options.firstItem){b=moment.relativeTime||moment.langData()._relativeTime;var d="function"==typeof b[a]?b[a](1,!0,a,!1):b[a];d=d.split(" ").reverse()[0],c.push(["",d])}else"empty"===this.options.firstItem&&c.push(["",""]);return c},fillDay:function(){var a,b,c=this.fillCommon("d"),d=-1!==this.options.template.indexOf("DD"),e=31;if(this.options.smartDays&&this.$month&&this.$year){var f=parseInt(this.$month.val(),10),g=parseInt(this.$year.val(),10);isNaN(f)||isNaN(g)||(e=moment([g,f]).daysInMonth())}for(b=1;e>=b;b++)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillMonth:function(){var a,b,c=this.fillCommon("M"),d=-1!==this.options.template.indexOf("MMMM"),e=-1!==this.options.template.indexOf("MMM"),f=-1!==this.options.template.indexOf("MM");for(b=0;11>=b;b++)a=d?moment().date(1).month(b).format("MMMM"):e?moment().date(1).month(b).format("MMM"):f?this.leadZero(b+1):b+1,c.push([b,a]);return c},fillYear:function(){var a,b,c=[],d=-1!==this.options.template.indexOf("YYYY");for(b=this.options.maxYear;b>=this.options.minYear;b--)a=d?b:(b+"").substring(2),c[this.options.yearDescending?"push":"unshift"]([b,a]);return c=this.fillCommon("y").concat(c)},fillHour:function(){var a,b,c=this.fillCommon("h"),d=-1!==this.options.template.indexOf("h"),e=(-1!==this.options.template.indexOf("H"),-1!==this.options.template.toLowerCase().indexOf("hh")),f=d?1:0,g=d?12:23;for(b=f;g>=b;b++)a=e?this.leadZero(b):b,c.push([b,a]);return c},fillMinute:function(){var a,b,c=this.fillCommon("m"),d=-1!==this.options.template.indexOf("mm");for(b=0;59>=b;b+=this.options.minuteStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillSecond:function(){var a,b,c=this.fillCommon("s"),d=-1!==this.options.template.indexOf("ss");for(b=0;59>=b;b+=this.options.secondStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillAmpm:function(){var a=-1!==this.options.template.indexOf("a"),b=(-1!==this.options.template.indexOf("A"),[["am",a?"am":"AM"],["pm",a?"pm":"PM"]]);return b},getValue:function(a){var b,c={},d=this,e=!1;return angular.forEach(this.map,function(a,b){if("ampm"!==b){var f="day"===b?1:0;return c[b]=d["$"+b]?parseInt(d["$"+b].val(),10):f,isNaN(c[b])?(e=!0,!1):void 0}}),e?"":(this.$ampm&&(c.hour=12===c.hour?"am"===this.$ampm.val()?0:12:"am"===this.$ampm.val()?c.hour:c.hour+12),b=moment([c.year,c.month,c.day,c.hour,c.minute,c.second]),this.highlight(b),a=void 0===a?this.options.format:a,null===a?b.isValid()?b:null:b.isValid()?b.format(a):"")},setValue:function(a){function b(a,b){var c={};return angular.forEach(a.children("option"),function(a){var d=angular.element(a).attr("value");if(""!==d){var e=Math.abs(d-b);("undefined"==typeof c.distance||e=12?(e.ampm="pm",e.hour>12&&(e.hour-=12)):(e.ampm="am",0===e.hour&&(e.hour=12))),angular.forEach(e,function(a,c){d["$"+c]&&("minute"===c&&d.options.minuteStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),"second"===c&&d.options.secondStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),d["$"+c].val(a))}),this.options.smartDays&&this.fillCombo("day"),this.$element.val(c.format(this.options.format)).triggerHandler("change"))}},highlight:function(a){a.isValid()?this.options.errorClass?this.$widget.removeClass(this.options.errorClass):this.$widget.find("select").css("border-color",this.borderColor):this.options.errorClass?this.$widget.addClass(this.options.errorClass):(this.borderColor||(this.borderColor=this.$widget.find("select").css("border-color")),this.$widget.find("select").css("border-color","red"))},leadZero:function(a){return 9>=a?"0"+a:a},destroy:function(){this.$widget.remove(),this.$element.removeData("combodate").show()}},{getInstance:function(b,c){return new a(b,c)}}}]),angular.module("xeditable").factory("editableIcons",function(){var a={"default":{bs2:{ok:"icon-ok icon-white",cancel:"icon-remove"},bs3:{ok:"glyphicon glyphicon-ok",cancel:"glyphicon glyphicon-remove"}},external:{"font-awesome":{ok:"fa fa-check",cancel:"fa fa-times"}}};return a}),angular.module("xeditable").factory("editableThemes",function(){var a={"default":{formTpl:'
    ',noformTpl:'',controlsTpl:'',inputTpl:"",errorTpl:'
    ',buttonsTpl:'',submitTpl:'',cancelTpl:''},bs2:{formTpl:'
    ',noformTpl:'',controlsTpl:'
    ',inputTpl:"",errorTpl:'
    ',buttonsTpl:'',submitTpl:'',cancelTpl:''},bs3:{formTpl:'
    ',noformTpl:'',controlsTpl:'
    ',inputTpl:"",errorTpl:'
    ',buttonsTpl:'',submitTpl:'',cancelTpl:'',buttonsClass:"",inputClass:"",postrender:function(){switch(this.directiveName){case"editableText":case"editableSelect":case"editableTextarea":case"editableEmail":case"editableTel":case"editableNumber":case"editableUrl":case"editableSearch":case"editableDate":case"editableDatetime":case"editableBsdate":case"editableTime":case"editableMonth":case"editableWeek":if(this.inputEl.addClass("form-control"),this.theme.inputClass){if(this.inputEl.attr("multiple")&&("input-sm"===this.theme.inputClass||"input-lg"===this.theme.inputClass))break;this.inputEl.addClass(this.theme.inputClass)}break;case"editableCheckbox":this.editorEl.addClass("checkbox")}this.buttonsEl&&this.theme.buttonsClass&&this.buttonsEl.find("button").addClass(this.theme.buttonsClass)}}};return a}); \ No newline at end of file diff --git a/www/libs/angular/angular.min.js b/www/libs/angular/angular.min.js new file mode 100644 index 0000000..0cf4b17 --- /dev/null +++ b/www/libs/angular/angular.min.js @@ -0,0 +1,293 @@ +/* + AngularJS v1.4.5 + (c) 2010-2015 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(N,W,u){'use strict';function G(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.5/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===Pa?I(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+I(b)})}catch(d){return I(c)}}function wc(b){try{return decodeURIComponent(b)}catch(a){}}function xc(b){var a={};n((b||"").split("&"),function(b){var d,e,f;b&&(e= +b=b.replace(/\+/g,"%20"),d=b.indexOf("="),-1!==d&&(e=b.substring(0,d),f=b.substring(d+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,Na.call(a,e)?K(a[e])?a[e].push(f):a[e]=[a[e],f]:a[e]=f))});return a}function Pb(b){var a=[];n(b,function(b,d){K(b)?n(b,function(b){a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))}):a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))});return a.length?a.join("&"):""}function nb(b){return ma(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ma(b,a){return encodeURIComponent(b).replace(/%40/gi, +"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Yd(b,a){var c,d,e=Qa.length;for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=eb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector", +d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;N&&e.test(N.name)&&(c.debugInfoEnabled=!0,N.name=N.name.replace(e,""));if(N&&!f.test(N.name))return d();N.name=N.name.replace(f,"");aa.resumeBootstrap=function(b){n(b,function(b){a.push(b)});return d()};B(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function $d(){N.name="NG_ENABLE_DEBUG_INFO!"+N.name;N.location.reload()}function ae(b){b=aa.element(b).injector();if(!b)throw Ea("test");return b.get("$$testability")} +function zc(b,a){a=a||"_";return b.replace(be,function(b,d){return(d?a:"")+b.toLowerCase()})}function ce(){var b;if(!Ac){var a=ob();la=N.jQuery;x(a)&&(la=null===a?u:N[a]);la&&la.fn.on?(z=la,Q(la.fn,{scope:Ra.scope,isolateScope:Ra.isolateScope,controller:Ra.controller,injector:Ra.injector,inheritedData:Ra.inheritedData}),b=la.cleanData,la.cleanData=function(a){var d;if(Qb)Qb=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=la._data(f,"events"))&&d.$destroy&&la(f).triggerHandler("$destroy");b(a)}):z=R;aa.element= +z;Ac=!0}}function pb(b,a,c){if(!b)throw Ea("areq",a||"?",c||"required");return b}function Sa(b,a,c){c&&K(b)&&(b=b[b.length-1]);pb(B(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ta(b,a){if("hasOwnProperty"===b)throw Ea("badname",a);}function Bc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=cb(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";n(f,function(a){e.appendChild(a)});return e}function R(b){if(b instanceof R)return b;var a;H(b)&&(b=T(b),a=!0);if(!(this instanceof R)){if(a&&"<"!=b.charAt(0))throw Tb("nosel");return new R(b)}if(a){a=W;var c;b=(c=Df.exec(b))?[a.createElement(c[1])]: +(c=Lc(b,a))?c.childNodes:[]}Mc(this,b)}function Ub(b){return b.cloneNode(!0)}function tb(b,a){a||ub(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;dk&&this.remove(s.key); +return b}},get:function(a){if(k").parent()[0])});var f=S(a,b,a,c,d,e);V.$$addScopeClass(a);var g=null;return function(b,c,d){pb(b,"scope");d=d||{}; +var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?z(Xb(g,z("
    ").append(a).html())):c?Ra.clone.call(a):a;if(h)for(var k in h)d.data("$"+k+"Controller",h[k].instance);V.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,s,t,O;if(p)for(O=Array(c.length),m=0;m< +h.length;m+=3)f=h[m],O[f]=c[f];else O=c;m=0;for(s=h.length;mC.priority)break;if(v=C.scope)C.templateUrl||(D(v)?(N("new/isolated scope",P||S,C,ba),P=C):N("new/isolated scope", +P,C,ba)),S=S||C;x=C.name;!C.templateUrl&&C.controller&&(v=C.controller,w=w||ga(),N("'"+x+"' controller",w[x],C,ba),w[x]=C);if(v=C.transclude)n=!0,C.$$tlb||(N("transclusion",A,C,ba),A=C),"element"==v?(r=!0,J=C.priority,v=ba,ba=d.$$element=z(W.createComment(" "+x+": "+d[x]+" ")),b=ba[0],U(f,xa.call(v,0),b),y=V(v,e,J,g&&g.name,{nonTlbTranscludeDirective:A})):(v=z(Ub(b)).contents(),ba.empty(),y=V(v,e));if(C.template)if(M=!0,N("template",F,C,ba),F=C,v=B(C.template)?C.template(ba,d):C.template,v=fa(v), +C.replace){g=C;v=Sb.test(v)?Yc(Xb(C.templateNamespace,T(v))):[];b=v[0];if(1!=v.length||b.nodeType!==pa)throw ea("tplrt",x,"");U(f,ba,b);G={$attr:{}};v=ha(b,[],G);var Q=a.splice(wa+1,a.length-(wa+1));P&&Zc(v);a=a.concat(v).concat(Q);$c(d,G);G=a.length}else ba.html(v);if(C.templateUrl)M=!0,N("template",F,C,ba),F=C,C.replace&&(g=C),L=Lf(a.splice(wa,a.length-wa),ba,d,f,n&&y,h,k,{controllerDirectives:w,newScopeDirective:S!==C&&S,newIsolateScopeDirective:P,templateDirective:F,nonTlbTranscludeDirective:A}), +G=a.length;else if(C.compile)try{za=C.compile(ba,d,y),B(za)?s(null,za,Bb,I):za&&s(za.pre,za.post,Bb,I)}catch(R){c(R,ua(ba))}C.terminal&&(L.terminal=!0,J=Math.max(J,C.priority))}L.scope=S&&!0===S.scope;L.transcludeOnThisElement=n;L.templateOnThisElement=M;L.transclude=y;m.hasElementTranscludeDirective=r;return L}function Zc(a){for(var b=0,c=a.length;bm.priority)&&-1!=m.restrict.indexOf(f)&&(k&&(m=Nb(m,{$$start:k,$$end:l})),b.push(m),h=m)}catch(J){c(J)}}return h}function G(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function R(a,b){if("srcdoc"==b)return M.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return M.RESOURCE_URL}function X(a,c,d,e, +f){var g=R(a,e);f=h[e]||f;var l=b(d,!0,g,f);if(l){if("multiple"===e&&"select"===ta(a))throw ea("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers={});if(k.test(e))throw ea("nodomevents");var m=h[e];m!==d&&(l=m&&b(m,!0,g,f),d=m);l&&(h[e]=l(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(l,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function U(a,b,c){var d=b[0],e=b.length, +f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=a)return b;for(;a--;)8===b[a].nodeType&&Mf.call(b,a,1);return b}function Xe(){var b={},a=!1;this.register=function(a,d){Ta(a,"controller");D(a)?Q(b,a):b[a]=d};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(c,d){function e(a,b,c,d){if(!a||!D(a.$scope))throw G("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,l){var k,m,q;h=!0===h;l&&H(l)&&(q=l);if(H(f)){l=f.match(Vc);if(!l)throw Nf("ctrlfmt",f);m=l[1];q=q||l[3];f=b.hasOwnProperty(m)?b[m]:Bc(g.$scope, +m,!0)||(a?Bc(d,m,!0):u);Sa(f,m,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,k=Object.create(h||null),q&&e(g,q,k,m||f.name),Q(function(){var a=c.invoke(f,k,g,m);a!==k&&(D(a)||B(a))&&(k=a,q&&e(g,q,k,m||f.name));return k},{instance:k,identifier:q});k=c.instantiate(f,g,m);q&&e(g,q,k,m||f.name);return k}}]}function Ye(){this.$get=["$window",function(b){return z(b.document)}]}function Ze(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Yb(b){return D(b)? +ca(b)?b.toISOString():db(b):b}function df(){this.$get=function(){return function(b){if(!b)return"";var a=[];mc(b,function(b,d){null===b||y(b)||(K(b)?n(b,function(b,c){a.push(ma(d)+"="+ma(Yb(b)))}):a.push(ma(d)+"="+ma(Yb(b))))});return a.join("&")}}}function ef(){this.$get=function(){return function(b){function a(b,e,f){null===b||y(b)||(K(b)?n(b,function(b,c){a(b,e+"["+(D(b)?c:"")+"]")}):D(b)&&!ca(b)?mc(b,function(b,c){a(b,e+(f?"":"[")+c+(f?"":"]"))}):c.push(ma(e)+"="+ma(Yb(b))))}if(!b)return"";var c= +[];a(b,"",!0);return c.join("&")}}}function Zb(b,a){if(H(b)){var c=b.replace(Of,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(bd))||(d=(d=c.match(Pf))&&Qf[d[0]].test(c));d&&(b=uc(c))}}return b}function cd(b){var a=ga(),c;H(b)?n(b.split("\n"),function(b){c=b.indexOf(":");var e=I(T(b.substr(0,c)));b=T(b.substr(c+1));e&&(a[e]=a[e]?a[e]+", "+b:b)}):D(b)&&n(b,function(b,c){var f=I(c),g=T(b);f&&(a[f]=a[f]?a[f]+", "+g:g)});return a}function dd(b){var a;return function(c){a||(a=cd(b));return c? +(c=a[I(c)],void 0===c&&(c=null),c):a}}function ed(b,a,c,d){if(B(d))return d(b,a,c);n(d,function(d){b=d(b,a,c)});return b}function cf(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return D(a)&&"[object File]"!==sa.call(a)&&"[object Blob]"!==sa.call(a)&&"[object FormData]"!==sa.call(a)?db(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia($b),put:ia($b),patch:ia($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"}, +a=!1;this.useApplyAsync=function(b){return x(b)?(a=!!b,this):a};var c=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(c=!!a,this):c};var d=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,l,k){function m(a){function d(a){var b=Q({},a);b.data=a.data?ed(a.data,a.headers,a.status,f.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:l.reject(b)}function e(a,b){var c,d={};n(a,function(a,e){B(a)?(c=a(b),null!= +c&&(d[e]=c)):d[e]=a});return d}if(!aa.isObject(a))throw G("$http")("badreq",a);var f=Q({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse,paramSerializer:b.paramSerializer},a);f.headers=function(a){var c=b.headers,d=Q({},a.headers),f,g,h,c=Q({},c.common,c[I(a.method)]);a:for(f in c){g=I(f);for(h in d)if(I(h)===g)continue a;d[f]=c[f]}return e(d,ia(a))}(a);f.method=rb(f.method);f.paramSerializer=H(f.paramSerializer)?k.get(f.paramSerializer):f.paramSerializer;var g= +[function(a){var c=a.headers,e=ed(a.data,dd(c),u,a.transformRequest);y(e)&&n(c,function(a,b){"content-type"===I(b)&&delete c[b]});y(a.withCredentials)&&!y(b.withCredentials)&&(a.withCredentials=b.withCredentials);return q(a,e).then(d,d)},u],h=l.when(f);for(n(E,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){a=g.shift();var m=g.shift(),h=h.then(a,m)}c?(h.success=function(a){Sa(a,"fn");h.then(function(b){a(b.data, +b.status,b.headers,f)});return h},h.error=function(a){Sa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=fd("success"),h.error=fd("error"));return h}function q(c,d){function g(b,c,d,e){function f(){k(c,b,d,e)}F&&(200<=b&&300>b?F.put(P,[b,c,cd(d),e]):F.remove(P));a?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function k(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?O.resolve:O.reject)({data:a,status:b,headers:dd(d),config:c,statusText:e})}function q(a){k(a.data,a.status, +ia(a.headers()),a.statusText)}function E(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var O=l.defer(),J=O.promise,F,n,S=c.headers,P=s(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);J.then(E,E);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(F=D(c.cache)?c.cache:D(b.cache)?b.cache:t);F&&(n=F.get(P),x(n)?n&&B(n.then)?n.then(q,q):K(n)?k(n[1],n[0],ia(n[2]),n[3]):k(n,200,{},"OK"):F.put(P,J));y(n)&&((n=gd(c.url)?f()[c.xsrfCookieName|| +b.xsrfCookieName]:u)&&(S[c.xsrfHeaderName||b.xsrfHeaderName]=n),e(c.method,P,d,g,S,c.timeout,c.withCredentials,c.responseType));return J}function s(a,b){0=l&&(w.resolve(E),t(p.$$intervalId),delete f[p.$$intervalId]);L||b.$apply()},h);f[p.$$intervalId]=w;return p}var f={};e.cancel=function(b){return b&& +b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}function ac(b){b=b.split("/");for(var a=b.length;a--;)b[a]=nb(b[a]);return b.join("/")}function hd(b,a){var c=Aa(b);a.$$protocol=c.protocol;a.$$host=c.hostname;a.$$port=Y(c.port)||Tf[c.protocol]||null}function id(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Aa(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search= +xc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ra(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ja(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Cb(b){return b.replace(/(#.+)|#$/,"$1")}function bc(b,a,c){this.$$html5=!0;c=c||"";hd(b,this);this.$$parse=function(b){var c=ra(a,b);if(!H(c))throw Db("ipthprfx",b,a);id(c,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var b= +Pb(this.$$search),c=this.$$hash?"#"+nb(this.$$hash):"";this.$$url=ac(this.$$path)+(b?"?"+b:"")+c;this.$$absUrl=a+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=ra(b,d))!==u?(g=f,g=(f=ra(c,f))!==u?a+(ra("/",f)||f):b+g):(f=ra(a,d))!==u?g=a+f:a==d+"/"&&(g=a);g&&this.$$parse(g);return!!g}}function cc(b,a,c){hd(b,this);this.$$parse=function(d){var e=ra(b,d)||ra(a,d),f;y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(b=d,this.replace())): +(f=ra(c,e),y(f)&&(f=e));id(f,this);d=this.$$path;var e=b,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(d=(f=g.exec(d))?f[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var a=Pb(this.$$search),e=this.$$hash?"#"+nb(this.$$hash):"";this.$$url=ac(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=b+(this.$$url?c+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ja(b)==Ja(a)?(this.$$parse(a),!0):!1}}function jd(b,a,c){this.$$html5=!0;cc.apply(this,arguments);this.$$parseLinkUrl= +function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ja(d)?f=d:(g=ra(a,d))?f=b+c+g:a===d+"/"&&(f=a);f&&this.$$parse(f);return!!f};this.$$compose=function(){var a=Pb(this.$$search),e=this.$$hash?"#"+nb(this.$$hash):"";this.$$url=ac(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=b+c+this.$$url}}function Eb(b){return function(){return this[b]}}function kd(b,a){return function(c){if(y(c))return this[b];this[b]=a(c);this.$$compose();return this}}function gf(){var b="",a={enabled:!1,requireBase:!0, +rewriteLinks:!0};this.hashPrefix=function(a){return x(a)?(b=a,this):b};this.html5Mode=function(b){return ab(b)?(a.enabled=b,this):D(b)?(ab(b.enabled)&&(a.enabled=b.enabled),ab(b.requireBase)&&(a.requireBase=b.requireBase),ab(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a, +b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,m;m=d.baseHref();var q=d.url(),s;if(a.enabled){if(!m&&a.requireBase)throw Db("nobase");s=q.substring(0,q.indexOf("/",q.indexOf("//")+2))+(m||"/");m=e.history?bc:jd}else s=Ja(q),m=cc;var t=s.substr(0,Ja(s).lastIndexOf("/")+1);k=new m(s,t,"#"+b);k.$$parseLinkUrl(q,q);k.$$state=d.state();var E=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e= +z(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");D(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Aa(h.animVal).href);E.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Cb(k.absUrl())!=Cb(q)&&d.url(k.absUrl(),!0);var L=!0;d.onUrlChange(function(a,b){y(ra(t,a))?g.location.href=a:(c.$evalAsync(function(){var d= +k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(L=!1,l(d,e)))}),c.$$phase||c.$digest())});c.$watch(function(){var a=Cb(d.url()),b=Cb(k.absUrl()),f=d.state(),g=k.$$replace,m=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(L||m)L=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state= +f):(m&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function hf(){var b=!0,a=this;this.debugEnabled=function(a){return x(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;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a= +[];n(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 Wa(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw da("isecfld",a);return b}function Ba(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b.window===b)throw da("isecwindow", +a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw da("isecdom",a);if(b===Object)throw da("isecobj",a);}return b}function ld(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b===Uf||b===Vf||b===Wf)throw da("isecff",a);}}function Xf(b,a){return"undefined"!==typeof b?b:a}function md(b,a){return"undefined"===typeof b?a:"undefined"===typeof a?b:b+a}function U(b,a){var c,d;switch(b.type){case r.Program:c=!0;n(b.body,function(b){U(b.expression,a);c=c&&b.expression.constant});b.constant= +c;break;case r.Literal:b.constant=!0;b.toWatch=[];break;case r.UnaryExpression:U(b.argument,a);b.constant=b.argument.constant;b.toWatch=b.argument.toWatch;break;case r.BinaryExpression:U(b.left,a);U(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=b.left.toWatch.concat(b.right.toWatch);break;case r.LogicalExpression:U(b.left,a);U(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=b.constant?[]:[b];break;case r.ConditionalExpression:U(b.test,a);U(b.alternate,a);U(b.consequent, +a);b.constant=b.test.constant&&b.alternate.constant&&b.consequent.constant;b.toWatch=b.constant?[]:[b];break;case r.Identifier:b.constant=!1;b.toWatch=[b];break;case r.MemberExpression:U(b.object,a);b.computed&&U(b.property,a);b.constant=b.object.constant&&(!b.computed||b.property.constant);b.toWatch=[b];break;case r.CallExpression:c=b.filter?!a(b.callee.name).$stateful:!1;d=[];n(b.arguments,function(b){U(b,a);c=c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=b.filter&& +!a(b.callee.name).$stateful?d:[b];break;case r.AssignmentExpression:U(b.left,a);U(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=[b];break;case r.ArrayExpression:c=!0;d=[];n(b.elements,function(b){U(b,a);c=c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=d;break;case r.ObjectExpression:c=!0;d=[];n(b.properties,function(b){U(b.value,a);c=c&&b.value.constant;b.value.constant||d.push.apply(d,b.value.toWatch)});b.constant=c;b.toWatch=d;break;case r.ThisExpression:b.constant= +!1,b.toWatch=[]}}function nd(b){if(1==b.length){b=b[0].expression;var a=b.toWatch;return 1!==a.length?a:a[0]!==b?a:u}}function od(b){return b.type===r.Identifier||b.type===r.MemberExpression}function pd(b){if(1===b.body.length&&od(b.body[0].expression))return{type:r.AssignmentExpression,left:b.body[0].expression,right:{type:r.NGValueParameter},operator:"="}}function qd(b){return 0===b.body.length||1===b.body.length&&(b.body[0].expression.type===r.Literal||b.body[0].expression.type===r.ArrayExpression|| +b.body[0].expression.type===r.ObjectExpression)}function rd(b,a){this.astBuilder=b;this.$filter=a}function sd(b,a){this.astBuilder=b;this.$filter=a}function Fb(b){return"constructor"==b}function dc(b){return B(b.valueOf)?b.valueOf():Yf.call(b)}function jf(){var b=ga(),a=ga();this.$get=["$filter",function(c){function d(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=dc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function e(a,b,c,e,f){var g=e.inputs,h;if(1===g.length){var k=d,g=g[0];return a.$watch(function(a){var b= +g(a);d(b,k)||(h=e(a,u,u,[b]),k=b&&dc(b));return h},b,c,f)}for(var l=[],m=[],q=0,n=g.length;q=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b, +e,f=0,g=d.length;fa)for(b in l++,f)e.hasOwnProperty(b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1t&&(C=4-t,w[C]||(w[C]=[]),w[C].push({msg:B(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));else if(b===d){s=!1;break a}}catch(y){g(y)}if(!(k=n.$$watchersCount&&n.$$childHead||n!==this&&n.$$nextSibling))for(;n!==this&&!(k=n.$$nextSibling);)n=n.$parent}while(n=k);if((s||u.length)&&!t--)throw p.$$phase=null,c("infdig",a,w);}while(s||u.length);for(p.$$phase= +null;x.length;)try{x.shift()()}catch(z){g(z)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===p&&l.$$applicationDestroyed();s(this,-this.$$watchersCount);for(var b in this.$$listenerCount)t(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&& +(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=v;this.$on=this.$watch=this.$watchGroup=function(){return v};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a,b){p.$$phase||u.length||l.defer(function(){u.length&&p.$digest()});u.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){x.push(a)}, +$apply:function(a){try{q("$apply");try{return this.$eval(a)}finally{p.$$phase=null}}catch(b){g(b)}finally{try{p.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&M.push(b);w()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,t(e,1,a))}},$emit:function(a, +b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=cb([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;lVa)throw Ca("iequirks");var d=ia(oa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=Za);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs, +f=d.getTrusted,g=d.trustAs;n(oa,function(a,b){var c=I(b);d[fb("parse_as_"+c)]=function(b){return e(a,b)};d[fb("get_trusted_"+c)]=function(b){return f(a,b)};d[fb("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function pf(){this.$get=["$window","$document",function(b,a){var c={},d=Y((/android (\d+)/.exec(I((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,m=!1;if(l){for(var q in l)if(k= +h.exec(q)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);m=!!("animation"in l||g+"Animation"in l);!d||k&&m||(k=H(l.webkitTransition),m=H(l.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===a&&11>=Va)return!1;if(y(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Fa(),vendorPrefix:g,transitions:k,animations:m,android:d}}]}function rf(){this.$get= +["$templateCache","$http","$q","$sce",function(b,a,c,d){function e(f,g){e.totalPendingRequests++;H(f)&&b.get(f)||(f=d.getTrustedResourceUrl(f));var h=a.defaults&&a.defaults.transformResponse;K(h)?h=h.filter(function(a){return a!==Zb}):h===Zb&&(h=null);return a.get(f,{cache:b,transformResponse:h})["finally"](function(){e.totalPendingRequests--}).then(function(a){b.put(f,a.data);return a.data},function(a){if(!g)throw ea("tpload",f,a.status,a.statusText);return c.reject(a)})}e.totalPendingRequests=0; +return e}]}function sf(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];n(a,function(a){var d=aa.element(a).data("$binding");d&&n(d,function(d){c?(new RegExp("(^|\\s)"+ud(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;hb;b=Math.abs(b);var g=Infinity===b;if(!g&&!isFinite(b))return"";var h=b+"",l="",k=!1,m=[];g&&(l="\u221e");if(!g&&-1!==h.indexOf("e")){var q=h.match(/([\d\.]+)e(-?)(\d+)/);q&&"-"==q[2]&&q[3]>e+1?b=0:(l=h,k=!0)}if(g||k)0b&&(l=b.toFixed(e),b=parseFloat(l));else{g=(h.split(Dd)[1]||"").length; +y(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(Dd),h=g[0],g=g[1]||"",q=0,s=a.lgSize,t=a.gSize;if(h.length>=s+t)for(q=h.length-s,k=0;kb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Gb(e,a,d)}}function Hb(b,a){return function(c,d){var e=c["get"+b](),f=rb(a?"SHORT"+b:b);return d[f][e]}}function Ed(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function Fd(b){return function(a){var c=Ed(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))- ++c;a=1+Math.round(a/6048E5);return Gb(a,b)}}function hc(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function zd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=Y(b[9]+b[10]),g=Y(b[9]+b[11]));h.call(a,Y(b[1]),Y(b[2])-1,Y(b[3]));f=Y(b[4]||0)-f;g=Y(b[5]||0)-g;h=Y(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,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,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;H(c)&&(c=fg.test(c)?Y(c):a(c));X(c)&&(c=new Date(c));if(!ca(c)||!isFinite(c.getTime()))return c;for(;e;)(k=gg.exec(e))?(h=cb(h,k,1),e=h.pop()):(h.push(e),e=null);var m=c.getTimezoneOffset();f&&(m=vc(f,c.getTimezoneOffset()),c=Ob(c,f,!0));n(h,function(a){l=hg[a];g+=l?l(c,b.DATETIME_FORMATS,m):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ag(){return function(b,a){y(a)&&(a=2);return db(b,a)}}function bg(){return function(b, +a,c){a=Infinity===Math.abs(Number(a))?Number(a):Y(a);if(isNaN(a))return b;X(b)&&(b=b.toString());if(!K(b)&&!H(b))return b;c=!c||isNaN(c)?0:Y(c);c=0>c&&c>=-b.length?b.length+c:c;return 0<=a?b.slice(c,c+a):0===c?b.slice(a,b.length):b.slice(Math.max(0,c+a),c)}}function Bd(b){function a(a,c){c=c?-1:1;return a.map(function(a){var d=1,h=Za;if(B(a))h=a;else if(H(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))d="-"==a.charAt(0)?-1:1,a=a.substring(1);if(""!==a&&(h=b(a),h.constant))var l=h(),h=function(a){return a[l]}}return{get:h, +descending:d*c}})}function c(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(b,e,f){if(!Da(b))return b;K(e)||(e=[e]);0===e.length&&(e=["+"]);var g=a(e,f);g.push({get:function(){return{}},descending:f?-1:1});b=Array.prototype.map.call(b,function(a,b){return{value:a,predicateValues:g.map(function(d){var e=d.get(a);d=typeof e;if(null===e)d="string",e="null";else if("string"===d)e=e.toLowerCase();else if("object"===d)a:{if("function"===typeof e.valueOf&& +(e=e.valueOf(),c(e)))break a;if(pc(e)&&(e=e.toString(),c(e)))break a;e=b}return{value:e,type:d}})}});b.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut", +m)}a.on("change",l);d.$render=function(){var b=d.$isEmpty(d.$viewValue)?"":d.$viewValue;a.val()!==b&&a.val(b)}}function Kb(b,a){return function(c,d){var e,f;if(ca(c))return c;if(H(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(ig.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0, +mm:0,ss:0,sss:0},n(e,function(b,c){c=r};g.$observe("min",function(a){r=s(a);h.$validate()})}if(x(g.max)||g.ngMax){var w;h.$validators.max=function(a){return!q(a)||y(w)||c(a)<=w};g.$observe("max",function(a){w=s(a);h.$validate()})}}}function Id(b,a,c,d){(d.$$hasNativeValidators=D(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{}; +return c.badInput&&!c.typeMismatch?u:b})}function Jd(b,a,c,d,e){if(x(d)){b=b(d);if(!b.constant)throw kb("constexpr",c,d);return b(a)}return e}function jc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Sb=/<|&#?\w+;/, +Bf=/<([\w:]+)/,Cf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,na={option:[1,'"],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};na.optgroup=na.option;na.tbody=na.tfoot=na.colgroup=na.caption=na.thead;na.th=na.td;var Ra=R.prototype={ready:function(b){function a(){c||(c=!0,b())}var c= +!1;"complete"===W.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),R(N).on("load",a))},toString:function(){var b=[];n(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?z(this[b]):z(this[this.length+b])},length:0,push:kg,sort:[].sort,splice:[].splice},Ab={};n("multiple selected checked disabled readOnly required open".split(" "),function(b){Ab[I(b)]=b});var Rc={};n("input select option textarea button form details".split(" "),function(b){Rc[b]=!0});var Sc= +{ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};n({data:Vb,removeData:ub,hasData:function(b){for(var a in gb[b.ng339])return!0;return!1}},function(b,a){R[a]=b});n({data:Vb,inheritedData:zb,scope:function(b){return z.data(b,"$scope")||zb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return z.data(b,"$isolateScope")||z.data(b,"$isolateScopeNoTemplate")},controller:Oc,injector:function(b){return zb(b,"$injector")},removeAttr:function(b, +a){b.removeAttribute(a)},hasClass:wb,css:function(b,a,c){a=fb(a);if(x(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=b.nodeType;if(d!==Pa&&2!==d&&8!==d)if(d=I(a),Ab[d])if(x(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:u;else if(x(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(x(c))b[a]=c;else return b[a]},text:function(){function b(a, +b){if(y(b)){var d=a.nodeType;return d===pa||d===Pa?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(y(a)){if(b.multiple&&"select"===ta(b)){var c=[];n(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(y(a))return b.innerHTML;tb(b,!0);b.innerHTML=a},empty:Pc},function(b,a){R.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Pc&&(2==b.length&&b!==wb&&b!==Oc?a:d)===u){if(D(a)){for(e=0;e< +g;e++)if(b===Vb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===u?Math.min(g,1):g;for(f=0;f <= >= && || ! = |".split(" "),function(a){Lb[a]=!0});var rg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v", +"'":"'",'"':'"'},ec=function(a){this.options=a};ec.prototype={constructor:ec,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof 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=x(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw da("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">=");)a={type:r.BinaryExpression,operator:c.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a={type:r.BinaryExpression,operator:c.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a={type:r.BinaryExpression,operator:c.text, +left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:r.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=fa(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant(): +this.throwError("not a primary expression",this.peek());for(var c;c=this.expect("(","[",".");)"("===c.text?(a={type:r.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===c.text?(a={type:r.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===c.text?a={type:r.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var c={type:r.CallExpression,callee:this.identifier(), +arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return c},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:r.Identifier,name:a.text}},constant:function(){return{type:r.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break; +a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:r.ArrayExpression,elements:a}},object:function(){var a=[],c;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;c={type:r.Property,kind:"init"};this.peek().constant?c.key=this.constant():this.peek().identifier?c.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");c.value=this.expression();a.push(c)}while(this.expect(","))}this.consume("}");return{type:r.ObjectExpression,properties:a}}, +throwError:function(a,c){throw da("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},consume:function(a){if(0===this.tokens.length)throw da("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},peekToken:function(){if(0===this.tokens.length)throw da("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a]; +var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},constants:{"true":{type:r.Literal,value:!0},"false":{type:r.Literal,value:!1},"null":{type:r.Literal,value:null},undefined:{type:r.Literal,value:u},"this":{type:r.ThisExpression}}};rd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:c,fn:{vars:[],body:[],own:{}},assign:{vars:[], +body:[],own:{}},inputs:[]};U(e,d.$filter);var f="",g;this.stage="assign";if(g=pd(e))this.state.computing="assign",f=this.nextId(),this.recurse(g,f),f="fn.assign="+this.generateFunction("assign","s,v,l");g=nd(e.body);d.stage="inputs";n(g,function(a,c){var e="fn"+c;d.state[e]={vars:[],body:[],own:{}};d.state.computing=e;var f=d.nextId();d.recurse(a,f);d.return_(f);d.state.inputs.push(e);a.watchId=c});this.state.computing="fn";this.stage="main";this.recurse(e);f='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+ +"var fn="+this.generateFunction("fn","s,l,a,i")+f+this.watchFns()+"return fn;";f=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","ifDefined","plus","text",f))(this.$filter,Wa,Ba,ld,Xf,md,a);this.state=this.stage=u;f.literal=qd(e);f.constant=e.constant;return f},USE:"use",STRICT:"strict",watchFns:function(){var a=[],c=this.state.inputs,d=this;n(c,function(c){a.push("var "+c+"="+d.generateFunction(c,"s"))});c.length&&a.push("fn.inputs=["+c.join(",")+"];");return a.join("")}, +generateFunction:function(a,c){return"function("+c+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],c=this;n(this.state.filters,function(d,e){a.push(d+"=$filter("+c.escape(e)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,c,d,e,f,g){var h,l,k=this,m,q;e=e||v;if(!g&&x(a.watchId))c=c||this.nextId(),this.if_("i", +this.lazyAssign(c,this.computedMember("i",a.watchId)),this.lazyRecurse(a,c,d,e,f,!0));else switch(a.type){case r.Program:n(a.body,function(c,d){k.recurse(c.expression,u,u,function(a){l=a});d!==a.body.length-1?k.current().body.push(l,";"):k.return_(l)});break;case r.Literal:q=this.escape(a.value);this.assign(c,q);e(q);break;case r.UnaryExpression:this.recurse(a.argument,u,u,function(a){l=a});q=a.operator+"("+this.ifDefined(l,0)+")";this.assign(c,q);e(q);break;case r.BinaryExpression:this.recurse(a.left, +u,u,function(a){h=a});this.recurse(a.right,u,u,function(a){l=a});q="+"===a.operator?this.plus(h,l):"-"===a.operator?this.ifDefined(h,0)+a.operator+this.ifDefined(l,0):"("+h+")"+a.operator+"("+l+")";this.assign(c,q);e(q);break;case r.LogicalExpression:c=c||this.nextId();k.recurse(a.left,c);k.if_("&&"===a.operator?c:k.not(c),k.lazyRecurse(a.right,c));e(c);break;case r.ConditionalExpression:c=c||this.nextId();k.recurse(a.test,c);k.if_(c,k.lazyRecurse(a.alternate,c),k.lazyRecurse(a.consequent,c));e(c); +break;case r.Identifier:c=c||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Wa(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){f&&1!==f&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(c,k.nonComputedMember("s",a.name))})},c&&k.lazyAssign(c,k.nonComputedMember("l", +a.name)));(k.state.expensiveChecks||Fb(a.name))&&k.addEnsureSafeObject(c);e(c);break;case r.MemberExpression:h=d&&(d.context=this.nextId())||this.nextId();c=c||this.nextId();k.recurse(a.object,h,u,function(){k.if_(k.notNull(h),function(){if(a.computed)l=k.nextId(),k.recurse(a.property,l),k.addEnsureSafeMemberName(l),f&&1!==f&&k.if_(k.not(k.computedMember(h,l)),k.lazyAssign(k.computedMember(h,l),"{}")),q=k.ensureSafeObject(k.computedMember(h,l)),k.assign(c,q),d&&(d.computed=!0,d.name=l);else{Wa(a.property.name); +f&&1!==f&&k.if_(k.not(k.nonComputedMember(h,a.property.name)),k.lazyAssign(k.nonComputedMember(h,a.property.name),"{}"));q=k.nonComputedMember(h,a.property.name);if(k.state.expensiveChecks||Fb(a.property.name))q=k.ensureSafeObject(q);k.assign(c,q);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(c,"undefined")});e(c)},!!f);break;case r.CallExpression:c=c||this.nextId();a.filter?(l=k.filter(a.callee.name),m=[],n(a.arguments,function(a){var c=k.nextId();k.recurse(a,c);m.push(c)}),q=l+ +"("+m.join(",")+")",k.assign(c,q),e(c)):(l=k.nextId(),h={},m=[],k.recurse(a.callee,l,h,function(){k.if_(k.notNull(l),function(){k.addEnsureSafeFunction(l);n(a.arguments,function(a){k.recurse(a,k.nextId(),u,function(a){m.push(k.ensureSafeObject(a))})});h.name?(k.state.expensiveChecks||k.addEnsureSafeObject(h.context),q=k.member(h.context,h.name,h.computed)+"("+m.join(",")+")"):q=l+"("+m.join(",")+")";q=k.ensureSafeObject(q);k.assign(c,q)},function(){k.assign(c,"undefined")});e(c)}));break;case r.AssignmentExpression:l= +this.nextId();h={};if(!od(a.left))throw da("lval");this.recurse(a.left,u,h,function(){k.if_(k.notNull(h.context),function(){k.recurse(a.right,l);k.addEnsureSafeObject(k.member(h.context,h.name,h.computed));q=k.member(h.context,h.name,h.computed)+a.operator+l;k.assign(c,q);e(c||q)})},1);break;case r.ArrayExpression:m=[];n(a.elements,function(a){k.recurse(a,k.nextId(),u,function(a){m.push(a)})});q="["+m.join(",")+"]";this.assign(c,q);e(q);break;case r.ObjectExpression:m=[];n(a.properties,function(a){k.recurse(a.value, +k.nextId(),u,function(c){m.push(k.escape(a.key.type===r.Identifier?a.key.name:""+a.key.value)+":"+c)})});q="{"+m.join(",")+"}";this.assign(c,q);e(q);break;case r.ThisExpression:this.assign(c,"s");e("s");break;case r.NGValueParameter:this.assign(c,"v"),e("v")}},getHasOwnProperty:function(a,c){var d=a+"."+c,e=this.current().own;e.hasOwnProperty(d)||(e[d]=this.nextId(!1,a+"&&("+this.escape(c)+" in "+a+")"));return e[d]},assign:function(a,c){if(a)return this.current().body.push(a,"=",c,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)|| +(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,c){return"ifDefined("+a+","+this.escape(c)+")"},plus:function(a,c){return"plus("+a+","+c+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,c,d){if(!0===a)c();else{var e=this.current().body;e.push("if(",a,"){");c();e.push("}");d&&(e.push("else{"),d(),e.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,c){return a+ +"."+c},computedMember:function(a,c){return a+"["+c+"]"},member:function(a,c,d){return d?this.computedMember(a,c):this.nonComputedMember(a,c)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+ +a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},lazyRecurse:function(a,c,d,e,f,g){var h=this;return function(){h.recurse(a,c,d,e,f,g)}},lazyAssign:function(a,c){var d=this;return function(){d.assign(a,c)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(H(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(X(a))return a.toString();if(!0===a)return"true"; +if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw da("esc");},nextId:function(a,c){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(c?"="+c:""));return d},current:function(){return this.state[this.state.computing]}};sd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=c;U(e,d.$filter);var f,g;if(f=pd(e))g=this.recurse(f);f=nd(e.body);var h;f&&(h=[],n(f,function(a,c){var e=d.recurse(a); +a.input=e;h.push(e);a.watchId=c}));var l=[];n(e.body,function(a){l.push(d.recurse(a.expression))});f=0===e.body.length?function(){}:1===e.body.length?l[0]:function(a,c){var d;n(l,function(e){d=e(a,c)});return d};g&&(f.assign=function(a,c,d){return g(a,d,c)});h&&(f.inputs=h);f.literal=qd(e);f.constant=e.constant;return f},recurse:function(a,c,d){var e,f,g=this,h;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case r.Literal:return this.value(a.value,c);case r.UnaryExpression:return f= +this.recurse(a.argument),this["unary"+a.operator](f,c);case r.BinaryExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case r.LogicalExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case r.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),c);case r.Identifier:return Wa(a.name,g.expression),g.identifier(a.name,g.expensiveChecks||Fb(a.name), +c,d,g.expression);case r.MemberExpression:return e=this.recurse(a.object,!1,!!d),a.computed||(Wa(a.property.name,g.expression),f=a.property.name),a.computed&&(f=this.recurse(a.property)),a.computed?this.computedMember(e,f,c,d,g.expression):this.nonComputedMember(e,f,g.expensiveChecks,c,d,g.expression);case r.CallExpression:return h=[],n(a.arguments,function(a){h.push(g.recurse(a))}),a.filter&&(f=this.$filter(a.callee.name)),a.filter||(f=this.recurse(a.callee,!0)),a.filter?function(a,d,e,g){for(var n= +[],t=0;t":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>c(e,f,g,h);return d?{value:e}:e}},"binary<=":function(a,c,d){return function(e, +f,g,h){e=a(e,f,g,h)<=c(e,f,g,h);return d?{value:e}:e}},"binary>=":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>=c(e,f,g,h);return d?{value:e}:e}},"binary&&":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)&&c(e,f,g,h);return d?{value:e}:e}},"binary||":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)||c(e,f,g,h);return d?{value:e}:e}},"ternary?:":function(a,c,d,e){return function(f,g,h,l){f=a(f,g,h,l)?c(f,g,h,l):d(f,g,h,l);return e?{value:f}:f}},value:function(a,c){return function(){return c? +{context:u,name:u,value:a}:a}},identifier:function(a,c,d,e,f){return function(g,h,l,k){g=h&&a in h?h:g;e&&1!==e&&g&&!g[a]&&(g[a]={});h=g?g[a]:u;c&&Ba(h,f);return d?{context:g,name:a,value:h}:h}},computedMember:function(a,c,d,e,f){return function(g,h,l,k){var m=a(g,h,l,k),q,n;null!=m&&(q=c(g,h,l,k),Wa(q,f),e&&1!==e&&m&&!m[q]&&(m[q]={}),n=m[q],Ba(n,f));return d?{context:m,name:q,value:n}:n}},nonComputedMember:function(a,c,d,e,f,g){return function(h,l,k,m){h=a(h,l,k,m);f&&1!==f&&h&&!h[c]&&(h[c]={}); +l=null!=h?h[c]:u;(d||Fb(c))&&Ba(l,g);return e?{context:h,name:c,value:l}:l}},inputs:function(a,c){return function(d,e,f,g){return g?g[c]:a(d,e,f)}}};var fc=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d;this.ast=new r(this.lexer);this.astCompiler=d.csp?new sd(this.ast,c):new rd(this.ast,c)};fc.prototype={constructor:fc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};ga();ga();var Yf=Object.prototype.valueOf,Ca=G("$sce"),oa={HTML:"html",CSS:"css",URL:"url", +RESOURCE_URL:"resourceUrl",JS:"js"},ea=G("$compile"),Z=W.createElement("a"),wd=Aa(N.location.href);xd.$inject=["$document"];Jc.$inject=["$provide"];yd.$inject=["$locale"];Ad.$inject=["$locale"];var Dd=".",hg={yyyy:$("FullYear",4),yy:$("FullYear",2,0,!0),y:$("FullYear",1),MMMM:Hb("Month"),MMM:Hb("Month",!0),MM:$("Month",2,1),M:$("Month",1,1),dd:$("Date",2),d:$("Date",1),HH:$("Hours",2),H:$("Hours",1),hh:$("Hours",2,-12),h:$("Hours",1,-12),mm:$("Minutes",2),m:$("Minutes",1),ss:$("Seconds",2),s:$("Seconds", +1),sss:$("Milliseconds",3),EEEE:Hb("Day"),EEE:Hb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a,c,d){a=-1*d;return a=(0<=a?"+":"")+(Gb(Math[0=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},gg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,fg=/^\-?\d+$/;zd.$inject=["$locale"];var cg=qa(I),dg=qa(rb);Bd.$inject= +["$parse"];var he=qa({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===sa.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),sb={};n(Ab,function(a,c){function d(a,d,f){a.$watch(f[e],function(a){f.$set(c,!!a)})}if("multiple"!=a){var e=va("ng-"+c),f=d;"checked"===a&&(f=function(a,c,f){f.ngModel!==f[e]&&d(a,c,f)});sb[e]=function(){return{restrict:"A", +priority:100,link:f}}}});n(Sc,function(a,c){sb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(jg))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});n(["src","srcset","href"],function(a){var c=va("ng-"+a);sb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===sa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href", +g=null);f.$observe(c,function(c){c?(f.$set(h,c),Va&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Ib={$addControl:v,$$renameControl:function(a,c){a.$name=c},$removeControl:v,$setValidity:v,$setDirty:v,$setPristine:v,$setSubmitted:v};Gd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Od=function(a){return["$timeout","$parse",function(c,d){function e(a){return""===a?d('this[""]').assign:d(a).assign||v}return{name:"form",restrict:a?"EAC":"E",controller:Gd,compile:function(d, +g){d.addClass(Xa).addClass(lb);var h=g.name?"name":a&&g.ngForm?"ngForm":!1;return{pre:function(a,d,f,g){if(!("action"in f)){var n=function(c){a.$apply(function(){g.$commitViewValue();g.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",n,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",n,!1)},0,!1)})}var t=g.$$parentForm,r=h?e(g.$name):v;h&&(r(a,g),f.$observe(h,function(c){g.$name!==c&&(r(a,u),t.$$renameControl(g,c),r=e(g.$name),r(a,g))}));d.on("$destroy", +function(){t.$removeControl(g);r(a,u);Q(g,Ib)})}}}}}]},ie=Od(),ve=Od(!0),ig=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,sg=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,tg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,ug=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Pd=/^(\d{4})-(\d{2})-(\d{2})$/,Qd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,kc=/^(\d{4})-W(\d\d)$/, +Rd=/^(\d{4})-(\d\d)$/,Sd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Td={text:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);ic(e)},date:jb("date",Pd,Kb(Pd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":jb("datetimelocal",Qd,Kb(Qd,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:jb("time",Sd,Kb(Sd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:jb("week",kc,function(a,c){if(ca(a))return a;if(H(a)){kc.lastIndex=0;var d=kc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=Ed(e),f=7*(f-1); +c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:jb("month",Rd,Kb(Rd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){Id(a,c,d,e);ib(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:ug.test(a)?parseFloat(a):u});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!X(a))throw kb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var h;e.$validators.min= +function(a){return e.$isEmpty(a)||y(h)||a>=h};d.$observe("min",function(a){x(a)&&!X(a)&&(a=parseFloat(a,10));h=X(a)&&!isNaN(a)?a:u;e.$validate()})}if(x(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||y(l)||a<=l};d.$observe("max",function(a){x(a)&&!X(a)&&(a=parseFloat(a,10));l=X(a)&&!isNaN(a)?a:u;e.$validate()})}},url:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||sg.test(d)}},email:function(a, +c,d,e,f,g){ib(a,c,d,e,f,g);ic(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||tg.test(d)}},radio:function(a,c,d,e){y(d.name)&&c.attr("name",++mb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=Jd(l,a,"ngTrueValue",d.ngTrueValue,!0),m=Jd(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked, +a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ka(a,k)});e.$parsers.push(function(a){return a?k:m})},hidden:v,button:v,submit:v,reset:v,file:v},Dc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Td[I(h.type)]||Td.text)(f,g,h,l[0],c,a,d,e)}}}}],vg=/^(true|false|\d+)$/,Ne=function(){return{restrict:"A",priority:100,compile:function(a, +c){return vg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},ne=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===u?"":a})}}}}],pe=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate)); +c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===u?"":a})}}}}],oe=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Me=qa({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), +qe=jc("",!0),se=jc("Odd",0),re=jc("Even",1),te=Ma({compile:function(a,c){c.$set("ngCloak",u);a.removeClass("ng-cloak")}}),ue=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Ic={},wg={blur:!0,focus:!0};n("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=va("ng-"+a);Ic[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h= +d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};wg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var xe=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=W.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k= +qb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],ye=["$templateRequest","$anchorScroll","$animate",function(a,c,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:aa.noop,compile:function(e,f){var g=f.ngInclude||f.src,h=f.onload||"",l=f.autoscroll;return function(e,f,n,s,r){var u=0,v,w,p,A=function(){w&&(w.remove(),w=null);v&&(v.$destroy(),v=null);p&&(d.leave(p).then(function(){w=null}),w=p,p=null)};e.$watch(g,function(g){var n=function(){!x(l)||l&&!e.$eval(l)|| +c()},q=++u;g?(a(g,!0).then(function(a){if(q===u){var c=e.$new();s.template=a;a=r(c,function(a){A();d.enter(a,null,f).then(n)});v=c;p=a;v.$emit("$includeContentLoaded",g);e.$eval(h)}},function(){q===u&&(A(),e.$emit("$includeContentError",g))}),e.$emit("$includeContentRequested",g)):(A(),s.template=null)})}}}}],Pe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Lc(f.template,W).childNodes)(c,function(a){d.append(a)}, +{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],ze=Ma({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),Le=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?T(f):f;e.$parsers.push(function(a){if(!y(a)){var c=[];a&&n(a.split(h),function(a){a&&c.push(g?T(a):a)});return c}});e.$formatters.push(function(a){return K(a)?a.join(f):u});e.$isEmpty=function(a){return!a|| +!a.length}}}},lb="ng-valid",Kd="ng-invalid",Xa="ng-pristine",Jb="ng-dirty",Md="ng-pending",kb=G("ngModel"),xg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1; +this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=u;this.$name=m(d.name||"",!1)(a);var q=f(d.ngModel),s=q.assign,r=q,E=s,L=null,w,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");r=function(a){var d=q(a);B(d)&&(d=c(a));return d};E=function(a,c){B(q(a))?g(a,{$$$p:p.$modelValue}):s(a,p.$modelValue)}}else if(!q.assign)throw kb("nonassign",d.ngModel,ua(e));};this.$render=v;this.$isEmpty=function(a){return y(a)|| +""===a||null===a||a!==a};var A=e.inheritedData("$formController")||Ib,z=0;Hd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:A,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Jb);g.addClass(e,Xa)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Xa);g.addClass(e,Jb);A.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched= +function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(L);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!X(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=f?a:u,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators= +function(a,c,d){function e(){var d=!0;n(p.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(n(p.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;n(p.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!B(k.then))throw kb("$asyncValidators",k);g(h,u);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},v):h(!0)}function g(a,c){l===z&&p.$setValidity(a,c)}function h(a){l===z&&d(a)}z++;var l=z;(function(){var a= +p.$$parserName||"parse";if(w===u)g(a,null);else return w||(n(p.$validators,function(a,c){g(c,null)}),n(p.$asyncValidators,function(a,c){g(c,null)})),g(a,w),w;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(L);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=p.$$lastCommittedViewValue;if(w=y(c)?u:!0)for(var d= +0;df||e.$isEmpty(c)||c.length<=f}}}}},Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=Y(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};N.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(ce(),ee(aa),aa.module("ngLocale",[],["$provide",function(a){function c(a){a+="";var c=a.indexOf(".");return-1== +c?0:a.length-c-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y", +medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",pluralCat:function(a,e){var f=a|0,g=e;u===g&&(g=Math.min(c(a),3));Math.pow(10,g);return 1== +f&&0==g?"one":"other"}})}]),z(W).ready(function(){Zd(W,yc)}))})(window,document);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +//# sourceMappingURL=angular.min.js.map diff --git a/www/libs/angular/angular.min.js.gzip b/www/libs/angular/angular.min.js.gzip new file mode 100644 index 0000000..1c94b11 Binary files /dev/null and b/www/libs/angular/angular.min.js.gzip differ diff --git a/www/libs/angular/angular.min.js.map b/www/libs/angular/angular.min.js.map new file mode 100644 index 0000000..150f24d --- /dev/null +++ b/www/libs/angular/angular.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular.min.js", +"lineCount":292, +"mappings":"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", +"sources":["angular.js"], +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","Object","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","baseExtend","dst","objs","deep","ii","isObject","j","jj","src","isDate","Date","valueOf","isRegExp","RegExp","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","hasCustomToString","toString","prototype","isUndefined","isDefined","getPrototypeOf","isNumber","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","TYPED_ARRAY_REGEXP","test","push","constructor","getTime","match","lastIndex","emptyObject","shallowCopy","charAt","equals","o1","o2","t1","t2","keySet","createMap","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","timezoneOffset","getTimezoneOffset","setMinutes","getMinutes","minutes","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","splitPoint","substring","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$animateCss","$CoreAnimateCssProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$CoreAnimateRunnerProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$$forceReflow","$$ForceReflowProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","result","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","returnedValue","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","bindToController","controllerAs","CNTRL_REG","$$bindings","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","destroyBindings","$new","$$destroyBindings","$on","transcludeOnThisElement","createBoundTranscludeFn","transclude","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","msie","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","inheritType","dataName","setupControllers","controllerDirectives","controllerKey","$scope","$attrs","$transclude","controllerInstance","hasElementTranscludeDirective","linkNode","thisLinkFn","controllersBoundTransclude","cloneAttachFn","scopeToChild","templateDirective","$$originalDirective","initializeDirectiveBindings","scopeDirective","newScopeDirective","controllerForBindings","identifier","controllerResult","invokeLinkFn","template","templateUrl","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","wrapModuleNameIfDefined","moduleName","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","hasData","expando","k","kk","annotation","newScope","onNewScopeDestroyed","lastValue","parentGet","parentSet","compare","$observe","literal","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","useLegacyPromise","useLegacyPromiseExtensions","this.useLegacyPromiseExtensions","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","$httpMinErrLegacyFn","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","throwNoconcat","compute","interpolationFn","$$watchDelegate","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","base","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","lastIndexOf","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","objectEquality","parsedExpression","prettyPrintExpression","inputExpressions","inputs","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","noUnsafeEval","$parseOptions","expensiveChecks","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","Scope","$parent","$$prevSibling","$root","beginPhase","phase","incrementWatchersCount","current","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","formatNumber","GROUP_SEP","DECIMAL_SEP","number","groupSep","decimalSep","isNegative","abs","isInfinity","Infinity","isFinite","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","minFrac","round","fraction","lgroup","lgSize","group","gSize","negPre","posPre","negSuf","posSuf","padNumber","num","digits","neg","dateGetter","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","eraGetter","ERAS","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","dateTimezoneOffset","DATE_FORMATS","spacing","limit","processPredicates","sortPredicate","reverseOrder","map","predicate","descending","predicates","compareValues","getComparisonObject","predicateValues","doComparison","v1","v2","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","rules","ngCspElement","ngCspAttribute","noInlineStyle","Function","name_","el","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","jqLiteHasData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","AnimateRunner","end","resume","pause","complete","pass","fail","postDigestElements","addRemoveClassesPostDigest","add","updateData","classesAdded","classesRemoved","existing","pin","domOperation","from","to","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","runner","enter","move","leave","addclass","animate","tempClasses","RAFPromise","getPromise","f1","f2","closed","start","domNode","offsetWidth","APPLICATION_JSON","$httpMinErr","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","isExpOperator","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","constants","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","generateFunction","fnKey","intoId","return_","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","stringEscapeRegex","stringEscapeFn","c","charCodeAt","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","handleFormSubmission","parentFormCtrl","setter","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","updateOptionElement","addOrReuseElement","removeExcessElements","skipEmptyAndUnknownOptions","emptyOption_","emptyOption","unknownOption_","unknownOption","updateOptions","previousValue","selectCtrl","readValue","groupMap","providedEmptyOption","updateOption","optionElement","groupElement","currentOptionElement","ngModelCtrl","nextValue","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","pluralCat","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","addOption","self.addOption","removeOption","self.removeOption","self.hasOption","ngModelCtrl.$render","lastView","lastViewRef","selectMultipleWatch","chromeHack","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","pow","ONE","OTHER","$$csp","head"] +} diff --git a/www/libs/angularUtils-pagination/.bower.json b/www/libs/angularUtils-pagination/.bower.json new file mode 100644 index 0000000..73f96d7 --- /dev/null +++ b/www/libs/angularUtils-pagination/.bower.json @@ -0,0 +1,44 @@ +{ + "name": "angularUtils-pagination", + "version": "0.9.4", + "homepage": "https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination", + "authors": [ + "Michael Bromley " + ], + "description": "Magical automatic pagination for anything in AngularJS", + "main": [ + "dirPagination.js", + "dirPagination.tpl.html" + ], + "moduleType": [ + "globals" + ], + "dependencies": { + "angular": ">=1.1.4" + }, + "keywords": [ + "angularjs", + "pagination", + "directive", + "paging", + "angular" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "_release": "0.9.4", + "_resolution": { + "type": "version", + "tag": "v0.9.4", + "commit": "e8d49a20ee54416d10b36890cc6b415259fac43b" + }, + "_source": "git://github.com/michaelbromley/angularUtils-pagination.git", + "_target": "~0.9.4", + "_originalSource": "angular-utils-pagination", + "_direct": true +} \ No newline at end of file diff --git a/www/libs/angularUtils-pagination/dirPagination.js b/www/libs/angularUtils-pagination/dirPagination.js new file mode 100644 index 0000000..904b042 --- /dev/null +++ b/www/libs/angularUtils-pagination/dirPagination.js @@ -0,0 +1,569 @@ +/** + * dirPagination - AngularJS module for paginating (almost) anything. + * + * + * Credits + * ======= + * + * Daniel Tabuenca: https://groups.google.com/d/msg/angular/an9QpzqIYiM/r8v-3W1X5vcJ + * for the idea on how to dynamically invoke the ng-repeat directive. + * + * I borrowed a couple of lines and a few attribute names from the AngularUI Bootstrap project: + * https://github.com/angular-ui/bootstrap/blob/master/src/pagination/pagination.js + * + * Copyright 2014 Michael Bromley + */ + +(function() { + + /** + * Config + */ + var moduleName = 'angularUtils.directives.dirPagination'; + var DEFAULT_ID = '__default'; + + /** + * Module + */ + angular.module(moduleName, []) + .directive('dirPaginate', ['$compile', '$parse', 'paginationService', dirPaginateDirective]) + .directive('dirPaginateNoCompile', noCompileDirective) + .directive('dirPaginationControls', ['paginationService', 'paginationTemplate', dirPaginationControlsDirective]) + .filter('itemsPerPage', ['paginationService', itemsPerPageFilter]) + .service('paginationService', paginationService) + .provider('paginationTemplate', paginationTemplateProvider) + .run(['$templateCache',dirPaginationControlsTemplateInstaller]); + + function dirPaginateDirective($compile, $parse, paginationService) { + + return { + terminal: true, + multiElement: true, + priority: 100, + compile: dirPaginationCompileFn + }; + + function dirPaginationCompileFn(tElement, tAttrs){ + + var expression = tAttrs.dirPaginate; + // regex taken directly from https://github.com/angular/angular.js/blob/v1.4.x/src/ng/directive/ngRepeat.js#L339 + var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/); + + var filterPattern = /\|\s*itemsPerPage\s*:\s*(.*\(\s*\w*\)|([^\)]*?(?=\s+as\s+))|[^\)]*)/; + if (match[2].match(filterPattern) === null) { + throw 'pagination directive: the \'itemsPerPage\' filter must be set.'; + } + var itemsPerPageFilterRemoved = match[2].replace(filterPattern, ''); + var collectionGetter = $parse(itemsPerPageFilterRemoved); + + addNoCompileAttributes(tElement); + + // If any value is specified for paginationId, we register the un-evaluated expression at this stage for the benefit of any + // dir-pagination-controls directives that may be looking for this ID. + var rawId = tAttrs.paginationId || DEFAULT_ID; + paginationService.registerInstance(rawId); + + return function dirPaginationLinkFn(scope, element, attrs){ + + // Now that we have access to the `scope` we can interpolate any expression given in the paginationId attribute and + // potentially register a new ID if it evaluates to a different value than the rawId. + var paginationId = $parse(attrs.paginationId)(scope) || attrs.paginationId || DEFAULT_ID; + paginationService.registerInstance(paginationId); + + var repeatExpression = getRepeatExpression(expression, paginationId); + addNgRepeatToElement(element, attrs, repeatExpression); + + removeTemporaryAttributes(element); + var compiled = $compile(element); + + var currentPageGetter = makeCurrentPageGetterFn(scope, attrs, paginationId); + paginationService.setCurrentPageParser(paginationId, currentPageGetter, scope); + + if (typeof attrs.totalItems !== 'undefined') { + paginationService.setAsyncModeTrue(paginationId); + scope.$watch(function() { + return $parse(attrs.totalItems)(scope); + }, function (result) { + if (0 <= result) { + paginationService.setCollectionLength(paginationId, result); + } + }); + } else { + scope.$watchCollection(function() { + return collectionGetter(scope); + }, function(collection) { + if (collection) { + var collectionLength = (collection instanceof Array) ? collection.length : Object.keys(collection).length; + paginationService.setCollectionLength(paginationId, collectionLength); + } + }); + } + + // Delegate to the link function returned by the new compilation of the ng-repeat + compiled(scope); + }; + } + + /** + * If a pagination id has been specified, we need to check that it is present as the second argument passed to + * the itemsPerPage filter. If it is not there, we add it and return the modified expression. + * + * @param expression + * @param paginationId + * @returns {*} + */ + function getRepeatExpression(expression, paginationId) { + var repeatExpression, + idDefinedInFilter = !!expression.match(/(\|\s*itemsPerPage\s*:[^|]*:[^|]*)/); + + if (paginationId !== DEFAULT_ID && !idDefinedInFilter) { + repeatExpression = expression.replace(/(\|\s*itemsPerPage\s*:\s*[^|\s]*)/, "$1 : '" + paginationId + "'"); + } else { + repeatExpression = expression; + } + + return repeatExpression; + } + + /** + * Adds the ng-repeat directive to the element. In the case of multi-element (-start, -end) it adds the + * appropriate multi-element ng-repeat to the first and last element in the range. + * @param element + * @param attrs + * @param repeatExpression + */ + function addNgRepeatToElement(element, attrs, repeatExpression) { + if (element[0].hasAttribute('dir-paginate-start') || element[0].hasAttribute('data-dir-paginate-start')) { + // using multiElement mode (dir-paginate-start, dir-paginate-end) + attrs.$set('ngRepeatStart', repeatExpression); + element.eq(element.length - 1).attr('ng-repeat-end', true); + } else { + attrs.$set('ngRepeat', repeatExpression); + } + } + + /** + * Adds the dir-paginate-no-compile directive to each element in the tElement range. + * @param tElement + */ + function addNoCompileAttributes(tElement) { + angular.forEach(tElement, function(el) { + if (el.nodeType === 1) { + angular.element(el).attr('dir-paginate-no-compile', true); + } + }); + } + + /** + * Removes the variations on dir-paginate (data-, -start, -end) and the dir-paginate-no-compile directives. + * @param element + */ + function removeTemporaryAttributes(element) { + angular.forEach(element, function(el) { + if (el.nodeType === 1) { + angular.element(el).removeAttr('dir-paginate-no-compile'); + } + }); + element.eq(0).removeAttr('dir-paginate-start').removeAttr('dir-paginate').removeAttr('data-dir-paginate-start').removeAttr('data-dir-paginate'); + element.eq(element.length - 1).removeAttr('dir-paginate-end').removeAttr('data-dir-paginate-end'); + } + + /** + * Creates a getter function for the current-page attribute, using the expression provided or a default value if + * no current-page expression was specified. + * + * @param scope + * @param attrs + * @param paginationId + * @returns {*} + */ + function makeCurrentPageGetterFn(scope, attrs, paginationId) { + var currentPageGetter; + if (attrs.currentPage) { + currentPageGetter = $parse(attrs.currentPage); + } else { + // If the current-page attribute was not set, we'll make our own. + // Replace any non-alphanumeric characters which might confuse + // the $parse service and give unexpected results. + // See https://github.com/michaelbromley/angularUtils/issues/233 + var defaultCurrentPage = (paginationId + '__currentPage').replace(/\W/g, '_'); + scope[defaultCurrentPage] = 1; + currentPageGetter = $parse(defaultCurrentPage); + } + return currentPageGetter; + } + } + + /** + * This is a helper directive that allows correct compilation when in multi-element mode (ie dir-paginate-start, dir-paginate-end). + * It is dynamically added to all elements in the dir-paginate compile function, and it prevents further compilation of + * any inner directives. It is then removed in the link function, and all inner directives are then manually compiled. + */ + function noCompileDirective() { + return { + priority: 5000, + terminal: true + }; + } + + function dirPaginationControlsTemplateInstaller($templateCache) { + $templateCache.put('angularUtils.directives.dirPagination.template', ''); + } + + function dirPaginationControlsDirective(paginationService, paginationTemplate) { + + var numberRegex = /^\d+$/; + + return { + restrict: 'AE', + templateUrl: function(elem, attrs) { + return attrs.templateUrl || paginationTemplate.getPath(); + }, + scope: { + maxSize: '=?', + onPageChange: '&?', + paginationId: '=?', + autoHide: '=?' + }, + link: dirPaginationControlsLinkFn + }; + + function dirPaginationControlsLinkFn(scope, element, attrs) { + + // rawId is the un-interpolated value of the pagination-id attribute. This is only important when the corresponding dir-paginate directive has + // not yet been linked (e.g. if it is inside an ng-if block), and in that case it prevents this controls directive from assuming that there is + // no corresponding dir-paginate directive and wrongly throwing an exception. + var rawId = attrs.paginationId || DEFAULT_ID; + var paginationId = scope.paginationId || attrs.paginationId || DEFAULT_ID; + + if (!paginationService.isRegistered(paginationId) && !paginationService.isRegistered(rawId)) { + var idMessage = (paginationId !== DEFAULT_ID) ? ' (id: ' + paginationId + ') ' : ' '; + console.warn('Pagination directive: the pagination controls' + idMessage + 'cannot be used without the corresponding pagination directive, which was not found at link time.'); + } + + if (!scope.maxSize) { scope.maxSize = 9; } + scope.autoHide = scope.autoHide === undefined ? true : scope.autoHide; + scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : true; + scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : false; + + var paginationRange = Math.max(scope.maxSize, 5); + scope.pages = []; + scope.pagination = { + last: 1, + current: 1 + }; + scope.range = { + lower: 1, + upper: 1, + total: 1 + }; + + scope.$watch(function() { + if (paginationService.isRegistered(paginationId)) { + return (paginationService.getCollectionLength(paginationId) + 1) * paginationService.getItemsPerPage(paginationId); + } + }, function(length) { + if (0 < length) { + generatePagination(); + } + }); + + scope.$watch(function() { + if (paginationService.isRegistered(paginationId)) { + return (paginationService.getItemsPerPage(paginationId)); + } + }, function(current, previous) { + if (current != previous && typeof previous !== 'undefined') { + goToPage(scope.pagination.current); + } + }); + + scope.$watch(function() { + if (paginationService.isRegistered(paginationId)) { + return paginationService.getCurrentPage(paginationId); + } + }, function(currentPage, previousPage) { + if (currentPage != previousPage) { + goToPage(currentPage); + } + }); + + scope.setCurrent = function(num) { + if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) { + num = parseInt(num, 10); + paginationService.setCurrentPage(paginationId, num); + } + }; + + /** + * Custom "track by" function which allows for duplicate "..." entries on long lists, + * yet fixes the problem of wrongly-highlighted links which happens when using + * "track by $index" - see https://github.com/michaelbromley/angularUtils/issues/153 + * @param id + * @param index + * @returns {string} + */ + scope.tracker = function(id, index) { + return id + '_' + index; + }; + + function goToPage(num) { + if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) { + scope.pages = generatePagesArray(num, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange); + scope.pagination.current = num; + updateRangeValues(); + + // if a callback has been set, then call it with the page number as an argument + if (scope.onPageChange) { + scope.onPageChange({ newPageNumber : num }); + } + } + } + + function generatePagination() { + if (paginationService.isRegistered(paginationId)) { + var page = parseInt(paginationService.getCurrentPage(paginationId)) || 1; + scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange); + scope.pagination.current = page; + scope.pagination.last = scope.pages[scope.pages.length - 1]; + if (scope.pagination.last < scope.pagination.current) { + scope.setCurrent(scope.pagination.last); + } else { + updateRangeValues(); + } + } + } + + /** + * This function updates the values (lower, upper, total) of the `scope.range` object, which can be used in the pagination + * template to display the current page range, e.g. "showing 21 - 40 of 144 results"; + */ + function updateRangeValues() { + if (paginationService.isRegistered(paginationId)) { + var currentPage = paginationService.getCurrentPage(paginationId), + itemsPerPage = paginationService.getItemsPerPage(paginationId), + totalItems = paginationService.getCollectionLength(paginationId); + + scope.range.lower = (currentPage - 1) * itemsPerPage + 1; + scope.range.upper = Math.min(currentPage * itemsPerPage, totalItems); + scope.range.total = totalItems; + } + } + function isValidPageNumber(num) { + return (numberRegex.test(num) && (0 < num && num <= scope.pagination.last)); + } + } + + /** + * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the + * links used in pagination + * + * @param currentPage + * @param rowsPerPage + * @param paginationRange + * @param collectionLength + * @returns {Array} + */ + function generatePagesArray(currentPage, collectionLength, rowsPerPage, paginationRange) { + var pages = []; + var totalPages = Math.ceil(collectionLength / rowsPerPage); + var halfWay = Math.ceil(paginationRange / 2); + var position; + + if (currentPage <= halfWay) { + position = 'start'; + } else if (totalPages - halfWay < currentPage) { + position = 'end'; + } else { + position = 'middle'; + } + + var ellipsesNeeded = paginationRange < totalPages; + var i = 1; + while (i <= totalPages && i <= paginationRange) { + var pageNumber = calculatePageNumber(i, currentPage, paginationRange, totalPages); + + var openingEllipsesNeeded = (i === 2 && (position === 'middle' || position === 'end')); + var closingEllipsesNeeded = (i === paginationRange - 1 && (position === 'middle' || position === 'start')); + if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) { + pages.push('...'); + } else { + pages.push(pageNumber); + } + i ++; + } + return pages; + } + + /** + * Given the position in the sequence of pagination links [i], figure out what page number corresponds to that position. + * + * @param i + * @param currentPage + * @param paginationRange + * @param totalPages + * @returns {*} + */ + function calculatePageNumber(i, currentPage, paginationRange, totalPages) { + var halfWay = Math.ceil(paginationRange/2); + if (i === paginationRange) { + return totalPages; + } else if (i === 1) { + return i; + } else if (paginationRange < totalPages) { + if (totalPages - halfWay < currentPage) { + return totalPages - paginationRange + i; + } else if (halfWay < currentPage) { + return currentPage - halfWay + i; + } else { + return i; + } + } else { + return i; + } + } + } + + /** + * This filter slices the collection into pages based on the current page number and number of items per page. + * @param paginationService + * @returns {Function} + */ + function itemsPerPageFilter(paginationService) { + + return function(collection, itemsPerPage, paginationId) { + if (typeof (paginationId) === 'undefined') { + paginationId = DEFAULT_ID; + } + if (!paginationService.isRegistered(paginationId)) { + throw 'pagination directive: the itemsPerPage id argument (id: ' + paginationId + ') does not match a registered pagination-id.'; + } + var end; + var start; + if (angular.isObject(collection)) { + itemsPerPage = parseInt(itemsPerPage) || 9999999999; + if (paginationService.isAsyncMode(paginationId)) { + start = 0; + } else { + start = (paginationService.getCurrentPage(paginationId) - 1) * itemsPerPage; + } + end = start + itemsPerPage; + paginationService.setItemsPerPage(paginationId, itemsPerPage); + + if (collection instanceof Array) { + // the array just needs to be sliced + return collection.slice(start, end); + } else { + // in the case of an object, we need to get an array of keys, slice that, then map back to + // the original object. + var slicedObject = {}; + angular.forEach(keys(collection).slice(start, end), function(key) { + slicedObject[key] = collection[key]; + }); + return slicedObject; + } + } else { + return collection; + } + }; + } + + /** + * Shim for the Object.keys() method which does not exist in IE < 9 + * @param obj + * @returns {Array} + */ + function keys(obj) { + if (!Object.keys) { + var objKeys = []; + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + objKeys.push(i); + } + } + return objKeys; + } else { + return Object.keys(obj); + } + } + + /** + * This service allows the various parts of the module to communicate and stay in sync. + */ + function paginationService() { + + var instances = {}; + var lastRegisteredInstance; + + this.registerInstance = function(instanceId) { + if (typeof instances[instanceId] === 'undefined') { + instances[instanceId] = { + asyncMode: false + }; + lastRegisteredInstance = instanceId; + } + }; + + this.isRegistered = function(instanceId) { + return (typeof instances[instanceId] !== 'undefined'); + }; + + this.getLastInstanceId = function() { + return lastRegisteredInstance; + }; + + this.setCurrentPageParser = function(instanceId, val, scope) { + instances[instanceId].currentPageParser = val; + instances[instanceId].context = scope; + }; + this.setCurrentPage = function(instanceId, val) { + instances[instanceId].currentPageParser.assign(instances[instanceId].context, val); + }; + this.getCurrentPage = function(instanceId) { + var parser = instances[instanceId].currentPageParser; + return parser ? parser(instances[instanceId].context) : 1; + }; + + this.setItemsPerPage = function(instanceId, val) { + instances[instanceId].itemsPerPage = val; + }; + this.getItemsPerPage = function(instanceId) { + return instances[instanceId].itemsPerPage; + }; + + this.setCollectionLength = function(instanceId, val) { + instances[instanceId].collectionLength = val; + }; + this.getCollectionLength = function(instanceId) { + return instances[instanceId].collectionLength; + }; + + this.setAsyncModeTrue = function(instanceId) { + instances[instanceId].asyncMode = true; + }; + + this.isAsyncMode = function(instanceId) { + return instances[instanceId].asyncMode; + }; + } + + /** + * This provider allows global configuration of the template path used by the dir-pagination-controls directive. + */ + function paginationTemplateProvider() { + + var templatePath = 'angularUtils.directives.dirPagination.template'; + + this.setPath = function(path) { + templatePath = path; + }; + + this.$get = function() { + return { + getPath: function() { + return templatePath; + } + }; + }; + } +})(); diff --git a/www/libs/angularUtils-pagination/dirPagination.tpl.html b/www/libs/angularUtils-pagination/dirPagination.tpl.html new file mode 100644 index 0000000..db98d4c --- /dev/null +++ b/www/libs/angularUtils-pagination/dirPagination.tpl.html @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/www/libs/angularjs-google-maps/ng-map.min.js b/www/libs/angularjs-google-maps/ng-map.min.js new file mode 100644 index 0000000..28df513 --- /dev/null +++ b/www/libs/angularjs-google-maps/ng-map.min.js @@ -0,0 +1 @@ +angular.module("ngMap",[]),function(){"use strict";var e,t=function(t,n,o,r,i,a,s){e=i;var p=this;p.mapOptions,p.mapEvents,p.addObject=function(e,t){if(p.map){p.map[e]=p.map[e]||{};var n=Object.keys(p.map[e]).length;p.map[e][t.id||n]=t,p.map instanceof google.maps.Map&&("infoWindows"!=e&&t.setMap&&t.setMap&&t.setMap(p.map),t.centered&&t.position&&p.map.setCenter(t.position),"markers"==e&&p.objectChanged("markers"),"customMarkers"==e&&p.objectChanged("customMarkers"))}},p.deleteObject=function(e,t){if(t.map){var n=t.map[e];for(var o in n)n[o]===t&&(google.maps.event.clearInstanceListeners(t),delete n[o]);t.map&&t.setMap&&t.setMap(null),"markers"==e&&p.objectChanged("markers"),"customMarkers"==e&&p.objectChanged("customMarkers")}},p.observeAttrSetObj=function(t,n,o){if(n.noWatcher)return!1;for(var r=e.getAttrsToObserve(t),i=0;i-1&&t.splice(n,1),this.el.className=t.join(" ")},r.prototype.onAdd=function(){this.getPanes().overlayMouseTarget.appendChild(this.el)},r.prototype.draw=function(){this.setPosition(),this.setZIndex(this.zIndex),this.setVisible(this.visible)},r.prototype.onRemove=function(){this.el.parentNode.removeChild(this.el)}},a=function(n,i){return function(a,s,p,c){c=c[0]||c[1];var u=e.orgAttributes(s),l=e.filter(p),g=e.getOptions(l,{scope:a}),d=e.getEvents(a,l);s[0].style.display="none";var f=new r(g);t(function(){a.$watch("["+i.join(",")+"]",function(){f.setContent(n,a)}),f.setContent(s[0].innerHTML,a);var e=s[0].firstElementChild.className;f.addClass("custom-marker"),f.addClass(e),g.position instanceof google.maps.LatLng||o.getGeoLocation(g.position).then(function(e){f.setPosition(e)})});for(var m in d)google.maps.event.addDomListener(f.el,m,d[m]);c.addObject("customMarkers",f),c.observeAttrSetObj(u,p,f),s.bind("$destroy",function(){c.deleteObject("customMarkers",f)})}},s=function(r,s,p,c){return e=p,t=r,n=s,o=c,{restrict:"E",require:["?^map","?^ngMap"],compile:function(e){i(),e[0].style.display="none";var t=e.html(),n=t.match(/{{([^}]+)}}/g),o=[];return(n||[]).forEach(function(e){var t=e.replace("{{","").replace("}}","");-1==e.indexOf("::")&&-1==e.indexOf("this.")&&-1==o.indexOf(t)&&o.push(e.replace("{{","").replace("}}",""))}),a(t,o)}}};s.$inject=["$timeout","$compile","Attr2MapOptions","NgMap"],angular.module("ngMap").directive("customMarker",s)}(),function(){"use strict";var e,t,n,o=function(e,t){e.panel&&(e.panel=document.getElementById(e.panel)||document.querySelector(e.panel));var n=new google.maps.DirectionsRenderer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n},r=function(e,o){var r=new google.maps.DirectionsService,i=o;i.travelMode=i.travelMode||"DRIVING";var a=["origin","destination","travelMode","transitOptions","unitSystem","durationInTraffic","waypoints","optimizeWaypoints","provideRouteAlternatives","avoidHighways","avoidTolls","region"];for(var s in i)-1===a.indexOf(s)&&delete i[s];i.waypoints&&("[]"==i.waypoints||""===i.waypoints)&&delete i.waypoints;var p=function(n){r.route(n,function(n,o){o==google.maps.DirectionsStatus.OK&&t(function(){e.setDirections(n)})})};i.origin&&i.destination&&("current-location"==i.origin?n.getCurrentPosition().then(function(e){i.origin=new google.maps.LatLng(e.coords.latitude,e.coords.longitude),p(i)}):"current-location"==i.destination?n.getCurrentPosition().then(function(e){i.destination=new google.maps.LatLng(e.coords.latitude,e.coords.longitude),p(i)}):p(i))},i=function(i,a,s,p){var c=i;e=p,t=a,n=s;var u=function(n,i,a,s){s=s[0]||s[1];var p=c.orgAttributes(i),u=c.filter(a),l=c.getOptions(u,{scope:n}),g=c.getEvents(n,u),d=c.getAttrsToObserve(p),f=o(l,g);s.addObject("directionsRenderers",f),d.forEach(function(e){!function(e){a.$observe(e,function(n){if("panel"==e)t(function(){var e=document.getElementById(n)||document.querySelector(n);e&&f.setPanel(e)});else if(l[e]!==n){var o=c.toOptionValue(n,{key:e});l[e]=o,r(f,l)}})}(e)}),e.getMap().then(function(){r(f,l)}),i.bind("$destroy",function(){s.deleteObject("directionsRenderers",f)})};return{restrict:"E",require:["?^map","?^ngMap"],link:u}};i.$inject=["Attr2MapOptions","$timeout","NavigatorGeolocation","NgMap"],angular.module("ngMap").directive("directions",i)}(),function(){"use strict";angular.module("ngMap").directive("drawingManager",["Attr2MapOptions",function(e){var t=e;return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,n,o,r){r=r[0]||r[1];var i=t.filter(o),a=t.getOptions(i,{scope:e}),s=t.getControlOptions(i),p=t.getEvents(e,i),c=new google.maps.drawing.DrawingManager({drawingMode:a.drawingmode,drawingControl:a.drawingcontrol,drawingControlOptions:s.drawingControlOptions,circleOptions:a.circleoptions,markerOptions:a.markeroptions,polygonOptions:a.polygonoptions,polylineOptions:a.polylineoptions,rectangleOptions:a.rectangleoptions});o.$observe("drawingControlOptions",function(e){c.drawingControlOptions=t.getControlOptions({drawingControlOptions:e}).drawingControlOptions,c.setDrawingMode(null),c.setMap(r.map)});for(var u in p)google.maps.event.addListener(c,u,p[u]);r.addObject("mapDrawingManager",c),n.bind("$destroy",function(){r.deleteObject("mapDrawingManager",c)})}}}])}(),function(){"use strict";angular.module("ngMap").directive("dynamicMapsEngineLayer",["Attr2MapOptions",function(e){var t=e,n=function(e,t){var n=new google.maps.visualization.DynamicMapsEngineLayer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n};return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=t.filter(r),s=t.getOptions(a,{scope:e}),p=t.getEvents(e,a,p),c=n(s,p);i.addObject("mapsEngineLayers",c)}}}])}(),function(){"use strict";angular.module("ngMap").directive("fusionTablesLayer",["Attr2MapOptions",function(e){var t=e,n=function(e,t){var n=new google.maps.FusionTablesLayer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n};return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=t.filter(r),s=t.getOptions(a,{scope:e}),p=t.getEvents(e,a,p),c=n(s,p);i.addObject("fusionTablesLayers",c)}}}])}(),function(){"use strict";angular.module("ngMap").directive("heatmapLayer",["Attr2MapOptions","$window",function(e,t){var n=e;return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=n.filter(r),s=n.getOptions(a,{scope:e});if(s.data=t[r.data]||e[r.data],!(s.data instanceof Array))throw"invalid heatmap data";s.data=new google.maps.MVCArray(s.data);{var p=new google.maps.visualization.HeatmapLayer(s);n.getEvents(e,a)}i.addObject("heatmapLayers",p)}}}])}(),function(){"use strict";var e=function(e,t,n,o,r){var i=e,a=function(e,o,r){var i;!e.position||e.position instanceof google.maps.LatLng||delete e.position,i=new google.maps.InfoWindow(e);for(var a in o)a&&google.maps.event.addListener(i,a,o[a]);var s=r.html().trim();if(1!=angular.element(s).length)throw"info-window working as a template must have a container";return i.__template=s.replace(/\s?ng-non-bindable[='"]+/,""),i.__open=function(e,o,r){n(function(){r&&(o.anchor=r);var n=t(i.__template)(o);i.setContent(n[0]),o.$apply(),r&&r.getPosition?i.open(e,r):r&&r instanceof google.maps.LatLng?(i.open(e),i.setPosition(r)):i.open(e);var a=i.content.parentElement.parentElement.parentElement;a.className="ng-map-info-window"})},i},s=function(e,t,n,s){s=s[0]||s[1],t.css("display","none");var p,c=i.orgAttributes(t),u=i.filter(n),l=i.getOptions(u,{scope:e}),g=i.getEvents(e,u);!l.position||l.position instanceof google.maps.LatLng||(p=l.position);var d=a(l,g,t);p&&r.getGeoLocation(p).then(function(t){d.setPosition(t),d.__open(s.map,e,t);var r=n.geoCallback;r&&o(r)(e)}),s.addObject("infoWindows",d),s.observeAttrSetObj(c,n,d),s.showInfoWindow=s.map.showInfoWindow=s.showInfoWindow||function(t,n,o){var r="string"==typeof t?t:n,i="string"==typeof t?n:o;if("string"==typeof i)if("undefined"!=typeof s.map.markers&&"undefined"!=typeof s.map.markers[i])i=s.map.markers[i];else{if("undefined"==typeof s.map.customMarkers[i])throw new Error("Cant open info window for id "+i+". Marker or CustomMarker is not defined");i=s.map.customMarkers[i]}var a=s.map.infoWindows[r],p=i?i:this.getPosition?this:null;a.__open(s.map,e,p),s.singleInfoWindow&&(s.lastInfoWindow&&e.hideInfoWindow(s.lastInfoWindow),s.lastInfoWindow=r)},s.hideInfoWindow=s.map.hideInfoWindow=s.hideInfoWindow||function(e,t){var n="string"==typeof e?e:t,o=s.map.infoWindows[n];o.close()},e.showInfoWindow=s.map.showInfoWindow,e.hideInfoWindow=s.map.hideInfoWindow,r.getMap().then(function(t){if(d.visible&&d.__open(t,e),d.visibleOnMarker){var n=d.visibleOnMarker;d.__open(t,e,t.markers[n])}})};return{restrict:"E",require:["?^map","?^ngMap"],link:s}};e.$inject=["Attr2MapOptions","$compile","$timeout","$parse","NgMap"],angular.module("ngMap").directive("infoWindow",e)}(),function(){"use strict";angular.module("ngMap").directive("kmlLayer",["Attr2MapOptions",function(e){var t=e,n=function(e,t){var n=new google.maps.KmlLayer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n};return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=t.orgAttributes(o),s=t.filter(r),p=t.getOptions(s,{scope:e}),c=t.getEvents(e,s),u=n(p,c);i.addObject("kmlLayers",u),i.observeAttrSetObj(a,r,u),o.bind("$destroy",function(){i.deleteObject("kmlLayers",u)})}}}])}(),function(){"use strict";angular.module("ngMap").directive("mapData",["Attr2MapOptions","NgMap",function(e,t){var n=e;return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r){var i=n.filter(r),a=n.getOptions(i,{scope:e}),s=n.getEvents(e,i,s);t.getMap().then(function(t){for(var n in a){var o=a[n];"function"==typeof e[o]?t.data[n](e[o]):t.data[n](o)}for(var r in s)t.data.addListener(r,s[r])})}}}])}(),function(){"use strict";var e,t,n,o,r=function(n,r,i){var a=i.mapLazyLoadParams||i.mapLazyLoad;if(window.lazyLoadCallback=function(){e(function(){r.html(o),t(r.contents())(n)},100)},void 0===window.google||void 0===window.google.maps){var s=document.createElement("script");s.src=a+(a.indexOf("?")>-1?"&":"?")+"callback=lazyLoadCallback",document.querySelector('script[src="'+s.src+'"]')||document.body.appendChild(s)}else r.html(o),t(r.contents())(n)},i=function(e,t){return!t.mapLazyLoad&&void 0,o=e.html(),n=t.mapLazyLoad,void 0!==window.google&&void 0!==window.google.maps?!1:(e.html(""),{pre:r})},a=function(n,o){return t=n,e=o,{compile:i}};a.$inject=["$compile","$timeout"],angular.module("ngMap").directive("mapLazyLoad",a)}(),function(){"use strict";angular.module("ngMap").directive("mapType",["$parse","NgMap",function(e,t){return{restrict:"E",require:["?^map","?^ngMap"],link:function(n,o,r,i){i=i[0]||i[1];var a,s=r.name;if(!s)throw"invalid map-type name";if(a=e(r.object)(n),!a)throw"invalid map-type object";t.getMap().then(function(e){e.mapTypes.set(s,a)}),i.addObject("mapTypes",a)}}}])}(),function(){"use strict";var e=function(){return{restrict:"AE",controller:"__MapController",conrollerAs:"ngmap"}};angular.module("ngMap").directive("map",[e]),angular.module("ngMap").directive("ngMap",[e])}(),function(){"use strict";angular.module("ngMap").directive("mapsEngineLayer",["Attr2MapOptions",function(e){var t=e,n=function(e,t){var n=new google.maps.visualization.MapsEngineLayer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n};return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=t.filter(r),s=t.getOptions(a,{scope:e}),p=t.getEvents(e,a,p),c=n(s,p);i.addObject("mapsEngineLayers",c)}}}])}(),function(){"use strict";var e,t,n,o=function(e,t){var o;if(n.defaultOptions.marker)for(var r in n.defaultOptions.marker)"undefined"==typeof e[r]&&(e[r]=n.defaultOptions.marker[r]);e.position instanceof google.maps.LatLng||(e.position=new google.maps.LatLng(0,0)),o=new google.maps.Marker(e),Object.keys(t).length>0;for(var i in t)i&&google.maps.event.addListener(o,i,t[i]);return o},r=function(r,i,a,s){s=s[0]||s[1];var p,c=e.orgAttributes(i),u=e.filter(a),l=e.getOptions(u,r,{scope:r}),g=e.getEvents(r,u);l.position instanceof google.maps.LatLng||(p=l.position);var d=o(l,g);s.addObject("markers",d),p&&n.getGeoLocation(p).then(function(e){d.setPosition(e),l.centered&&d.map.setCenter(e);var n=a.geoCallback;n&&t(n)(r)}),s.observeAttrSetObj(c,a,d),i.bind("$destroy",function(){s.deleteObject("markers",d)})},i=function(o,i,a){return e=o,t=i,n=a,{restrict:"E",require:["^?map","?^ngMap"],link:r}};i.$inject=["Attr2MapOptions","$parse","NgMap"],angular.module("ngMap").directive("marker",i)}(),function(){"use strict";angular.module("ngMap").directive("overlayMapType",["NgMap",function(e){return{restrict:"E",require:["?^map","?^ngMap"],link:function(t,n,o,r){r=r[0]||r[1];var i=o.initMethod||"insertAt",a=t[o.object];e.getMap().then(function(e){if("insertAt"==i){var t=parseInt(o.index,10);e.overlayMapTypes.insertAt(t,a)}else"push"==i&&e.overlayMapTypes.push(a)}),r.addObject("overlayMapTypes",a)}}}])}(),function(){"use strict";var e=function(e,t){var n=e,o=function(e,o,r,i){if("false"===r.placesAutoComplete)return!1;var a=n.filter(r),s=n.getOptions(a,{scope:e}),p=n.getEvents(e,a),c=new google.maps.places.Autocomplete(o[0],s);for(var u in p)google.maps.event.addListener(c,u,p[u]);var l=function(){t(function(){i&&i.$setViewValue(o.val())},100)};google.maps.event.addListener(c,"place_changed",l),o[0].addEventListener("change",l),r.$observe("types",function(e){if(e){var t=n.toOptionValue(e,{key:"types"});c.setTypes(t)}})};return{restrict:"A",require:"?ngModel",link:o}};e.$inject=["Attr2MapOptions","$timeout"],angular.module("ngMap").directive("placesAutoComplete",e)}(),function(){"use strict";var e=function(e,t){var n,o=e.name;switch(delete e.name,o){case"circle":e.center instanceof google.maps.LatLng||(e.center=new google.maps.LatLng(0,0)),n=new google.maps.Circle(e);break;case"polygon":n=new google.maps.Polygon(e);break;case"polyline":n=new google.maps.Polyline(e);break;case"rectangle":n=new google.maps.Rectangle(e);break;case"groundOverlay":case"image":var r=e.url,i={opacity:e.opacity,clickable:e.clickable,id:e.id};n=new google.maps.GroundOverlay(r,e.bounds,i)}for(var a in t)t[a]&&google.maps.event.addListener(n,a,t[a]);return n},t=function(t,n,o){var r=t,i=function(t,i,a,s){s=s[0]||s[1];var p,c,u=r.orgAttributes(i),l=r.filter(a),g=r.getOptions(l,{scope:t}),d=r.getEvents(t,l);c=g.name,g.center instanceof google.maps.LatLng||(p=g.center);var f=e(g,d);s.addObject("shapes",f),p&&"circle"==c&&o.getGeoLocation(p).then(function(e){f.setCenter(e),f.centered&&f.map.setCenter(e);var o=a.geoCallback;o&&n(o)(t)}),s.observeAttrSetObj(u,a,f),i.bind("$destroy",function(){s.deleteObject("shapes",f)})};return{restrict:"E",require:["?^map","?^ngMap"],link:i}};t.$inject=["Attr2MapOptions","$parse","NgMap"],angular.module("ngMap").directive("shape",t)}(),function(){"use strict";var e=function(e,t){var n=e,o=function(e,t,n){var o,r;t.container&&(r=document.getElementById(t.container),r=r||document.querySelector(t.container)),r?o=new google.maps.StreetViewPanorama(r,t):(o=e.getStreetView(),o.setOptions(t));for(var i in n)i&&google.maps.event.addListener(o,i,n[i]);return o},r=function(e,r,i){var a=n.filter(i),s=n.getOptions(a,{scope:e}),p=n.getControlOptions(a),c=angular.extend(s,p),u=n.getEvents(e,a);t.getMap().then(function(e){var t=o(e,c,u);e.setStreetView(t),!t.getPosition()&&t.setPosition(e.getCenter()),google.maps.event.addListener(t,"position_changed",function(){t.getPosition()!==e.getCenter()&&e.setCenter(t.getPosition())});var n=google.maps.event.addListener(e,"center_changed",function(){t.setPosition(e.getCenter()),google.maps.event.removeListener(n)})})};return{restrict:"E",require:["?^map","?^ngMap"],link:r}};e.$inject=["Attr2MapOptions","NgMap"],angular.module("ngMap").directive("streetViewPanorama",e)}(),function(){"use strict";angular.module("ngMap").directive("trafficLayer",["Attr2MapOptions",function(e){var t=e,n=function(e,t){var n=new google.maps.TrafficLayer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n};return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=t.orgAttributes(o),s=t.filter(r),p=t.getOptions(s,{scope:e}),c=t.getEvents(e,s),u=n(p,c);i.addObject("trafficLayers",u),i.observeAttrSetObj(a,r,u),o.bind("$destroy",function(){i.deleteObject("trafficLayers",u)})}}}])}(),function(){"use strict";angular.module("ngMap").directive("transitLayer",["Attr2MapOptions",function(e){var t=e,n=function(e,t){var n=new google.maps.TransitLayer(e);for(var o in t)google.maps.event.addListener(n,o,t[o]);return n};return{restrict:"E",require:["?^map","?^ngMap"],link:function(e,o,r,i){i=i[0]||i[1];var a=t.orgAttributes(o),s=t.filter(r),p=t.getOptions(s,{scope:e}),c=t.getEvents(e,s),u=n(p,c);i.addObject("transitLayers",u),i.observeAttrSetObj(a,r,u),o.bind("$destroy",function(){i.deleteObject("transitLayers",u)})}}}])}(),function(){"use strict";var e=/([\:\-\_]+(.))/g,t=/^moz([A-Z])/,n=function(){return function(n){return n.replace(e,function(e,t,n,o){return o?n.toUpperCase():n}).replace(t,"Moz$1")}};angular.module("ngMap").filter("camelCase",n)}(),function(){"use strict";var e=function(){return function(e){try{return JSON.parse(e),e}catch(t){return e.replace(/([\$\w]+)\s*:/g,function(e,t){return'"'+t+'":'}).replace(/'([^']+)'/g,function(e,t){return'"'+t+'"'})}}};angular.module("ngMap").filter("jsonize",e)}(),function(){"use strict";var isoDateRE=/^(\d{4}\-\d\d\-\d\d([tT][\d:\.]*)?)([zZ]|([+\-])(\d\d):?(\d\d))?$/,Attr2MapOptions=function($parse,$timeout,$log,NavigatorGeolocation,GeoCoder,camelCaseFilter,jsonizeFilter){var orgAttributes=function(e){e.length>0&&(e=e[0]);for(var t={},n=0;na?r.reject("could not find map"):e.setTimeout(function(){o(t+100)},100)}t=t||{};var r=n.defer(),i=t.id||0,a=t.timeout||2e3;return o(0),r.promise},l=function(e){if(e.map){var t=Object.keys(s).length;s[e.map.id||t]=e}},g=function(e){var t=Object.keys(s).length-1,n=e.map.id||t;if(e.map){for(var o in e.mapEvents)google.maps.event.clearListeners(e.map,o);e.map.controls&&e.map.controls.forEach(function(e){e.clear()})}e.map.heatmapLayers&&Object.keys(e.map.heatmapLayers).forEach(function(t){e.deleteObject("heatmapLayers",e.map.heatmapLayers[t])}),delete s[n]},d=function(e,t){var r=n.defer();return!e||e.match(/^current/i)?o.getCurrentPosition(t).then(function(e){var t=e.coords.latitude,n=e.coords.longitude,o=new google.maps.LatLng(t,n);r.resolve(o)},function(e){r.reject(e)}):i.geocode({address:e}).then(function(e){r.resolve(e[0].geometry.location)},function(e){r.reject(e)}),r.promise},f=function(e,t){return function(n){if(n){var o=a("set-"+e),i=r.toOptionValue(n,{key:e});t[o]&&(e.match(/center|position/)&&"string"==typeof i?d(i).then(function(e){t[o](e)}):t[o](i))}}},m=function(e){var t=e.getAttribute("default-style");"true"==t?(e.style.display="block",e.style.height="300px"):("block"!=p(e,"display")&&(e.style.display="block"),p(e,"height").match(/^(0|auto)/)&&(e.style.height="300px"))};angular.module("ngMap").provider("NgMap",function(){var s={};this.setDefaultOptions=function(e){s=e};var p=function(p,v,y,h,M,O,b){return e=p,t=v[0],n=y,o=h,r=M,i=O,a=b,{defaultOptions:s,addMap:l,deleteMap:g,getMap:u,initMap:c,setStyle:m,getGeoLocation:d,observeAndSet:f}};p.$inject=["$window","$document","$q","NavigatorGeolocation","Attr2MapOptions","GeoCoder","camelCaseFilter"],this.$get=p})}(),function(){"use strict";var e,t=function(t,n){n=n||t.getCenter();var o=e.defer(),r=new google.maps.StreetViewService;return r.getPanoramaByLocation(n||t.getCenter,100,function(e,t){t===google.maps.StreetViewStatus.OK?o.resolve(e.location.pano):o.resolve(!1)}),o.promise},n=function(e,t){var n=new google.maps.StreetViewPanorama(e.getDiv(),{enableCloseButton:!0});n.setPano(t)},o=function(o){return e=o,{getPanorama:t,setPanorama:n}};o.$inject=["$q"],angular.module("ngMap").service("StreetView",o)}(); \ No newline at end of file diff --git a/www/libs/angularjs-google-maps/version-1.16.7 b/www/libs/angularjs-google-maps/version-1.16.7 new file mode 100644 index 0000000..e69de29 diff --git a/www/libs/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css b/www/libs/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css new file mode 100644 index 0000000..6fac3b0 --- /dev/null +++ b/www/libs/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css @@ -0,0 +1,10 @@ +/* + * Bootstrap Duallistbox - v3.0.5 + * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices. + * http://www.virtuosoft.eu/code/bootstrap-duallistbox/ + * + * Made by István Ujj-Mészáros + * Under Apache License v2.0 License + */ + +.bootstrap-duallistbox-container .buttons{width:100%;margin-bottom:-1px}.bootstrap-duallistbox-container label{display:block}.bootstrap-duallistbox-container .info{display:inline-block;margin-bottom:5px;font-size:11px}.bootstrap-duallistbox-container .clear1,.bootstrap-duallistbox-container .clear2{display:none;font-size:10px}.bootstrap-duallistbox-container .box1.filtered .clear1,.bootstrap-duallistbox-container .box2.filtered .clear2{display:inline-block}.bootstrap-duallistbox-container .move,.bootstrap-duallistbox-container .remove{width:60%}.bootstrap-duallistbox-container .btn-group .btn{border-bottom-left-radius:0;border-bottom-right-radius:0}.bootstrap-duallistbox-container select{border-top-left-radius:0;border-top-right-radius:0}.bootstrap-duallistbox-container .moveall,.bootstrap-duallistbox-container .removeall{width:40%}.bootstrap-duallistbox-container.bs2compatible .btn-group>.btn+.btn{margin-left:0}.bootstrap-duallistbox-container select{width:100%;height:300px;padding:0}.bootstrap-duallistbox-container .filter{display:inline-block;width:100%;height:31px;margin:0 0 5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-duallistbox-container .filter.placeholder{color:#aaa}.bootstrap-duallistbox-container.moveonselect .move,.bootstrap-duallistbox-container.moveonselect .remove{display:none}.bootstrap-duallistbox-container.moveonselect .moveall,.bootstrap-duallistbox-container.moveonselect .removeall{width:100%} \ No newline at end of file diff --git a/www/libs/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js b/www/libs/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js new file mode 100644 index 0000000..dbe3564 --- /dev/null +++ b/www/libs/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js @@ -0,0 +1,9 @@ +/* + * Bootstrap Duallistbox - v3.0.5 + * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices. + * http://www.virtuosoft.eu/code/bootstrap-duallistbox/ + * + * Made by István Ujj-Mészáros + * Under Apache License v2.0 License + */ +!function(a,b,c,d){function e(b,c){this.element=a(b),this.settings=a.extend({},v,c),this._defaults=v,this._name=u,this.init()}function f(a){a.element.trigger("change")}function g(b){b.element.find("option").each(function(c,d){var e=a(d);"undefined"==typeof e.data("original-index")&&e.data("original-index",b.elementCount++),"undefined"==typeof e.data("_selected")&&e.data("_selected",!1)})}function h(b,c,d){b.element.find("option").each(function(b,e){var f=a(e);f.data("original-index")===c&&f.prop("selected",d)})}function i(a,b){return a.replace(/\{(\d+)\}/g,function(a,c){return"undefined"!=typeof b[c]?b[c]:a})}function j(a){if(a.settings.infoText){var b=a.elements.select1.find("option").length,c=a.elements.select2.find("option").length,d=a.element.find("option").length-a.selectedElements,e=a.selectedElements,f="";f=0===d?a.settings.infoTextEmpty:b===d?i(a.settings.infoText,[b,d]):i(a.settings.infoTextFiltered,[b,d]),a.elements.info1.html(f),a.elements.box1.toggleClass("filtered",!(b===d||0===d)),f=0===e?a.settings.infoTextEmpty:c===e?i(a.settings.infoText,[c,e]):i(a.settings.infoTextFiltered,[c,e]),a.elements.info2.html(f),a.elements.box2.toggleClass("filtered",!(c===e||0===e))}}function k(b){b.selectedElements=0,b.elements.select1.empty(),b.elements.select2.empty(),b.element.find("option").each(function(c,d){var e=a(d);e.prop("selected")?(b.selectedElements++,b.elements.select2.append(e.clone(!0).prop("selected",e.data("_selected")))):b.elements.select1.append(e.clone(!0).prop("selected",e.data("_selected")))}),b.settings.showFilterInputs&&(l(b,1),l(b,2)),j(b)}function l(b,c){if(b.settings.showFilterInputs){m(b,c),b.elements["select"+c].empty().scrollTop(0);var d=new RegExp(a.trim(b.elements["filterInput"+c].val()),"gi"),e=b.element.find("option"),f=b.element;f=1===c?e.not(":selected"):f.find("option:selected"),f.each(function(f,g){var h=a(g),i=!0;(g.text.match(d)||b.settings.filterOnValues&&h.attr("value").match(d))&&(i=!1,b.elements["select"+c].append(h.clone(!0).prop("selected",h.data("_selected")))),e.eq(h.data("original-index")).data("filtered"+c,i)}),j(b)}}function m(b,c){var d=b.element.find("option");b.elements["select"+c].find("option").each(function(b,c){var e=a(c);d.eq(e.data("original-index")).data("_selected",e.prop("selected"))})}function n(b){b.find("option").sort(function(b,c){return a(b).data("original-index")>a(c).data("original-index")?1:-1}).appendTo(b)}function o(a){a.elements.select1.find("option").each(function(){a.element.find("option").data("_selected",!1)})}function p(b){"all"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect?"moved"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect||m(b,1):(m(b,1),m(b,2)),b.elements.select1.find("option:selected").each(function(c,d){var e=a(d);e.data("filtered1")||h(b,e.data("original-index"),!0)}),k(b),f(b),n(b.elements.select2)}function q(b){"all"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect?"moved"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect||m(b,2):(m(b,1),m(b,2)),b.elements.select2.find("option:selected").each(function(c,d){var e=a(d);e.data("filtered2")||h(b,e.data("original-index"),!1)}),k(b),f(b),n(b.elements.select1)}function r(b){"all"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect?"moved"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect||m(b,1):(m(b,1),m(b,2)),b.element.find("option").each(function(b,c){var d=a(c);d.data("filtered1")||d.prop("selected",!0)}),k(b),f(b)}function s(b){"all"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect?"moved"!==b.settings.preserveSelectionOnMove||b.settings.moveOnSelect||m(b,2):(m(b,1),m(b,2)),b.element.find("option").each(function(b,c){var d=a(c);d.data("filtered2")||d.prop("selected",!1)}),k(b),f(b)}function t(a){a.elements.form.submit(function(b){a.elements.filterInput1.is(":focus")?(b.preventDefault(),a.elements.filterInput1.focusout()):a.elements.filterInput2.is(":focus")&&(b.preventDefault(),a.elements.filterInput2.focusout())}),a.element.on("bootstrapDualListbox.refresh",function(b,c){a.refresh(c)}),a.elements.filterClear1.on("click",function(){a.setNonSelectedFilter("",!0)}),a.elements.filterClear2.on("click",function(){a.setSelectedFilter("",!0)}),a.elements.moveButton.on("click",function(){p(a)}),a.elements.moveAllButton.on("click",function(){r(a)}),a.elements.removeButton.on("click",function(){q(a)}),a.elements.removeAllButton.on("click",function(){s(a)}),a.elements.filterInput1.on("change keyup",function(){l(a,1)}),a.elements.filterInput2.on("change keyup",function(){l(a,2)})}var u="bootstrapDualListbox",v={bootstrap2Compatible:!1,filterTextClear:"show all",filterPlaceHolder:"Filter",moveSelectedLabel:"Move selected",moveAllLabel:"Move all",removeSelectedLabel:"Remove selected",removeAllLabel:"Remove all",moveOnSelect:!0,preserveSelectionOnMove:!1,selectedListLabel:!1,nonSelectedListLabel:!1,helperSelectNamePostfix:"_helper",selectorMinimalHeight:100,showFilterInputs:!0,nonSelectedFilter:"",selectedFilter:"",infoText:"Showing all {0}",infoTextFiltered:'Filtered {0} from {1}',infoTextEmpty:"Empty list",filterOnValues:!1},w=/android/i.test(navigator.userAgent.toLowerCase());e.prototype={init:function(){this.container=a('
    ').insertBefore(this.element),this.elements={originalSelect:this.element,box1:a(".box1",this.container),box2:a(".box2",this.container),filterInput1:a(".box1 .filter",this.container),filterInput2:a(".box2 .filter",this.container),filterClear1:a(".box1 .clear1",this.container),filterClear2:a(".box2 .clear2",this.container),label1:a(".box1 > label",this.container),label2:a(".box2 > label",this.container),info1:a(".box1 .info",this.container),info2:a(".box2 .info",this.container),select1:a(".box1 select",this.container),select2:a(".box2 select",this.container),moveButton:a(".box1 .move",this.container),removeButton:a(".box2 .remove",this.container),moveAllButton:a(".box1 .moveall",this.container),removeAllButton:a(".box2 .removeall",this.container),form:a(a(".box1 .filter",this.container)[0].form)},this.originalSelectName=this.element.attr("name")||"";var b="bootstrap-duallistbox-nonselected-list_"+this.originalSelectName,c="bootstrap-duallistbox-selected-list_"+this.originalSelectName;return this.elements.select1.attr("id",b),this.elements.select2.attr("id",c),this.elements.label1.attr("for",b),this.elements.label2.attr("for",c),this.selectedElements=0,this.elementCount=0,this.setBootstrap2Compatible(this.settings.bootstrap2Compatible),this.setFilterTextClear(this.settings.filterTextClear),this.setFilterPlaceHolder(this.settings.filterPlaceHolder),this.setMoveSelectedLabel(this.settings.moveSelectedLabel),this.setMoveAllLabel(this.settings.moveAllLabel),this.setRemoveSelectedLabel(this.settings.removeSelectedLabel),this.setRemoveAllLabel(this.settings.removeAllLabel),this.setMoveOnSelect(this.settings.moveOnSelect),this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove),this.setSelectedListLabel(this.settings.selectedListLabel),this.setNonSelectedListLabel(this.settings.nonSelectedListLabel),this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix),this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight),g(this),this.setShowFilterInputs(this.settings.showFilterInputs),this.setNonSelectedFilter(this.settings.nonSelectedFilter),this.setSelectedFilter(this.settings.selectedFilter),this.setInfoText(this.settings.infoText),this.setInfoTextFiltered(this.settings.infoTextFiltered),this.setInfoTextEmpty(this.settings.infoTextEmpty),this.setFilterOnValues(this.settings.filterOnValues),this.element.hide(),t(this),k(this),this.element},setBootstrap2Compatible:function(a,b){return this.settings.bootstrap2Compatible=a,a?(this.container.removeClass("row").addClass("row-fluid bs2compatible"),this.container.find(".box1, .box2").removeClass("col-md-6").addClass("span6"),this.container.find(".clear1, .clear2").removeClass("btn-default btn-xs").addClass("btn-mini"),this.container.find("input, select").removeClass("form-control"),this.container.find(".btn").removeClass("btn-default"),this.container.find(".moveall > i, .move > i").removeClass("glyphicon glyphicon-arrow-right").addClass("icon-arrow-right"),this.container.find(".removeall > i, .remove > i").removeClass("glyphicon glyphicon-arrow-left").addClass("icon-arrow-left")):(this.container.removeClass("row-fluid bs2compatible").addClass("row"),this.container.find(".box1, .box2").removeClass("span6").addClass("col-md-6"),this.container.find(".clear1, .clear2").removeClass("btn-mini").addClass("btn-default btn-xs"),this.container.find("input, select").addClass("form-control"),this.container.find(".btn").addClass("btn-default"),this.container.find(".moveall > i, .move > i").removeClass("icon-arrow-right").addClass("glyphicon glyphicon-arrow-right"),this.container.find(".removeall > i, .remove > i").removeClass("icon-arrow-left").addClass("glyphicon glyphicon-arrow-left")),b&&k(this),this.element},setFilterTextClear:function(a,b){return this.settings.filterTextClear=a,this.elements.filterClear1.html(a),this.elements.filterClear2.html(a),b&&k(this),this.element},setFilterPlaceHolder:function(a,b){return this.settings.filterPlaceHolder=a,this.elements.filterInput1.attr("placeholder",a),this.elements.filterInput2.attr("placeholder",a),b&&k(this),this.element},setMoveSelectedLabel:function(a,b){return this.settings.moveSelectedLabel=a,this.elements.moveButton.attr("title",a),b&&k(this),this.element},setMoveAllLabel:function(a,b){return this.settings.moveAllLabel=a,this.elements.moveAllButton.attr("title",a),b&&k(this),this.element},setRemoveSelectedLabel:function(a,b){return this.settings.removeSelectedLabel=a,this.elements.removeButton.attr("title",a),b&&k(this),this.element},setRemoveAllLabel:function(a,b){return this.settings.removeAllLabel=a,this.elements.removeAllButton.attr("title",a),b&&k(this),this.element},setMoveOnSelect:function(a,b){if(w&&(a=!0),this.settings.moveOnSelect=a,this.settings.moveOnSelect){this.container.addClass("moveonselect");var c=this;this.elements.select1.on("change",function(){p(c)}),this.elements.select2.on("change",function(){q(c)})}else this.container.removeClass("moveonselect"),this.elements.select1.off("change"),this.elements.select2.off("change");return b&&k(this),this.element},setPreserveSelectionOnMove:function(a,b){return w&&(a=!1),this.settings.preserveSelectionOnMove=a,b&&k(this),this.element},setSelectedListLabel:function(a,b){return this.settings.selectedListLabel=a,a?this.elements.label2.show().html(a):this.elements.label2.hide().html(a),b&&k(this),this.element},setNonSelectedListLabel:function(a,b){return this.settings.nonSelectedListLabel=a,a?this.elements.label1.show().html(a):this.elements.label1.hide().html(a),b&&k(this),this.element},setHelperSelectNamePostfix:function(a,b){return this.settings.helperSelectNamePostfix=a,a?(this.elements.select1.attr("name",this.originalSelectName+a+"1"),this.elements.select2.attr("name",this.originalSelectName+a+"2")):(this.elements.select1.removeAttr("name"),this.elements.select2.removeAttr("name")),b&&k(this),this.element},setSelectOrMinimalHeight:function(a,b){this.settings.selectorMinimalHeight=a;var c=this.element.height();return this.element.height()","\"","'","`","source","Object","keys","join","testRegexp","RegExp","replaceRegexp","string","test","match","Plugin","option","event","args","arguments","_option","_event","shift","apply","value","chain","$this","is","data","options","i","hasOwnProperty","config","extend","Selectpicker","DEFAULTS","fn","selectpicker","defaults","Function","String","prototype","includes","toString","defineProperty","object","$defineProperty","result","error","indexOf","search","TypeError","call","stringLength","length","searchString","searchLength","position","undefined","pos","Number","start","Math","min","max","configurable","writable","startsWith","index","charCodeAt","o","k","r","push","triggerNative","eventName","el","dispatchEvent","Event","bubbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","icontains","obj","meta","$obj","haystack","toUpperCase","ibegins","aicontains","aibegins","element","e","stopPropagation","preventDefault","$element","$newElement","$button","$menu","$lis","title","attr","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","children","$menuInner","$searchbox","find","click","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","destroyLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","className","appendChild","createTextNode","insertBefore","firstChild","selectedIndex","selected","optionClass","cssText","subtext","icon","isDisabled","disabled","parentElement","tagName","optGroupClass","label","labelSubtext","labelIcon","previousElementSibling","eq","findLis","updateLi","notDisabled","setDisabled","setSelected","tabIndex","selectedItems","map","toArray","split","totalCount","not","tr8nText","trim","status","buttonClass","removeClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","parentNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","menuExtras","marginTop","marginBottom","removeChild","setSize","menuHeight","getHeight","selectOffsetTop","selectOffsetBot","$window","window","selectHeight","divHeight","posVert","offset","top","scrollTop","height","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","filter","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","off","optIndex","slice","last","divLength","$selectClone","clone","appendTo","$selectClone2","ulWidth","outerWidth","btnWidth","actualHeight","getPlacement","left","offsetWidth","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","$options","$option","state","$optgroup","maxOptionsGrp","blur","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$searchBase","_searchStyle","$lisVisible","keydown","$items","next","first","prev","nextPrev","isActive","$parent","selector","keyCodeMap",32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,"nextAll","prevAll","count","prevKey","keyIndex","toLowerCase","substring","elem","old","Constructor","noConflict","$selectpicker"],"mappings":"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"} \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/bootstrap-select.min.js b/www/libs/bootstrap-select/dist/js/bootstrap-select.min.js new file mode 100644 index 0000000..d2ed90e --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/bootstrap-select.min.js @@ -0,0 +1,8 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw TypeError();var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw TypeError();var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw TypeError();var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw TypeError();var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j'+this.options.header+"
    ":"",g=this.options.liveSearch?'":"",h=this.multiple&&this.options.actionsBox?'
    ":"",i=this.multiple&&this.options.doneButton?'
    ":"",j='
    ";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return""+a+""},j=function(a,e,f,g){return'"+a+''};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?''+c.data("subtext")+"":"",o="undefined"!=typeof c.data("icon")?' ':"",p=this.disabled||"OPTGROUP"===this.parentElement.tagName&&this.parentElement.disabled;if(""!==o&&p&&(o=""+o+""),d.options.hideDisabled&&p)return void h--;if(c.data("content")||(l=o+''+l+n+""),"OPTGROUP"===this.parentElement.tagName&&c.data("divider")!==!0){var q=" "+this.parentElement.className||"";if(0===c.index()){f+=1;var r=this.parentElement.label,s="undefined"!=typeof c.parent().data("subtext")?''+c.parent().data("subtext")+"":"",t=c.parent().data("icon")?' ':"";r=t+''+r+s+"",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(r,null,"dropdown-header"+q,f))}e.push(i(j(l,"opt "+g+q,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentElement.tagName&&this.parentElement.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentElement.tagName&&this.parentElement.disabled))return!1;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?' ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' '+c.data("subtext")+"":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){var b,c,d=this,e="
    ",f=a(e),g=function(a){f.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,f.css({top:b.top+c,left:b.left,width:a[0].offsetWidth,position:"absolute"})};this.$newElement.on("click",function(){d.isDisabled()||(g(a(this)),f.appendTo(d.options.container),f.toggleClass("open",!a(this).hasClass("open")),f.append(d.$menu))}),a(window).on("resize scroll",function(){g(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),f.detach()})},setSelected:function(a,b,c){if(!c)var c=this.findLis().eq(this.liObj[a]);c.toggleClass("selected",b)},setDisabled:function(a,b,c){if(!c)var c=this.findLis().eq(this.liObj[a]);b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.is("[tabindex]")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex")))},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$newElement.on("click",function(){b.setSize(),b.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menu.find(".selected a").focus()})}),this.$menu.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l
    ');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("
    "+r+"
    ")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("
    "+s+"
    ")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&(b.$element.triggerNative("change"),b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]))}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menu.on("click","li.divider, li.dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll(),b.$element.triggerNative("change")}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('
  • ');this.$newElement.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.eq(0).index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a="icontains";switch(this.options.liveSearchStyle){case"begins":case"startsWith":a="ibegins";break;case"contains":}return a},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},selectAll:function(){this.findLis(),this.$element.find("option:enabled").not("[data-divider], [data-hidden]").prop("selected",!0),this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").addClass("selected"),this.render(!1)},deselectAll:function(){this.findLis(),this.$element.find("option:enabled").not("[data-divider], [data-hidden]").prop("selected",!1),this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").removeClass("selected"),this.render(!1)},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li a",n),l=o.$menu.parent().hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$newElement.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)",n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$newElement.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.filter(":focus")),g=d.parent(p).first().data("originalIndex"),h=d.parent(p).last().data("originalIndex"),f=d.eq(e).parent().nextAll(p).eq(0).data("originalIndex"),i=d.eq(e).parent().prevAll(p).eq(0).data("originalIndex"),j=d.eq(f).parent().prevAll(p).eq(0).data("originalIndex"),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&(e-=1),e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&(e+=1),-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).parent().hasClass("disabled")||a.trim(a(this).text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).parent().index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menu.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device").appendTo(this.$newElement),this.options.container&&this.$menu.hide()},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(jQuery)}); +//# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-bg_BG.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-bg_BG.js new file mode 100644 index 0000000..3c344a4 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-bg_BG.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Нищо избрано', + noneResultsText: 'Няма резултат за {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)', + (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)' + ]; + }, + selectAllText: 'Избери всички', + deselectAllText: 'Размаркирай всички', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js new file mode 100644 index 0000000..93dbc93 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нищо избрано",noneResultsText:"Няма резултат за {0}",countSelectedText:function(a,b){return 1==a?"{0} избран елемент":"{0} избрани елемента"},maxOptionsText:function(a,b){return[1==a?"Лимита е достигнат ({n} елемент максимум)":"Лимита е достигнат ({n} елемента максимум)",1==b?"Груповия лимит е достигнат ({n} елемент максимум)":"Груповия лимит е достигнат ({n} елемента максимум)"]},selectAllText:"Избери всички",deselectAllText:"Размаркирай всички",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js new file mode 100644 index 0000000..90ac9a8 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nic není vybráno', + noneResultsText: 'Žádné výsledky {0}', + countSelectedText: 'Označeno {0} z {1}', + maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js new file mode 100644 index 0000000..c3b9a0e --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky {0}",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-da_DK.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-da_DK.js new file mode 100644 index 0000000..789a80f --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-da_DK.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Intet valgt', + noneResultsText: 'Ingen resultater fundet {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} valgt" : "{0} valgt"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)', + (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)' + ]; + }, + selectAllText: 'Markér alle', + deselectAllText: 'Afmarkér alle', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js new file mode 100644 index 0000000..a093cb9 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Intet valgt",noneResultsText:"Ingen resultater fundet {0}",countSelectedText:function(a,b){return"{0} valgt"},maxOptionsText:function(a,b){return[1==a?"Begrænsning nået (max {n} valgt)":"Begrænsning nået (max {n} valgte)",1==b?"Gruppe-begrænsning nået (max {n} valgt)":"Gruppe-begrænsning nået (max {n} valgte)"]},selectAllText:"Markér alle",deselectAllText:"Afmarkér alle",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-de_DE.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-de_DE.js new file mode 100644 index 0000000..91b72ae --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-de_DE.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Bitte wählen...', + noneResultsText: 'Keine Ergebnisse für {0}', + countSelectedText: '{0} von {1} ausgewählt', + maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js new file mode 100644 index 0000000..f17d77f --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für {0}",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-en_US.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-en_US.js new file mode 100644 index 0000000..ba24fb0 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-en_US.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results match {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-en_US.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-en_US.min.js new file mode 100644 index 0000000..017c211 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-en_US.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-es_CL.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-es_CL.js new file mode 100644 index 0000000..d7127d8 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-es_CL.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'No hay selección', + noneResultsText: 'No hay resultados {0}', + countSelectedText: 'Seleccionados {0} de {1}', + maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js new file mode 100644 index 0000000..f385c23 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-eu.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-eu.js new file mode 100644 index 0000000..a38718a --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-eu.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Hautapenik ez', + noneResultsText: 'Emaitzarik ez {0}', + countSelectedText: '{1}(e)tik {0} hautatuta', + maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-eu.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-eu.min.js new file mode 100644 index 0000000..56fa74f --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-eu.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez {0}",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-fa_IR.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-fa_IR.js new file mode 100644 index 0000000..c33f53b --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-fa_IR.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'چیزی انتخاب نشده است', + noneResultsText: 'هیج مشابهی برای {0} پیدا نشد', + countSelectedText: "{0} از {1} مورد انتخاب شده", + maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'], + selectAllText: 'انتخاب همه', + deselectAllText: 'انتخاب هیچ کدام', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js new file mode 100644 index 0000000..4940895 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"چیزی انتخاب نشده است",noneResultsText:"هیج مشابهی برای {0} پیدا نشد",countSelectedText:"{0} از {1} مورد انتخاب شده",maxOptionsText:["بیشتر ممکن نیست {حداکثر {n} عدد}","بیشتر ممکن نیست {حداکثر {n} عدد}"],selectAllText:"انتخاب همه",deselectAllText:"انتخاب هیچ کدام",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-fr_FR.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-fr_FR.js new file mode 100644 index 0000000..bd39797 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-fr_FR.js @@ -0,0 +1,42 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Aucune sélection', + noneResultsText: 'Aucun résultat pour {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)', + (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)' + ]; + }, + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js new file mode 100644 index 0000000..c6c1891 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune sélection",noneResultsText:"Aucun résultat pour {0}",countSelectedText:function(a,b){return a>1?"{0} éléments sélectionnés":"{0} élément sélectionné"},maxOptionsText:function(a,b){return[a>1?"Limite atteinte ({n} éléments max)":"Limite atteinte ({n} élément max)",b>1?"Limite du groupe atteinte ({n} éléments max)":"Limite du groupe atteinte ({n} élément max)"]},multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-hu_HU.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-hu_HU.js new file mode 100644 index 0000000..b37c0ab --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-hu_HU.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Válasszon!', + noneResultsText: 'Nincs találat {0}', + countSelectedText: function (numSelected, numTotal) { + return '{n} elem kiválasztva'; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + 'Legfeljebb {n} elem választható', + 'A csoportban legfeljebb {n} elem választható' + ]; + }, + selectAllText: 'Mind', + deselectAllText: 'Egyik sem', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js new file mode 100644 index 0000000..69a493f --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Válasszon!",noneResultsText:"Nincs találat {0}",countSelectedText:function(a,b){return"{n} elem kiválasztva"},maxOptionsText:function(a,b){return["Legfeljebb {n} elem választható","A csoportban legfeljebb {n} elem választható"]},selectAllText:"Mind",deselectAllText:"Egyik sem",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-it_IT.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-it_IT.js new file mode 100644 index 0000000..db76787 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-it_IT.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nessuna selezione', + noneResultsText: 'Nessun risultato per {0}', + countSelectedText: 'Selezionati {0} di {1}', + maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js new file mode 100644 index 0000000..db882fb --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato per {0}",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ko_KR.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ko_KR.js new file mode 100644 index 0000000..e6d3551 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ko_KR.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: '항목을 선택해주세요', + noneResultsText: '{0} 검색 결과가 없습니다', + countSelectedText: function (numSelected, numTotal) { + return "{0}개를 선택하였습니다"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + '{n}개까지 선택 가능합니다', + '해당 그룹은 {n}개까지 선택 가능합니다' + ]; + }, + selectAllText: '전체선택', + deselectAllText: '전체해제', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js new file mode 100644 index 0000000..9aac268 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"항목을 선택해주세요",noneResultsText:"{0} 검색 결과가 없습니다",countSelectedText:function(a,b){return"{0}개를 선택하였습니다"},maxOptionsText:function(a,b){return["{n}개까지 선택 가능합니다","해당 그룹은 {n}개까지 선택 가능합니다"]},selectAllText:"전체선택",deselectAllText:"전체해제",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-nl_NL.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-nl_NL.js new file mode 100644 index 0000000..7a12788 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-nl_NL.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Niets geselecteerd', + noneResultsText: 'Geen resultaten gevonden voor {0}', + countSelectedText: '{0} van {1} geselecteerd', + maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js new file mode 100644 index 0000000..774b824 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor {0}",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-pl_PL.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-pl_PL.js new file mode 100644 index 0000000..485026a --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-pl_PL.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nic nie zaznaczono', + noneResultsText: 'Brak wyników wyszukiwania {0}', + countSelectedText: 'Zaznaczono {0} z {1}', + maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']], + selectAll: 'Zaznacz wszystkie', + deselectAll: 'Odznacz wszystkie', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js new file mode 100644 index 0000000..8e7865d --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania {0}",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_BR.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_BR.js new file mode 100644 index 0000000..7b75a0f --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_BR.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nada selecionado', + noneResultsText: 'Nada encontrado contendo {0}', + countSelectedText: 'Selecionado {0} de {1}', + maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js new file mode 100644 index 0000000..a4ed1e6 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_PT.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_PT.js new file mode 100644 index 0000000..2590f08 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_PT.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { +$.fn.selectpicker.defaults = { +noneSelectedText: 'Nenhum seleccionado', +noneResultsText: 'Sem resultados contendo {0}', +countSelectedText: 'Selecionado {0} de {1}', +maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']], +multipleSeparator: ', ' +}; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js new file mode 100644 index 0000000..75567a4 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nenhum seleccionado",noneResultsText:"Sem resultados contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite ultrapassado (máx. {n} {var})","Limite de seleções ultrapassado (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ro_RO.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ro_RO.js new file mode 100644 index 0000000..a4e611d --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ro_RO.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nu a fost selectat nimic', + noneResultsText: 'Nu exista niciun rezultat {0}', + countSelectedText: '{0} din {1} selectat(e)', + maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js new file mode 100644 index 0000000..da6ad75 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat {0}",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ru_RU.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ru_RU.js new file mode 100644 index 0000000..c858c3f --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ru_RU.js @@ -0,0 +1,36 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Ничего не выбрано', + noneResultsText: 'Совпадений не найдено {0}', + countSelectedText: 'Выбрано {0} из {1}', + maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']], + doneButtonText: 'Закрыть', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js new file mode 100644 index 0000000..a03aca4 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено {0}",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],doneButtonText:"Закрыть",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-sk_SK.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-sk_SK.js new file mode 100644 index 0000000..c1fb4b8 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-sk_SK.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Vyberte zo zoznamu', + noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky', + countSelectedText: 'Vybrané {0} z {1}', + maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']], + selectAllText: 'Vybrať všetky', + deselectAllText: 'Zrušiť výber', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js new file mode 100644 index 0000000..868ef83 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Vyberte zo zoznamu",noneResultsText:"Pre výraz {0} neboli nájdené žiadne výsledky",countSelectedText:"Vybrané {0} z {1}",maxOptionsText:["Limit prekročený ({n} {var} max)","Limit skupiny prekročený ({n} {var} max)",["položiek","položka"]],selectAllText:"Vybrať všetky",deselectAllText:"Zrušiť výber",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-sl_SI.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-sl_SI.js new file mode 100644 index 0000000..2f3b3d8 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-sl_SI.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nič izbranega', + noneResultsText: 'Ni zadetkov za {0}', + countSelectedText: function (numSelected, numTotal) { + "Število izbranih: {0}"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + 'Omejitev dosežena (max. izbranih: {n})', + 'Omejitev skupine dosežena (max. izbranih: {n})' + ]; + }, + selectAllText: 'Izberi vse', + deselectAllText: 'Počisti izbor', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js new file mode 100644 index 0000000..e24edc0 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nič izbranega",noneResultsText:"Ni zadetkov za {0}",countSelectedText:function(a,b){"Število izbranih: {0}"},maxOptionsText:function(a,b){return["Omejitev dosežena (max. izbranih: {n})","Omejitev skupine dosežena (max. izbranih: {n})"]},selectAllText:"Izberi vse",deselectAllText:"Počisti izbor",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-sv_SE.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-sv_SE.js new file mode 100644 index 0000000..a8c3768 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-sv_SE.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Inget valt', + noneResultsText: 'Inget sökresultat matchar {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + 'Gräns uppnåd (max {n} alternativ)', + 'Gräns uppnåd (max {n} gruppalternativ)' + ]; + }, + selectAllText: 'Markera alla', + deselectAllText: 'Avmarkera alla', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js new file mode 100644 index 0000000..167b70a --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Inget valt",noneResultsText:"Inget sökresultat matchar {0}",countSelectedText:function(a,b){return 1===a?"{0} alternativ valt":"{0} alternativ valda"},maxOptionsText:function(a,b){return["Gräns uppnåd (max {n} alternativ)","Gräns uppnåd (max {n} gruppalternativ)"]},selectAllText:"Markera alla",deselectAllText:"Avmarkera alla",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-tr_TR.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-tr_TR.js new file mode 100644 index 0000000..617062b --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-tr_TR.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Hiçbiri seçilmedi', + noneResultsText: 'Hiçbir sonuç bulunamadı {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)', + (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' + ]; + }, + selectAllText: 'Tümünü Seç', + deselectAllText: 'Seçiniz', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js new file mode 100644 index 0000000..bd49a7d --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hiçbiri seçilmedi",noneResultsText:"Hiçbir sonuç bulunamadı {0}",countSelectedText:function(a,b){return"{0} öğe seçildi"},maxOptionsText:function(a,b){return[1==a?"Limit aşıldı (maksimum {n} sayıda öğe )":"Limit aşıldı (maksimum {n} sayıda öğe)","Grup limiti aşıldı (maksimum {n} sayıda öğe)"]},selectAllText:"Tümünü Seç",deselectAllText:"Seçiniz",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ua_UA.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ua_UA.js new file mode 100644 index 0000000..e35d9e6 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ua_UA.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Нічого не вибрано', + noneResultsText: 'Збігів не знайдено {0}', + countSelectedText: 'Вибрано {0} із {1}', + maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js new file mode 100644 index 0000000..6e65de6 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено {0}",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_CN.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_CN.js new file mode 100644 index 0000000..0f98604 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_CN.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: '没有选中任何项', + noneResultsText: '没有找到匹配项', + countSelectedText: '选中{1}中的{0}项', + maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js new file mode 100644 index 0000000..0cfa3c6 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_TW.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_TW.js new file mode 100644 index 0000000..82e078a --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_TW.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function () { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: '沒有選取任何項目', + noneResultsText: '沒有找到符合的結果', + countSelectedText: '已經選取{0}個項目', + maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'], + selectAllText: '選取全部', + deselectAllText: '全部取消', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js new file mode 100644 index 0000000..a715320 --- /dev/null +++ b/www/libs/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(jQuery)}); \ No newline at end of file diff --git a/www/libs/bootstrap-switch/dist/js/bootstrap-switch.min.js b/www/libs/bootstrap-switch/dist/js/bootstrap-switch.min.js new file mode 100644 index 0000000..232ed13 --- /dev/null +++ b/www/libs/bootstrap-switch/dist/js/bootstrap-switch.min.js @@ -0,0 +1,22 @@ +/* ======================================================================== + * bootstrap-switch - v3.3.2 + * http://www.bootstrap-switch.org + * ======================================================================== + * Copyright 2012-2013 Mattia Larentis + * + * ======================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== + */ + +(function(){var t=[].slice;!function(e,i){"use strict";var n;return n=function(){function t(t,i){null==i&&(i={}),this.$element=e(t),this.options=e.extend({},e.fn.bootstrapSwitch.defaults,{state:this.$element.is(":checked"),size:this.$element.data("size"),animate:this.$element.data("animate"),disabled:this.$element.is(":disabled"),readonly:this.$element.is("[readonly]"),indeterminate:this.$element.data("indeterminate"),inverse:this.$element.data("inverse"),radioAllOff:this.$element.data("radio-all-off"),onColor:this.$element.data("on-color"),offColor:this.$element.data("off-color"),onText:this.$element.data("on-text"),offText:this.$element.data("off-text"),labelText:this.$element.data("label-text"),handleWidth:this.$element.data("handle-width"),labelWidth:this.$element.data("label-width"),baseClass:this.$element.data("base-class"),wrapperClass:this.$element.data("wrapper-class")},i),this.$wrapper=e("
    ",{"class":function(t){return function(){var e;return e=[""+t.options.baseClass].concat(t._getClasses(t.options.wrapperClass)),e.push(t.options.state?""+t.options.baseClass+"-on":""+t.options.baseClass+"-off"),null!=t.options.size&&e.push(""+t.options.baseClass+"-"+t.options.size),t.options.disabled&&e.push(""+t.options.baseClass+"-disabled"),t.options.readonly&&e.push(""+t.options.baseClass+"-readonly"),t.options.indeterminate&&e.push(""+t.options.baseClass+"-indeterminate"),t.options.inverse&&e.push(""+t.options.baseClass+"-inverse"),t.$element.attr("id")&&e.push(""+t.options.baseClass+"-id-"+t.$element.attr("id")),e.join(" ")}}(this)()}),this.$container=e("
    ",{"class":""+this.options.baseClass+"-container"}),this.$on=e("",{html:this.options.onText,"class":""+this.options.baseClass+"-handle-on "+this.options.baseClass+"-"+this.options.onColor}),this.$off=e("",{html:this.options.offText,"class":""+this.options.baseClass+"-handle-off "+this.options.baseClass+"-"+this.options.offColor}),this.$label=e("",{html:this.options.labelText,"class":""+this.options.baseClass+"-label"}),this.$element.on("init.bootstrapSwitch",function(e){return function(){return e.options.onInit.apply(t,arguments)}}(this)),this.$element.on("switchChange.bootstrapSwitch",function(e){return function(){return e.options.onSwitchChange.apply(t,arguments)}}(this)),this.$container=this.$element.wrap(this.$container).parent(),this.$wrapper=this.$container.wrap(this.$wrapper).parent(),this.$element.before(this.options.inverse?this.$off:this.$on).before(this.$label).before(this.options.inverse?this.$on:this.$off),this.options.indeterminate&&this.$element.prop("indeterminate",!0),this._init(),this._elementHandlers(),this._handleHandlers(),this._labelHandlers(),this._formHandler(),this._externalLabelHandler(),this.$element.trigger("init.bootstrapSwitch")}return t.prototype._constructor=t,t.prototype.state=function(t,e){return"undefined"==typeof t?this.options.state:this.options.disabled||this.options.readonly?this.$element:this.options.state&&!this.options.radioAllOff&&this.$element.is(":radio")?this.$element:(this.options.indeterminate&&this.indeterminate(!1),t=!!t,this.$element.prop("checked",t).trigger("change.bootstrapSwitch",e),this.$element)},t.prototype.toggleState=function(t){return this.options.disabled||this.options.readonly?this.$element:this.options.indeterminate?(this.indeterminate(!1),this.state(!0)):this.$element.prop("checked",!this.options.state).trigger("change.bootstrapSwitch",t)},t.prototype.size=function(t){return"undefined"==typeof t?this.options.size:(null!=this.options.size&&this.$wrapper.removeClass(""+this.options.baseClass+"-"+this.options.size),t&&this.$wrapper.addClass(""+this.options.baseClass+"-"+t),this._width(),this._containerPosition(),this.options.size=t,this.$element)},t.prototype.animate=function(t){return"undefined"==typeof t?this.options.animate:(t=!!t,t===this.options.animate?this.$element:this.toggleAnimate())},t.prototype.toggleAnimate=function(){return this.options.animate=!this.options.animate,this.$wrapper.toggleClass(""+this.options.baseClass+"-animate"),this.$element},t.prototype.disabled=function(t){return"undefined"==typeof t?this.options.disabled:(t=!!t,t===this.options.disabled?this.$element:this.toggleDisabled())},t.prototype.toggleDisabled=function(){return this.options.disabled=!this.options.disabled,this.$element.prop("disabled",this.options.disabled),this.$wrapper.toggleClass(""+this.options.baseClass+"-disabled"),this.$element},t.prototype.readonly=function(t){return"undefined"==typeof t?this.options.readonly:(t=!!t,t===this.options.readonly?this.$element:this.toggleReadonly())},t.prototype.toggleReadonly=function(){return this.options.readonly=!this.options.readonly,this.$element.prop("readonly",this.options.readonly),this.$wrapper.toggleClass(""+this.options.baseClass+"-readonly"),this.$element},t.prototype.indeterminate=function(t){return"undefined"==typeof t?this.options.indeterminate:(t=!!t,t===this.options.indeterminate?this.$element:this.toggleIndeterminate())},t.prototype.toggleIndeterminate=function(){return this.options.indeterminate=!this.options.indeterminate,this.$element.prop("indeterminate",this.options.indeterminate),this.$wrapper.toggleClass(""+this.options.baseClass+"-indeterminate"),this._containerPosition(),this.$element},t.prototype.inverse=function(t){return"undefined"==typeof t?this.options.inverse:(t=!!t,t===this.options.inverse?this.$element:this.toggleInverse())},t.prototype.toggleInverse=function(){var t,e;return this.$wrapper.toggleClass(""+this.options.baseClass+"-inverse"),e=this.$on.clone(!0),t=this.$off.clone(!0),this.$on.replaceWith(t),this.$off.replaceWith(e),this.$on=t,this.$off=e,this.options.inverse=!this.options.inverse,this.$element},t.prototype.onColor=function(t){var e;return e=this.options.onColor,"undefined"==typeof t?e:(null!=e&&this.$on.removeClass(""+this.options.baseClass+"-"+e),this.$on.addClass(""+this.options.baseClass+"-"+t),this.options.onColor=t,this.$element)},t.prototype.offColor=function(t){var e;return e=this.options.offColor,"undefined"==typeof t?e:(null!=e&&this.$off.removeClass(""+this.options.baseClass+"-"+e),this.$off.addClass(""+this.options.baseClass+"-"+t),this.options.offColor=t,this.$element)},t.prototype.onText=function(t){return"undefined"==typeof t?this.options.onText:(this.$on.html(t),this._width(),this._containerPosition(),this.options.onText=t,this.$element)},t.prototype.offText=function(t){return"undefined"==typeof t?this.options.offText:(this.$off.html(t),this._width(),this._containerPosition(),this.options.offText=t,this.$element)},t.prototype.labelText=function(t){return"undefined"==typeof t?this.options.labelText:(this.$label.html(t),this._width(),this.options.labelText=t,this.$element)},t.prototype.handleWidth=function(t){return"undefined"==typeof t?this.options.handleWidth:(this.options.handleWidth=t,this._width(),this._containerPosition(),this.$element)},t.prototype.labelWidth=function(t){return"undefined"==typeof t?this.options.labelWidth:(this.options.labelWidth=t,this._width(),this._containerPosition(),this.$element)},t.prototype.baseClass=function(){return this.options.baseClass},t.prototype.wrapperClass=function(t){return"undefined"==typeof t?this.options.wrapperClass:(t||(t=e.fn.bootstrapSwitch.defaults.wrapperClass),this.$wrapper.removeClass(this._getClasses(this.options.wrapperClass).join(" ")),this.$wrapper.addClass(this._getClasses(t).join(" ")),this.options.wrapperClass=t,this.$element)},t.prototype.radioAllOff=function(t){return"undefined"==typeof t?this.options.radioAllOff:(t=!!t,t===this.options.radioAllOff?this.$element:(this.options.radioAllOff=t,this.$element))},t.prototype.onInit=function(t){return"undefined"==typeof t?this.options.onInit:(t||(t=e.fn.bootstrapSwitch.defaults.onInit),this.options.onInit=t,this.$element)},t.prototype.onSwitchChange=function(t){return"undefined"==typeof t?this.options.onSwitchChange:(t||(t=e.fn.bootstrapSwitch.defaults.onSwitchChange),this.options.onSwitchChange=t,this.$element)},t.prototype.destroy=function(){var t;return t=this.$element.closest("form"),t.length&&t.off("reset.bootstrapSwitch").removeData("bootstrap-switch"),this.$container.children().not(this.$element).remove(),this.$element.unwrap().unwrap().off(".bootstrapSwitch").removeData("bootstrap-switch"),this.$element},t.prototype._width=function(){var t,e;return t=this.$on.add(this.$off),t.add(this.$label).css("width",""),e="auto"===this.options.handleWidth?Math.max(this.$on.width(),this.$off.width()):this.options.handleWidth,t.width(e),this.$label.width(function(t){return function(i,n){return"auto"!==t.options.labelWidth?t.options.labelWidth:e>n?e:n}}(this)),this._handleWidth=this.$on.outerWidth(),this._labelWidth=this.$label.outerWidth(),this.$container.width(2*this._handleWidth+this._labelWidth),this.$wrapper.width(this._handleWidth+this._labelWidth)},t.prototype._containerPosition=function(t,e){return null==t&&(t=this.options.state),this.$container.css("margin-left",function(e){return function(){var i;return i=[0,"-"+e._handleWidth+"px"],e.options.indeterminate?"-"+e._handleWidth/2+"px":t?e.options.inverse?i[1]:i[0]:e.options.inverse?i[0]:i[1]}}(this)),e?setTimeout(function(){return e()},50):void 0},t.prototype._init=function(){var t,e;return t=function(t){return function(){return t._width(),t._containerPosition(null,function(){return t.options.animate?t.$wrapper.addClass(""+t.options.baseClass+"-animate"):void 0})}}(this),this.$wrapper.is(":visible")?t():e=i.setInterval(function(n){return function(){return n.$wrapper.is(":visible")?(t(),i.clearInterval(e)):void 0}}(this),50)},t.prototype._elementHandlers=function(){return this.$element.on({"change.bootstrapSwitch":function(t){return function(i,n){var o;return i.preventDefault(),i.stopImmediatePropagation(),o=t.$element.is(":checked"),t._containerPosition(o),o!==t.options.state?(t.options.state=o,t.$wrapper.toggleClass(""+t.options.baseClass+"-off").toggleClass(""+t.options.baseClass+"-on"),n?void 0:(t.$element.is(":radio")&&e("[name='"+t.$element.attr("name")+"']").not(t.$element).prop("checked",!1).trigger("change.bootstrapSwitch",!0),t.$element.trigger("switchChange.bootstrapSwitch",[o]))):void 0}}(this),"focus.bootstrapSwitch":function(t){return function(e){return e.preventDefault(),t.$wrapper.addClass(""+t.options.baseClass+"-focused")}}(this),"blur.bootstrapSwitch":function(t){return function(e){return e.preventDefault(),t.$wrapper.removeClass(""+t.options.baseClass+"-focused")}}(this),"keydown.bootstrapSwitch":function(t){return function(e){if(e.which&&!t.options.disabled&&!t.options.readonly)switch(e.which){case 37:return e.preventDefault(),e.stopImmediatePropagation(),t.state(!1);case 39:return e.preventDefault(),e.stopImmediatePropagation(),t.state(!0)}}}(this)})},t.prototype._handleHandlers=function(){return this.$on.on("click.bootstrapSwitch",function(t){return function(e){return e.preventDefault(),e.stopPropagation(),t.state(!1),t.$element.trigger("focus.bootstrapSwitch")}}(this)),this.$off.on("click.bootstrapSwitch",function(t){return function(e){return e.preventDefault(),e.stopPropagation(),t.state(!0),t.$element.trigger("focus.bootstrapSwitch")}}(this))},t.prototype._labelHandlers=function(){return this.$label.on({"mousedown.bootstrapSwitch touchstart.bootstrapSwitch":function(t){return function(e){return t._dragStart||t.options.disabled||t.options.readonly?void 0:(e.preventDefault(),e.stopPropagation(),t._dragStart=(e.pageX||e.originalEvent.touches[0].pageX)-parseInt(t.$container.css("margin-left"),10),t.options.animate&&t.$wrapper.removeClass(""+t.options.baseClass+"-animate"),t.$element.trigger("focus.bootstrapSwitch"))}}(this),"mousemove.bootstrapSwitch touchmove.bootstrapSwitch":function(t){return function(e){var i;if(null!=t._dragStart&&(e.preventDefault(),i=(e.pageX||e.originalEvent.touches[0].pageX)-t._dragStart,!(i<-t._handleWidth||i>0)))return t._dragEnd=i,t.$container.css("margin-left",""+t._dragEnd+"px")}}(this),"mouseup.bootstrapSwitch touchend.bootstrapSwitch":function(t){return function(e){var i;if(t._dragStart)return e.preventDefault(),t.options.animate&&t.$wrapper.addClass(""+t.options.baseClass+"-animate"),t._dragEnd?(i=t._dragEnd>-(t._handleWidth/2),t._dragEnd=!1,t.state(t.options.inverse?!i:i)):t.state(!t.options.state),t._dragStart=!1}}(this),"mouseleave.bootstrapSwitch":function(t){return function(){return t.$label.trigger("mouseup.bootstrapSwitch")}}(this)})},t.prototype._externalLabelHandler=function(){var t;return t=this.$element.closest("label"),t.on("click",function(e){return function(i){return i.preventDefault(),i.stopImmediatePropagation(),i.target===t[0]?e.toggleState():void 0}}(this))},t.prototype._formHandler=function(){var t;return t=this.$element.closest("form"),t.data("bootstrap-switch")?void 0:t.on("reset.bootstrapSwitch",function(){return i.setTimeout(function(){return t.find("input").filter(function(){return e(this).data("bootstrap-switch")}).each(function(){return e(this).bootstrapSwitch("state",this.checked)})},1)}).data("bootstrap-switch",!0)},t.prototype._getClasses=function(t){var i,n,o,s;if(!e.isArray(t))return[""+this.options.baseClass+"-"+t];for(n=[],o=0,s=t.length;s>o;o++)i=t[o],n.push(""+this.options.baseClass+"-"+i);return n},t}(),e.fn.bootstrapSwitch=function(){var i,o,s;return o=arguments[0],i=2<=arguments.length?t.call(arguments,1):[],s=this,this.each(function(){var t,a;return t=e(this),a=t.data("bootstrap-switch"),a||t.data("bootstrap-switch",a=new n(this,o)),"string"==typeof o?s=a[o].apply(a,i):void 0}),s},e.fn.bootstrapSwitch.Constructor=n,e.fn.bootstrapSwitch.defaults={state:!0,size:null,animate:!0,disabled:!1,readonly:!1,indeterminate:!1,inverse:!1,radioAllOff:!1,onColor:"primary",offColor:"default",onText:"ON",offText:"OFF",labelText:" ",handleWidth:"auto",labelWidth:"auto",baseClass:"bootstrap-switch",wrapperClass:"wrapper",onInit:function(){},onSwitchChange:function(){}}}(window.jQuery,window)}).call(this); \ No newline at end of file diff --git a/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.eot differ diff --git a/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf differ diff --git a/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff differ diff --git a/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/www/libs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/www/libs/bootstrap/dist/js/bootstrap.min.js b/www/libs/bootstrap/dist/js/bootstrap.min.js new file mode 100644 index 0000000..133aeec --- /dev/null +++ b/www/libs/bootstrap/dist/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/www/libs/c3/c3.min.css b/www/libs/c3/c3.min.css new file mode 100644 index 0000000..08e5084 --- /dev/null +++ b/www/libs/c3/c3.min.css @@ -0,0 +1 @@ +.c3 svg{font:10px sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000} \ No newline at end of file diff --git a/www/libs/c3/c3.min.js b/www/libs/c3/c3.min.js new file mode 100644 index 0000000..d99c28b --- /dev/null +++ b/www/libs/c3/c3.min.js @@ -0,0 +1,5 @@ +!function(a){"use strict";function b(a){this.owner=a}function c(a,b){if(Object.create)b.prototype=Object.create(a.prototype);else{var c=function(){};c.prototype=a.prototype,b.prototype=new c}return b.prototype.constructor=b,b}function d(a){var b=this.internal=new e(this);b.loadConfig(a),b.init(),function c(a,b,d){Object.keys(a).forEach(function(e){b[e]=a[e].bind(d),Object.keys(a[e]).length>0&&c(a[e],b[e],d)})}(h,this,this)}function e(b){var c=this;c.d3=a.d3?a.d3:"undefined"!=typeof require?require("d3"):void 0,c.api=b,c.config=c.getDefaultConfig(),c.data={},c.cache={},c.axes={}}function f(a){b.call(this,a)}function g(a,b){function c(a,b){a.attr("transform",function(a){return"translate("+Math.ceil(b(a)+u)+", 0)"})}function d(a,b){a.attr("transform",function(a){return"translate(0,"+Math.ceil(b(a))+")"})}function e(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function f(a){var b,c,d=[];if(a.ticks)return a.ticks.apply(a,n);for(c=a.domain(),b=Math.ceil(c[0]);b0&&d[0]>0&&d.unshift(d[0]-(d[1]-d[0])),d}function g(){var a,c=p.copy();return b.isCategory&&(a=p.domain(),c.domain([a[0],a[1]-1])),c}function h(a){var b=m?m(a):a;return"undefined"!=typeof b?b:""}function i(a){if(z)return z;var b={h:11.5,w:5.5};return a.select("text").text(h).each(function(a){var c=this.getBoundingClientRect(),d=h(a),e=c.height,f=d?c.width/d.length:void 0;e&&f&&(b.h=e,b.w=f)}).text(""),z=b,b}function j(c){return b.withoutTransition?c:a.transition(c)}function k(m){m.each(function(){function m(a,c){function d(a,b){f=void 0;for(var h=1;hc)return d(a.concat(b.substr(0,f?f:h)),b.slice(f?f+1:h));return a.concat(b)}var e,f,g,i=h(a),j=[];return"[object Array]"===Object.prototype.toString.call(i)?i:((!c||0>=c)&&(c=X?95:b.isCategory?Math.ceil(F(G[1])-F(G[0]))-12:110),d(j,i+""))}function n(a,b){var c=U.h;return 0===b&&(c="left"===q||"right"===q?-((V[a.index]-1)*(U.h/2)-3):".71em"),c}function v(a){var b=p(a)+(o?0:u);return L[0]0?"start":"end":"middle"}function x(a){return a?"rotate("+a+")":""}function y(a){return a?8*Math.sin(Math.PI*(a/180)):0}function z(a){return a?11.5-2.5*(a/15)*(a>0?1:-1):W}var A,B,C,D=k.g=a.select(this),E=this.__chart__||p,F=this.__chart__=g(),G=t?t:f(F),H=D.selectAll(".tick").data(G,F),I=H.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),J=H.exit().remove(),K=j(H).style("opacity",1),L=p.rangeExtent?p.rangeExtent():e(p.range()),M=D.selectAll(".domain").data([0]),N=(M.enter().append("path").attr("class","domain"),j(M));I.append("line"),I.append("text");var O=I.select("line"),P=K.select("line"),Q=I.select("text"),R=K.select("text");b.isCategory?(u=Math.ceil((F(1)-F(0))/2),B=o?0:u,C=o?u:0):u=B=0;var S,T,U=i(D.select(".tick")),V=[],W=Math.max(r,0)+s,X="left"===q||"right"===q;S=H.select("text"),T=S.selectAll("tspan").data(function(a,c){var d=b.tickMultiline?m(a,b.tickWidth):[].concat(h(a));return V[c]=d.length,d.map(function(a){return{index:c,splitted:a}})}),T.enter().append("tspan"),T.exit().remove(),T.text(function(a){return a.splitted});var Y=b.tickTextRotate;switch(q){case"bottom":A=c,O.attr("y2",r),Q.attr("y",W),P.attr("x1",B).attr("x2",B).attr("y2",v),R.attr("x",0).attr("y",z(Y)).style("text-anchor",w(Y)).attr("transform",x(Y)),T.attr("x",0).attr("dy",n).attr("dx",y(Y)),N.attr("d","M"+L[0]+","+l+"V0H"+L[1]+"V"+l);break;case"top":A=c,O.attr("y2",-r),Q.attr("y",-W),P.attr("x2",0).attr("y2",-r),R.attr("x",0).attr("y",-W),S.style("text-anchor","middle"),T.attr("x",0).attr("dy","0em"),N.attr("d","M"+L[0]+","+-l+"V0H"+L[1]+"V"+-l);break;case"left":A=d,O.attr("x2",-r),Q.attr("x",-W),P.attr("x2",-r).attr("y1",C).attr("y2",C),R.attr("x",-W).attr("y",u),S.style("text-anchor","end"),T.attr("x",-W).attr("dy",n),N.attr("d","M"+-l+","+L[0]+"H0V"+L[1]+"H"+-l);break;case"right":A=d,O.attr("x2",r),Q.attr("x",W),P.attr("x2",r).attr("y2",0),R.attr("x",W).attr("y",0),S.style("text-anchor","start"),T.attr("x",W).attr("dy",n),N.attr("d","M"+l+","+L[0]+"H0V"+L[1]+"H"+l)}if(F.rangeBand){var Z=F,$=Z.rangeBand()/2;E=F=function(a){return Z(a)+$}}else E.rangeBand?E=F:J.call(A,F);I.call(A,E),K.call(A,F)})}var l,m,n,o,p=a.scale.linear(),q="bottom",r=6,s=3,t=null,u=0,v=!0;return b=b||{},l=b.withOuterTick?6:0,k.scale=function(a){return arguments.length?(p=a,k):p},k.orient=function(a){return arguments.length?(q=a in{top:1,right:1,bottom:1,left:1}?a+"":"bottom",k):q},k.tickFormat=function(a){return arguments.length?(m=a,k):m},k.tickCentered=function(a){return arguments.length?(o=a,k):o},k.tickOffset=function(){return u},k.tickInterval=function(){var a,c;return b.isCategory?a=2*u:(c=k.g.select("path.domain").node().getTotalLength()-2*l,a=c/k.g.selectAll("line").size()),1/0===a?0:a},k.ticks=function(){return arguments.length?(n=arguments,k):n},k.tickCulling=function(a){return arguments.length?(v=a,k):v},k.tickValues=function(a){if("function"==typeof a)t=function(){return a(p.domain())};else{if(!arguments.length)return t;t=a}return k},k}var h,i,j,k={version:"0.4.10"};k.generate=function(a){return new d(a)},k.chart={fn:d.prototype,internal:{fn:e.prototype,axis:{fn:f.prototype}}},h=k.chart.fn,i=k.chart.internal.fn,j=k.chart.internal.axis.fn,i.init=function(){var a=this,b=a.config;if(a.initParams(),b.data_url)a.convertUrlToData(b.data_url,b.data_mimeType,b.data_keys,a.initWithData);else if(b.data_json)a.initWithData(a.convertJsonToData(b.data_json,b.data_keys));else if(b.data_rows)a.initWithData(a.convertRowsToData(b.data_rows));else{if(!b.data_columns)throw Error("url or json or rows or columns is required.");a.initWithData(a.convertColumnsToData(b.data_columns))}},i.initParams=function(){var a=this,b=a.d3,c=a.config;a.clipId="c3-"+ +new Date+"-clip",a.clipIdForXAxis=a.clipId+"-xaxis",a.clipIdForYAxis=a.clipId+"-yaxis",a.clipIdForGrid=a.clipId+"-grid",a.clipIdForSubchart=a.clipId+"-subchart",a.clipPath=a.getClipPath(a.clipId),a.clipPathForXAxis=a.getClipPath(a.clipIdForXAxis),a.clipPathForYAxis=a.getClipPath(a.clipIdForYAxis),a.clipPathForGrid=a.getClipPath(a.clipIdForGrid),a.clipPathForSubchart=a.getClipPath(a.clipIdForSubchart),a.dragStart=null,a.dragging=!1,a.flowing=!1,a.cancelClick=!1,a.mouseover=!1,a.transiting=!1,a.color=a.generateColor(),a.levelColor=a.generateLevelColor(),a.dataTimeFormat=c.data_xLocaltime?b.time.format:b.time.format.utc,a.axisTimeFormat=c.axis_x_localtime?b.time.format:b.time.format.utc,a.defaultAxisTimeFormat=a.axisTimeFormat.multi([[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%I:%M",function(a){return a.getMinutes()}],["%I %p",function(a){return a.getHours()}],["%-m/%-d",function(a){return a.getDay()&&1!==a.getDate()}],["%-m/%-d",function(a){return 1!==a.getDate()}],["%-m/%-d",function(a){return a.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),a.hiddenTargetIds=[],a.hiddenLegendIds=[],a.focusedTargetIds=[],a.defocusedTargetIds=[],a.xOrient=c.axis_rotated?"left":"bottom",a.yOrient=c.axis_rotated?c.axis_y_inner?"top":"bottom":c.axis_y_inner?"right":"left",a.y2Orient=c.axis_rotated?c.axis_y2_inner?"bottom":"top":c.axis_y2_inner?"left":"right",a.subXOrient=c.axis_rotated?"left":"bottom",a.isLegendRight="right"===c.legend_position,a.isLegendInset="inset"===c.legend_position,a.isLegendTop="top-left"===c.legend_inset_anchor||"top-right"===c.legend_inset_anchor,a.isLegendLeft="top-left"===c.legend_inset_anchor||"bottom-left"===c.legend_inset_anchor,a.legendStep=0,a.legendItemWidth=0,a.legendItemHeight=0,a.currentMaxTickWidths={x:0,y:0,y2:0},a.rotated_padding_left=30,a.rotated_padding_right=c.axis_rotated&&!c.axis_x_show?0:30,a.rotated_padding_top=5,a.withoutFadeIn={},a.intervalForObserveInserted=void 0,a.axes.subx=b.selectAll([])},i.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},i.initWithData=function(b){var c,d,e=this,g=e.d3,h=e.config,i=!0;e.axis=new f(e),e.initPie&&e.initPie(),e.initBrush&&e.initBrush(),e.initZoom&&e.initZoom(),e.selectChart=h.bindto?"function"==typeof h.bindto.node?h.bindto:g.select(h.bindto):g.selectAll([]),e.selectChart.empty()&&(e.selectChart=g.select(document.createElement("div")).style("opacity",0),e.observeInserted(e.selectChart),i=!1),e.selectChart.html("").classed("c3",!0),e.data.xs={},e.data.targets=e.convertDataToTargets(b),h.data_filter&&(e.data.targets=e.data.targets.filter(h.data_filter)),h.data_hide&&e.addHiddenTargetIds(h.data_hide===!0?e.mapToIds(e.data.targets):h.data_hide),h.legend_hide&&e.addHiddenLegendIds(h.legend_hide===!0?e.mapToIds(e.data.targets):h.legend_hide),e.hasType("gauge")&&(h.legend_show=!1),e.updateSizes(),e.updateScales(),e.x.domain(g.extent(e.getXDomain(e.data.targets))),e.y.domain(e.getYDomain(e.data.targets,"y")),e.y2.domain(e.getYDomain(e.data.targets,"y2")),e.subX.domain(e.x.domain()),e.subY.domain(e.y.domain()),e.subY2.domain(e.y2.domain()),e.orgXDomain=e.x.domain(),e.brush&&e.brush.scale(e.subX),h.zoom_enabled&&e.zoom.scale(e.x),e.svg=e.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return h.onmouseover.call(e)}).on("mouseleave",function(){return h.onmouseout.call(e)}),c=e.svg.append("defs"),e.clipChart=e.appendClip(c,e.clipId),e.clipXAxis=e.appendClip(c,e.clipIdForXAxis),e.clipYAxis=e.appendClip(c,e.clipIdForYAxis),e.clipGrid=e.appendClip(c,e.clipIdForGrid),e.clipSubchart=e.appendClip(c,e.clipIdForSubchart),e.updateSvgSize(),d=e.main=e.svg.append("g").attr("transform",e.getTranslate("main")),e.initSubchart&&e.initSubchart(),e.initTooltip&&e.initTooltip(),e.initLegend&&e.initLegend(),d.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),e.initRegion(),e.initGrid(),d.append("g").attr("clip-path",e.clipPath).attr("class",l.chart),h.grid_lines_front&&e.initGridLines(),e.initEventRect(),e.initChartElements(),d.insert("rect",h.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",e.width).attr("height",e.height).style("opacity",0).on("dblclick.zoom",null),h.axis_x_extent&&e.brush.extent(e.getDefaultExtent()),e.axis.init(),e.updateTargets(e.data.targets),i&&(e.updateDimension(),e.config.oninit.call(e),e.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),null==a.onresize&&(a.onresize=e.generateResize()),a.onresize.add&&(a.onresize.add(function(){h.onresize.call(e)}),a.onresize.add(function(){e.api.flush()}),a.onresize.add(function(){h.onresized.call(e)})),e.api.element=e.selectChart.node()},i.smoothLines=function(a,b){var c=this;"grid"===b&&a.each(function(){var a=c.d3.select(this),b=a.attr("x1"),d=a.attr("x2"),e=a.attr("y1"),f=a.attr("y2");a.attr({x1:Math.ceil(b),x2:Math.ceil(d),y1:Math.ceil(e),y2:Math.ceil(f)})})},i.updateSizes=function(){var a=this,b=a.config,c=a.legend?a.getLegendHeight():0,d=a.legend?a.getLegendWidth():0,e=a.isLegendRight||a.isLegendInset?0:c,f=a.hasArcType(),g=b.axis_rotated||f?0:a.getHorizontalAxisHeight("x"),h=b.subchart_show&&!f?b.subchart_size_height+g:0;a.currentWidth=a.getCurrentWidth(),a.currentHeight=a.getCurrentHeight(),a.margin=b.axis_rotated?{top:a.getHorizontalAxisHeight("y2")+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:a.getHorizontalAxisHeight("y")+e+a.getCurrentPaddingBottom(),left:h+(f?0:a.getCurrentPaddingLeft())}:{top:4+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:g+h+e+a.getCurrentPaddingBottom(),left:f?0:a.getCurrentPaddingLeft()},a.margin2=b.axis_rotated?{top:a.margin.top,right:0/0,bottom:20+e,left:a.rotated_padding_left}:{top:a.currentHeight-h-e,right:0/0,bottom:g+e,left:a.margin.left},a.margin3={top:0,right:0/0,bottom:0,left:0},a.updateSizeForLegend&&a.updateSizeForLegend(c,d),a.width=a.currentWidth-a.margin.left-a.margin.right,a.height=a.currentHeight-a.margin.top-a.margin.bottom,a.width<0&&(a.width=0),a.height<0&&(a.height=0),a.width2=b.axis_rotated?a.margin.left-a.rotated_padding_left-a.rotated_padding_right:a.width,a.height2=b.axis_rotated?a.height:a.currentHeight-a.margin2.top-a.margin2.bottom,a.width2<0&&(a.width2=0),a.height2<0&&(a.height2=0),a.arcWidth=a.width-(a.isLegendRight?d+10:0),a.arcHeight=a.height-(a.isLegendRight?0:10),a.hasType("gauge")&&(a.arcHeight+=a.height-a.getGaugeLabelHeight()),a.updateRadius&&a.updateRadius(),a.isLegendRight&&f&&(a.margin3.left=a.arcWidth/2+1.1*a.radiusExpanded)},i.updateTargets=function(a){var b=this;b.updateTargetsForText(a),b.updateTargetsForBar(a),b.updateTargetsForLine(a),b.hasArcType()&&b.updateTargetsForArc&&b.updateTargetsForArc(a),b.updateTargetsForSubchart&&b.updateTargetsForSubchart(a),b.showTargets()},i.showTargets=function(){var a=this;a.svg.selectAll("."+l.target).filter(function(b){return a.isTargetToShow(b.id)}).transition().duration(a.config.transition_duration).style("opacity",1)},i.redraw=function(a,b){var c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,x,y,z,A,B,C,D,E,F,G,H=this,I=H.main,J=H.d3,K=H.config,L=H.getShapeIndices(H.isAreaType),M=H.getShapeIndices(H.isBarType),N=H.getShapeIndices(H.isLineType),O=H.hasArcType(),P=H.filterTargetsToShow(H.data.targets),Q=H.xv.bind(H);if(a=a||{},c=w(a,"withY",!0),d=w(a,"withSubchart",!0),e=w(a,"withTransition",!0),h=w(a,"withTransform",!1),i=w(a,"withUpdateXDomain",!1),j=w(a,"withUpdateOrgXDomain",!1),k=w(a,"withTrimXDomain",!0),p=w(a,"withUpdateXAxis",i),m=w(a,"withLegend",!1),n=w(a,"withEventRect",!0),o=w(a,"withDimension",!0),f=w(a,"withTransitionForExit",e),g=w(a,"withTransitionForAxis",e),v=e?K.transition_duration:0,x=f?v:0,y=g?v:0,b=b||H.axis.generateTransitions(y),m&&K.legend_show?H.updateLegend(H.mapToIds(H.data.targets),a,b):o&&H.updateDimension(!0),H.isCategorized()&&0===P.length&&H.x.domain([0,H.axes.x.selectAll(".tick").size()]),P.length?(H.updateXDomain(P,i,j,k),K.axis_x_tick_values||(B=H.axis.updateXAxisTickValues(P))):(H.xAxis.tickValues([]),H.subXAxis.tickValues([])),K.zoom_rescale&&!a.flow&&(E=H.x.orgDomain()),H.y.domain(H.getYDomain(P,"y",E)),H.y2.domain(H.getYDomain(P,"y2",E)),!K.axis_y_tick_values&&K.axis_y_tick_count&&H.yAxis.tickValues(H.axis.generateTickValues(H.y.domain(),K.axis_y_tick_count)),!K.axis_y2_tick_values&&K.axis_y2_tick_count&&H.y2Axis.tickValues(H.axis.generateTickValues(H.y2.domain(),K.axis_y2_tick_count)),H.axis.redraw(b,O),H.axis.updateLabels(e),(i||p)&&P.length)if(K.axis_x_tick_culling&&B){for(C=1;C=0&&J.select(this).style("display",b%D?"none":"block")})}else H.svg.selectAll("."+l.axisX+" .tick text").style("display","block");q=H.generateDrawArea?H.generateDrawArea(L,!1):void 0,r=H.generateDrawBar?H.generateDrawBar(M):void 0,s=H.generateDrawLine?H.generateDrawLine(N,!1):void 0,t=H.generateXYForText(L,M,N,!0),u=H.generateXYForText(L,M,N,!1),c&&(H.subY.domain(H.getYDomain(P,"y")),H.subY2.domain(H.getYDomain(P,"y2"))),H.tooltip.style("display","none"),H.updateXgridFocus(),I.select("text."+l.text+"."+l.empty).attr("x",H.width/2).attr("y",H.height/2).text(K.data_empty_label_text).transition().style("opacity",P.length?0:1),H.updateGrid(v),H.updateRegion(v),H.updateBar(x),H.updateLine(x),H.updateArea(x),H.updateCircle(),H.hasDataLabel()&&H.updateText(x),H.redrawArc&&H.redrawArc(v,x,h),H.redrawSubchart&&H.redrawSubchart(d,b,v,x,L,M,N),I.selectAll("."+l.selectedCircles).filter(H.isBarType.bind(H)).selectAll("circle").remove(),K.interaction_enabled&&!a.flow&&n&&(H.redrawEventRect(),H.updateZoom&&H.updateZoom()),H.updateCircleY(),F=(H.config.axis_rotated?H.circleY:H.circleX).bind(H),G=(H.config.axis_rotated?H.circleX:H.circleY).bind(H),a.flow&&(A=H.generateFlow({targets:P,flow:a.flow,duration:a.flow.duration,drawBar:r,drawLine:s,drawArea:q,cx:F,cy:G,xv:Q,xForText:t,yForText:u})),(v||A)&&H.isTabVisible()?J.transition().duration(v).each(function(){var b=[];[H.redrawBar(r,!0),H.redrawLine(s,!0),H.redrawArea(q,!0),H.redrawCircle(F,G,!0),H.redrawText(t,u,a.flow,!0),H.redrawRegion(!0),H.redrawGrid(!0)].forEach(function(a){a.forEach(function(a){b.push(a)})}),z=H.generateWait(),b.forEach(function(a){z.add(a)})}).call(z,function(){A&&A(),K.onrendered&&K.onrendered.call(H)}):(H.redrawBar(r),H.redrawLine(s),H.redrawArea(q),H.redrawCircle(F,G),H.redrawText(t,u,a.flow),H.redrawRegion(),H.redrawGrid(),K.onrendered&&K.onrendered.call(H)),H.mapToIds(H.data.targets).forEach(function(a){H.withoutFadeIn[a]=!0})},i.updateAndRedraw=function(a){var b,c=this,d=c.config;a=a||{},a.withTransition=w(a,"withTransition",!0),a.withTransform=w(a,"withTransform",!1),a.withLegend=w(a,"withLegend",!1),a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,a.withTransitionForTransform=w(a,"withTransitionForTransform",a.withTransition),c.updateSizes(),a.withLegend&&d.legend_show||(b=c.axis.generateTransitions(a.withTransitionForAxis?d.transition_duration:0),c.updateScales(),c.updateSvgSize(),c.transformAll(a.withTransitionForTransform,b)),c.redraw(a,b)},i.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},i.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},i.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},i.isCustomX=function(){var a=this,b=a.config;return!a.isTimeSeries()&&(b.data_x||v(b.data_xs))},i.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},i.getTranslate=function(a){var b,c,d=this,e=d.config;return"main"===a?(b=s(d.margin.left),c=s(d.margin.top)):"context"===a?(b=s(d.margin2.left),c=s(d.margin2.top)):"legend"===a?(b=d.margin3.left,c=d.margin3.top):"x"===a?(b=0,c=e.axis_rotated?0:d.height):"y"===a?(b=0,c=e.axis_rotated?d.height:0):"y2"===a?(b=e.axis_rotated?0:d.width,c=e.axis_rotated?1:0):"subx"===a?(b=0,c=e.axis_rotated?0:d.height2):"arc"===a&&(b=d.arcWidth/2,c=d.arcHeight/2),"translate("+b+","+c+")"},i.initialOpacity=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?1:0},i.initialOpacityForCircle=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?this.opacityForCircle(a):0},i.opacityForCircle=function(a){var b=this.config.point_show?1:0;return m(a.value)?this.isScatterType(a)?.5:b:0},i.opacityForText=function(){return this.hasDataLabel()?1:0},i.xx=function(a){return a?this.x(a.x):null},i.xv=function(a){var b=this,c=a.value;return b.isTimeSeries()?c=b.parseDate(a.value):b.isCategorized()&&"string"==typeof a.value&&(c=b.config.axis_x_categories.indexOf(a.value)),Math.ceil(b.x(c))},i.yv=function(a){var b=this,c=a.axis&&"y2"===a.axis?b.y2:b.y;return Math.ceil(c(a.value))},i.subxx=function(a){return a?this.subX(a.x):null},i.transformMain=function(a,b){var c,d,e,f=this;b&&b.axisX?c=b.axisX:(c=f.main.select("."+l.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=f.main.select("."+l.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=f.main.select("."+l.axisY2),a&&(e=e.transition())),(a?f.main.transition():f.main).attr("transform",f.getTranslate("main")),c.attr("transform",f.getTranslate("x")),d.attr("transform",f.getTranslate("y")),e.attr("transform",f.getTranslate("y2")),f.main.select("."+l.chartArcs).attr("transform",f.getTranslate("arc"))},i.transformAll=function(a,b){var c=this;c.transformMain(a,b),c.config.subchart_show&&c.transformContext(a,b),c.legend&&c.transformLegend(a)},i.updateSvgSize=function(){var a=this,b=a.svg.select(".c3-brush .background");a.svg.attr("width",a.currentWidth).attr("height",a.currentHeight),a.svg.selectAll(["#"+a.clipId,"#"+a.clipIdForGrid]).select("rect").attr("width",a.width).attr("height",a.height),a.svg.select("#"+a.clipIdForXAxis).select("rect").attr("x",a.getXAxisClipX.bind(a)).attr("y",a.getXAxisClipY.bind(a)).attr("width",a.getXAxisClipWidth.bind(a)).attr("height",a.getXAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForYAxis).select("rect").attr("x",a.getYAxisClipX.bind(a)).attr("y",a.getYAxisClipY.bind(a)).attr("width",a.getYAxisClipWidth.bind(a)).attr("height",a.getYAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForSubchart).select("rect").attr("width",a.width).attr("height",b.size()?b.attr("height"):0),a.svg.select("."+l.zoomRect).attr("width",a.width).attr("height",a.height),a.selectChart.style("max-height",a.currentHeight+"px")},i.updateDimension=function(a){var b=this;a||(b.config.axis_rotated?(b.axes.x.call(b.xAxis),b.axes.subx.call(b.subXAxis)):(b.axes.y.call(b.yAxis),b.axes.y2.call(b.y2Axis))),b.updateSizes(),b.updateScales(),b.updateSvgSize(),b.transformAll(!1)},i.observeInserted=function(b){var c,d=this;return"undefined"==typeof MutationObserver?void a.console.error("MutationObserver not defined."):(c=new MutationObserver(function(e){e.forEach(function(e){"childList"===e.type&&e.previousSibling&&(c.disconnect(),d.intervalForObserveInserted=a.setInterval(function(){b.node().parentNode&&(a.clearInterval(d.intervalForObserveInserted),d.updateDimension(),d.config.oninit.call(d),d.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),b.transition().style("opacity",1))},10))})}),void c.observe(b.node(),{attributes:!0,childList:!0,characterData:!0}))},i.generateResize=function(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a},i.endall=function(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})},i.generateWait=function(){var a=[],b=function(b,c){var d=setInterval(function(){var b=0;a.forEach(function(a){if(a.empty())return void(b+=1);try{a.transition()}catch(c){b+=1}}),b===a.length&&(clearInterval(d),c&&c())},10)};return b.add=function(b){a.push(b)},b},i.parseDate=function(b){var c,d=this;return b instanceof Date?c=b:"string"==typeof b?c=d.dataTimeFormat(d.config.data_xFormat).parse(b):"number"!=typeof b&&isNaN(b)||(c=new Date(+b)),(!c||isNaN(+c))&&a.console.error("Failed to parse x '"+b+"' to Date object"),c},i.isTabVisible=function(){var a;return"undefined"!=typeof document.hidden?a="hidden":"undefined"!=typeof document.mozHidden?a="mozHidden":"undefined"!=typeof document.msHidden?a="msHidden":"undefined"!=typeof document.webkitHidden&&(a="webkitHidden"),document[a]?!1:!0},i.getDefaultConfig=function(){var a={bindto:"#chart",size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(a){return a},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_expand:!0,gauge_label_show:!0,gauge_label_format:void 0,gauge_expand:!0,gauge_min:0,gauge_max:100,gauge_units:void 0,gauge_width:void 0,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_width:void 0,donut_expand:!0,donut_title:"",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(a,b,c,d){return this.getTooltipContent?this.getTooltipContent(a,b,c,d):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"}};return Object.keys(this.additionalConfig).forEach(function(b){a[b]=this.additionalConfig[b]},this),a},i.additionalConfig={},i.loadConfig=function(a){function b(){var a=d.shift();return a&&c&&"object"==typeof c&&a in c?(c=c[a],b()):a?void 0:c}var c,d,e,f=this.config;Object.keys(f).forEach(function(g){c=a,d=g.split("_"),e=b(),q(e)&&(f[g]=e)})},i.getScale=function(a,b,c){return(c?this.d3.time.scale():this.d3.scale.linear()).range([a,b])},i.getX=function(a,b,c,d){var e,f=this,g=f.getScale(a,b,f.isTimeSeries()),h=c?g.domain(c):g;f.isCategorized()?(d=d||function(){return 0},g=function(a,b){var c=h(a)+d(a);return b?c:Math.ceil(c)}):g=function(a,b){var c=h(a);return b?c:Math.ceil(c)};for(e in h)g[e]=h[e];return g.orgDomain=function(){return h.domain()},f.isCategorized()&&(g.domain=function(a){return arguments.length?(h.domain(a),g):(a=this.orgDomain(),[a[0],a[1]+1])}),g},i.getY=function(a,b,c){var d=this.getScale(a,b,this.isTimeSeriesY());return c&&d.domain(c),d},i.getYScale=function(a){return"y2"===this.axis.getId(a)?this.y2:this.y},i.getSubYScale=function(a){return"y2"===this.axis.getId(a)?this.subY2:this.subY},i.updateScales=function(){var a=this,b=a.config,c=!a.x;a.xMin=b.axis_rotated?1:0,a.xMax=b.axis_rotated?a.height:a.width,a.yMin=b.axis_rotated?0:a.height,a.yMax=b.axis_rotated?a.width:1,a.subXMin=a.xMin,a.subXMax=a.xMax,a.subYMin=b.axis_rotated?0:a.height2,a.subYMax=b.axis_rotated?a.width2:1,a.x=a.getX(a.xMin,a.xMax,c?void 0:a.x.orgDomain(),function(){return a.xAxis.tickOffset()}),a.y=a.getY(a.yMin,a.yMax,c?b.axis_y_default:a.y.domain()),a.y2=a.getY(a.yMin,a.yMax,c?b.axis_y2_default:a.y2.domain()),a.subX=a.getX(a.xMin,a.xMax,a.orgXDomain,function(b){return b%1?0:a.subXAxis.tickOffset()}),a.subY=a.getY(a.subYMin,a.subYMax,c?b.axis_y_default:a.subY.domain()),a.subY2=a.getY(a.subYMin,a.subYMax,c?b.axis_y2_default:a.subY2.domain()),a.xAxisTickFormat=a.axis.getXAxisTickFormat(),a.xAxisTickValues=a.axis.getXAxisTickValues(),a.yAxisTickValues=a.axis.getYAxisTickValues(),a.y2AxisTickValues=a.axis.getY2AxisTickValues(),a.xAxis=a.axis.getXAxis(a.x,a.xOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.subXAxis=a.axis.getXAxis(a.subX,a.subXOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.yAxis=a.axis.getYAxis(a.y,a.yOrient,b.axis_y_tick_format,a.yAxisTickValues,b.axis_y_tick_outer),a.y2Axis=a.axis.getYAxis(a.y2,a.y2Orient,b.axis_y2_tick_format,a.y2AxisTickValues,b.axis_y2_tick_outer),c||(a.brush&&a.brush.scale(a.subX),b.zoom_enabled&&a.zoom.scale(a.x)),a.updateArc&&a.updateArc()},i.getYDomainMin=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasNegativeValueInTargets(a),b=0;b=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=0>a?a:0}),c=1;c0||(k[d][b]+=+a)});return h.d3.min(Object.keys(k).map(function(a){return h.d3.min(k[a])}))},i.getYDomainMax=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasPositiveValueInTargets(a),b=0;b=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=a>0?a:0}),c=1;c+a||(k[d][b]+=+a)});return h.d3.max(Object.keys(k).map(function(a){return h.d3.max(k[a])}))},i.getYDomain=function(a,b,c){var d,e,f,g,h,i,j,k,l,n,o,p=this,q=p.config,r=a.filter(function(a){return p.axis.getId(a.id)===b}),s=c?p.filterByXDomain(r,c):r,u="y2"===b?q.axis_y2_min:q.axis_y_min,w="y2"===b?q.axis_y2_max:q.axis_y_max,x=p.getYDomainMin(s),y=p.getYDomainMax(s),z="y2"===b?q.axis_y2_center:q.axis_y_center,A=p.hasType("bar",s)&&q.bar_zerobased||p.hasType("area",s)&&q.area_zerobased,B="y2"===b?q.axis_y2_inverted:q.axis_y_inverted,C=p.hasDataLabel()&&q.axis_rotated,D=p.hasDataLabel()&&!q.axis_rotated;return x=m(u)?u:m(w)?w>x?x:w-10:x,y=m(w)?w:m(u)?y>u?y:u+10:y,0===s.length?"y2"===b?p.y2.domain():p.y.domain():(isNaN(x)&&(x=0),isNaN(y)&&(y=x),x===y&&(0>x?y=0:x=0),n=x>=0&&y>=0,o=0>=x&&0>=y,(m(u)&&n||m(w)&&o)&&(A=!1),A&&(n&&(x=0),o&&(y=0)),e=Math.abs(y-x),f=g=h=.1*e,"undefined"!=typeof z&&(i=Math.max(Math.abs(x),Math.abs(y)),y=z+i,x=z-i),C?(j=p.getDataLabelLength(x,y,"width"),k=t(p.y.range()),l=[j[0]/k,j[1]/k],g+=e*(l[1]/(1-l[0]-l[1])),h+=e*(l[0]/(1-l[0]-l[1]))):D&&(j=p.getDataLabelLength(x,y,"height"),g+=p.axis.convertPixelsToAxisPadding(j[1],e),h+=p.axis.convertPixelsToAxisPadding(j[0],e)),"y"===b&&v(q.axis_y_padding)&&(g=p.axis.getPadding(q.axis_y_padding,"top",g,e),h=p.axis.getPadding(q.axis_y_padding,"bottom",h,e)),"y2"===b&&v(q.axis_y2_padding)&&(g=p.axis.getPadding(q.axis_y2_padding,"top",g,e),h=p.axis.getPadding(q.axis_y2_padding,"bottom",h,e)),A&&(n&&(h=x),o&&(g=-y)),d=[x-h,y+g],B?d.reverse():d)},i.getXDomainMin=function(a){var b=this,c=b.config;return q(c.axis_x_min)?b.isTimeSeries()?this.parseDate(c.axis_x_min):c.axis_x_min:b.d3.min(a,function(a){return b.d3.min(a.values,function(a){return a.x})})},i.getXDomainMax=function(a){var b=this,c=b.config;return q(c.axis_x_max)?b.isTimeSeries()?this.parseDate(c.axis_x_max):c.axis_x_max:b.d3.max(a,function(a){return b.d3.max(a.values,function(a){return a.x})})},i.getXDomainPadding=function(a){var b,c,d,e,f=this,g=f.config,h=a[1]-a[0];return f.isCategorized()?c=0:f.hasType("bar")?(b=f.getMaxDataCount(),c=b>1?h/(b-1)/2:.5):c=.01*h,"object"==typeof g.axis_x_padding&&v(g.axis_x_padding)?(d=m(g.axis_x_padding.left)?g.axis_x_padding.left:c,e=m(g.axis_x_padding.right)?g.axis_x_padding.right:c):d=e="number"==typeof g.axis_x_padding?g.axis_x_padding:c,{left:d,right:e}},i.getXDomain=function(a){var b=this,c=[b.getXDomainMin(a),b.getXDomainMax(a)],d=c[0],e=c[1],f=b.getXDomainPadding(c),g=0,h=0; +return d-e!==0||b.isCategorized()||(b.isTimeSeries()?(d=new Date(.5*d.getTime()),e=new Date(1.5*e.getTime())):(d=0===d?1:.5*d,e=0===e?-1:1.5*e)),(d||0===d)&&(g=b.isTimeSeries()?new Date(d.getTime()-f.left):d-f.left),(e||0===e)&&(h=b.isTimeSeries()?new Date(e.getTime()+f.right):e+f.right),[g,h]},i.updateXDomain=function(a,b,c,d,e){var f=this,g=f.config;return c&&(f.x.domain(e?e:f.d3.extent(f.getXDomain(a))),f.orgXDomain=f.x.domain(),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent(),f.subX.domain(f.x.domain()),f.brush&&f.brush.scale(f.subX)),b&&(f.x.domain(e?e:!f.brush||f.brush.empty()?f.orgXDomain:f.brush.extent()),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent()),d&&f.x.domain(f.trimXDomain(f.x.orgDomain())),f.x.domain()},i.trimXDomain=function(a){var b=this;return a[0]<=b.orgXDomain[0]&&(a[1]=+a[1]+(b.orgXDomain[0]-a[0]),a[0]=b.orgXDomain[0]),b.orgXDomain[1]<=a[1]&&(a[0]=+a[0]-(a[1]-b.orgXDomain[1]),a[1]=b.orgXDomain[1]),a},i.isX=function(a){var b=this,c=b.config;return c.data_x&&a===c.data_x||v(c.data_xs)&&x(c.data_xs,a)},i.isNotX=function(a){return!this.isX(a)},i.getXKey=function(a){var b=this,c=b.config;return c.data_x?c.data_x:v(c.data_xs)?c.data_xs[a]:null},i.getXValuesOfXKey=function(a,b){var c,d=this,e=b&&v(b)?d.mapToIds(b):[];return e.forEach(function(b){d.getXKey(b)===a&&(c=d.data.xs[b])}),c},i.getIndexByX=function(a){var b=this,c=b.filterByX(b.data.targets,a);return c.length?c[0].index:null},i.getXValue=function(a,b){var c=this;return a in c.data.xs&&c.data.xs[a]&&m(c.data.xs[a][b])?c.data.xs[a][b]:b},i.getOtherTargetXs=function(){var a=this,b=Object.keys(a.data.xs);return b.length?a.data.xs[b[0]]:null},i.getOtherTargetX=function(a){var b=this.getOtherTargetXs();return b&&a1},i.isMultipleX=function(){return v(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},i.addName=function(a){var b,c=this;return a&&(b=c.config.data_names[a.id],a.name=b?b:a.id),a},i.getValueOnIndex=function(a,b){var c=a.filter(function(a){return a.index===b});return c.length?c[0]:null},i.updateTargetX=function(a,b){var c=this;a.forEach(function(a){a.values.forEach(function(d,e){d.x=c.generateTargetX(b[e],a.id,e)}),c.data.xs[a.id]=b})},i.updateTargetXs=function(a,b){var c=this;a.forEach(function(a){b[a.id]&&c.updateTargetX([a],b[a.id])})},i.generateTargetX=function(a,b,c){var d,e=this;return d=e.isTimeSeries()?e.parseDate(a?a:e.getXValue(b,c)):e.isCustomX()&&!e.isCategorized()?m(a)?+a:e.getXValue(b,c):c},i.cloneTarget=function(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}},i.updateXs=function(){var a=this;a.data.targets.length&&(a.xs=[],a.data.targets[0].values.forEach(function(b){a.xs[b.index]=b.x}))},i.getPrevX=function(a){var b=this.xs[a-1];return"undefined"!=typeof b?b:null},i.getNextX=function(a){var b=this.xs[a+1];return"undefined"!=typeof b?b:null},i.getMaxDataCount=function(){var a=this;return a.d3.max(a.data.targets,function(a){return a.values.length})},i.getMaxDataCountTarget=function(a){var b,c=a.length,d=0;return c>1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b},i.getEdgeX=function(a){var b=this;return a.length?[b.d3.min(a,function(a){return a.values[0].x}),b.d3.max(a,function(a){return a.values[a.values.length-1].x})]:[0,0]},i.mapToIds=function(a){return a.map(function(a){return a.id})},i.mapToTargetIds=function(a){var b=this;return a?o(a)?[a]:a:b.mapToIds(b.data.targets)},i.hasTarget=function(a,b){var c,d=this.mapToIds(a);for(c=0;ca})},i.hasPositiveValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return a>0})},i.isOrderDesc=function(){var a=this.config;return"string"==typeof a.data_order&&"desc"===a.data_order.toLowerCase()},i.isOrderAsc=function(){var a=this.config;return"string"==typeof a.data_order&&"asc"===a.data_order.toLowerCase()},i.orderTargets=function(a){var b=this,c=b.config,d=b.isOrderAsc(),e=b.isOrderDesc();return d||e?a.sort(function(a,b){var c=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(c,0),f=b.values.reduce(c,0);return d?f-e:e-f}):n(c.data_order)&&a.sort(c.data_order),a},i.filterByX=function(a,b){return this.d3.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})},i.filterRemoveNull=function(a){return a.filter(function(a){return m(a.value)})},i.filterByXDomain=function(a,b){return a.map(function(a){return{id:a.id,id_org:a.id_org,values:a.values.filter(function(a){return b[0]<=a.x&&a.x<=b[1]})}})},i.hasDataLabel=function(){var a=this.config;return"boolean"==typeof a.data_labels&&a.data_labels?!0:"object"==typeof a.data_labels&&v(a.data_labels)?!0:!1},i.getDataLabelLength=function(a,b,c){var d=this,e=[0,0],f=1.3;return d.selectChart.select("svg").selectAll(".dummy").data([a,b]).enter().append("text").text(function(a){return d.dataLabelFormat(a.id)(a)}).each(function(a,b){e[b]=this.getBoundingClientRect()[c]*f}).remove(),e},i.isNoneArc=function(a){return this.hasTarget(this.data.targets,a.id)},i.isArc=function(a){return"data"in a&&this.hasTarget(this.data.targets,a.data.id)},i.findSameXOfValues=function(a,b){var c,d=a[b].x,e=[];for(c=b-1;c>=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;cf&&(e=f,c=a)}),c},i.dist=function(a,b){var c=this,d=c.config,e=d.axis_rotated?1:0,f=d.axis_rotated?0:1,g=c.circleY(a,a.index),h=c.x(a.x);return Math.pow(h-b[e],2)+Math.pow(g-b[f],2)},i.convertValuesToStep=function(a){var b,c=[].concat(a);if(!this.isCategorized())return a;for(b=a.length+1;b>0;b--)c[b]=c[b-1];return c[0]={x:c[0].x-1,value:c[0].value,id:c[0].id},c[a.length+1]={x:c[a.length].x+1,value:c[a.length].value,id:c[a.length].id},c},i.updateDataAttributes=function(a,b){var c=this,d=c.config,e=d["data_"+a];return"undefined"==typeof b?e:(Object.keys(b).forEach(function(a){e[a]=b[a]}),c.redraw({withLegend:!0}),e)},i.convertUrlToData=function(a,b,c,d){var e=this,f=b?b:"csv";e.d3.xhr(a,function(a,b){var g;if(!b)throw new Error(a.responseURL+" "+a.status+" ("+a.statusText+")");g="json"===f?e.convertJsonToData(JSON.parse(b.response),c):"tsv"===f?e.convertTsvToData(b.response):e.convertCsvToData(b.response),d.call(e,g)})},i.convertXsvToData=function(a,b){var c,d=b.parseRows(a);return 1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=b.parse(a),c},i.convertCsvToData=function(a){return this.convertXsvToData(a,this.d3.csv)},i.convertTsvToData=function(a){return this.convertXsvToData(a,this.d3.tsv)},i.convertJsonToData=function(a,b){var c,d,e=this,f=[];return b?(b.x?(c=b.value.concat(b.x),e.config.data_x=b.x):c=b.value,f.push(c),a.forEach(function(a){var b=[];c.forEach(function(c){var d=p(a[c])?null:a[c];b.push(d)}),f.push(b)}),d=e.convertRowsToData(f)):(Object.keys(a).forEach(function(b){f.push([b].concat(a[b]))}),d=e.convertColumnsToData(f)),d},i.convertRowsToData=function(a){var b,c,d=a[0],e={},f=[];for(b=1;b=0?d.data.xs[c]=(b&&d.data.xs[c]?d.data.xs[c]:[]).concat(a.map(function(a){return a[f]}).filter(m).map(function(a,b){return d.generateTargetX(a,c,b)})):e.data_x?d.data.xs[c]=d.getOtherTargetXs():v(e.data_xs)&&(d.data.xs[c]=d.getXValuesOfXKey(f,d.data.targets)):d.data.xs[c]=a.map(function(a,b){return b})}),f.forEach(function(a){if(!d.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=f.map(function(b,c){var f=e.data_idConverter(b);return{id:f,id_org:b,values:a.map(function(a,g){var h=d.getXKey(b),i=a[h],j=d.generateTargetX(i,b,g);return d.isCustomX()&&d.isCategorized()&&0===c&&i&&(0===g&&(e.axis_x_categories=[]),e.axis_x_categories.push(i)),(p(a[b])||d.data.xs[b].length<=g)&&(j=void 0),{x:j,value:null===a[b]||isNaN(a[b])?null:+a[b],id:f}}).filter(function(a){return q(a.x)})}}),c.forEach(function(a){var b;e.data_xSort&&(a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d})),b=0,a.values.forEach(function(a){a.index=b++}),d.data.xs[a.id].sort(function(a,b){return a-b})}),e.data_type&&d.setTargetType(d.mapToIds(c).filter(function(a){return!(a in e.data_types)}),e.data_type),c.forEach(function(a){d.addCache(a.id_org,a)}),c},i.load=function(a,b){var c=this;a&&(b.filter&&(a=a.filter(b.filter)),(b.type||b.types)&&a.forEach(function(a){var d=b.types&&b.types[a.id]?b.types[a.id]:b.type;c.setTargetType(a.id,d)}),c.data.targets.forEach(function(b){for(var c=0;c0?c:320/(a.hasType("gauge")?2:1)},i.getCurrentPaddingTop=function(){var a=this.config;return m(a.padding_top)?a.padding_top:0},i.getCurrentPaddingBottom=function(){var a=this.config;return m(a.padding_bottom)?a.padding_bottom:0},i.getCurrentPaddingLeft=function(a){var b=this,c=b.config;return m(c.padding_left)?c.padding_left:c.axis_rotated?c.axis_x_show?Math.max(r(b.getAxisWidthByAxisId("x",a)),40):1:!c.axis_y_show||c.axis_y_inner?b.axis.getYAxisLabelPosition().isOuter?30:1:r(b.getAxisWidthByAxisId("y",a))},i.getCurrentPaddingRight=function(){var a=this,b=a.config,c=10,d=a.isLegendRight?a.getLegendWidth()+20:0;return m(b.padding_right)?b.padding_right+1:b.axis_rotated?c+d:!b.axis_y2_show||b.axis_y2_inner?2+d+(a.axis.getY2AxisLabelPosition().isOuter?20:0):r(a.getAxisWidthByAxisId("y2"))+d},i.getParentRectValue=function(a){for(var b,c=this.selectChart.node();c&&"BODY"!==c.tagName;){try{b=c.getBoundingClientRect()[a]}catch(d){"width"===a&&(b=c.offsetWidth)}if(b)break;c=c.parentNode}return b},i.getParentWidth=function(){return this.getParentRectValue("width")},i.getParentHeight=function(){var a=this.selectChart.style("height");return a.indexOf("px")>0?+a.replace("px",""):0},i.getSvgLeft=function(a){var b=this,c=b.config,d=c.axis_rotated||!c.axis_rotated&&!c.axis_y_inner,e=c.axis_rotated?l.axisX:l.axisY,f=b.main.select("."+e).node(),g=f&&d?f.getBoundingClientRect():{right:0},h=b.selectChart.node().getBoundingClientRect(),i=b.hasArcType(),j=g.right-h.left-(i?0:b.getCurrentPaddingLeft(a));return j>0?j:0},i.getAxisWidthByAxisId=function(a,b){var c=this,d=c.axis.getLabelPositionById(a);return c.axis.getMaxTickWidth(a,b)+(d.isInner?20:40)},i.getHorizontalAxisHeight=function(a){var b=this,c=b.config,d=30;return"x"!==a||c.axis_x_show?"x"===a&&c.axis_x_height?c.axis_x_height:"y"!==a||c.axis_y_show?"y2"!==a||c.axis_y2_show?("x"===a&&!c.axis_rotated&&c.axis_x_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_x_tick_rotate)/180)),d+(b.axis.getLabelPositionById(a).isInner?0:10)+("y2"===a?-10:0)):b.rotated_padding_top:!c.legend_show||b.isLegendRight||b.isLegendInset?1:10:8},i.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},i.getShapeIndices=function(a){var b,c,d=this,e=d.config,f={},g=0;return d.filterTargetsToShow(d.data.targets.filter(a,d)).forEach(function(a){for(b=0;b=0&&(j+=h(e[g].value)-i)}),j}},i.isWithinShape=function(a,b){var c,d=this,e=d.d3.select(a);return d.isTargetToShow(b.id)?"circle"===a.nodeName?c=d.isStepType(b)?d.isWithinStep(a,d.getYScale(b.id)(b.value)):d.isWithinCircle(a,1.5*d.pointSelectR(b)):"path"===a.nodeName&&(c=e.classed(l.bar)?d.isWithinBar(a):!0):c=!1,c},i.getInterpolate=function(a){var b=this;return b.isSplineType(a)?"cardinal":b.isStepType(a)?b.config.line_step_type:"linear"},i.initLine=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartLines)},i.updateTargetsForLine=function(a){var b,c,d=this,e=d.config,f=d.classChartLine.bind(d),g=d.classLines.bind(d),h=d.classAreas.bind(d),i=d.classCircles.bind(d),j=d.classFocus.bind(d);b=d.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",function(a){return f(a)+j(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g),c.append("g").attr("class",h),c.append("g").attr("class",function(a){return d.generateClass(l.selectedCircles,a.id)}),c.append("g").attr("class",i).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null}),a.forEach(function(a){d.main.selectAll("."+l.selectedCircles+d.getTargetSelectorSuffix(a.id)).selectAll("."+l.selectedCircle).each(function(b){b.value=a.values[b.index].value})})},i.updateLine=function(a){var b=this;b.mainLine=b.main.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.mainLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.mainLine.style("opacity",b.initialOpacity.bind(b)).style("shape-rendering",function(a){return b.isStepType(a)?"crispEdges":""}).attr("transform",null),b.mainLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLine=function(a,b){return[(b?this.mainLine.transition():this.mainLine).attr("d",a).style("stroke",this.color).style("opacity",1)]},i.generateDrawLine=function(a,b){var c=this,d=c.config,e=c.d3.svg.line(),f=c.generateGetLinePoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x(i).y(h):e.x(h).y(i),d.line_connectNull||(e=e.defined(function(a){return null!=a.value})),function(a){var f,h=d.line_connectNull?c.filterRemoveNull(a.values):a.values,i=b?c.x:c.subX,j=g.call(c,a.id),k=0,l=0;return c.isLineType(a)?d.data_regions[a.id]?f=c.lineWithRegions(h,i,j,d.data_regions[a.id]):(c.isStepType(a)&&(h=c.convertValuesToStep(h)),f=e.interpolate(c.getInterpolate(a))(h)):(h[0]&&(k=i(h[0].x),l=j(h[0].value)),f=d.axis_rotated?"M "+l+" "+k:"M "+k+" "+l),f?f:"M 0 0"}},i.generateGetLinePoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isLineType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0l||a.value<0&&l>e)&&(l=e),[[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)]]}},i.lineWithRegions=function(a,b,c,d){function e(a,b){var c;for(c=0;c=h;h+=r)x+=i(a[g-1],a[g],h,o);w=a[g].x}return x},i.updateArea=function(a){var b=this,c=b.d3;b.mainArea=b.main.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.mainArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.mainArea.style("opacity",b.orgAreaOpacity),b.mainArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawArea=function(a,b){return[(b?this.mainArea.transition():this.mainArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},i.generateDrawArea=function(a,b){var c=this,d=c.config,e=c.d3.svg.area(),f=c.generateGetAreaPoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(c.getAreaBaseValue(a.id))},j=function(a,b){return d.data_groups.length>0?f(a,b)[1][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x0(i).x1(j).y(h):e.x(h).y0(i).y1(j),d.line_connectNull||(e=e.defined(function(a){return null!==a.value})),function(a){var b,f=d.line_connectNull?c.filterRemoveNull(a.values):a.values,g=0,h=0;return c.isAreaType(a)?(c.isStepType(a)&&(f=c.convertValuesToStep(f)),b=e.interpolate(c.getInterpolate(a))(f)):(f[0]&&(g=c.x(f[0].x),h=c.getYScale(a.id)(f[0].value)),b=d.axis_rotated?"M "+h+" "+g:"M "+g+" "+h),b?b:"M 0 0"}},i.getAreaBaseValue=function(){return 0},i.generateGetAreaPoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isAreaType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0l||a.value<0&&l>e)&&(l=e),[[k,j],[k,l-(e-j)],[k,l-(e-j)],[k,j]]}},i.updateCircle=function(){var a=this;a.mainCircle=a.main.selectAll("."+l.circles).selectAll("."+l.circle).data(a.lineOrScatterData.bind(a)),a.mainCircle.enter().append("circle").attr("class",a.classCircle.bind(a)).attr("r",a.pointR.bind(a)).style("fill",a.color),a.mainCircle.style("opacity",a.initialOpacityForCircle.bind(a)),a.mainCircle.exit().remove()},i.redrawCircle=function(a,b,c){var d=this.main.selectAll("."+l.selectedCircle);return[(c?this.mainCircle.transition():this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",a).attr("cy",b),(c?d.transition():d).attr("cx",a).attr("cy",b)]},i.circleX=function(a){return a.x||0===a.x?this.x(a.x):null},i.updateCircleY=function(){var a,b,c=this;c.config.data_groups.length>0?(a=c.getShapeIndices(c.isLineType),b=c.generateGetLinePoints(a),c.circleY=function(a,c){return b(a,c)[0][1]}):c.circleY=function(a){return c.getYScale(a.id)(a.value)}},i.getCircles=function(a,b){var c=this;return(b?c.main.selectAll("."+l.circles+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.circle+(m(a)?"-"+a:""))},i.expandCircles=function(a,b,c){var d=this,e=d.pointExpandedR.bind(d);c&&d.unexpandCircles(),d.getCircles(a,b).classed(l.EXPANDED,!0).attr("r",e)},i.unexpandCircles=function(a){var b=this,c=b.pointR.bind(b);b.getCircles(a).filter(function(){return b.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",c)},i.pointR=function(a){var b=this,c=b.config;return b.isStepType(a)?0:n(c.point_r)?c.point_r(a):c.point_r},i.pointExpandedR=function(a){var b=this,c=b.config;return c.point_focus_expand_enabled?c.point_focus_expand_r?c.point_focus_expand_r:1.75*b.pointR(a):b.pointR(a)},i.pointSelectR=function(a){var b=this,c=b.config;return c.point_select_r?c.point_select_r:4*b.pointR(a)},i.isWithinCircle=function(a,b){var c=this.d3,d=c.mouse(a),e=c.select(a),f=+e.attr("cx"),g=+e.attr("cy");return Math.sqrt(Math.pow(f-d[0],2)+Math.pow(g-d[1],2))d.bar_width_max?d.bar_width_max:e},i.getBars=function(a,b){var c=this;return(b?c.main.selectAll("."+l.bars+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.bar+(m(a)?"-"+a:""))},i.expandBars=function(a,b,c){var d=this;c&&d.unexpandBars(),d.getBars(a,b).classed(l.EXPANDED,!0)},i.unexpandBars=function(a){var b=this;b.getBars(a).classed(l.EXPANDED,!1)},i.generateDrawBar=function(a,b){var c=this,d=c.config,e=c.generateGetBarPoints(a,b);return function(a,b){var c=e(a,b),f=d.axis_rotated?1:0,g=d.axis_rotated?0:1,h="M "+c[0][f]+","+c[0][g]+" L"+c[1][f]+","+c[1][g]+" L"+c[2][f]+","+c[2][g]+" L"+c[3][f]+","+c[3][g]+" z";return h}},i.generateGetBarPoints=function(a,b){var c=this,d=b?c.subXAxis:c.xAxis,e=a.__max__+1,f=c.getBarW(d,e),g=c.getShapeX(f,e,a,!!b),h=c.getShapeY(!!b),i=c.getShapeOffset(c.isBarType,a,!!b),j=b?c.getSubYScale:c.getYScale; +return function(a,b){var d=j.call(c,a.id)(0),e=i(a,b)||d,k=g(a),l=h(a);return c.config.axis_rotated&&(0l||a.value<0&&l>d)&&(l=d),[[k,e],[k,l-(d-e)],[k+f,l-(d-e)],[k+f,e]]}},i.isWithinBar=function(a){var b=this.d3.mouse(a),c=a.getBoundingClientRect(),d=a.pathSegList.getItem(0),e=a.pathSegList.getItem(1),f=Math.min(d.x,e.x),g=Math.min(d.y,e.y),h=c.width,i=c.height,j=2,k=f-j,l=f+h+j,m=g+i+j,n=g-j;return kf.width?d=f.width-g.width:0>d&&(d=4)),d},i.getYForText=function(a,b,c){var d,e=this,f=c.getBoundingClientRect();return e.config.axis_rotated?d=(a[0][0]+a[2][0]+.6*f.height)/2:(d=a[2][1],b.value<0?(d+=f.height,e.isBarType(b)&&e.isSafari()?d-=3:!e.isBarType(b)&&e.isChrome()&&(d+=3)):d+=e.isBarType(b)?-3:-6),null!==b.value||e.config.axis_rotated||(dthis.height&&(d=this.height-4)),d},i.setTargetType=function(a,b){var c=this,d=c.config;c.mapToTargetIds(a).forEach(function(a){c.withoutFadeIn[a]=b===d.data_types[a],d.data_types[a]=b}),a||(d.data_type=b)},i.hasType=function(a,b){var c=this,d=c.config.data_types,e=!1;return b=b||c.data.targets,b&&b.length?b.forEach(function(b){var c=d[b.id];(c&&c.indexOf(a)>=0||!c&&"line"===a)&&(e=!0)}):Object.keys(d).length?Object.keys(d).forEach(function(b){d[b]===a&&(e=!0)}):e=c.config.data_type===a,e},i.hasArcType=function(a){return this.hasType("pie",a)||this.hasType("donut",a)||this.hasType("gauge",a)},i.isLineType=function(a){var b=this.config,c=o(a)?a:a.id;return!b.data_types[c]||["line","spline","area","area-spline","step","area-step"].indexOf(b.data_types[c])>=0},i.isStepType=function(a){var b=o(a)?a:a.id;return["step","area-step"].indexOf(this.config.data_types[b])>=0},i.isSplineType=function(a){var b=o(a)?a:a.id;return["spline","area-spline"].indexOf(this.config.data_types[b])>=0},i.isAreaType=function(a){var b=o(a)?a:a.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[b])>=0},i.isBarType=function(a){var b=o(a)?a:a.id;return"bar"===this.config.data_types[b]},i.isScatterType=function(a){var b=o(a)?a:a.id;return"scatter"===this.config.data_types[b]},i.isPieType=function(a){var b=o(a)?a:a.id;return"pie"===this.config.data_types[b]},i.isGaugeType=function(a){var b=o(a)?a:a.id;return"gauge"===this.config.data_types[b]},i.isDonutType=function(a){var b=o(a)?a:a.id;return"donut"===this.config.data_types[b]},i.isArcType=function(a){return this.isPieType(a)||this.isDonutType(a)||this.isGaugeType(a)},i.lineData=function(a){return this.isLineType(a)?[a]:[]},i.arcData=function(a){return this.isArcType(a.data)?[a]:[]},i.barData=function(a){return this.isBarType(a)?a.values:[]},i.lineOrScatterData=function(a){return this.isLineType(a)||this.isScatterType(a)?a.values:[]},i.barOrLineData=function(a){return this.isBarType(a)||this.isLineType(a)?a.values:[]},i.initGrid=function(){var a=this,b=a.config,c=a.d3;a.grid=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid),b.grid_x_show&&a.grid.append("g").attr("class",l.xgrids),b.grid_y_show&&a.grid.append("g").attr("class",l.ygrids),b.grid_focus_show&&a.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),a.xgrid=c.selectAll([]),b.grid_lines_front||a.initGridLines()},i.initGridLines=function(){var a=this,b=a.d3;a.gridLines=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),a.gridLines.append("g").attr("class",l.xgridLines),a.gridLines.append("g").attr("class",l.ygridLines),a.xgridLines=b.selectAll([])},i.updateXGrid=function(a){var b=this,c=b.config,d=b.d3,e=b.generateGridData(c.grid_x_type,b.x),f=b.isCategorized()?b.xAxis.tickOffset():0;b.xgridAttr=c.axis_rotated?{x1:0,x2:b.width,y1:function(a){return b.x(a)-f},y2:function(a){return b.x(a)-f}}:{x1:function(a){return b.x(a)+f},x2:function(a){return b.x(a)+f},y1:0,y2:b.height},b.xgrid=b.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(e),b.xgrid.enter().append("line").attr("class",l.xgrid),a||b.xgrid.attr(b.xgridAttr).style("opacity",function(){return+d.select(this).attr(c.axis_rotated?"y1":"x1")===(c.axis_rotated?b.height:0)?0:1}),b.xgrid.exit().remove()},i.updateYGrid=function(){var a=this,b=a.config,c=a.yAxis.tickValues()||a.y.ticks(b.grid_y_ticks);a.ygrid=a.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(c),a.ygrid.enter().append("line").attr("class",l.ygrid),a.ygrid.attr("x1",b.axis_rotated?a.y:0).attr("x2",b.axis_rotated?a.y:a.width).attr("y1",b.axis_rotated?0:a.y).attr("y2",b.axis_rotated?a.height:a.y),a.ygrid.exit().remove(),a.smoothLines(a.ygrid,"grid")},i.gridTextAnchor=function(a){return a.position?a.position:"end"},i.gridTextDx=function(a){return"start"===a.position?4:"middle"===a.position?0:-4},i.xGridTextX=function(a){return"start"===a.position?-this.height:"middle"===a.position?-this.height/2:0},i.yGridTextX=function(a){return"start"===a.position?0:"middle"===a.position?this.width/2:this.width},i.updateGrid=function(a){var b,c,d,e=this,f=e.main,g=e.config;e.grid.style("visibility",e.hasArcType()?"hidden":"visible"),f.select("line."+l.xgridFocus).style("visibility","hidden"),g.grid_x_show&&e.updateXGrid(),e.xgridLines=f.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(g.grid_x_lines),b=e.xgridLines.enter().append("g").attr("class",function(a){return l.xgridLine+(a["class"]?" "+a["class"]:"")}),b.append("line").style("opacity",0),b.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"":"rotate(-90)").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),e.xgridLines.exit().transition().duration(a).style("opacity",0).remove(),g.grid_y_show&&e.updateYGrid(),e.ygridLines=f.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(g.grid_y_lines),c=e.ygridLines.enter().append("g").attr("class",function(a){return l.ygridLine+(a["class"]?" "+a["class"]:"")}),c.append("line").style("opacity",0),c.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"rotate(-90)":"").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),d=e.yv.bind(e),e.ygridLines.select("line").transition().duration(a).attr("x1",g.axis_rotated?d:0).attr("x2",g.axis_rotated?d:e.width).attr("y1",g.axis_rotated?0:d).attr("y2",g.axis_rotated?e.height:d).style("opacity",1),e.ygridLines.select("text").transition().duration(a).attr("x",g.axis_rotated?e.xGridTextX.bind(e):e.yGridTextX.bind(e)).attr("y",d).text(function(a){return a.text}).style("opacity",1),e.ygridLines.exit().transition().duration(a).style("opacity",0).remove()},i.redrawGrid=function(a){var b=this,c=b.config,d=b.xv.bind(b),e=b.xgridLines.select("line"),f=b.xgridLines.select("text");return[(a?e.transition():e).attr("x1",c.axis_rotated?0:d).attr("x2",c.axis_rotated?b.width:d).attr("y1",c.axis_rotated?d:0).attr("y2",c.axis_rotated?d:b.height).style("opacity",1),(a?f.transition():f).attr("x",c.axis_rotated?b.yGridTextX.bind(b):b.xGridTextX.bind(b)).attr("y",d).text(function(a){return a.text}).style("opacity",1)]},i.showXGridFocus=function(a){var b=this,c=b.config,d=a.filter(function(a){return a&&m(a.value)}),e=b.main.selectAll("line."+l.xgridFocus),f=b.xx.bind(b);c.tooltip_show&&(b.hasType("scatter")||b.hasArcType()||(e.style("visibility","visible").data([d[0]]).attr(c.axis_rotated?"y1":"x1",f).attr(c.axis_rotated?"y2":"x2",f),b.smoothLines(e,"grid")))},i.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},i.updateXgridFocus=function(){var a=this,b=a.config;a.main.select("line."+l.xgridFocus).attr("x1",b.axis_rotated?0:-10).attr("x2",b.axis_rotated?a.width:-10).attr("y1",b.axis_rotated?-10:0).attr("y2",b.axis_rotated?-10:a.height)},i.generateGridData=function(a,b){var c,d,e,f,g=this,h=[],i=g.main.select("."+l.axisX).selectAll(".tick").size();if("year"===a)for(c=g.getXDomain(),d=c[0].getFullYear(),e=c[1].getFullYear(),f=d;e>=f;f++)h.push(new Date(f+"-01-01 00:00:00"));else h=b.ticks(10),h.length>i&&(h=h.filter(function(a){return(""+a).indexOf(".")<0}));return h},i.getGridFilterToRemove=function(a){return a?function(b){var c=!1;return[].concat(a).forEach(function(a){("value"in a&&b.value===a.value||"class"in a&&b["class"]===a["class"])&&(c=!0)}),c}:function(){return!0}},i.removeGridLines=function(a,b){var c=this,d=c.config,e=c.getGridFilterToRemove(a),f=function(a){return!e(a)},g=b?l.xgridLines:l.ygridLines,h=b?l.xgridLine:l.ygridLine;c.main.select("."+g).selectAll("."+h).filter(e).transition().duration(d.transition_duration).style("opacity",0).remove(),b?d.grid_x_lines=d.grid_x_lines.filter(f):d.grid_y_lines=d.grid_y_lines.filter(f)},i.initTooltip=function(){var a,b=this,c=b.config;if(b.tooltip=b.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),c.tooltip_init_show){if(b.isTimeSeries()&&o(c.tooltip_init_x)){for(c.tooltip_init_x=b.parseDate(c.tooltip_init_x),a=0;a"+(g||0===g?""+g+"":"")),h=p(a[f].value,a[f].ratio,a[f].id,a[f].index),void 0!==h&&(i=o(a[f].name,a[f].ratio,a[f].id,a[f].index),j=k.levelColor?k.levelColor(a[f].value):d(a[f].id),e+="",e+=""+i+"",e+=""+h+"",e+=""));return e+""},i.tooltipPosition=function(a,b,c,d){var e,f,g,h,i,j=this,k=j.config,l=j.d3,m=j.hasArcType(),n=l.mouse(d);return m?(f=(j.width-(j.isLegendRight?j.getLegendWidth():0))/2+n[0],h=j.height/2+n[1]+20):(e=j.getSvgLeft(!0),k.axis_rotated?(f=e+n[0]+100,g=f+b,i=j.currentWidth-j.getCurrentPaddingRight(),h=j.x(a[0].x)+20):(f=e+j.getCurrentPaddingLeft(!0)+j.x(a[0].x)+20,g=f+b,i=e+j.currentWidth-j.getCurrentPaddingRight(),h=n[1]+15),g>i&&(f-=g-i+20),h+c>j.currentHeight&&(h-=c+30)),0>h&&(h=0),{top:h,left:f}},i.showTooltip=function(a,b){var c,d,e,f=this,g=f.config,h=f.hasArcType(),j=a.filter(function(a){return a&&m(a.value)}),k=g.tooltip_position||i.tooltipPosition;0!==j.length&&g.tooltip_show&&(f.tooltip.html(g.tooltip_contents.call(f,a,f.axis.getXAxisTickFormat(),f.getYFormat(h),f.color)).style("display","block"),c=f.tooltip.property("offsetWidth"),d=f.tooltip.property("offsetHeight"),e=k.call(this,j,c,d,b),f.tooltip.style("top",e.top+"px").style("left",e.left+"px"))},i.hideTooltip=function(){this.tooltip.style("display","none")},i.initLegend=function(){var a=this;return a.legendItemTextBox={},a.legendHasRendered=!1,a.legend=a.svg.append("g").attr("transform",a.getTranslate("legend")),a.config.legend_show?void a.updateLegendWithDefaults():(a.legend.style("visibility","hidden"),void(a.hiddenLegendIds=a.mapToIds(a.data.targets)))},i.updateLegendWithDefaults=function(){var a=this;a.updateLegend(a.mapToIds(a.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},i.updateSizeForLegend=function(a,b){var c=this,d=c.config,e={top:c.isLegendTop?c.getCurrentPaddingTop()+d.legend_inset_y+5.5:c.currentHeight-a-c.getCurrentPaddingBottom()-d.legend_inset_y,left:c.isLegendLeft?c.getCurrentPaddingLeft()+d.legend_inset_x+.5:c.currentWidth-b-c.getCurrentPaddingRight()-d.legend_inset_x+.5};c.margin3={top:c.isLegendRight?0:c.isLegendInset?e.top:c.currentHeight-a,right:0/0,bottom:0,left:c.isLegendRight?c.currentWidth-b:c.isLegendInset?e.left:0}},i.transformLegend=function(a){var b=this;(a?b.legend.transition():b.legend).attr("transform",b.getTranslate("legend"))},i.updateLegendStep=function(a){this.legendStep=a},i.updateLegendItemWidth=function(a){this.legendItemWidth=a},i.updateLegendItemHeight=function(a){this.legendItemHeight=a},i.getLegendWidth=function(){var a=this;return a.config.legend_show?a.isLegendRight||a.isLegendInset?a.legendItemWidth*(a.legendStep+1):a.currentWidth:0},i.getLegendHeight=function(){var a=this,b=0;return a.config.legend_show&&(b=a.isLegendRight?a.currentHeight:Math.max(20,a.legendItemHeight)*(a.legendStep+1)),b},i.opacityForLegend=function(a){return a.classed(l.legendItemHidden)?null:1},i.opacityForUnfocusedLegend=function(a){return a.classed(l.legendItemHidden)?null:.3},i.toggleFocusLegend=function(a,b){var c=this;a=c.mapToTargetIds(a),c.legend.selectAll("."+l.legendItem).filter(function(b){return a.indexOf(b)>=0}).classed(l.legendItemFocused,b).transition().duration(100).style("opacity",function(){var a=b?c.opacityForLegend:c.opacityForUnfocusedLegend;return a.call(c,c.d3.select(this))})},i.revertLegend=function(){var a=this,b=a.d3;a.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return a.opacityForLegend(b.select(this))})},i.showLegend=function(a){var b=this,c=b.config;c.legend_show||(c.legend_show=!0,b.legend.style("visibility","visible"),b.legendHasRendered||b.updateLegendWithDefaults()),b.removeHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("visibility","visible").transition().style("opacity",function(){return b.opacityForLegend(b.d3.select(this))})},i.hideLegend=function(a){var b=this,c=b.config;c.legend_show&&u(a)&&(c.legend_show=!1,b.legend.style("visibility","hidden")),b.addHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("opacity",0).style("visibility","hidden")},i.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},i.updateLegend=function(a,b,c){function d(a,b){return u.legendItemTextBox[b]||(u.legendItemTextBox[b]=u.getTextRect(a.textContent,l.legendItem)),u.legendItemTextBox[b]}function e(b,c,e){function f(a,b){b||(g=(o-D-n)/2,B>g&&(g=(o-n)/2,D=0,J++)),I[a]=J,H[J]=u.isLegendInset?10:g,E[a]=D,D+=n}var g,h,i=0===e,j=e===a.length-1,k=d(b,c),l=k.width+C+(!j||u.isLegendRight||u.isLegendInset?y:0),m=k.height+x,n=u.isLegendRight||u.isLegendInset?m:l,o=u.isLegendRight||u.isLegendInset?u.getLegendHeight():u.getLegendWidth();return i&&(D=0,J=0,z=0,A=0),v.legend_show&&!u.isLegendToShow(c)?void(F[c]=G[c]=I[c]=E[c]=0):(F[c]=l,G[c]=m,(!z||l>=z)&&(z=l),(!A||m>=A)&&(A=m),h=u.isLegendRight||u.isLegendInset?A:z,void(v.legend_equally?(Object.keys(F).forEach(function(a){F[a]=z}),Object.keys(G).forEach(function(a){G[a]=A}),g=(o-h*a.length)/2,B>g?(D=0,J=0,a.forEach(function(a){f(a)})):f(c,!0)):f(c)))}var f,g,h,i,j,k,m,n,o,p,r,s,t,u=this,v=u.config,x=4,y=10,z=0,A=0,B=10,C=15,D=0,E={},F={},G={},H=[0],I={},J=0;b=b||{},n=w(b,"withTransition",!0),o=w(b,"withTransitionForTransform",!0),u.isLegendInset&&(J=v.legend_inset_step?v.legend_inset_step:a.length,u.updateLegendStep(J)),u.isLegendRight?(f=function(a){return z*I[a]},i=function(a){return H[I[a]]+E[a]}):u.isLegendInset?(f=function(a){return z*I[a]+10},i=function(a){return H[I[a]]+E[a]}):(f=function(a){return H[I[a]]+E[a]},i=function(a){return A*I[a]}),g=function(a,b){return f(a,b)+14},j=function(a,b){return i(a,b)+9},h=function(a,b){return f(a,b)},k=function(a,b){return i(a,b)-5},m=u.legend.selectAll("."+l.legendItem).data(a).enter().append("g").attr("class",function(a){return u.generateClass(l.legendItem,a)}).style("visibility",function(a){return u.isLegendToShow(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){v.legend_item_onclick?v.legend_item_onclick.call(u,a):u.d3.event.altKey?(u.api.hide(),u.api.show(a)):(u.api.toggle(a),u.isTargetToShow(a)?u.api.focus(a):u.api.revert())}).on("mouseover",function(a){u.d3.select(this).classed(l.legendItemFocused,!0),!u.transiting&&u.isTargetToShow(a)&&u.api.focus(a),v.legend_item_onmouseover&&v.legend_item_onmouseover.call(u,a)}).on("mouseout",function(a){u.d3.select(this).classed(l.legendItemFocused,!1),u.api.revert(),v.legend_item_onmouseout&&v.legend_item_onmouseout.call(u,a)}),m.append("text").text(function(a){return q(v.data_names[a])?v.data_names[a]:a}).each(function(a,b){e(this,a,b)}).style("pointer-events","none").attr("x",u.isLegendRight||u.isLegendInset?g:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:j),m.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",u.isLegendRight||u.isLegendInset?h:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:k),m.append("rect").attr("class",l.legendItemTile).style("pointer-events","none").style("fill",u.color).attr("x",u.isLegendRight||u.isLegendInset?g:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:i).attr("width",10).attr("height",10),t=u.legend.select("."+l.legendBackground+" rect"),u.isLegendInset&&z>0&&0===t.size()&&(t=u.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),p=u.legend.selectAll("text").data(a).text(function(a){return q(v.data_names[a])?v.data_names[a]:a}).each(function(a,b){e(this,a,b)}),(n?p.transition():p).attr("x",g).attr("y",j),r=u.legend.selectAll("rect."+l.legendItemEvent).data(a),(n?r.transition():r).attr("width",function(a){return F[a]}).attr("height",function(a){return G[a]}).attr("x",h).attr("y",k),s=u.legend.selectAll("rect."+l.legendItemTile).data(a),(n?s.transition():s).style("fill",u.color).attr("x",f).attr("y",i),t&&(n?t.transition():t).attr("height",u.getLegendHeight()-12).attr("width",z*(J+1)+10),u.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(a){return!u.isTargetToShow(a)}),u.updateLegendItemWidth(z),u.updateLegendItemHeight(A),u.updateLegendStep(J),u.updateSizes(),u.updateScales(),u.updateSvgSize(),u.transformAll(o,c),u.legendHasRendered=!0},c(b,f),f.prototype.init=function(){var a=this.owner,b=a.config,c=a.main;a.axes.x=c.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",a.clipPathForXAxis).attr("transform",a.getTranslate("x")).style("visibility",b.axis_x_show?"visible":"hidden"),a.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",b.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),a.axes.y=c.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",b.axis_y_inner?"":a.clipPathForYAxis).attr("transform",a.getTranslate("y")).style("visibility",b.axis_y_show?"visible":"hidden"),a.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),a.axes.y2=c.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",a.getTranslate("y2")).style("visibility",b.axis_y2_show?"visible":"hidden"),a.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={isCategory:i.isCategorized(),withOuterTick:e,tickMultiline:j.axis_x_tick_multiline,tickWidth:j.axis_x_tick_width,tickTextRotate:h?0:j.axis_x_tick_rotate,withoutTransition:f},l=g(i.d3,k).scale(a).orient(b);return i.isTimeSeries()&&d&&(d=d.map(function(a){return i.parseDate(a)})),l.tickFormat(c).tickValues(d),i.isCategorized()&&(l.tickCentered(j.axis_x_tick_centered),u(j.axis_x_tick_culling)&&(j.axis_x_tick_culling=!1)),l},f.prototype.updateXAxisTickValues=function(a,b){var c,d=this.owner,e=d.config;return(e.axis_x_tick_fit||e.axis_x_tick_count)&&(c=this.generateTickValues(d.mapTargetsToUniqueXs(a),e.axis_x_tick_count,d.isTimeSeries())),b?b.tickValues(c):(d.xAxis.tickValues(c),d.subXAxis.tickValues(c)),c},f.prototype.getYAxis=function(a,b,c,d,e,f){var h={withOuterTick:e,withoutTransition:f},i=this.owner,j=i.d3,k=i.config,l=g(j,h).scale(a).orient(b).tickFormat(c);return i.isTimeSeriesY()?l.ticks(j.time[k.axis_y_tick_time_value],k.axis_y_tick_time_interval):l.tickValues(d),l},f.prototype.getId=function(a){var b=this.owner.config;return a in b.data_axes?b.data_axes[a]:"y"},f.prototype.getXAxisTickFormat=function(){var a=this.owner,b=a.config,c=a.isTimeSeries()?a.defaultAxisTimeFormat:a.isCategorized()?a.categoryName:function(a){return 0>a?a.toFixed(0):a};return b.axis_x_tick_format&&(n(b.axis_x_tick_format)?c=b.axis_x_tick_format:a.isTimeSeries()&&(c=function(c){return c?a.axisTimeFormat(b.axis_x_tick_format)(c):""})),n(c)?function(b){return c.call(a,b)}:c},f.prototype.getTickValues=function(a,b){return a?a:b?b.tickValues():void 0},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(a){var b,c=this.owner,d=c.config;return"y"===a?b=d.axis_y_label:"y2"===a?b=d.axis_y2_label:"x"===a&&(b=d.axis_x_label),b},f.prototype.getLabelText=function(a){var b=this.getLabelOptionByAxisId(a);return o(b)?b:b?b.text:null},f.prototype.setLabelText=function(a,b){var c=this.owner,d=c.config,e=this.getLabelOptionByAxisId(a);o(e)?"y"===a?d.axis_y_label=b:"y2"===a?d.axis_y2_label=b:"x"===a&&(d.axis_x_label=b):e&&(e.text=b)},f.prototype.getLabelPosition=function(a,b){var c=this.getLabelOptionByAxisId(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(a){return"y2"===a?this.getY2AxisLabelPosition():"y"===a?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(a,b){var c=this.owner;return a?b.isLeft?0:b.isCenter?c.width/2:c.width:b.isBottom?-c.height:b.isMiddle?-c.height/2:0},f.prototype.dxForAxisLabel=function(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var a=this.owner,b=a.config,c=this.getXAxisLabelPosition();return b.axis_rotated?c.isInner?"1.2em":-25-this.getMaxTickWidth("x"):c.isInner?"-0.5em":b.axis_x_height?b.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var a=this.owner,b=this.getYAxisLabelPosition();return a.config.axis_rotated?b.isInner?"-0.5em":"3em":b.isInner?"1.2em":-10-(a.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var a=this.owner,b=this.getY2AxisLabelPosition();return a.config.axis_rotated?b.isInner?"1.2em":"-2.2em":b.isInner?"-0.5em":15+(a.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(!a.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(a,b){var c,d,e,f,g,h=this.owner,i=h.config,j=0;return b&&h.currentMaxTickWidths[a]?h.currentMaxTickWidths[a]:(h.svg&&(c=h.filterTargetsToShow(h.data.targets),"y"===a?(d=h.y.copy().domain(h.getYDomain(c,"y")),e=this.getYAxis(d,h.yOrient,i.axis_y_tick_format,h.yAxisTickValues,!1,!0)):"y2"===a?(d=h.y2.copy().domain(h.getYDomain(c,"y2")),e=this.getYAxis(d,h.y2Orient,i.axis_y2_tick_format,h.y2AxisTickValues,!1,!0)):(d=h.x.copy().domain(h.getXDomain(c)),e=this.getXAxis(d,h.xOrient,h.xAxisTickFormat,h.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(c,e)),f=h.d3.select("body").append("div").classed("c3",!0),g=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g.append("g").call(e).each(function(){h.d3.select(this).selectAll("text").each(function(){var a=this.getBoundingClientRect();j=j?h.currentMaxTickWidths[a]:j,h.currentMaxTickWidths[a])},f.prototype.updateLabels=function(a){var b=this.owner,c=b.main.select("."+l.axisX+" ."+l.axisXLabel),d=b.main.select("."+l.axisY+" ."+l.axisYLabel),e=b.main.select("."+l.axisY2+" ."+l.axisY2Label);(a?c.transition():c).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(a?d.transition():d).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(a?e.transition():e).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(a,b,c,d){return m(a[b])?"ratio"===a.unit?a[b]*d:this.convertPixelsToAxisPadding(a[b],d):c},f.prototype.convertPixelsToAxisPadding=function(a,b){var c=this.owner,d=c.config.axis_rotated?c.width:c.height;return b*(a/d)},f.prototype.generateTickValues=function(a,b,c){var d,e,f,g,h,i,j,k=a;if(b)if(d=n(b)?b():b,1===d)k=[a[0]];else if(2===d)k=[a[0],a[a.length-1]];else if(d>2){for(g=d-2,e=a[0],f=a[a.length-1],h=(f-e)/(g+1),k=[e],i=0;g>i;i++)j=+e+h*(i+1),k.push(c?new Date(j):j);k.push(f)}return c||(k=k.sort(function(a,b){return a-b})),k},f.prototype.generateTransitions=function(a){var b=this.owner,c=b.axes;return{axisX:a?c.x.transition().duration(a):c.x,axisY:a?c.y.transition().duration(a):c.y,axisY2:a?c.y2.transition().duration(a):c.y2,axisSubX:a?c.subx.transition().duration(a):c.subx}},f.prototype.redraw=function(a,b){var c=this.owner;c.axes.x.style("opacity",b?0:1),c.axes.y.style("opacity",b?0:1),c.axes.y2.style("opacity",b?0:1),c.axes.subx.style("opacity",b?0:1),a.axisX.call(c.xAxis),a.axisY.call(c.yAxis),a.axisY2.call(c.y2Axis),a.axisSubX.call(c.subXAxis)},i.getClipPath=function(b){var c=a.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(c?"":document.URL.split("#")[0])+"#"+b+")"},i.appendClip=function(a,b){return a.append("clipPath").attr("id",b).append("rect")},i.getAxisClipX=function(a){var b=Math.max(30,this.margin.left);return a?-(1+b):-(b-1)},i.getAxisClipY=function(a){return a?-20:-this.margin.top},i.getXAxisClipX=function(){var a=this;return a.getAxisClipX(!a.config.axis_rotated)},i.getXAxisClipY=function(){var a=this;return a.getAxisClipY(!a.config.axis_rotated)},i.getYAxisClipX=function(){var a=this;return a.config.axis_y_inner?-1:a.getAxisClipX(a.config.axis_rotated)},i.getYAxisClipY=function(){var a=this;return a.getAxisClipY(a.config.axis_rotated)},i.getAxisClipWidth=function(a){var b=this,c=Math.max(30,b.margin.left),d=Math.max(30,b.margin.right);return a?b.width+2+c+d:b.margin.left+20},i.getAxisClipHeight=function(a){return(a?this.margin.bottom:this.margin.top+this.height)+20},i.getXAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(!a.config.axis_rotated)},i.getXAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(!a.config.axis_rotated)},i.getYAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(a.config.axis_rotated)+(a.config.axis_y_inner?20:0)},i.getYAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(a.config.axis_rotated)},i.initPie=function(){var a=this,b=a.d3,c=a.config;a.pie=b.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)}),c.data_order||a.pie.sort(null)},i.updateRadius=function(){var a=this,b=a.config,c=b.gauge_width||b.donut_width;a.radiusExpanded=Math.min(a.arcWidth,a.arcHeight)/2,a.radius=.95*a.radiusExpanded,a.innerRadiusRatio=c?(a.radius-c)/a.radius:.6,a.innerRadius=a.hasType("donut")||a.hasType("gauge")?a.radius*a.innerRadiusRatio:0},i.updateArc=function(){var a=this;a.svgArc=a.getSvgArc(),a.svgArcExpanded=a.getSvgArcExpanded(),a.svgArcExpandedSub=a.getSvgArcExpanded(.98)},i.updateAngle=function(a){var b,c,d=this,e=d.config,f=!1,g=0,h=e.gauge_min,i=e.gauge_max; +return d.pie(d.filterTargetsToShow(d.data.targets)).forEach(function(b){f||b.data.id!==a.data.id||(f=!0,a=b,a.index=g),g++}),isNaN(a.startAngle)&&(a.startAngle=0),isNaN(a.endAngle)&&(a.endAngle=a.startAngle),d.isGaugeType(a.data)&&(b=Math.PI/(i-h),c=a.value.375?1.175-36/g.radius:.8)*g.radius/e:0,i="translate("+c*f+","+d*f+")"),i},i.getArcRatio=function(a){var b=this,c=b.hasType("gauge")?Math.PI:2*Math.PI;return a?(a.endAngle-a.startAngle)/c:null},i.convertToArcData=function(a){return this.addName({id:a.data.id,value:a.value,ratio:this.getArcRatio(a),index:a.index})},i.textForArcLabel=function(a){var b,c,d,e,f,g=this;return g.shouldShowArcLabel()?(b=g.updateAngle(a),c=b?b.value:null,d=g.getArcRatio(b),e=a.data.id,g.hasType("gauge")||g.meetsArcLabelThreshold(d)?(f=g.getArcLabelFormat(),f?f(c,d,e):g.defaultArcValueFormat(c,d)):""):""},i.expandArc=function(b){var c,d=this;return d.transiting?void(c=a.setInterval(function(){d.transiting||(a.clearInterval(c),d.legend.selectAll(".c3-legend-item-focused").size()>0&&d.expandArc(b))},10)):(b=d.mapToTargetIds(b),void d.svg.selectAll(d.selectorTargets(b,"."+l.chartArc)).each(function(a){d.shouldExpand(a.data.id)&&d.d3.select(this).selectAll("path").transition().duration(50).attr("d",d.svgArcExpanded).transition().duration(100).attr("d",d.svgArcExpandedSub).each(function(a){d.isDonutType(a.data)})}))},i.unexpandArc=function(a){var b=this;b.transiting||(a=b.mapToTargetIds(a),b.svg.selectAll(b.selectorTargets(a,"."+l.chartArc)).selectAll("path").transition().duration(50).attr("d",b.svgArc),b.svg.selectAll("."+l.arc).style("opacity",1))},i.shouldExpand=function(a){var b=this,c=b.config;return b.isDonutType(a)&&c.donut_expand||b.isGaugeType(a)&&c.gauge_expand||b.isPieType(a)&&c.pie_expand},i.shouldShowArcLabel=function(){var a=this,b=a.config,c=!0;return a.hasType("donut")?c=b.donut_label_show:a.hasType("pie")&&(c=b.pie_label_show),c},i.meetsArcLabelThreshold=function(a){var b=this,c=b.config,d=b.hasType("donut")?c.donut_label_threshold:c.pie_label_threshold;return a>=d},i.getArcLabelFormat=function(){var a=this,b=a.config,c=b.pie_label_format;return a.hasType("gauge")?c=b.gauge_label_format:a.hasType("donut")&&(c=b.donut_label_format),c},i.getArcTitle=function(){var a=this;return a.hasType("donut")?a.config.donut_title:""},i.updateTargetsForArc=function(a){var b,c,d=this,e=d.main,f=d.classChartArc.bind(d),g=d.classArcs.bind(d),h=d.classFocus.bind(d);b=e.select("."+l.chartArcs).selectAll("."+l.chartArc).data(d.pie(a)).attr("class",function(a){return f(a)+h(a.data)}),c=b.enter().append("g").attr("class",f),c.append("g").attr("class",g),c.append("text").attr("dy",d.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},i.initArc=function(){var a=this;a.arcs=a.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",a.getTranslate("arc")),a.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(a.getArcTitle())},i.redrawArc=function(a,b,c){var d,e=this,f=e.d3,g=e.config,h=e.main;d=h.selectAll("."+l.arcs).selectAll("."+l.arc).data(e.arcData.bind(e)),d.enter().append("path").attr("class",e.classArc.bind(e)).style("fill",function(a){return e.color(a.data)}).style("cursor",function(a){return g.interaction_enabled&&g.data_selection_isselectable(a)?"pointer":null}).style("opacity",0).each(function(a){e.isGaugeType(a.data)&&(a.startAngle=a.endAngle=-1*(Math.PI/2)),this._current=a}),d.attr("transform",function(a){return!e.isGaugeType(a.data)&&c?"scale(0)":""}).style("opacity",function(a){return a===this._current?0:1}).on("mouseover",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),c=e.convertToArcData(b),e.expandArc(b.data.id),e.api.focus(b.data.id),e.toggleFocusLegend(b.data.id,!0),e.config.data_onmouseover(c,this))}:null).on("mousemove",g.interaction_enabled?function(a){var b=e.updateAngle(a),c=e.convertToArcData(b),d=[c];e.showTooltip(d,this)}:null).on("mouseout",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),c=e.convertToArcData(b),e.unexpandArc(b.data.id),e.api.revert(),e.revertLegend(),e.hideTooltip(),e.config.data_onmouseout(c,this))}:null).on("click",g.interaction_enabled?function(a,b){var c=e.updateAngle(a),d=e.convertToArcData(c);e.toggleShape&&e.toggleShape(this,d,b),e.config.data_onclick.call(e.api,d,this)}:null).each(function(){e.transiting=!0}).transition().duration(a).attrTween("d",function(a){var b,c=e.updateAngle(a);return c?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),b=f.interpolate(this._current,c),this._current=b(0),function(c){var d=b(c);return d.data=a.data,e.getArc(d,!0)}):function(){return"M 0 0"}}).attr("transform",c?"scale(1)":"").style("fill",function(a){return e.levelColor?e.levelColor(a.data.values[0].value):e.color(a.data.id)}).style("opacity",1).call(e.endall,function(){e.transiting=!1}),d.exit().transition().duration(b).style("opacity",0).remove(),h.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(a){return e.isGaugeType(a.data)?l.gaugeValue:""}).text(e.textForArcLabel.bind(e)).attr("transform",e.transformForArcLabel.bind(e)).style("font-size",function(a){return e.isGaugeType(a.data)?Math.round(e.radius/5)+"px":""}).transition().duration(a).style("opacity",function(a){return e.isTargetToShow(a.data.id)&&e.isArcType(a.data)?1:0}),h.select("."+l.chartArcsTitle).style("opacity",e.hasType("donut")||e.hasType("gauge")?1:0),e.hasType("gauge")&&(e.arcs.select("."+l.chartArcsBackground).attr("d",function(){var a={data:[{value:g.gauge_max}],startAngle:-1*(Math.PI/2),endAngle:Math.PI/2};return e.getArc(a,!0,!0)}),e.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(g.gauge_label_show?g.gauge_units:""),e.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(e.innerRadius+(e.radius-e.innerRadius)/2)+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_min:""),e.arcs.select("."+l.chartArcsGaugeMax).attr("dx",e.innerRadius+(e.radius-e.innerRadius)/2+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_max:""))},i.initGauge=function(){var a=this.arcs;this.hasType("gauge")&&(a.append("path").attr("class",l.chartArcsBackground),a.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},i.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},i.initRegion=function(){var a=this;a.region=a.main.append("g").attr("clip-path",a.clipPath).attr("class",l.regions)},i.updateRegion=function(a){var b=this,c=b.config;b.region.style("visibility",b.hasArcType()?"hidden":"visible"),b.mainRegion=b.main.select("."+l.regions).selectAll("."+l.region).data(c.regions),b.mainRegion.enter().append("g").attr("class",b.classRegion.bind(b)).append("rect").style("fill-opacity",0),b.mainRegion.exit().transition().duration(a).style("opacity",0).remove()},i.redrawRegion=function(a){var b=this,c=b.mainRegion.selectAll("rect"),d=b.regionX.bind(b),e=b.regionY.bind(b),f=b.regionWidth.bind(b),g=b.regionHeight.bind(b);return[(a?c.transition():c).attr("x",d).attr("y",e).attr("width",f).attr("height",g).style("fill-opacity",function(a){return m(a.opacity)?a.opacity:.1})]},i.regionX=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"start"in a?e(a.start):0:d.axis_rotated?0:"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionY=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?0:"end"in a?e(a.end):0:d.axis_rotated&&"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionWidth=function(a){var b,c=this,d=c.config,e=c.regionX(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"end"in a?f(a.end):c.width:d.axis_rotated?c.width:"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.width,e>b?0:b-e},i.regionHeight=function(a){var b,c=this,d=c.config,e=this.regionY(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?c.height:"start"in a?f(a.start):c.height:d.axis_rotated&&"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.height,e>b?0:b-e},i.isRegionOnX=function(a){return!a.axis||"x"===a.axis},i.drag=function(a){var b,c,d,e,f,g,h,i,j=this,k=j.config,m=j.main,n=j.d3;j.hasArcType()||k.data_selection_enabled&&(!k.zoom_enabled||j.zoom.altDomain)&&k.data_selection_multiple&&(b=j.dragStart[0],c=j.dragStart[1],d=a[0],e=a[1],f=Math.min(b,d),g=Math.max(b,d),h=k.data_selection_grouped?j.margin.top:Math.min(c,e),i=k.data_selection_grouped?j.height:Math.max(c,e),m.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",g-f).attr("height",i-h),m.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(a){return k.data_selection_isselectable(a)}).each(function(a,b){var c,d,e,k,m,o,p=n.select(this),q=p.classed(l.SELECTED),r=p.classed(l.INCLUDED),s=!1;if(p.classed(l.circle))c=1*p.attr("cx"),d=1*p.attr("cy"),m=j.togglePoint,s=c>f&&g>c&&d>h&&i>d;else{if(!p.classed(l.bar))return;o=y(this),c=o.x,d=o.y,e=o.width,k=o.height,m=j.togglePath,s=!(c>g||f>c+e||d>i||h>d+k)}s^r&&(p.classed(l.INCLUDED,!r),p.classed(l.SELECTED,!q),m.call(j,!q,p,a,b))}))},i.dragstart=function(a){var b=this,c=b.config;b.hasArcType()||c.data_selection_enabled&&(b.dragStart=a,b.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),b.dragging=!0)},i.dragend=function(){var a=this,b=a.config;a.hasArcType()||b.data_selection_enabled&&(a.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),a.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),a.dragging=!1)},i.selectPoint=function(a,b,c){var d=this,e=d.config,f=(e.axis_rotated?d.circleY:d.circleX).bind(d),g=(e.axis_rotated?d.circleX:d.circleY).bind(d),h=d.pointSelectR.bind(d);e.data_onselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return d.generateClass(l.selectedCircle,c)}).attr("cx",f).attr("cy",g).attr("stroke",function(){return d.color(b)}).attr("r",function(a){return 1.4*d.pointSelectR(a)}).transition().duration(100).attr("r",h)},i.unselectPoint=function(a,b,c){var d=this;d.config.data_onunselected(b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()},i.togglePoint=function(a,b,c,d){a?this.selectPoint(b,c,d):this.unselectPoint(b,c,d)},i.selectPath=function(a,b){var c=this;c.config.data_onselected.call(c,b,a.node()),a.transition().duration(100).style("fill",function(){return c.d3.rgb(c.color(b)).brighter(.75)})},i.unselectPath=function(a,b){var c=this;c.config.data_onunselected.call(c,b,a.node()),a.transition().duration(100).style("fill",function(){return c.color(b)})},i.togglePath=function(a,b,c,d){a?this.selectPath(b,c,d):this.unselectPath(b,c,d)},i.getToggle=function(a,b){var c,d=this;return"circle"===a.nodeName?c=d.isStepType(b)?function(){}:d.togglePoint:"path"===a.nodeName&&(c=d.togglePath),c},i.toggleShape=function(a,b,c){var d=this,e=d.d3,f=d.config,g=e.select(a),h=g.classed(l.SELECTED),i=d.getToggle(a,b).bind(d);f.data_selection_enabled&&f.data_selection_isselectable(b)&&(f.data_selection_multiple||d.main.selectAll("."+l.shapes+(f.data_selection_grouped?d.getTargetSelectorSuffix(b.id):"")).selectAll("."+l.shape).each(function(a,b){var c=e.select(this);c.classed(l.SELECTED)&&i(!1,c.classed(l.SELECTED,!1),a,b)}),g.classed(l.SELECTED,!h),i(!h,g,b,c))},i.initBrush=function(){var a=this,b=a.d3;a.brush=b.svg.brush().on("brush",function(){a.redrawForBrush()}),a.brush.update=function(){return a.context&&a.context.select("."+l.brush).call(this),this},a.brush.scale=function(b){return a.config.axis_rotated?this.y(b):this.x(b)}},i.initSubchart=function(){var a=this,b=a.config,c=a.context=a.svg.append("g").attr("transform",a.getTranslate("context"));c.style("visibility",b.subchart_show?"visible":"hidden"),c.append("g").attr("clip-path",a.clipPathForSubchart).attr("class",l.chart),c.select("."+l.chart).append("g").attr("class",l.chartBars),c.select("."+l.chart).append("g").attr("class",l.chartLines),c.append("g").attr("clip-path",a.clipPath).attr("class",l.brush).call(a.brush),a.axes.subx=c.append("g").attr("class",l.axisX).attr("transform",a.getTranslate("subx")).attr("clip-path",b.axis_rotated?"":a.clipPathForXAxis)},i.updateTargetsForSubchart=function(a){var b,c,d,e,f=this,g=f.context,h=f.config,i=f.classChartBar.bind(f),j=f.classBars.bind(f),k=f.classChartLine.bind(f),m=f.classLines.bind(f),n=f.classAreas.bind(f);h.subchart_show&&(e=g.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",i),d=e.enter().append("g").style("opacity",0).attr("class",i),d.append("g").attr("class",j),c=g.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",k),b=c.enter().append("g").style("opacity",0).attr("class",k),b.append("g").attr("class",m),b.append("g").attr("class",n),g.selectAll("."+l.brush+" rect").attr(h.axis_rotated?"width":"height",h.axis_rotated?f.width2:f.height2))},i.updateBarForSubchart=function(a){var b=this;b.contextBar=b.context.selectAll("."+l.bars).selectAll("."+l.bar).data(b.barData.bind(b)),b.contextBar.enter().append("path").attr("class",b.classBar.bind(b)).style("stroke","none").style("fill",b.color),b.contextBar.style("opacity",b.initialOpacity.bind(b)),b.contextBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBarForSubchart=function(a,b,c){(b?this.contextBar.transition().duration(c):this.contextBar).attr("d",a).style("opacity",1)},i.updateLineForSubchart=function(a){var b=this;b.contextLine=b.context.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.contextLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.contextLine.style("opacity",b.initialOpacity.bind(b)),b.contextLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLineForSubchart=function(a,b,c){(b?this.contextLine.transition().duration(c):this.contextLine).attr("d",a).style("opacity",1)},i.updateAreaForSubchart=function(a){var b=this,c=b.d3;b.contextArea=b.context.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.contextArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.contextArea.style("opacity",0),b.contextArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawAreaForSubchart=function(a,b,c){(b?this.contextArea.transition().duration(c):this.contextArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)},i.redrawSubchart=function(a,b,c,d,e,f,g){var h,i,j,k=this,l=k.d3,m=k.config;k.context.style("visibility",m.subchart_show?"visible":"hidden"),m.subchart_show&&(l.event&&"zoom"===l.event.type&&k.brush.extent(k.x.orgDomain()).update(),a&&(k.brush.empty()||k.brush.extent(k.x.orgDomain()).update(),h=k.generateDrawArea(e,!0),i=k.generateDrawBar(f,!0),j=k.generateDrawLine(g,!0),k.updateBarForSubchart(c),k.updateLineForSubchart(c),k.updateAreaForSubchart(c),k.redrawBarForSubchart(i,c,c),k.redrawLineForSubchart(j,c,c),k.redrawAreaForSubchart(h,c,c)))},i.redrawForBrush=function(){var a=this,b=a.x;a.redraw({withTransition:!1,withY:a.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),a.config.subchart_onbrush.call(a.api,b.orgDomain())},i.transformContext=function(a,b){var c,d=this;b&&b.axisSubX?c=b.axisSubX:(c=d.context.select("."+l.axisX),a&&(c=c.transition())),d.context.attr("transform",d.getTranslate("context")),c.attr("transform",d.getTranslate("subx"))},i.getDefaultExtent=function(){var a=this,b=a.config,c=n(b.axis_x_extent)?b.axis_x_extent(a.getXDomain(a.data.targets)):b.axis_x_extent;return a.isTimeSeries()&&(c=[a.parseDate(c[0]),a.parseDate(c[1])]),c},i.initZoom=function(){var a,b=this,c=b.d3,d=b.config;b.zoom=c.behavior.zoom().on("zoomstart",function(){a=c.event.sourceEvent,b.zoom.altDomain=c.event.sourceEvent.altKey?b.x.orgDomain():null,d.zoom_onzoomstart.call(b.api,c.event.sourceEvent)}).on("zoom",function(){b.redrawForZoom.call(b)}).on("zoomend",function(){var e=c.event.sourceEvent;e&&a.clientX===e.clientX&&a.clientY===e.clientY||(b.redrawEventRect(),b.updateZoom(),d.zoom_onzoomend.call(b.api,b.x.orgDomain()))}),b.zoom.scale=function(a){return d.axis_rotated?this.y(a):this.x(a)},b.zoom.orgScaleExtent=function(){var a=d.zoom_extent?d.zoom_extent:[1,10];return[a[0],Math.max(b.getMaxDataCount()/a[1],a[1])]},b.zoom.updateScaleExtent=function(){var a=t(b.x.orgDomain())/t(b.orgXDomain),c=this.orgScaleExtent();return this.scaleExtent([c[0]*a,c[1]*a]),this}},i.updateZoom=function(){var a=this,b=a.config.zoom_enabled?a.zoom:function(){};a.main.select("."+l.zoomRect).call(b).on("dblclick.zoom",null),a.main.selectAll("."+l.eventRect).call(b).on("dblclick.zoom",null)},i.redrawForZoom=function(){var a=this,b=a.d3,c=a.config,d=a.zoom,e=a.x;if(c.zoom_enabled&&0!==a.filterTargetsToShow(a.data.targets).length){if("mousemove"===b.event.sourceEvent.type&&d.altDomain)return e.domain(d.altDomain),void d.scale(e).updateScaleExtent();a.isCategorized()&&e.orgDomain()[0]===a.orgXDomain[0]&&e.domain([a.orgXDomain[0]-1e-10,e.orgDomain()[1]]),a.redraw({withTransition:!1,withY:c.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===b.event.sourceEvent.type&&(a.cancelClick=!0),c.zoom_onzoom.call(a.api,e.orgDomain())}},i.generateColor=function(){var a=this,b=a.config,c=a.d3,d=b.data_colors,e=v(b.color_pattern)?b.color_pattern:c.scale.category10().range(),f=b.data_color,g=[];return function(a){var b,c=a.id||a.data&&a.data.id||a;return d[c]instanceof Function?b=d[c](a):d[c]?b=d[c]:(g.indexOf(c)<0&&g.push(c),b=e[g.indexOf(c)%e.length],d[c]=b),f instanceof Function?f(b,a):b}},i.generateLevelColor=function(){var a=this,b=a.config,c=b.color_pattern,d=b.color_threshold,e="value"===d.unit,f=d.values&&d.values.length?d.values:[],g=d.max||100;return v(b.color_threshold)?function(a){var b,d,h=c[c.length-1];for(b=0;b=0?l.focused:"")},i.classDefocused=function(a){return" "+(this.defocusedTargetIds.indexOf(a.id)>=0?l.defocused:"")},i.classChartText=function(a){return l.chartText+this.classTarget(a.id)},i.classChartLine=function(a){return l.chartLine+this.classTarget(a.id)},i.classChartBar=function(a){return l.chartBar+this.classTarget(a.id)},i.classChartArc=function(a){return l.chartArc+this.classTarget(a.data.id)},i.getTargetSelectorSuffix=function(a){return a||0===a?("-"+a).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},i.selectorTarget=function(a,b){return(b||"")+"."+l.target+this.getTargetSelectorSuffix(a)},i.selectorTargets=function(a,b){var c=this;return a=a||[],a.length?a.map(function(a){return c.selectorTarget(a,b)}):null},i.selectorLegend=function(a){return"."+l.legendItem+this.getTargetSelectorSuffix(a)},i.selectorLegends=function(a){var b=this;return a&&a.length?a.map(function(a){return b.selectorLegend(a)}):null};var m=i.isValue=function(a){return a||0===a},n=i.isFunction=function(a){return"function"==typeof a},o=i.isString=function(a){return"string"==typeof a},p=i.isUndefined=function(a){return"undefined"==typeof a},q=i.isDefined=function(a){return"undefined"!=typeof a},r=i.ceil10=function(a){return 10*Math.ceil(a/10)},s=i.asHalfPixel=function(a){return Math.ceil(a)+.5},t=i.diffDomain=function(a){return a[1]-a[0]},u=i.isEmpty=function(a){return!a||o(a)&&0===a.length||"object"==typeof a&&0===Object.keys(a).length},v=i.notEmpty=function(a){return Object.keys(a).length>0},w=i.getOption=function(a,b,c){return q(a[b])?a[b]:c},x=i.hasValue=function(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c},y=i.getPathBox=function(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}};h.focus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),this.revert(),this.defocus(),b.classed(l.focused,!0).classed(l.defocused,!1),c.hasArcType()&&c.expandArc(a),c.toggleFocusLegend(a,!0),c.focusedTargetIds=a,c.defocusedTargetIds=c.defocusedTargetIds.filter(function(b){return a.indexOf(b)<0})},h.defocus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),b.classed(l.focused,!1).classed(l.defocused,!0),c.hasArcType()&&c.unexpandArc(a),c.toggleFocusLegend(a,!1),c.focusedTargetIds=c.focusedTargetIds.filter(function(b){return a.indexOf(b)<0}),c.defocusedTargetIds=a},h.revert=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a)),b.classed(l.focused,!1).classed(l.defocused,!1),c.hasArcType()&&c.unexpandArc(a),c.config.legend_show&&(c.showLegend(a.filter(c.isLegendToShow.bind(c))),c.legend.selectAll(c.selectorLegends(a)).filter(function(){return c.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),c.focusedTargetIds=[],c.defocusedTargetIds=[]},h.show=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.removeHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",1,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",1)}),b.withLegend&&d.showLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.hide=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.addHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",0,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",0)}),b.withLegend&&d.hideLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.toggle=function(a,b){var c=this,d=this.internal;d.mapToTargetIds(a).forEach(function(a){d.isTargetToShow(a)?c.hide(a,b):c.show(a,b)})},h.zoom=function(a){var b=this.internal;return a&&(b.isTimeSeries()&&(a=a.map(function(a){return b.parseDate(a)})),b.brush.extent(a),b.redraw({withUpdateXDomain:!0,withY:b.config.zoom_rescale}),b.config.zoom_onzoom.call(this,b.x.orgDomain())),b.brush.extent()},h.zoom.enable=function(a){var b=this.internal;b.config.zoom_enabled=a,b.updateAndRedraw()},h.unzoom=function(){var a=this.internal;a.brush.clear().update(),a.redraw({withUpdateXDomain:!0})},h.load=function(a){var b=this.internal,c=b.config;return a.xs&&b.addXs(a.xs),"classes"in a&&Object.keys(a.classes).forEach(function(b){c.data_classes[b]=a.classes[b]}),"categories"in a&&b.isCategorized()&&(c.axis_x_categories=a.categories),"axes"in a&&Object.keys(a.axes).forEach(function(b){c.data_axes[b]=a.axes[b]}),"colors"in a&&Object.keys(a.colors).forEach(function(b){c.data_colors[b]=a.colors[b]}),"cacheIds"in a&&b.hasCaches(a.cacheIds)?void b.load(b.getCaches(a.cacheIds),a.done):void("unload"in a?b.unload(b.mapToTargetIds("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){b.loadFromArgs(a)}):b.loadFromArgs(a))},h.unload=function(a){var b=this.internal;a=a||{},a instanceof Array?a={ids:a}:"string"==typeof a&&(a={ids:[a]}),b.unload(b.mapToTargetIds(a.ids),function(){b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),a.done&&a.done()})},h.flow=function(a){var b,c,d,e,f,g,h,i,j=this.internal,k=[],l=j.getMaxDataCount(),n=0,o=0;if(a.json)c=j.convertJsonToData(a.json,a.keys);else if(a.rows)c=j.convertRowsToData(a.rows);else{if(!a.columns)return;c=j.convertColumnsToData(a.columns)}b=j.convertDataToTargets(c,!0),j.data.targets.forEach(function(a){var c,d,e=!1;for(c=0;cd;d++)b[c].values[d].index=o+d,j.isTimeSeries()||(b[c].values[d].x=o+d);a.values=a.values.concat(b[c].values),b.splice(c,1);break}e||k.push(a.id)}),j.data.targets.forEach(function(a){var b,c;for(b=0;bc;c++)a.values.push({id:a.id,index:o+c,x:j.isTimeSeries()?j.getOtherTargetX(o+c):o+c,value:null})}),j.data.targets.length&&b.forEach(function(a){var b,c=[];for(b=j.data.targets[0].values[0].index;o>b;b++)c.push({id:a.id,index:b,x:j.isTimeSeries()?j.getOtherTargetX(b):b,value:null});a.values.forEach(function(a){a.index+=o,j.isTimeSeries()||(a.x+=o)}),a.values=c.concat(a.values)}),j.data.targets=j.data.targets.concat(b),d=j.getMaxDataCount(),f=j.data.targets[0],g=f.values[0],q(a.to)?(n=0,i=j.isTimeSeries()?j.parseDate(a.to):a.to,f.values.forEach(function(a){a.x1?f.values[f.values.length-1].x-g.x:g.x-j.getXDomain(j.data.targets)[0]:1,e=[g.x-h,g.x],j.updateXDomain(null,!0,!0,!1,e)),j.updateTargets(j.data.targets),j.redraw({flow:{index:g.index,length:n,duration:m(a.duration)?a.duration:j.config.transition_duration,done:a.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},i.generateFlow=function(a){var b=this,c=b.config,d=b.d3;return function(){var e,f,g,h=a.targets,i=a.flow,j=a.drawBar,k=a.drawLine,m=a.drawArea,n=a.cx,o=a.cy,p=a.xv,q=a.xForText,r=a.yForText,s=a.duration,u=1,v=i.index,w=i.length,x=b.getValueOnIndex(b.data.targets[0].values,v),y=b.getValueOnIndex(b.data.targets[0].values,v+w),z=b.x.domain(),A=i.duration||s,B=i.done||function(){},C=b.generateWait(),D=b.xgrid||d.selectAll([]),E=b.xgridLines||d.selectAll([]),F=b.mainRegion||d.selectAll([]),G=b.mainText||d.selectAll([]),H=b.mainBar||d.selectAll([]),I=b.mainLine||d.selectAll([]),J=b.mainArea||d.selectAll([]),K=b.mainCircle||d.selectAll([]);b.flowing=!0,b.data.targets.forEach(function(a){a.values.splice(0,w)}),g=b.updateXDomain(h,!0,!0),b.updateXGrid&&b.updateXGrid(!0),i.orgDataCount?e=1===i.orgDataCount||x.x===y.x?b.x(z[0])-b.x(g[0]):b.isTimeSeries()?b.x(z[0])-b.x(g[0]):b.x(x.x)-b.x(y.x):1!==b.data.targets[0].values.length?e=b.x(z[0])-b.x(g[0]):b.isTimeSeries()?(x=b.getValueOnIndex(b.data.targets[0].values,0),y=b.getValueOnIndex(b.data.targets[0].values,b.data.targets[0].values.length-1),e=b.x(x.x)-b.x(y.x)):e=t(g)/2,u=t(z)/t(g),f="translate("+e+",0) scale("+u+",1)",b.hideXGridFocus(),b.hideTooltip(),d.transition().ease("linear").duration(A).each(function(){C.add(b.axes.x.transition().call(b.xAxis)),C.add(H.transition().attr("transform",f)),C.add(I.transition().attr("transform",f)),C.add(J.transition().attr("transform",f)),C.add(K.transition().attr("transform",f)),C.add(G.transition().attr("transform",f)),C.add(F.filter(b.isRegionOnX).transition().attr("transform",f)),C.add(D.transition().attr("transform",f)),C.add(E.transition().attr("transform",f)) +}).call(C,function(){var a,d=[],e=[],f=[];if(w){for(a=0;w>a;a++)d.push("."+l.shape+"-"+(v+a)),e.push("."+l.text+"-"+(v+a)),f.push("."+l.eventRect+"-"+(v+a));b.svg.selectAll("."+l.shapes).selectAll(d).remove(),b.svg.selectAll("."+l.texts).selectAll(e).remove(),b.svg.selectAll("."+l.eventRects).selectAll(f).remove(),b.svg.select("."+l.xgrid).remove()}D.attr("transform",null).attr(b.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",c.axis_rotated?0:p).attr("x2",c.axis_rotated?b.width:p),E.select("text").attr("x",c.axis_rotated?b.width:0).attr("y",p),H.attr("transform",null).attr("d",j),I.attr("transform",null).attr("d",k),J.attr("transform",null).attr("d",m),K.attr("transform",null).attr("cx",n).attr("cy",o),G.attr("transform",null).attr("x",q).attr("y",r).style("fill-opacity",b.opacityForText.bind(b)),F.attr("transform",null),F.select("rect").filter(b.isRegionOnX).attr("x",b.regionX.bind(b)).attr("width",b.regionWidth.bind(b)),c.interaction_enabled&&b.redrawEventRect(),B(),b.flowing=!1})}},h.selected=function(a){var b=this.internal,c=b.d3;return c.merge(b.main.selectAll("."+l.shapes+b.getTargetSelectorSuffix(a)).selectAll("."+l.shape).filter(function(){return c.select(this).classed(l.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},h.select=function(a,b,c){var d=this.internal,e=d.d3,f=d.config;f.data_selection_enabled&&d.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(g,h){var i=e.select(this),j=g.data?g.data.id:g.id,k=d.getToggle(this,g).bind(d),m=f.data_selection_grouped||!a||a.indexOf(j)>=0,n=!b||b.indexOf(h)>=0,o=i.classed(l.SELECTED);i.classed(l.line)||i.classed(l.area)||(m&&n?f.data_selection_isselectable(g)&&!o&&k(!0,i.classed(l.SELECTED,!0),g,h):q(c)&&c&&o&&k(!1,i.classed(l.SELECTED,!1),g,h))})},h.unselect=function(a,b){var c=this.internal,d=c.d3,e=c.config;e.data_selection_enabled&&c.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(f,g){var h=d.select(this),i=f.data?f.data.id:f.id,j=c.getToggle(this,f).bind(c),k=e.data_selection_grouped||!a||a.indexOf(i)>=0,m=!b||b.indexOf(g)>=0,n=h.classed(l.SELECTED);h.classed(l.line)||h.classed(l.area)||k&&m&&e.data_selection_isselectable(f)&&n&&j(!1,h.classed(l.SELECTED,!1),f,g)})},h.transform=function(a,b){var c=this.internal,d=["pie","donut"].indexOf(a)>=0?{withTransform:!0}:null;c.transformTo(b,a,d)},i.transformTo=function(a,b,c){var d=this,e=!d.hasArcType(),f=c||{withTransitionForAxis:e};f.withTransitionForTransform=!1,d.transiting=!1,d.setTargetType(a,b),d.updateTargets(d.data.targets),d.updateAndRedraw(f)},h.groups=function(a){var b=this.internal,c=b.config;return p(a)?c.data_groups:(c.data_groups=a,b.redraw(),c.data_groups)},h.xgrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_x_lines=a,b.redrawWithoutRescale(),c.grid_x_lines):c.grid_x_lines},h.xgrids.add=function(a){var b=this.internal;return this.xgrids(b.config.grid_x_lines.concat(a?a:[]))},h.xgrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!0)},h.ygrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_y_lines=a,b.redrawWithoutRescale(),c.grid_y_lines):c.grid_y_lines},h.ygrids.add=function(a){var b=this.internal;return this.ygrids(b.config.grid_y_lines.concat(a?a:[]))},h.ygrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!1)},h.regions=function(a){var b=this.internal,c=b.config;return a?(c.regions=a,b.redrawWithoutRescale(),c.regions):c.regions},h.regions.add=function(a){var b=this.internal,c=b.config;return a?(c.regions=c.regions.concat(a),b.redrawWithoutRescale(),c.regions):c.regions},h.regions.remove=function(a){var b,c,d,e=this.internal,f=e.config;return a=a||{},b=e.getOption(a,"duration",f.transition_duration),c=e.getOption(a,"classes",[l.region]),d=e.main.select("."+l.regions).selectAll(c.map(function(a){return"."+a})),(b?d.transition().duration(b):d).style("opacity",0).remove(),f.regions=f.regions.filter(function(a){var b=!1;return a["class"]?(a["class"].split(" ").forEach(function(a){c.indexOf(a)>=0&&(b=!0)}),!b):!0}),f.regions},h.data=function(a){var b=this.internal.data.targets;return"undefined"==typeof a?b:b.filter(function(b){return[].concat(a).indexOf(b.id)>=0})},h.data.shown=function(a){return this.internal.filterTargetsToShow(this.data(a))},h.data.values=function(a){var b,c=null;return a&&(b=this.data(a),c=b[0]?b[0].values.map(function(a){return a.value}):null),c},h.data.names=function(a){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",a)},h.data.colors=function(a){return this.internal.updateDataAttributes("colors",a)},h.data.axes=function(a){return this.internal.updateDataAttributes("axes",a)},h.category=function(a,b){var c=this.internal,d=c.config;return arguments.length>1&&(d.axis_x_categories[a]=b,c.redraw()),d.axis_x_categories[a]},h.categories=function(a){var b=this.internal,c=b.config;return arguments.length?(c.axis_x_categories=a,b.redraw(),c.axis_x_categories):c.axis_x_categories},h.color=function(a){var b=this.internal;return b.color(a)},h.x=function(a){var b=this.internal;return arguments.length&&(b.updateTargetX(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.xs=function(a){var b=this.internal;return arguments.length&&(b.updateTargetXs(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.axis=function(){},h.axis.labels=function(a){var b=this.internal;arguments.length&&(Object.keys(a).forEach(function(c){b.axis.setLabelText(c,a[c])}),b.axis.updateLabels())},h.axis.max=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_max=a.x),m(a.y)&&(c.axis_y_max=a.y),m(a.y2)&&(c.axis_y2_max=a.y2)):c.axis_y_max=c.axis_y2_max=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_max,y:c.axis_y_max,y2:c.axis_y2_max}},h.axis.min=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_min=a.x),m(a.y)&&(c.axis_y_min=a.y),m(a.y2)&&(c.axis_y2_min=a.y2)):c.axis_y_min=c.axis_y2_min=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_min,y:c.axis_y_min,y2:c.axis_y2_min}},h.axis.range=function(a){return arguments.length?(q(a.max)&&this.axis.max(a.max),void(q(a.min)&&this.axis.min(a.min))):{max:this.axis.max(),min:this.axis.min()}},h.legend=function(){},h.legend.show=function(a){var b=this.internal;b.showLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.legend.hide=function(a){var b=this.internal;b.hideLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.resize=function(a){var b=this.internal,c=b.config;c.size_width=a?a.width:null,c.size_height=a?a.height:null,this.flush()},h.flush=function(){var a=this.internal;a.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},h.destroy=function(){var b=this.internal;return a.clearInterval(b.intervalForObserveInserted),a.onresize=null,b.selectChart.classed("c3",!1).html(""),Object.keys(b).forEach(function(a){b[a]=null}),null},h.tooltip=function(){},h.tooltip.show=function(a){var b,c,d=this.internal;a.mouse&&(c=a.mouse),a.data?d.isMultipleX()?(c=[d.x(a.data.x),d.getYScale(a.data.id)(a.data.value)],b=null):b=m(a.data.index)?a.data.index:d.getIndexByX(a.data.x):"undefined"!=typeof a.x?b=d.getIndexByX(a.x):"undefined"!=typeof a.index&&(b=a.index),d.dispatchEvent("mouseover",b,c),d.dispatchEvent("mousemove",b,c)},h.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0)};var z;i.isSafari=function(){var b=a.navigator.userAgent;return b.indexOf("Safari")>=0&&b.indexOf("Chrome")<0},i.isChrome=function(){var b=a.navigator.userAgent;return b.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),"function"==typeof define&&define.amd?define("c3",["d3"],k):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=k:a.c3=k}(window); \ No newline at end of file diff --git a/www/libs/c3/extensions/exporter/phantom-exporter.js b/www/libs/c3/extensions/exporter/phantom-exporter.js new file mode 100644 index 0000000..92d849d --- /dev/null +++ b/www/libs/c3/extensions/exporter/phantom-exporter.js @@ -0,0 +1,140 @@ +/** +* PNG\JPEG exporter for C3.js, version 0.2 +* (c) 2014 Yuval Bar-On +* +* usage: path/to/phantomjs output options [WxH] +* +*/ + +// useful python-styled string formatting, "hello {0}! Javascript is {1}".format("world", "awesome"); +if (!String.prototype.format) { + String.prototype.format = function() { + var args = arguments; + return this.replace(/{(\d+)}/g, function(match, number) { + return typeof args[number] != 'undefined' + ? args[number] + : match + ; + }); + }; +} + +// defaults +var page = require('webpage').create(), + fs = require('fs'), + system = require('system'), + config = JSON.parse( fs.read('config.json') ), + output, size; + +if (system.args.length < 3 ) { + console.log('Usage: phantasm.js filename html [WxH]'); + phantom.exit(1); +} else { + out = system.args[1]; + opts = JSON.parse( system.args[2] ); + + if (system.args[3]) { + var dimensions = system.args[3].split('x'), + width = dimensions[0], + height = dimensions[1]; + + function checkNum(check) { + check = parseInt(check); + if (!isNaN(check)) + return check; + return false; + } + + width = checkNum(width); + height = checkNum(height); + + if (width && height) { + page.viewportSize = { + height: height, + width: width + } + } + + // fit chart size to img size, if undefined + if (!opts.size) { + opts.size = { + "height": height, + "width": width + }; + } + } else { + // check if size is defined in chart, + // else apply defaults + page.viewportSize = { + height: (opts.size && opts.size.height) ? opts.size.height : 320, + width: (opts.size && opts.size.width ) ? opts.size.width : 710, + } + } +} + +page.onResourceRequested = function(requestData, request) { + console.log('::loading resource ', requestData['url']); +}; + +// helpful debug functions +page.onConsoleMessage = function(msg){ + console.log(msg); +}; + +page.onError = function(msg, trace) { + var msgStack = ['ERROR: ' + msg]; + + if (trace && trace.length) { + msgStack.push('TRACE:'); + trace.forEach(function(t) { + msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : '')); + }); + } + + console.error(msgStack.join('\n')); +}; + +// render page +function injectVerify(script) { + var req = page.injectJs(script); + if (!req) { + console.log( '\nError!\n' + script + ' not found!\n' ); + phantom.exit(1); + } +} + +page.onLoadFinished = function() { + console.log('::rendering'); + + for (var j in config.js) { + injectVerify(config.js[j]); + } + + page.evaluate(function(chartoptions) { + // phantomjs doesn't know how to handle .bind, so we override + Function.prototype.bind = Function.prototype.bind || function (thisp) { + var fn = this; + return function () { + return fn.apply(thisp, arguments); + }; + }; + + // generate chart + c3.generate(chartoptions); + + }, opts); + +// setting transition to 0 has proven not to work thus far, but 300ms isn't much +// so this is acceptable for now + setTimeout(function() { + page.render(out); + phantom.exit(); + }, 300); +} + +// apply css inline because that usually renders better +var css = ''; +for (var i in config.css) { + css += fs.read(config.css[i]); +} +page.content = config.template.format(css); \ No newline at end of file diff --git a/www/libs/c3/extensions/js/c3ext.js b/www/libs/c3/extensions/js/c3ext.js new file mode 100644 index 0000000..8ff301f --- /dev/null +++ b/www/libs/c3/extensions/js/c3ext.js @@ -0,0 +1,380 @@ +var c3ext = {}; +c3ext.generate = function (options) { + + if (options.zoom2 != null) { + zoom2_reducers = options.zoom2.reducers || {}; + zoom2_enabled = options.zoom2.enabled; + _zoom2_factor = options.zoom2.factor || 1; + _zoom2_maxItems = options.zoom2.maxItems; + } + + if (!zoom2_enabled) { + return c3.generate(options); + } + + + var originalData = Q.copy(options.data); + var zoom2_reducers; + var zoom2_enabled; + var _zoom2_maxItems; + + if (_zoom2_maxItems == null) { + var el = d3.select(options.bindto)[0][0]; + if (el != null) { + var availWidth = el.clientWidth; + + var pointSize = 20; + _zoom2_maxItems = Math.ceil(availWidth / pointSize); + } + if (_zoom2_maxItems == null || _zoom2_maxItems < 10) { + _zoom2_maxItems = 10; + } + } + + function onZoomChanged(e) { + refresh(); + } + + var zoom2 = c3ext.ZoomBehavior({ changed: onZoomChanged, bindto: options.bindto }); + + zoom2.enhance = function () { + _zoom2_maxItems *= 2; + var totalItems = zoom2.getZoom().totalItems; + if (_zoom2_maxItems > totalItems) + _zoom2_maxItems = totalItems; + refresh(); + } + zoom2.dehance = function () { + _zoom2_maxItems = Math.ceil(_zoom2_maxItems / 2) + 1; + refresh(); + } + + zoom2.maxItems = function () { return _zoom2_maxItems; }; + function zoomAndReduceData(list, zoomRange, func, maxItems) { + //var maxItems = 10;//Math.ceil(10 * zoomFactor); + var list2 = list.slice(zoomRange[0], zoomRange[1]); + var chunkSize = 1; + var list3 = list2; + if (list3.length > maxItems) { + var chunkSize = Math.ceil(list2.length / maxItems); + list3 = list3.splitIntoChunksOf(chunkSize).map(func); + } + //console.log("x" + getCurrentZoomLevel() + ", maxItems=" + maxItems + " chunkSize=" + chunkSize + " totalBefore=" + list2.length + ", totalAfter=" + list3.length); + return list3; + } + + function first(t) { return t[0]; } + + var getDataForZoom = function (data) { + if (data.columns == null || data.columns.length == 0) + return; + + var zoomInfo = zoom2.getZoom(); + if (zoomInfo.totalItems != data.columns[0].length - 1) { + zoom2.setOptions({ totalItems: data.columns[0].length - 1 }); + zoomInfo = zoom2.getZoom(); + } + data.columns = originalData.columns.map(function (column) { + var name = column[0]; + var reducer = zoom2_reducers[name] || first; //by default take the first + + var values = column.slice(1); + var newValues = zoomAndReduceData(values, zoomInfo.currentZoom, reducer, _zoom2_maxItems); + return [name].concat(newValues); + }); + return data; + }; + + getDataForZoom(options.data); + var chart = c3.generate(options); + var _chart_load_org = chart.load.bind(chart); + chart.zoom2 = zoom2; + chart.load = function (data) { + if (data.unload) { + unload(data.unload); + delete data.unload; + } + Q.copy(data, originalData); + refresh(); + } + chart.unload = function (names) { + unload(names); + refresh(); + } + + function unload(names) { + originalData.columns.removeAll(function (t) { names.contains(t); }); + } + + + function refresh() { + var data = Q.copy(originalData) + getDataForZoom(data); + _chart_load_org(data); + }; + + + return chart; +} + +c3ext.ZoomBehavior = function (options) { + var zoom = { __type: "ZoomBehavior" }; + + var _zoom2_factor; + var _left; + var totalItems; + var currentZoom; + var bindto = options.bindto; + var _zoomChanged = options.changed || function () { }; + var element; + var mousewheelTimer; + var deltaY = 0; + var leftRatio = 0; + + + zoom.setOptions = function (options) { + if (options == null) + options = {}; + _zoom2_factor = options.factor || 1; + _left = 0; + totalItems = options.totalItems || 0; + currentZoom = [0, totalItems]; + _zoomChanged = options.changed || _zoomChanged; + } + + zoom.setOptions(options); + + + function verifyZoom(newZoom) { + //newZoom.sort(); + if (newZoom[1] > totalItems) { + var diff = newZoom[1] - totalItems; + newZoom[0] -= diff; + newZoom[1] -= diff; + } + if (newZoom[0] < 0) { + var diff = newZoom[0] * -1; + newZoom[0] += diff; + newZoom[1] += diff; + } + if (newZoom[1] > totalItems) + newZoom[1] = totalItems; + if (newZoom[0] < 0) + newZoom[0] = 0; + } + + function zoomAndPan(zoomFactor, left) { + var itemsToShow = Math.ceil(totalItems / zoomFactor); + var newZoom = [left, left + itemsToShow]; + verifyZoom(newZoom); + currentZoom = newZoom; + onZoomChanged(); + } + + function onZoomChanged() { + if (_zoomChanged != null) + _zoomChanged(zoom.getZoom()); + } + function applyZoomAndPan() { + zoomAndPan(_zoom2_factor, _left); + } + function getItemsToShow() { + var itemsToShow = Math.ceil(totalItems / _zoom2_factor); + return itemsToShow; + } + + + zoom.getZoom = function () { + return { totalItems: totalItems, currentZoom: currentZoom.slice() }; + } + + zoom.factor = function (factor, skipDraw) { + if (arguments.length == 0) + return _zoom2_factor; + _zoom2_factor = factor; + if (_zoom2_factor < 1) + _zoom2_factor = 1; + if (skipDraw) + return; + applyZoomAndPan(); + } + zoom.left = function (left, skipDraw) { + if (arguments.length == 0) + return _left; + _left = left; + if (_left < 0) + _left = 0; + var pageSize = getItemsToShow(); + //_left += pageSize; + if (_left + pageSize > totalItems) + _left = totalItems - pageSize; + console.log({ left: _left, pageSize: pageSize }); + if (skipDraw) + return; + applyZoomAndPan(); + } + + zoom.zoomAndPanByRatio = function (zoomRatio, panRatio) { + + var pageSize = getItemsToShow(); + var leftOffset = Math.round(pageSize * panRatio); + var mouseLeft = _left + leftOffset; + zoom.factor(zoom.factor() * zoomRatio, true); + + var finalLeft = mouseLeft; + if (zoomRatio != 1) { + var pageSize2 = getItemsToShow(); + var leftOffset2 = Math.round(pageSize2 * panRatio); + finalLeft = mouseLeft - leftOffset2; + } + zoom.left(finalLeft, true); + applyZoomAndPan(); + } + + zoom.zoomIn = function () { + zoom.zoomAndPanByRatio(2, 0); + } + + zoom.zoomOut = function () { + zoom.zoomAndPanByRatio(0.5, 0); + } + + zoom.panLeft = function () { + zoom.zoomAndPanByRatio(1, -1); + } + zoom.panRight = function () { + zoom.zoomAndPanByRatio(1, 1); + } + + zoom.reset = function () { + _left = 0; + _zoom2_factor = 1; + applyZoomAndPan(); + } + + function doZoom() { + if (deltaY != 0) { + var maxDelta = 10; + var multiply = (maxDelta + deltaY) / maxDelta; + //var factor = chart.zoom2.factor()*multiply; + //factor= Math.ceil(factor*100) / 100; + console.log({ deltaY: deltaY, multiply: multiply }); + zoom.zoomAndPanByRatio(multiply, leftRatio);//0.5);//leftRatio); + deltaY = 0; + } + } + + function element_mousewheel(e) { + deltaY += e.deltaY; + leftRatio = (e.offsetX - 70) / (e.currentTarget.offsetWidth - 70); + //console.log({ "e.offsetX": e.offsetX, "e.currentTarget.offsetWidth": e.currentTarget.offsetWidth, leftRatio: leftRatio }); + mousewheelTimer.set(150); + e.preventDefault(); + } + + if (bindto != null) { + element = $(options.bindto); + if (element.mousewheel) { + mousewheelTimer = new Timer(doZoom); + element.mousewheel(element_mousewheel); + } + } + + return zoom; + +} + +if (typeof (Q) == "undefined") { + var Q = function () { + }; + + Q.copy = function (src, target, options, depth) { + ///Copies an object into a target object, recursively cloning any object or array in the way, overwrite=true will overwrite a primitive field value even if exists + /// + /// + ///{ overwrite:false } + ///The copied object + if (depth == null) + depth = 0; + if (depth == 100) { + console.warn("Q.copy is in depth of 100 - possible circular reference") + } + options = options || { overwrite: false }; + if (src == target || src == null) + return target; + if (typeof (src) != "object") { + if (options.overwrite || target == null) + return src; + return target; + } + if (typeof (src.clone) == "function") { + if (options.overwrite || target == null) + return src.clone(); + return target; + } + if (target == null) { + if (src instanceof Array) + target = []; + else + target = {}; + } + + if (src instanceof Array) { + for (var i = 0; i < src.length; i++) { + var item = src[i]; + var item2 = target[i]; + item2 = Q.copy(item, item2, options, depth + 1); + target[i] = item2; + } + target.splice(src.length, target.length - src.length); + return target; + } + for (var p in src) { + var value = src[p]; + var value2 = target[p]; + value2 = Q.copy(value, value2, options, depth + 1); + target[p] = value2; + } + return target; + } +} +if (typeof (Timer) == "undefined") { + var Timer = function (action, ms) { + this.action = action; + if (ms != null) + this.set(ms); + } + + Timer.prototype.set = function (ms) { + if (ms == null) + ms = this._ms; + else + this._ms = ms; + this.clear(); + if (ms == null) + return; + this.timeout = window.setTimeout(this.onTick.bind(this), ms); + } + + Timer.prototype.onTick = function () { + this.clear(); + this.action(); + } + + Timer.prototype.clear = function (ms) { + if (this.timeout == null) + return; + window.clearTimeout(this.timeout); + this.timeout = null; + } +} +if (typeof(Array.prototype.splitIntoChunksOf)=="undefined") { + Array.prototype.splitIntoChunksOf = function (countInEachChunk) { + var chunks = Math.ceil(this.length / countInEachChunk); + var list = []; + for (var i = 0; i < this.length; i += countInEachChunk) { + list.push(this.slice(i, i + countInEachChunk)); + } + return list; + } +} \ No newline at end of file diff --git a/www/libs/d3/d3.min.js b/www/libs/d3/d3.min.js new file mode 100644 index 0000000..1664873 --- /dev/null +++ b/www/libs/d3/d3.min.js @@ -0,0 +1,5 @@ +!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++ie;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++aa;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)0?0:3:xo(r[0]-e)0?2:1:xo(r[1]-t)0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){ +r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)Uo?{x:s,y:xo(t-s)Uo?{x:xo(e-g)Uo?{x:h,y:xo(t-h)Uo?{x:xo(e-p)=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.yd||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.yr||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.yp){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.xu||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return ur;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++oe;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.ro;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++0;h--)o.push(u(c)*h);for(c=0;o[c]l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++oe?[NaN,NaN]:[e>0?a[e-1]:n[0],et?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}else{for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++ii){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++rr;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++uu;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], +shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++rn?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.xy&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++cs?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u0)for(u=-1;++u=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.xg.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++it?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++oe&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0; +if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++ue.dx)&&(f=e.dx);++ue&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++au;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}(); \ No newline at end of file diff --git a/www/libs/d3/v3.5.17 b/www/libs/d3/v3.5.17 new file mode 100644 index 0000000..e69de29 diff --git a/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker-standalone.css b/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker-standalone.css new file mode 100644 index 0000000..49e3ea6 --- /dev/null +++ b/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker-standalone.css @@ -0,0 +1,103 @@ +/*! + * Datetimepicker for Bootstrap 3 + * version : 4.17.37 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-calendar:before { + content: "\e109"; +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} + +.collapse { + display: none; +} + + .collapse.in { + display: block; + } + +.dropdown-menu { + position: absolute; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} \ No newline at end of file diff --git a/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.css b/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.css new file mode 100644 index 0000000..b8bf43b --- /dev/null +++ b/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.css @@ -0,0 +1,373 @@ +/*! + * Datetimepicker for Bootstrap 3 + * version : 4.17.37 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +.bootstrap-datetimepicker-widget { + list-style: none; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; +} +@media (min-width: 768px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 992px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 1200px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { + content: ''; + display: inline-block; + position: absolute; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #cccccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + top: -7px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + top: -6px; + left: 8px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #cccccc; + border-top-color: rgba(0, 0, 0, 0.2); + bottom: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid white; + bottom: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget .list-unstyled { + margin: 0; +} +.bootstrap-datetimepicker-widget a[data-action] { + padding: 6px 0; +} +.bootstrap-datetimepicker-widget a[data-action]:active { + box-shadow: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 54px; + font-weight: bold; + font-size: 1.2em; + margin: 0; +} +.bootstrap-datetimepicker-widget button[data-action] { + padding: 6px; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle AM/PM"; +} +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Clear the picker"; +} +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Set the date to today"; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget .picker-switch::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle Date and Time Screens"; +} +.bootstrap-datetimepicker-widget .picker-switch td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; +} +.bootstrap-datetimepicker-widget .picker-switch td span { + line-height: 2.5; + height: 2.5em; + width: 100%; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget table td, +.bootstrap-datetimepicker-widget table th { + text-align: center; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table th { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget table th.disabled, +.bootstrap-datetimepicker-widget table th.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table th.prev::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Previous Month"; +} +.bootstrap-datetimepicker-widget table th.next::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Next Month"; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget table td.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: #777777; +} +.bootstrap-datetimepicker-widget table td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table td.day:hover, +.bootstrap-datetimepicker-widget table td.hour:hover, +.bootstrap-datetimepicker-widget table td.minute:hover, +.bootstrap-datetimepicker-widget table td.second:hover { + background: #eeeeee; + cursor: pointer; +} +.bootstrap-datetimepicker-widget table td.old, +.bootstrap-datetimepicker-widget table td.new { + color: #777777; +} +.bootstrap-datetimepicker-widget table td.today { + position: relative; +} +.bootstrap-datetimepicker-widget table td.today:before { + content: ''; + display: inline-block; + border: solid transparent; + border-width: 0 0 7px 7px; + border-bottom-color: #337ab7; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.bootstrap-datetimepicker-widget table td.active, +.bootstrap-datetimepicker-widget table td.active:hover { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td.active.today:before { + border-bottom-color: #fff; +} +.bootstrap-datetimepicker-widget table td.disabled, +.bootstrap-datetimepicker-widget table td.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table td span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table td span:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td span.active { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td span.old { + color: #777777; +} +.bootstrap-datetimepicker-widget table td span.disabled, +.bootstrap-datetimepicker-widget table td span.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget.usetwentyfour td.hour { + height: 27px; + line-height: 27px; +} +.bootstrap-datetimepicker-widget.wider { + width: 21em; +} +.bootstrap-datetimepicker-widget .datepicker-decades .decade { + line-height: 1.8em !important; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} diff --git a/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css b/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css new file mode 100644 index 0000000..63c2a3a --- /dev/null +++ b/www/libs/eonasdan-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css @@ -0,0 +1,5 @@ +/*! + * Datetimepicker for Bootstrap 3 + * version : 4.17.37 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0} \ No newline at end of file diff --git a/www/libs/eonasdan-bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js b/www/libs/eonasdan-bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js new file mode 100644 index 0000000..db3d085 --- /dev/null +++ b/www/libs/eonasdan-bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js @@ -0,0 +1,9 @@ +/*! version : 4.17.37 + ========================================================= + bootstrap-datetimejs + https://github.com/Eonasdan/bootstrap-datetimepicker + Copyright (c) 2015 Jonathan Peterson + ========================================================= + */ +!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(a){var c,e,f,g,h,i=!1;return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone&&(i=!0),void 0===a||null===a?c=i?b().tz(d.timeZone).startOf("d"):b().startOf("d"):i?(e=b().tz(d.timeZone).utcOffset(),f=b(a,j,d.useStrict).utcOffset(),f!==e?(g=b().tz(d.timeZone).format("Z"),h=b(a,j,d.useStrict).format("YYYY-MM-DD[T]HH:mm:ss")+g,c=b(h,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict),c},y=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},z=function(){return y("h")||y("m")||y("s")},A=function(){return y("y")||y("M")||y("d")},B=function(){var b=a("").append(a("").append(a("").addClass("prev").attr("data-action","previous").append(a("").addClass(d.icons.previous))).append(a("").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("").addClass("next").attr("data-action","next").append(a("").addClass(d.icons.next)))),c=a("").append(a("").append(a("").attr("colspan",d.calendarWeeks?"8":"7")));return[a("
    ").addClass("datepicker-days").append(a("").addClass("table-condensed").append(b).append(a(""))),a("
    ").addClass("datepicker-months").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
    ").addClass("datepicker-years").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
    ").addClass("datepicker-decades").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone()))]},C=function(){var b=a(""),c=a(""),e=a("");return y("h")&&(b.append(a("
    ").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("").addClass(d.icons.down))))),y("m")&&(y("h")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("").addClass(d.icons.down))))),y("s")&&(y("m")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("").addClass(d.icons.down))))),h||(b.append(a("").addClass("separator")),c.append(a("").append(a("").addClass("separator"))),a("
    ").addClass("timepicker-picker").append(a("").addClass("table-condensed").append([b,c,e]))},D=function(){var b=a("
    ").addClass("timepicker-hours").append(a("
    ").addClass("table-condensed")),c=a("
    ").addClass("timepicker-minutes").append(a("
    ").addClass("table-condensed")),d=a("
    ").addClass("timepicker-seconds").append(a("
    ").addClass("table-condensed")),e=[C()];return y("h")&&e.push(b),y("m")&&e.push(c),y("s")&&e.push(d),e},E=function(){var b=[];return d.showTodayButton&&b.push(a("
    ").append(a("").attr({"data-action":"today",title:d.tooltips.today}).append(a("").addClass(d.icons.today)))),!d.sideBySide&&A()&&z()&&b.push(a("").append(a("").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("").addClass(d.icons.time)))),d.showClear&&b.push(a("").append(a("").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("").addClass(d.icons.clear)))),d.showClose&&b.push(a("").append(a("").attr({"data-action":"close",title:d.tooltips.close}).append(a("").addClass(d.icons.close)))),a("").addClass("table-condensed").append(a("").append(a("").append(b)))},F=function(){var b=a("
    ").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("
    ").addClass("datepicker").append(B()),e=a("
    ").addClass("timepicker").append(D()),f=a("
      ").addClass("list-unstyled"),g=a("
    • ").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(E());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),y("s")&&!h&&b.addClass("wider"),d.sideBySide&&A()&&z()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("
      ").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("
    • ").addClass(d.collapse&&z()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),z()&&f.append(a("
    • ").addClass(d.collapse&&A()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},G=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},H=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"relative"!==b.css("position")&&(b=b.parents().filter(function(){return"relative"===a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a relative positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?e.top+c.outerHeight():"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},I=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},J=function(a){"y"===a&&(a="YYYY"),I({type:"dp.update",change:a,viewDate:f.clone()})},K=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},L=function(){var b=a("
    "),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a(""),d.calendarWeeks&&c.append('"),k.push(c)),g="",b.isBefore(f,"M")&&(g+=" old"),b.isAfter(f,"M")&&(g+=" new"),b.isSame(e,"d")&&!m&&(g+=" active"),Q(b,"d")||(g+=" disabled"),b.isSame(x(),"d")&&(g+=" today"),(0===b.day()||6===b.day())&&(g+=" weekend"),c.append('"),b.add(1,"d");i.find("tbody").empty().append(k),S(),T(),U()}},W=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a(""),d.push(e)),e.append('"),c.add(1,"h");b.empty().append(d)},X=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a(""),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a(""),e.push(g)),g.append('"),c.add(h,"m");b.empty().append(e)},Y=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("");f.isSame(c,"m");)c.second()%20===0&&(e=a(""),d.push(e)),e.append('"),c.add(5,"s");b.empty().append(d)},Z=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),Q(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),W(),X(),Y()},$=function(){o&&(V(),Z())},_=function(a){var b=m?null:e;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(Q(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,$(),I({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid||g.val(m?"":e.format(i)),I({type:"dp.error",date:a})))):(m=!0,g.val(""),c.data("date",""),I({type:"dp.change",date:!1,oldDate:b}),void $())},aa=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",H),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,I({type:"dp.hide",date:e.clone()}),g.blur(),l)):l},ba=function(){_(null)},ca={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),V(),J(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),V(),J(a)},pickerSwitch:function(){K(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(_(e.clone().year(f.year()).month(f.month())),d.inline||aa()):(K(-1),V()),J("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),_(c.date(parseInt(a(b.target).text(),10))),z()||d.keepOpen||d.inline||aa()},incrementHours:function(){var a=e.clone().add(1,"h");Q(a,"h")&&_(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");Q(a,"m")&&_(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");Q(a,"s")&&_(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");Q(a,"h")&&_(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");Q(a,"m")&&_(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");Q(a,"s")&&_(a)},togglePeriod:function(){_(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),_(e.clone().hours(c)),ca.showPicker.call(l)},selectMinute:function(b){_(e.clone().minutes(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},selectSecond:function(b){_(e.clone().seconds(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},clear:ba,today:function(){var a=x();Q(a,"d")&&_(a)},close:aa},da=function(b){return a(b.currentTarget).is(".disabled")?!1:(ca[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ea=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?_(ga(g.val().trim())):d.useCurrent&&m&&(g.is("input")&&0===g.val().trim().length||d.inline)&&(b=x(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),_(b)),o=F(),L(),R(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),$(),K(),a(window).on("resize",H),o.on("click","[data-action]",da),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),o.show(),H(),d.focusOnShow&&!g.is(":focus")&&g.focus(),I({type:"dp.show"}),l)},fa=function(){return o?aa():ea()},ga=function(a){return a=void 0===d.parseInputDate?b.isMoment(a)||a instanceof Date?b(a):x(a):d.parseInputDate(a),a.locale(d.locale),a},ha=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ia=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ja=function(b){var c=a(b.target).val().trim(),d=c?ga(c):null;return _(d),b.stopImmediatePropagation(),!1},ka=function(){g.on({change:ja,blur:d.debug?"":aa,keydown:ha,keyup:ia,focus:d.allowInputToggle?ea:""}),c.is("input")?g.on({focus:ea}):n&&(n.on("click",fa),n.on("mousedown",!1))},la=function(){g.off({change:ja,blur:blur,keydown:ha,keyup:ia,focus:d.allowInputToggle?aa:""}),c.is("input")?g.off({focus:ea}):n&&(n.off("click",fa),n.off("mousedown",!1))},ma=function(b){var c={};return a.each(b,function(){var a=ga(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},na=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},oa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,y("y")&&(p=2),y("M")&&(p=1),y("d")&&(p=0),k=Math.max(p,k),m||_(e)};if(l.destroy=function(){aa(),la(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=fa,l.show=ea,l.hide=aa,l.disable=function(){return aa(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return _(null===a?null:ga(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a sting or boolean:false parameter "+a);return d.format=a,i&&oa(),l},l.timeZone=function(a){return 0===arguments.length?d.timeZone:(d.timeZone=a,l)},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&oa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=ma(b),d.enabledDates=!1,$(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=ma(b),d.disabledDates=!1,$(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,$(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!Q(e,"d");){if(e.add(1,"d"),7===b)throw"Tried 7 times to find a valid date";b++}_(e)}return $(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,$(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&_(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),$(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,$(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&_(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),$(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!Q(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&_(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&oa(),o&&(aa(),ea()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(aa(),ea()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(aa(),ea()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(aa(),ea()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(aa(),ea()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),K(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(aa(),ea()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return $(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,$(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(aa(),ea()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(aa(),ea()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(aa(),ea()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ba(),l},l.keyBinds=function(a){return d.keyBinds=a,l},l.getMoment=function(a){return x(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate; +if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,$(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=na(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}_(e)}return $(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=na(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}_(e)}return $(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=ga(a),J(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.size())g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").size()?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=x(),f=e.clone(),a.extend(!0,d,G()),l.options(d),oa(),ka(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?_(ga(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&_(d.defaultDate),d.inline&&ea(),l};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data("DateTimePicker")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data("DateTimePicker",c(d,b)))})},a.fn.datetimepicker.defaults={timeZone:"Etc/UTC",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1}}); \ No newline at end of file diff --git a/www/libs/font-awesome/css/font-awesome.min.css b/www/libs/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/www/libs/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/www/libs/font-awesome/fonts/FontAwesome.otf b/www/libs/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/www/libs/font-awesome/fonts/FontAwesome.otf differ diff --git a/www/libs/font-awesome/fonts/fontawesome-webfont.eot b/www/libs/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/www/libs/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/www/libs/font-awesome/fonts/fontawesome-webfont.svg b/www/libs/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/www/libs/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/libs/font-awesome/fonts/fontawesome-webfont.ttf b/www/libs/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/www/libs/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/www/libs/font-awesome/fonts/fontawesome-webfont.woff b/www/libs/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/www/libs/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/www/libs/font-awesome/fonts/fontawesome-webfont.woff2 b/www/libs/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/www/libs/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/www/libs/font-mfizz-1.2/font-mfizz.css b/www/libs/font-mfizz-1.2/font-mfizz.css new file mode 100644 index 0000000..d7cd917 --- /dev/null +++ b/www/libs/font-mfizz-1.2/font-mfizz.css @@ -0,0 +1,318 @@ +/* + * Font Mfizz v1.2 + * Copyright 2013 Mfizz Inc, Joe Lauer + * MIT License + * + * Project: http://mfizz.com/oss/font-mfizz + * + * The font designed for technology and software geeks representing programming + * languages, operating systems, software engineering, and technology. + * + * Mfizz Inc + * Web: http://mfizz.com/ + * Twitter: http://twitter.com/mfizz_inc + * + * Joe Lauer + * Web: http://lauer.bz/ + * Twitter: http://twitter.com/jjlauer + */ + +@font-face { + font-family: "FontMfizz"; + src: url("font-mfizz.eot"); + src: url("font-mfizz.eot?#iefix") format("embedded-opentype"), + url("font-mfizz.woff") format("woff"), + url("font-mfizz.ttf") format("truetype"), + url("font-mfizz.svg#font-mfizz") format("svg"); + font-weight: normal; + font-style: normal; +} + +.icon-microscope:before, +.icon-cplusplus:before, +.icon-wireless:before, +.icon-fire-alt:before, +.icon-mobile-device:before, +.icon-objc:before, +.icon-redhat:before, +.icon-freebsd:before, +.icon-heroku:before, +.icon-python:before, +.icon-java:before, +.icon-satellite:before, +.icon-debian:before, +.icon-grails:before, +.icon-c:before, +.icon-postgres:before, +.icon-database-alt2:before, +.icon-raspberrypi:before, +.icon-nginx:before, +.icon-ruby-on-rails:before, +.icon-redis:before, +.icon-scala:before, +.icon-gnome:before, +.icon-perl:before, +.icon-mysql:before, +.icon-fedora:before, +.icon-ghost:before, +.icon-google:before, +.icon-netbsd:before, +.icon-aws:before, +.icon-bomb:before, +.icon-looking:before, +.icon-ruby:before, +.icon-mysql-alt:before, +.icon-playframework-alt:before, +.icon-osx:before, +.icon-database:before, +.icon-database-alt:before, +.icon-shell:before, +.icon-script:before, +.icon-antenna:before, +.icon-coffee-bean:before, +.icon-scala-alt:before, +.icon-platter:before, +.icon-java-duke:before, +.icon-iphone:before, +.icon-script-alt:before, +.icon-google-alt:before, +.icon-haskell:before, +.icon-mariadb:before, +.icon-phone-retro:before, +.icon-phone-alt:before, +.icon-csharp:before, +.icon-php:before, +.icon-postgres-alt:before, +.icon-html:before, +.icon-mfizz:before, +.icon-apache:before, +.icon-hadoop:before, +.icon-ruby-on-rails-alt:before, +.icon-mobile-phone-broadcast:before, +.icon-css:before, +.icon-playframework:before, +.icon-clojure:before, +.icon-mobile-phone-alt:before, +.icon-suse:before, +.icon-java-bold:before, +.icon-nginx-alt:before, +.icon-nginx-alt2:before, +.icon-linux-mint:before, +.icon-dreamhost:before, +.icon-blackberry:before, +.icon-javascript:before, +.icon-ubuntu:before, +.icon-php-alt:before, +.icon-centos:before, +.icon-nodejs:before, +.icon-splatter:before, +.icon-3dprint:before, +.icon-line-graph:before, +.icon-cassandra:before, +.icon-solaris:before, +.icon-jetty:before, +.icon-tomcat:before, +.icon-oracle:before, +.icon-oracle-alt:before, +.icon-mssql:before, +.icon-google-developers:before, +.icon-google-code:before, +.icon-kde:before, +.icon-grails-alt:before { + font-family: "FontMfizz"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + display: inline-block; + text-decoration: inherit; +} + +.icon-microscope:before { content: "\f100"; } +.icon-cplusplus:before { content: "\f101"; } +.icon-wireless:before { content: "\f102"; } +.icon-fire-alt:before { content: "\f103"; } +.icon-mobile-device:before { content: "\f104"; } +.icon-objc:before { content: "\f105"; } +.icon-redhat:before { content: "\f106"; } +.icon-freebsd:before { content: "\f107"; } +.icon-heroku:before { content: "\f108"; } +.icon-python:before { content: "\f109"; } +.icon-java:before { content: "\f10a"; } +.icon-satellite:before { content: "\f10b"; } +.icon-debian:before { content: "\f10c"; } +.icon-grails:before { content: "\f10d"; } +.icon-c:before { content: "\f10e"; } +.icon-postgres:before { content: "\f10f"; } +.icon-database-alt2:before { content: "\f110"; } +.icon-raspberrypi:before { content: "\f111"; } +.icon-nginx:before { content: "\f112"; } +.icon-ruby-on-rails:before { content: "\f113"; } +.icon-redis:before { content: "\f114"; } +.icon-scala:before { content: "\f115"; } +.icon-gnome:before { content: "\f116"; } +.icon-perl:before { content: "\f117"; } +.icon-mysql:before { content: "\f118"; } +.icon-fedora:before { content: "\f119"; } +.icon-ghost:before { content: "\f11a"; } +.icon-google:before { content: "\f11b"; } +.icon-netbsd:before { content: "\f11c"; } +.icon-aws:before { content: "\f11d"; } +.icon-bomb:before { content: "\f11e"; } +.icon-looking:before { content: "\f11f"; } +.icon-ruby:before { content: "\f120"; } +.icon-mysql-alt:before { content: "\f121"; } +.icon-playframework-alt:before { content: "\f122"; } +.icon-osx:before { content: "\f123"; } +.icon-database:before { content: "\f124"; } +.icon-database-alt:before { content: "\f125"; } +.icon-shell:before { content: "\f126"; } +.icon-script:before { content: "\f127"; } +.icon-antenna:before { content: "\f128"; } +.icon-coffee-bean:before { content: "\f129"; } +.icon-scala-alt:before { content: "\f12a"; } +.icon-platter:before { content: "\f12b"; } +.icon-java-duke:before { content: "\f12c"; } +.icon-iphone:before { content: "\f12d"; } +.icon-script-alt:before { content: "\f12e"; } +.icon-google-alt:before { content: "\f12f"; } +.icon-haskell:before { content: "\f130"; } +.icon-mariadb:before { content: "\f131"; } +.icon-phone-retro:before { content: "\f132"; } +.icon-phone-alt:before { content: "\f133"; } +.icon-csharp:before { content: "\f134"; } +.icon-php:before { content: "\f135"; } +.icon-postgres-alt:before { content: "\f136"; } +.icon-html:before { content: "\f137"; } +.icon-mfizz:before { content: "\f138"; } +.icon-apache:before { content: "\f139"; } +.icon-hadoop:before { content: "\f13a"; } +.icon-ruby-on-rails-alt:before { content: "\f13b"; } +.icon-mobile-phone-broadcast:before { content: "\f13c"; } +.icon-css:before { content: "\f13d"; } +.icon-playframework:before { content: "\f13e"; } +.icon-clojure:before { content: "\f13f"; } +.icon-mobile-phone-alt:before { content: "\f140"; } +.icon-suse:before { content: "\f141"; } +.icon-java-bold:before { content: "\f142"; } +.icon-nginx-alt:before { content: "\f143"; } +.icon-nginx-alt2:before { content: "\f144"; } +.icon-linux-mint:before { content: "\f145"; } +.icon-dreamhost:before { content: "\f146"; } +.icon-blackberry:before { content: "\f147"; } +.icon-javascript:before { content: "\f148"; } +.icon-ubuntu:before { content: "\f149"; } +.icon-php-alt:before { content: "\f14a"; } +.icon-centos:before { content: "\f14b"; } +.icon-nodejs:before { content: "\f14c"; } +.icon-splatter:before { content: "\f14d"; } +.icon-3dprint:before { content: "\f14e"; } +.icon-line-graph:before { content: "\f14f"; } +.icon-cassandra:before { content: "\f150"; } +.icon-solaris:before { content: "\f151"; } +.icon-jetty:before { content: "\f152"; } +.icon-tomcat:before { content: "\f153"; } +.icon-oracle:before { content: "\f154"; } +.icon-oracle-alt:before { content: "\f155"; } +.icon-mssql:before { content: "\f156"; } +.icon-google-developers:before { content: "\f157"; } +.icon-google-code:before { content: "\f158"; } +.icon-kde:before { content: "\f159"; } +.icon-grails-alt:before { content: "\f15a"; } + +/* These classes only added to fix FontFamily to display FontMfizz during debug/inspection */ +.icon-osx, +.icon-bomb, +.icon-mobile-phone-broadcast, +.icon-objc, +.icon-nginx-alt2, +.icon-mysql, +.icon-phone-retro, +.icon-netbsd, +.icon-mobile-device, +.icon-ruby-on-rails, +.icon-phone-alt, +.icon-line-graph, +.icon-postgres, +.icon-playframework, +.icon-python, +.icon-ruby-on-rails-alt, +.icon-nginx, +.icon-database-alt2, +.icon-google-alt, +.icon-microscope, +.icon-blackberry, +.icon-dreamhost, +.icon-google, +.icon-centos, +.icon-kde, +.icon-csharp, +.icon-scala, +.icon-redis, +.icon-looking, +.icon-database-alt, +.icon-javascript, +.icon-postgres-alt, +.icon-linux-mint, +.icon-ubuntu, +.icon-apache, +.icon-script-alt, +.icon-mssql, +.icon-c, +.icon-gnome, +.icon-java-duke, +.icon-scala-alt, +.icon-clojure, +.icon-oracle-alt, +.icon-redhat, +.icon-haskell, +.icon-3dprint, +.icon-mariadb, +.icon-java, +.icon-script, +.icon-cplusplus, +.icon-jetty, +.icon-perl, +.icon-heroku, +.icon-nginx-alt, +.icon-iphone, +.icon-splatter, +.icon-shell, +.icon-mysql-alt, +.icon-wireless, +.icon-ruby, +.icon-playframework-alt, +.icon-raspberrypi, +.icon-suse, +.icon-nodejs, +.icon-java-bold, +.icon-google-developers, +.icon-mobile-phone-alt, +.icon-grails-alt, +.icon-coffee-bean, +.icon-cassandra, +.icon-google-code, +.icon-fedora, +.icon-antenna, +.icon-hadoop, +.icon-solaris, +.icon-html, +.icon-css, +.icon-satellite, +.icon-aws, +.icon-mfizz, +.icon-php, +.icon-debian, +.icon-ghost, +.icon-php-alt, +.icon-tomcat, +.icon-database, +.icon-grails, +.icon-freebsd, +.icon-oracle, +.icon-fire-alt, +.icon-platter{ + font-family: "FontMfizz"; +} diff --git a/www/libs/font-mfizz-1.2/font-mfizz.eot b/www/libs/font-mfizz-1.2/font-mfizz.eot new file mode 100644 index 0000000..b2a7d6b Binary files /dev/null and b/www/libs/font-mfizz-1.2/font-mfizz.eot differ diff --git a/www/libs/font-mfizz-1.2/font-mfizz.svg b/www/libs/font-mfizz-1.2/font-mfizz.svg new file mode 100644 index 0000000..da46bf4 --- /dev/null +++ b/www/libs/font-mfizz-1.2/font-mfizz.svg @@ -0,0 +1,1344 @@ + + + + + +Created by FontForge 20110222 at Tue Jul 23 15:25:00 2013 + By Joe Lauer,,, +Created by Joe Lauer,,, with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/libs/font-mfizz-1.2/font-mfizz.ttf b/www/libs/font-mfizz-1.2/font-mfizz.ttf new file mode 100644 index 0000000..cc7ca4b Binary files /dev/null and b/www/libs/font-mfizz-1.2/font-mfizz.ttf differ diff --git a/www/libs/font-mfizz-1.2/font-mfizz.woff b/www/libs/font-mfizz-1.2/font-mfizz.woff new file mode 100644 index 0000000..ef68416 Binary files /dev/null and b/www/libs/font-mfizz-1.2/font-mfizz.woff differ diff --git a/www/libs/jquery/dist/jquery.min.js b/www/libs/jquery/dist/jquery.min.js new file mode 100644 index 0000000..fad9ab1 --- /dev/null +++ b/www/libs/jquery/dist/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"
    ").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},M=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},N=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.disabledHours[a.format("H")]===!0},P=function(a){return d.enabledHours[a.format("H")]===!0},Q=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&M(b))return!1;if(d.enabledDates&&"d"===c&&!N(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&O(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!P(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},R=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},S=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),Q(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),Q(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){Q(f.clone().month(b),"M")||a(this).addClass("disabled")})},T=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+=''+c.year()+"",c.add(1,"y");a.find("td").html(h)},U=function(){var a=o.find(".datepicker-decades"),c=a.find("th"),g=b({y:f.year()-f.year()%100-1}),h=g.clone().add(100,"y"),i=g.clone(),j="";for(c.eq(0).find("span").attr("title",d.tooltips.prevCentury),c.eq(2).find("span").attr("title",d.tooltips.nextCentury),a.find(".disabled").removeClass("disabled"),(g.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(g,"y"))&&c.eq(0).addClass("disabled"),c.eq(1).text(g.year()+"-"+h.year()),(g.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(h,"y"))&&c.eq(2).addClass("disabled");!g.isAfter(h,"y");)j+=''+(g.year()+1)+" - "+(g.year()+12)+"",g.add(12,"y");j+="",a.find("td").html(j),c.eq(1).text(i.year()+1+"-"+g.year())},V=function(){var b,c,g,h,i=o.find(".datepicker-days"),j=i.find("th"),k=[];if(A()){for(j.eq(0).find("span").attr("title",d.tooltips.prevMonth),j.eq(1).attr("title",d.tooltips.selectMonth),j.eq(2).find("span").attr("title",d.tooltips.nextMonth),i.find(".disabled").removeClass("disabled"),j.eq(1).text(f.format(d.dayViewHeaderFormat)),Q(f.clone().subtract(1,"M"),"M")||j.eq(0).addClass("disabled"),Q(f.clone().add(1,"M"),"M")||j.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),h=0;42>h;h++)0===b.weekday()&&(c=a("
    '+b.week()+"'+b.date()+"
    '+c.format(h?"HH":"hh")+"
    '+c.format("mm")+"
    '+c.format("ss")+"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("