Merge branch 'master' into configurationpage
This commit is contained in:
commit
f2219a33a3
@ -6,7 +6,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'com.wasteinformationserver'
|
group 'com.wasteinformationserver'
|
||||||
version '1.0.0'
|
version '1.0.1'
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
sourceCompatibility = 1.8
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ task run (type: JavaExec){
|
|||||||
|
|
||||||
task createProperties(dependsOn: processResources) {
|
task createProperties(dependsOn: processResources) {
|
||||||
doLast {
|
doLast {
|
||||||
new File("$projectDir/src/resources/version.properties").withWriter { w ->
|
new File("$projectDir/src/resources/version.prop").withWriter { w ->
|
||||||
Properties p = new Properties()
|
Properties p = new Properties()
|
||||||
p['version'] = project.version.toString()
|
p['version'] = project.version.toString()
|
||||||
p['buildtime'] = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date())
|
p['buildtime'] = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date())
|
||||||
|
@ -40,7 +40,7 @@ fun main() {
|
|||||||
try {
|
try {
|
||||||
val stor = Storage.getInstance();
|
val stor = Storage.getInstance();
|
||||||
JDBC.init(stor.dbUser, stor.dbPassword, stor.dbName, stor.dbhost, stor.dbPort)
|
JDBC.init(stor.dbUser, stor.dbPassword, stor.dbName, stor.dbhost, stor.dbPort)
|
||||||
// JDBC.init("ingproject", "Kb9Dxklumt76ieq6", "ingproject", "db.power4future.at", 3306)
|
//JDBC.init("ingproject", "Kb9Dxklumt76ieq6", "ingproject", "db.power4future.at", 3306)
|
||||||
//JDBC.init("users", "kOpaIJUjkgb9ur6S", "wasteinformation", "192.168.65.15", 3306);
|
//JDBC.init("users", "kOpaIJUjkgb9ur6S", "wasteinformation", "192.168.65.15", 3306);
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
Log.error("no connection to db")
|
Log.error("no connection to db")
|
||||||
@ -62,5 +62,4 @@ fun main() {
|
|||||||
}else{
|
}else{
|
||||||
Log.error("could't start mqtt service because of missing db connection!")
|
Log.error("could't start mqtt service because of missing db connection!")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -51,7 +51,7 @@ public class Info {
|
|||||||
starttime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
|
starttime = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
|
||||||
Properties prop = new Properties();
|
Properties prop = new Properties();
|
||||||
try {
|
try {
|
||||||
URL url = Info.class.getResource("/version.properties");
|
URL url = Info.class.getResource("/version.prop");
|
||||||
|
|
||||||
prop.load(url.openStream());
|
prop.load(url.openStream());
|
||||||
version = (String) prop.get("version");
|
version = (String) prop.get("version");
|
||||||
@ -75,10 +75,10 @@ public class Info {
|
|||||||
long allocatedMemory = runtime.totalMemory();
|
long allocatedMemory = runtime.totalMemory();
|
||||||
long freeMemory = runtime.freeMemory();
|
long freeMemory = runtime.freeMemory();
|
||||||
|
|
||||||
sb.append("free memory: " + format.format(freeMemory / 1024) + "\n");
|
sb.append("free memory: ").append(format.format(freeMemory / 1024)).append("\n");
|
||||||
sb.append("allocated memory: " + format.format(allocatedMemory / 1024) + "\n");
|
sb.append("allocated memory: ").append(format.format(allocatedMemory / 1024)).append("\n");
|
||||||
sb.append("max memory: " + format.format(maxMemory / 1024) + "\n");
|
sb.append("max memory: ").append(format.format(maxMemory / 1024)).append("\n");
|
||||||
sb.append("total free memory: " + format.format((freeMemory + (maxMemory - allocatedMemory)) / 1024) + "\n");
|
sb.append("total free memory: ").append(format.format((freeMemory + (maxMemory - allocatedMemory)) / 1024)).append("\n");
|
||||||
|
|
||||||
System.out.println(sb.toString());
|
System.out.println(sb.toString());
|
||||||
}
|
}
|
||||||
|
@ -5,22 +5,22 @@ import java.util.*
|
|||||||
|
|
||||||
class Log {
|
class Log {
|
||||||
companion object Log{
|
companion object Log{
|
||||||
val CRITICAL_ERROR = 6
|
const val CRITICAL_ERROR = 6
|
||||||
val ERROR = 5
|
const val ERROR = 5
|
||||||
val WARNING = 4
|
const val WARNING = 4
|
||||||
val INFO = 3
|
const val INFO = 3
|
||||||
val MESSAGE = 2
|
const val MESSAGE = 2
|
||||||
val DEBUG = 1
|
const val DEBUG = 1
|
||||||
|
|
||||||
private val ANSI_RESET = "\u001B[0m"
|
private const val ANSI_RESET = "\u001B[0m"
|
||||||
private val ANSI_BLACK = "\u001B[30m"
|
private const val ANSI_BLACK = "\u001B[30m"
|
||||||
private val ANSI_RED = "\u001B[31m"
|
private const val ANSI_RED = "\u001B[31m"
|
||||||
private val ANSI_GREEN = "\u001B[32m"
|
private const val ANSI_GREEN = "\u001B[32m"
|
||||||
private val ANSI_YELLOW = "\u001B[33m"
|
private const val ANSI_YELLOW = "\u001B[33m"
|
||||||
private val ANSI_BLUE = "\u001B[34m"
|
private const val ANSI_BLUE = "\u001B[34m"
|
||||||
private val ANSI_PURPLE = "\u001B[35m"
|
private const val ANSI_PURPLE = "\u001B[35m"
|
||||||
private val ANSI_CYAN = "\u001B[36m"
|
private const val ANSI_CYAN = "\u001B[36m"
|
||||||
private val ANSI_WHITE = "\u001B[37m"
|
private const val ANSI_WHITE = "\u001B[37m"
|
||||||
|
|
||||||
private var Loglevel = 0
|
private var Loglevel = 0
|
||||||
|
|
||||||
@ -126,14 +126,14 @@ class Log {
|
|||||||
fun setLevel(level: Int) {
|
fun setLevel(level: Int) {
|
||||||
Loglevel = level
|
Loglevel = level
|
||||||
}
|
}
|
||||||
private val colors = ArrayList(Arrays.asList("", "DEBUG", "MESSAGE", "INFO", "WARNING", "ERROR", "CRITICAL_ERROR"))
|
|
||||||
|
private val colors = ArrayList(listOf("", "DEBUG", "MESSAGE", "INFO", "WARNING", "ERROR", "CRITICAL_ERROR"))
|
||||||
|
|
||||||
|
|
||||||
|
private fun calcDate(milliSecs: Long): String? {
|
||||||
private fun calcDate(millisecs: Long): String? {
|
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
||||||
val date_format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
val resultDate = Date(milliSecs)
|
||||||
val resultdate = Date(millisecs)
|
return dateFormat.format(resultDate)
|
||||||
return date_format.format(resultdate)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,25 +0,0 @@
|
|||||||
package com.wasteinformationserver.db;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
abstract class Database {
|
|
||||||
|
|
||||||
protected String user;
|
|
||||||
protected String password;
|
|
||||||
|
|
||||||
protected String host;
|
|
||||||
protected int port;
|
|
||||||
|
|
||||||
protected String dbName;
|
|
||||||
|
|
||||||
public Database(String user, String password, String host, int port, String dbName) {
|
|
||||||
this.user = user;
|
|
||||||
this.password = password;
|
|
||||||
this.host = host;
|
|
||||||
this.port = port;
|
|
||||||
this.dbName = dbName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract Connection getConnection() throws SQLException;
|
|
||||||
}
|
|
@ -3,10 +3,7 @@ package com.wasteinformationserver.db;
|
|||||||
import com.wasteinformationserver.basicutils.Log;
|
import com.wasteinformationserver.basicutils.Log;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* basic connection class to a Database
|
* basic connection class to a Database
|
||||||
@ -25,6 +22,21 @@ public class JDBC {
|
|||||||
private static String ipc;
|
private static String ipc;
|
||||||
private static int portc;
|
private static int portc;
|
||||||
|
|
||||||
|
private JDBC(String username, String password, String dbname, String ip, int port) throws IOException {
|
||||||
|
logintodb(username, password, dbname, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* instance of JDBC driver
|
||||||
|
*/
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initialize database values
|
* initialize database values
|
||||||
* suggested on startup
|
* suggested on startup
|
||||||
@ -45,10 +57,6 @@ public class JDBC {
|
|||||||
JDBC = new JDBC(username, password, dbname, ip, port);
|
JDBC = new JDBC(username, password, dbname, ip, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JDBC(String username, String password, String dbname, String ip, int port) throws IOException {
|
|
||||||
logintodb(username, password, dbname, ip, port);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get instance of db object
|
* get instance of db object
|
||||||
* logindata has to be set before!
|
* logindata has to be set before!
|
||||||
@ -67,16 +75,23 @@ public class JDBC {
|
|||||||
return JDBC;
|
return JDBC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initial login to db -- should be called only one time or for reconnect
|
||||||
|
*
|
||||||
|
* @param username username
|
||||||
|
* @param password password
|
||||||
|
* @param dbname Database name
|
||||||
|
* @param ip Host or ip address
|
||||||
|
* @param port Server port
|
||||||
|
* @throws IOException thrown if no connection to db is possible.
|
||||||
|
*/
|
||||||
private static void logintodb(String username, String password, String dbname, String ip, int port) throws IOException {
|
private static void logintodb(String username, String password, String dbname, String ip, int port) throws IOException {
|
||||||
Database db = new MySQLConnector(
|
|
||||||
username,
|
|
||||||
password,
|
|
||||||
ip,
|
|
||||||
port,
|
|
||||||
dbname);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
conn = db.getConnection();
|
DriverManager.setLoginTimeout(1);
|
||||||
|
conn = DriverManager.getConnection(
|
||||||
|
"jdbc:mysql://" + ip + ":" + port + "/" + dbname + "?useSSL=false&serverTimezone=CET",
|
||||||
|
username,
|
||||||
|
password);
|
||||||
loggedin = true;
|
loggedin = true;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new IOException("No connection to database");
|
throw new IOException("No connection to database");
|
||||||
@ -121,6 +136,11 @@ public class JDBC {
|
|||||||
return stmt.executeUpdate();
|
return stmt.executeUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check if connection is still established
|
||||||
|
*
|
||||||
|
* @return connection state
|
||||||
|
*/
|
||||||
public static boolean isConnected() {
|
public static boolean isConnected() {
|
||||||
return loggedin;
|
return loggedin;
|
||||||
}
|
}
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
package com.wasteinformationserver.db;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
class MySQLConnector extends Database {
|
|
||||||
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public MySQLConnector(String user, String password, String host, int port, String dbName) {
|
|
||||||
super(user, password, host, port, dbName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Connection getConnection() throws SQLException {
|
|
||||||
DriverManager.setLoginTimeout(1);
|
|
||||||
return DriverManager.getConnection(
|
|
||||||
"jdbc:mysql://" + host + ":" + port + "/" + dbName + "?useSSL=false&serverTimezone=CET",
|
|
||||||
user,
|
|
||||||
password);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -4,9 +4,9 @@ import com.wasteinformationserver.basicutils.Log.Log.debug
|
|||||||
import com.wasteinformationserver.basicutils.Log.Log.error
|
import com.wasteinformationserver.basicutils.Log.Log.error
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.info
|
import com.wasteinformationserver.basicutils.Log.Log.info
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.message
|
import com.wasteinformationserver.basicutils.Log.Log.message
|
||||||
|
import com.wasteinformationserver.basicutils.Log.Log.warning
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import org.eclipse.paho.client.mqttv3.*
|
import org.eclipse.paho.client.mqttv3.*
|
||||||
import java.io.IOException
|
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
import java.text.ParseException
|
import java.text.ParseException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
@ -25,11 +25,7 @@ class MqttService(serverurl: String, port: String) {
|
|||||||
private var db: JDBC = JDBC.getInstance()
|
private var db: JDBC = JDBC.getInstance()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init mqtt service
|
* initial login to db
|
||||||
* JDBC has to be inited before
|
|
||||||
*
|
|
||||||
* @param serverurl mqtt server ip or hostname
|
|
||||||
* @param port mqtt server port
|
|
||||||
*/
|
*/
|
||||||
init {
|
init {
|
||||||
connectToDb()
|
connectToDb()
|
||||||
@ -91,12 +87,19 @@ class MqttService(serverurl: String, port: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if device is configured and zone infos are stored in db
|
||||||
|
*
|
||||||
|
* @param citywastezoneid zone/city id
|
||||||
|
* @param deviceid device id
|
||||||
|
*/
|
||||||
private fun checkDatabase(citywastezoneid: Int, deviceid: Int) {
|
private fun checkDatabase(citywastezoneid: Int, deviceid: Int) {
|
||||||
var wastetype = -1
|
var wastetype = -1
|
||||||
val set2 = db.executeQuery("SELECT * FROM cities WHERE `id`='$citywastezoneid'")
|
val set2 = db.executeQuery("SELECT * FROM cities WHERE `id`='$citywastezoneid'")
|
||||||
try {
|
try {
|
||||||
set2.last()
|
set2.last()
|
||||||
if (set2.row != 1) { //error
|
if (set2.row != 1) { //error
|
||||||
|
warning("multiple Rows with same city id found - DB Error")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val typ = set2.getString("wastetype")
|
val typ = set2.getString("wastetype")
|
||||||
@ -136,8 +139,11 @@ class MqttService(serverurl: String, port: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* send a mqtt message to predefined topic
|
||||||
|
*/
|
||||||
private fun tramsmitMessage(temp: String) {
|
private fun tramsmitMessage(temp: String) {
|
||||||
debug("sending message >>>$temp")
|
message("reply back to PCB: $temp")
|
||||||
val message = MqttMessage(temp.toByteArray())
|
val message = MqttMessage(temp.toByteArray())
|
||||||
message.qos = 2
|
message.qos = 2
|
||||||
try {
|
try {
|
||||||
@ -147,16 +153,9 @@ class MqttService(serverurl: String, port: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getTyp(number: Int): String? {
|
/**
|
||||||
return when (number) {
|
* parse Type name to representing integer value
|
||||||
1 -> "Plastic"
|
*/
|
||||||
2 -> "Metal"
|
|
||||||
3 -> "Residual waste"
|
|
||||||
4 -> "Biowaste"
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getIntTyp(temp: String): Int {
|
private fun getIntTyp(temp: String): Int {
|
||||||
return when (temp) {
|
return when (temp) {
|
||||||
"Plastic" -> 1
|
"Plastic" -> 1
|
||||||
@ -167,6 +166,9 @@ class MqttService(serverurl: String, port: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* receives connection object and initial connection to db
|
||||||
|
*/
|
||||||
private fun connectToDb() {
|
private fun connectToDb() {
|
||||||
db = JDBC.getInstance()
|
db = JDBC.getInstance()
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ class HttpTools {
|
|||||||
* @param value input string
|
* @param value input string
|
||||||
* @return md5 hash
|
* @return md5 hash
|
||||||
*/
|
*/
|
||||||
fun StringToMD5(value: String): String {
|
fun stringToMD5(value: String): String {
|
||||||
return try {
|
return try {
|
||||||
val md = MessageDigest.getInstance("MD5")
|
val md = MessageDigest.getInstance("MD5")
|
||||||
val messageDigest = md.digest(value.toByteArray())
|
val messageDigest = md.digest(value.toByteArray())
|
||||||
|
@ -42,7 +42,7 @@ public class AdminRequests extends PostRequest {
|
|||||||
Log.Log.warning("not jar --> cant restart");
|
Log.Log.warning("not jar --> cant restart");
|
||||||
|
|
||||||
/* Build command: java -jar application.jar */
|
/* Build command: java -jar application.jar */
|
||||||
final ArrayList<String> command = new ArrayList<String>();
|
final ArrayList<String> command = new ArrayList<>();
|
||||||
command.add(javaBin);
|
command.add(javaBin);
|
||||||
command.add("-jar");
|
command.add("-jar");
|
||||||
command.add(currentJar.getPath());
|
command.add(currentJar.getPath());
|
||||||
|
@ -74,7 +74,7 @@ class DeviceRequest : PostRequest() {
|
|||||||
var prev = ""
|
var prev = ""
|
||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
if (prev != deviceset.getString("name")) {
|
if (prev != deviceset.getString("name")) {
|
||||||
if (!deviceset.isFirst()) {
|
if (!deviceset.isFirst) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
sb.append("\"").append(deviceset.getString("name")).append("\":\"").append(deviceset.getString("name")).append("\"")
|
sb.append("\"").append(deviceset.getString("name")).append("\":\"").append(deviceset.getString("name")).append("\"")
|
||||||
@ -99,7 +99,7 @@ class DeviceRequest : PostRequest() {
|
|||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
if (prev != deviceset.getInt("zone")) {
|
if (prev != deviceset.getInt("zone")) {
|
||||||
sb.append("\"").append(deviceset.getInt("zone")).append("\":\"").append(deviceset.getInt("zone")).append("\"")
|
sb.append("\"").append(deviceset.getInt("zone")).append("\":\"").append(deviceset.getInt("zone")).append("\"")
|
||||||
if (!deviceset.isLast()) {
|
if (!deviceset.isLast) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ class DeviceRequest : PostRequest() {
|
|||||||
while (deviceset.next()) {
|
while (deviceset.next()) {
|
||||||
if (prev != deviceset.getString("wastetype")) {
|
if (prev != deviceset.getString("wastetype")) {
|
||||||
sb.append("\"" + deviceset.getString("wastetype") + "\":\"" + deviceset.getString("wastetype") + "\"")
|
sb.append("\"" + deviceset.getString("wastetype") + "\":\"" + deviceset.getString("wastetype") + "\"")
|
||||||
if (!deviceset.isLast()) {
|
if (!deviceset.isLast) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -171,7 +171,7 @@ class DeviceRequest : PostRequest() {
|
|||||||
try {
|
try {
|
||||||
val device = jdbc.executeQuery("SELECT * FROM cities WHERE name='" + params["cityname"] + "' AND wastetype='" + params["wastetype"] + "' AND zone='" + params["zonename"] + "'")
|
val device = jdbc.executeQuery("SELECT * FROM cities WHERE name='" + params["cityname"] + "' AND wastetype='" + params["wastetype"] + "' AND zone='" + params["zonename"] + "'")
|
||||||
device.first()
|
device.first()
|
||||||
var cityid = device.getInt("id")
|
val cityid = device.getInt("id")
|
||||||
jdbc.executeUpdate("INSERT INTO `device_city` (`DeviceID`, `CityID`) VALUES ('" + params["deviceid"] + "', '" + cityid + "');")
|
jdbc.executeUpdate("INSERT INTO `device_city` (`DeviceID`, `CityID`) VALUES ('" + params["deviceid"] + "', '" + cityid + "');")
|
||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
|
@ -32,9 +32,7 @@ class NewDateRequest : PostRequest() {
|
|||||||
try {
|
try {
|
||||||
var prev = ""
|
var prev = ""
|
||||||
while (set.next()) {
|
while (set.next()) {
|
||||||
if (prev == set.getString("name")) {
|
if (prev != set.getString("name")) { // not same --> new element
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (!set.isFirst) {
|
if (!set.isFirst) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
}
|
}
|
||||||
@ -57,9 +55,7 @@ class NewDateRequest : PostRequest() {
|
|||||||
try {
|
try {
|
||||||
var prev = 42
|
var prev = 42
|
||||||
while (set.next()) {
|
while (set.next()) {
|
||||||
if (prev == set.getInt("zone")) {
|
if (prev != set.getInt("zone")) { // not same --> append next
|
||||||
}
|
|
||||||
else {
|
|
||||||
sb.append("{\"zone\":\"" + set.getInt("zone") + "\"}")
|
sb.append("{\"zone\":\"" + set.getInt("zone") + "\"}")
|
||||||
if (!set.isLast) {
|
if (!set.isLast) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
@ -81,9 +77,7 @@ class NewDateRequest : PostRequest() {
|
|||||||
try {
|
try {
|
||||||
var prev = "42"
|
var prev = "42"
|
||||||
while (set.next()) {
|
while (set.next()) {
|
||||||
if (prev === set.getString("wastetype")) {
|
if (prev !== set.getString("wastetype")) {
|
||||||
}
|
|
||||||
else {
|
|
||||||
sb.append("{\"wastetype\":\"" + set.getString("wastetype") + "\"}")
|
sb.append("{\"wastetype\":\"" + set.getString("wastetype") + "\"}")
|
||||||
if (!set.isLast) {
|
if (!set.isLast) {
|
||||||
sb.append(",")
|
sb.append(",")
|
||||||
|
@ -3,7 +3,7 @@ package com.wasteinformationserver.website.datarequests
|
|||||||
import com.wasteinformationserver.basicutils.Log
|
import com.wasteinformationserver.basicutils.Log
|
||||||
import com.wasteinformationserver.basicutils.Log.Log.debug
|
import com.wasteinformationserver.basicutils.Log.Log.debug
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.website.HttpTools.Companion.StringToMD5
|
import com.wasteinformationserver.website.HttpTools.Companion.stringToMD5
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
import com.wasteinformationserver.website.basicrequest.PostRequest
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
@ -12,15 +12,16 @@ import java.util.*
|
|||||||
class RegisterRequest : PostRequest() {
|
class RegisterRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
debug(params.toString())
|
debug(params.toString())
|
||||||
val passhash = StringToMD5(params["password"]!!)
|
val passhash = stringToMD5(params["password"]!!)
|
||||||
var reply: StringBuilder = StringBuilder("{")
|
val reply: StringBuilder = StringBuilder("{")
|
||||||
try {
|
try {
|
||||||
var myjd: JDBC = JDBC.getInstance()
|
val myjd: JDBC = JDBC.getInstance()
|
||||||
|
|
||||||
val status = myjd.executeUpdate("INSERT INTO `user` (`username`, `firstName`, `secondName`, `password`, `email`, `logindate`) VALUES ('" + params["username"] + "', '" + params["firstname"] + "', '" + params["lastname"] + "', '" + passhash + "', '" + params["email"] + "', current_timestamp());")
|
val status = myjd.executeUpdate("INSERT INTO `user` (`username`, `firstName`, `secondName`, `password`, `email`, `logindate`) VALUES ('" + params["username"] + "', '" + params["firstname"] + "', '" + params["lastname"] + "', '" + passhash + "', '" + params["email"] + "', current_timestamp());")
|
||||||
if (status == 1) {
|
if (status == 1) {
|
||||||
reply.append("\"accept\": true")
|
reply.append("\"accept\": true")
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
reply.append("\"accept\": false")
|
reply.append("\"accept\": false")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,14 +6,14 @@ import java.util.*
|
|||||||
class UserInfoRequest : PostRequest() {
|
class UserInfoRequest : PostRequest() {
|
||||||
override fun request(params: HashMap<String, String>): String {
|
override fun request(params: HashMap<String, String>): String {
|
||||||
//TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
//TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
when (params.get("action")) {
|
when (params["action"]) {
|
||||||
"getlogins" -> {
|
"getlogins" -> {
|
||||||
println("heyho")
|
println("heyho")
|
||||||
}
|
}
|
||||||
""->{
|
"" -> {
|
||||||
//todo o
|
//todo o
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "{}";
|
return "{}"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ import com.wasteinformationserver.basicutils.Log.Log.error
|
|||||||
import com.wasteinformationserver.basicutils.Log.Log.message
|
import com.wasteinformationserver.basicutils.Log.Log.message
|
||||||
import com.wasteinformationserver.basicutils.Storage
|
import com.wasteinformationserver.basicutils.Storage
|
||||||
import com.wasteinformationserver.db.JDBC
|
import com.wasteinformationserver.db.JDBC
|
||||||
import com.wasteinformationserver.website.HttpTools.Companion.StringToMD5
|
import com.wasteinformationserver.website.HttpTools.Companion.stringToMD5
|
||||||
import com.wasteinformationserver.website.basicrequest.PostRequest
|
import com.wasteinformationserver.website.basicrequest.PostRequest
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
|
@ -5,7 +5,7 @@ package com.wasteinformationserver.website.datarequests.login;
|
|||||||
*/
|
*/
|
||||||
public class LoginState {
|
public class LoginState {
|
||||||
|
|
||||||
private static LoginState mythis = new LoginState();
|
private static final LoginState mythis = new LoginState();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get object
|
* get object
|
||||||
|
@ -118,7 +118,5 @@
|
|||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.min.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.min.js"></script>
|
||||||
<!-- AdminLTE for demo purposes -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,502 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<title>WasteInformation Server</title>
|
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<!-- Font Awesome -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
|
||||||
<!-- Ionicons -->
|
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
|
||||||
<!-- DataTables -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
|
||||||
<!-- Tempusdominus Bbootstrap 4 -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
|
||||||
<!-- iCheck -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
|
||||||
<!-- Theme style -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
|
||||||
<!-- overlayScrollbars -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
|
||||||
<!-- Daterange picker -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
|
||||||
<!-- summernote -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
|
||||||
<!-- Google Font: Source Sans Pro -->
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Bootstrap Date-Picker Plugin -->
|
|
||||||
|
|
||||||
<link rel="stylesheet"
|
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/dashboard.css">
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/favicon.png">
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
|
||||||
<div class="wrapper">
|
|
||||||
<!-- Main Sidebar Container -->
|
|
||||||
<aside class="main-sidebar sidebar-dark-primary elevation-4">
|
|
||||||
<!-- Brand Logo -->
|
|
||||||
<a href="ShedulePickUp.html" class="brand-link">
|
|
||||||
<img src="/favicon.png" alt="AdminLTE Logo"
|
|
||||||
class="brand-image img-circle elevation-3"
|
|
||||||
style="opacity: .8">
|
|
||||||
<span class="brand-text font-weight-light">Waste Control</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<!-- Sidebar -->
|
|
||||||
<div class="sidebar">
|
|
||||||
<!-- Sidebar user panel (optional) -->
|
|
||||||
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
|
||||||
<div class="image">
|
|
||||||
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
|
||||||
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
|
||||||
</div>
|
|
||||||
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
|
||||||
<div class="info">
|
|
||||||
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
|
||||||
<nav class="mt-2">
|
|
||||||
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
|
||||||
data-accordion="false">
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="dashboard.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-columns"></i>
|
|
||||||
<p>
|
|
||||||
Dashboard
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="ShedulePickUp.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-calendar-alt"></i>
|
|
||||||
<p>
|
|
||||||
Shedule Pick-up
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li id="devicepanel" class="nav-item">
|
|
||||||
<a href="device.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-desktop"></i>
|
|
||||||
<p>
|
|
||||||
Devices
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li id="adminpanel" class="nav-item hideit">
|
|
||||||
<a href="adminpanel.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-plus-circle"></i>
|
|
||||||
<p>
|
|
||||||
Admin panel
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="#todo" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-cog"></i>
|
|
||||||
<p>
|
|
||||||
Settings
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
|
||||||
<i class="nav-icon fas fa-sign-out-alt"></i>
|
|
||||||
<p>
|
|
||||||
Logout
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
<!-- /.sidebar-menu -->
|
|
||||||
</div>
|
|
||||||
<!-- /.sidebar -->
|
|
||||||
</aside>
|
|
||||||
|
|
||||||
<!-- Content Wrapper. Contains page content -->
|
|
||||||
<div class="content-wrapper">
|
|
||||||
<!-- Content Header (Page header) -->
|
|
||||||
<div class="content-header">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<div class="row mb-2">
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<h1 class="m-0 text-dark">Dashboard</h1>
|
|
||||||
</div><!-- /.col -->
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<ol class="breadcrumb float-sm-right">
|
|
||||||
<li class="breadcrumb-item"><a href="#">Home</a></li>
|
|
||||||
<li class="breadcrumb-item active">Shedule Pick-up</li>
|
|
||||||
</ol>
|
|
||||||
</div><!-- /.col -->
|
|
||||||
</div><!-- /.row -->
|
|
||||||
</div><!-- /.container-fluid -->
|
|
||||||
</div>
|
|
||||||
<!-- /.content-header -->
|
|
||||||
|
|
||||||
<!-- Main content -->
|
|
||||||
<section class="content">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<!-- Small boxes (Stat box) -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-6">
|
|
||||||
<!-- small box -->
|
|
||||||
<div class="small-box bg-info">
|
|
||||||
<div class="inner">
|
|
||||||
<h3 id="total-sheduled-actions-label">42</h3>
|
|
||||||
|
|
||||||
<p>Sheduled actions</p>
|
|
||||||
</div>
|
|
||||||
<div class="icon">
|
|
||||||
<i class="ion ion-bag"></i>
|
|
||||||
</div>
|
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- ./col -->
|
|
||||||
<div class="col-lg-3 col-6">
|
|
||||||
<!-- small box -->
|
|
||||||
<div class="small-box bg-gray">
|
|
||||||
<div class="inner">
|
|
||||||
<h3 id="next-action-label">42</h3>
|
|
||||||
|
|
||||||
<p>next Action</p>
|
|
||||||
</div>
|
|
||||||
<div class="icon">
|
|
||||||
<i class="ion ion-android-globe" style="color: lightgrey"></i>
|
|
||||||
</div>
|
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- ./col -->
|
|
||||||
<div class="col-lg-3 col-6">
|
|
||||||
<!-- small box -->
|
|
||||||
<div class="small-box bg-warning">
|
|
||||||
<div class="inner">
|
|
||||||
<h3 id="last-added-label">44</h3>
|
|
||||||
|
|
||||||
<p>last Added</p>
|
|
||||||
</div>
|
|
||||||
<div class="icon">
|
|
||||||
<i class="ion ion-calendar"></i>
|
|
||||||
</div>
|
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- ./col -->
|
|
||||||
<div class="col-lg-3 col-6">
|
|
||||||
<!-- small box -->
|
|
||||||
<div class="small-box bg-success">
|
|
||||||
<div class="inner">
|
|
||||||
<h3 id="todo-label">65</h3>
|
|
||||||
|
|
||||||
<p>TODO</p>
|
|
||||||
</div>
|
|
||||||
<div class="icon">
|
|
||||||
<i class="ion ion-android-checkmark-circle"></i>
|
|
||||||
</div>
|
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- ./col -->
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
<!-- Main row -->
|
|
||||||
<div class="row">
|
|
||||||
<!-- Left col -->
|
|
||||||
<section class="col-lg-7 connectedSortable">
|
|
||||||
<!-- Custom tabs (Charts with tabs)-->
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
|
||||||
<h3 class="card-title">
|
|
||||||
<i class="fas fa-chart-pie mr-1"></i>
|
|
||||||
All pickupdats
|
|
||||||
</h3>
|
|
||||||
</div><!-- /.card-header -->
|
|
||||||
<div class="card-body">
|
|
||||||
<table id="table-pickupdates" class="table table-bordered table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<i class="fas fa-city"></i>
|
|
||||||
City</th>
|
|
||||||
<th><i class="fas fa-search-location"></i>
|
|
||||||
Zone</th>
|
|
||||||
<th><i class="fas fa-recycle"></i>
|
|
||||||
Waste Type</th>
|
|
||||||
<th><i class="fas fa-calendar-alt"></i>
|
|
||||||
Date</th>
|
|
||||||
<th><i class="fas fa-trash-alt"></i>
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody id="picupdates-tablebody">
|
|
||||||
</tbody>
|
|
||||||
<tfoot>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<i class="fas fa-city"></i>
|
|
||||||
City</th>
|
|
||||||
<th><i class="fas fa-search-location"></i>
|
|
||||||
Zone</th>
|
|
||||||
<th><i class="fas fa-recycle"></i>
|
|
||||||
Waste Type</th>
|
|
||||||
<th><i class="fas fa-calendar-alt"></i>
|
|
||||||
Date</th>
|
|
||||||
<th><i class="fas fa-trash-alt"></i>
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</tfoot>
|
|
||||||
</table>
|
|
||||||
</div><!-- /.card-body -->
|
|
||||||
</div>
|
|
||||||
<!-- /.card -->
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
|
||||||
<h3 class="card-title">
|
|
||||||
<i class="fas fa-chart-pie mr-1"></i>
|
|
||||||
New City
|
|
||||||
</h3>
|
|
||||||
<button id="btn-savecity" type="button" class="btn btn-success"
|
|
||||||
style="float:right;">Save
|
|
||||||
</button>
|
|
||||||
</div><!-- /.card-header -->
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="form-group" style="margin-top: 15px; width: 10cm;">
|
|
||||||
<label for="new_city_cityname">City/Village name</label>
|
|
||||||
<input type="email" class="form-control" id="new_city_cityname"
|
|
||||||
aria-describedby="emailHelp" placeholder="Enter city name here">
|
|
||||||
<small class="form-text text-muted">Please try to use no special
|
|
||||||
characters</small>
|
|
||||||
</div>
|
|
||||||
<div class="form-group" style="width: 10cm;">
|
|
||||||
<label for="new_city_zonename">Zone Name</label>
|
|
||||||
<input type="email" class="form-control" id="new_city_zonename"
|
|
||||||
aria-describedby="emailHelp" placeholder="Enter Zone name here">
|
|
||||||
<small class="form-text text-muted">Please try to use no special
|
|
||||||
characters</small>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<button id="dropdown-wastetype" type="button"
|
|
||||||
class="btn btn-outline-dark dropdown-toggle"
|
|
||||||
data-toggle="dropdown">
|
|
||||||
Select waste type
|
|
||||||
</button>
|
|
||||||
<div class="dropdown-menu">
|
|
||||||
<a class="wastetype-citynew-item dropdown-item" href="#">Plastic</a>
|
|
||||||
<a class="wastetype-citynew-item dropdown-item" href="#">Metal</a>
|
|
||||||
<a class="wastetype-citynew-item dropdown-item" href="#">Residual waste</a>
|
|
||||||
<a class="wastetype-citynew-item dropdown-item" href="#">Biowaste</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div><!-- /.card-body -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Custom tabs (Charts with tabs)-->
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
|
||||||
<h3 class="card-title">
|
|
||||||
<i class="fas fa-chart-pie mr-1"></i>
|
|
||||||
New Pick up date
|
|
||||||
</h3>
|
|
||||||
</div><!-- /.card-header -->
|
|
||||||
<div class="card-body">
|
|
||||||
<form>
|
|
||||||
|
|
||||||
<h4>Add Data:</h4>
|
|
||||||
<div class="input-group mt-3 mb-3" style="width: 100%;">
|
|
||||||
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<button id="dropdown-city" type="button"
|
|
||||||
class="btn btn-outline-dark dropdown-toggle"
|
|
||||||
data-toggle="dropdown">
|
|
||||||
Select city
|
|
||||||
</button>
|
|
||||||
<div id="dropdown-city-data" class="dropdown-menu">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<button id="dropdown-zone" type="button"
|
|
||||||
class="btn btn-outline-dark dropdown-toggle"
|
|
||||||
data-toggle="dropdown">
|
|
||||||
Select Zone
|
|
||||||
</button>
|
|
||||||
<div id="dropdown-zone-data" class="dropdown-menu">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="input-group-prepend">
|
|
||||||
<button id="dropdown-type-data" type="button"
|
|
||||||
class="btn btn-outline-dark dropdown-toggle"
|
|
||||||
data-toggle="dropdown">
|
|
||||||
Select waste type
|
|
||||||
</button>
|
|
||||||
<div id="dropdown-type-drops" class="dropdown-menu">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input id="input-wastetime" style="width: 50px;" class="form-control" id="date"
|
|
||||||
name="date" placeholder="MM/DD/YYY" type="text"/>
|
|
||||||
<button type="button" class="btn-savelist btn btn-success"
|
|
||||||
style="float:right;">Save
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div><!-- /.card-body -->
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- /.Left col -->
|
|
||||||
<!-- right col (We are only adding the ID to make the widgets sortable)-->
|
|
||||||
<section class="col-lg-5 connectedSortable">
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header">
|
|
||||||
<h3 class="card-title">
|
|
||||||
<i class="fas fa-chart-pie mr-1"></i>
|
|
||||||
Pick up locations
|
|
||||||
</h3>
|
|
||||||
</div><!-- /.card-header -->
|
|
||||||
<!-- /.card-header -->
|
|
||||||
<div class="card-body">
|
|
||||||
<table id="example2" class="table table-bordered table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<i class="fas fa-city"></i>
|
|
||||||
City</th>
|
|
||||||
<th><i class="fas fa-search-location"></i>
|
|
||||||
Zone</th>
|
|
||||||
<th><i class="fas fa-recycle"></i>
|
|
||||||
Waste Type</th>
|
|
||||||
<th><i class="fas fa-calendar-alt"></i>
|
|
||||||
Date</th>
|
|
||||||
<th><i class="fas fa-trash-alt"></i>
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody id="location-table-data">
|
|
||||||
</tbody>
|
|
||||||
<tfoot>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<i class="fas fa-city"></i>
|
|
||||||
City</th>
|
|
||||||
<th><i class="fas fa-search-location"></i>
|
|
||||||
Zone</th>
|
|
||||||
<th><i class="fas fa-recycle"></i>
|
|
||||||
Waste Type</th>
|
|
||||||
<th><i class="fas fa-calendar-alt"></i>
|
|
||||||
Date</th>
|
|
||||||
<th><i class="fas fa-trash-alt"></i>
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</tfoot>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<!-- /.card-body -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- /.card -->
|
|
||||||
</section>
|
|
||||||
<!-- right col -->
|
|
||||||
</div>
|
|
||||||
<!-- /.row (main row) -->
|
|
||||||
</div><!-- /.container-fluid -->
|
|
||||||
</section>
|
|
||||||
<!-- /.content -->
|
|
||||||
</div>
|
|
||||||
<!-- /.content-wrapper -->
|
|
||||||
<footer class="main-footer">
|
|
||||||
<strong>By Gregor Dutzler & Lukas Heiligenbrunner & Emil Meindl</strong>
|
|
||||||
<div id="version-footer-label" class="float-right d-none d-sm-inline-block">
|
|
||||||
<b>Version</b> 3.0.0
|
|
||||||
<b>Build</b> 2019-8-8 9:30
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Control Sidebar -->
|
|
||||||
<aside class="control-sidebar control-sidebar-dark">
|
|
||||||
<!-- Control sidebar content goes here -->
|
|
||||||
</aside>
|
|
||||||
<!-- /.control-sidebar -->
|
|
||||||
</div>
|
|
||||||
<!-- ./wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
|
||||||
<!-- jQuery UI 1.11.4 -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jquery-ui/jquery-ui.min.js"></script>
|
|
||||||
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
|
|
||||||
<script>
|
|
||||||
$.widget.bridge('uibutton', $.ui.button)
|
|
||||||
</script>
|
|
||||||
<!-- Bootstrap 4 -->
|
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
|
||||||
<!-- ChartJS -->
|
|
||||||
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
|
||||||
<!-- Sparkline -->
|
|
||||||
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
|
||||||
<!-- jQuery Knob Chart -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
|
||||||
<!-- daterangepicker -->
|
|
||||||
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
|
||||||
<!-- Tempusdominus Bootstrap 4 -->
|
|
||||||
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
|
||||||
<!-- Summernote -->
|
|
||||||
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
|
||||||
<!-- overlayScrollbars -->
|
|
||||||
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
|
||||||
<!-- AdminLTE App -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
|
||||||
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
|
||||||
<!-- AdminLTE for demo purposes -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript"
|
|
||||||
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
|
||||||
|
|
||||||
<!-- DataTables -->
|
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
|
||||||
|
|
||||||
<!-- OWN -->
|
|
||||||
|
|
||||||
<script type="text/javascript" src="js/sheduledpickup.js"></script>
|
|
||||||
<script src="js/userManager.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -6,38 +6,27 @@
|
|||||||
<title>WasteInformation Server</title>
|
<title>WasteInformation Server</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- AdminLTE Libs -->
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
||||||
<!-- Tempusdominus Bbootstrap 4 -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
<!-- !Theme style -->
|
||||||
<!-- iCheck -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
|
||||||
<!-- Theme style -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
||||||
<!-- overlayScrollbars -->
|
<!-- !overlayScrollbars -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
||||||
<!-- Daterange picker -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
|
||||||
<!-- summernote -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Bootstrap Date-Picker Plugin -->
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
||||||
|
|
||||||
<link rel="stylesheet"
|
<!-- custom stylesheets -->
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
|
||||||
|
|
||||||
<!-- <link rel="stylesheet" type="text/css" href="css/user.css">-->
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
<link rel="stylesheet" type="text/css" href="css/general.css">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
<body class="hold-transition sidebar-mini layout-fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@ -53,17 +42,21 @@
|
|||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar user panel (optional) -->
|
<!-- Sidebar User -->
|
||||||
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
<nav class="user-panel mt-3 pb-3 mb-3">
|
||||||
<div class="image">
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
||||||
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
data-accordion="false">
|
||||||
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
|
||||||
</div>
|
<li class="nav-item">
|
||||||
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
<a href="user.html" class="nav-link">
|
||||||
<div class="info">
|
<i class="nav-icon fas fa-user"></i>
|
||||||
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
<p id="userlabel">
|
||||||
</div>
|
Username to set!
|
||||||
</div>
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
@ -79,14 +72,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="ShedulePickUp.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-calendar-alt"></i>
|
|
||||||
<p>
|
|
||||||
Shedule Pick-up
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li id="devicepanel" class="nav-item">
|
<li id="devicepanel" class="nav-item">
|
||||||
<a href="device.html" class="nav-link">
|
<a href="device.html" class="nav-link">
|
||||||
@ -108,15 +93,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="#todo" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-cog"></i>
|
|
||||||
<p>
|
|
||||||
Settings
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
<a href="index.html" class="nav-link" id="logoutbtn">
|
||||||
@ -142,12 +118,12 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1 class="m-0 text-dark">Dashboard</h1>
|
<h1 class="m-0 text-dark sandwich"><i class="fas fa-bars"></i>  Admin Area</h1>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
||||||
<li class="breadcrumb-item active">Users</li>
|
<li class="breadcrumb-item active">Admin</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
</div><!-- /.row -->
|
</div><!-- /.row -->
|
||||||
@ -249,6 +225,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ./wrapper -->
|
<!-- ./wrapper -->
|
||||||
|
|
||||||
|
<!-- AdminLTE Libs -->
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
<!-- jQuery UI 1.11.4 -->
|
<!-- jQuery UI 1.11.4 -->
|
||||||
@ -259,42 +236,18 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- Bootstrap 4 -->
|
<!-- Bootstrap 4 -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
<!-- ChartJS -->
|
|
||||||
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
|
||||||
<!-- Sparkline -->
|
|
||||||
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
|
||||||
<!-- jQuery Knob Chart -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
|
||||||
<!-- daterangepicker -->
|
|
||||||
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
|
||||||
<!-- Tempusdominus Bootstrap 4 -->
|
|
||||||
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
|
||||||
<!-- Summernote -->
|
|
||||||
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
|
||||||
<!-- overlayScrollbars -->
|
|
||||||
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
||||||
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
||||||
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
|
||||||
<!-- AdminLTE for demo purposes -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript"
|
|
||||||
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="js/adminpanel.js"></script>
|
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<script src="js/userManager.js"></script>
|
<!-- custom js -->
|
||||||
|
<script src="js/adminpanel.js"></script>
|
||||||
|
<script src="js/general.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
.hideit{
|
.hideit{
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sandwich:hover{
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
@ -1,7 +0,0 @@
|
|||||||
html,body{
|
|
||||||
background-image: url('../rsc/login2.jpg');
|
|
||||||
background-size: cover;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
height: 100%;
|
|
||||||
font-family: 'Numans', sans-serif;
|
|
||||||
}
|
|
@ -6,40 +6,29 @@
|
|||||||
<title>WasteInformation Server</title>
|
<title>WasteInformation Server</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<!-- AdminLTE Libs -->
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
||||||
<!-- Tempusdominus Bbootstrap 4 -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
<!-- !Theme style -->
|
||||||
<!-- iCheck -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
|
||||||
<!-- Theme style -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
||||||
<!-- overlayScrollbars -->
|
<!-- !overlayScrollbars -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
||||||
<!-- Daterange picker -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
|
||||||
<!-- summernote -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Bootstrap Date-Picker Plugin -->
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
||||||
|
|
||||||
<link rel="stylesheet"
|
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
|
||||||
|
|
||||||
|
<!-- custom stylesheets -->
|
||||||
<link rel="stylesheet" type="text/css" href="css/dashboard.css">
|
<link rel="stylesheet" type="text/css" href="css/dashboard.css">
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
<link rel="stylesheet" type="text/css" href="css/general.css">
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/favicon.png">
|
<link rel="icon" type="image/png" href="/favicon.png">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
<body class="hold-transition sidebar-mini layout-fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@ -55,17 +44,21 @@
|
|||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar user panel (optional) -->
|
<!-- Sidebar User -->
|
||||||
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
<nav class="user-panel mt-3 pb-3 mb-3">
|
||||||
<div class="image">
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
||||||
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
data-accordion="false">
|
||||||
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
|
||||||
</div>
|
<li class="nav-item">
|
||||||
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
<a href="user.html" class="nav-link">
|
||||||
<div class="info">
|
<i class="nav-icon fas fa-user"></i>
|
||||||
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
<p id="userlabel">
|
||||||
</div>
|
Username to set!
|
||||||
</div>
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
@ -82,16 +75,6 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="ShedulePickUp.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-calendar-alt"></i>
|
|
||||||
<p>
|
|
||||||
Shedule Pick-up
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li id="devicepanel" class="nav-item">
|
<li id="devicepanel" class="nav-item">
|
||||||
<a href="device.html" class="nav-link">
|
<a href="device.html" class="nav-link">
|
||||||
<i class="nav-icon fas fa-desktop"></i>
|
<i class="nav-icon fas fa-desktop"></i>
|
||||||
@ -111,15 +94,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="#todo" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-cog"></i>
|
|
||||||
<p>
|
|
||||||
Settings
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
<a href="index.html" class="nav-link" id="logoutbtn">
|
||||||
@ -143,7 +117,7 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1 class="m-0 text-dark">Dashboard</h1>
|
<h1 class="m-0 text-dark sandwich"><i class="fas fa-bars"></i>  Dashboard</h1>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
@ -172,7 +146,6 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-bag"></i>
|
<i class="ion ion-bag"></i>
|
||||||
</div>
|
</div>
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@ -187,7 +160,6 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-android-globe" style="color: lightgrey"></i>
|
<i class="ion ion-android-globe" style="color: lightgrey"></i>
|
||||||
</div>
|
</div>
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@ -202,7 +174,6 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-calendar"></i>
|
<i class="ion ion-calendar"></i>
|
||||||
</div>
|
</div>
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@ -217,7 +188,6 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-android-checkmark-circle"></i>
|
<i class="ion ion-android-checkmark-circle"></i>
|
||||||
</div>
|
</div>
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@ -434,6 +404,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ./wrapper -->
|
<!-- ./wrapper -->
|
||||||
|
|
||||||
|
<!-- AdminLTE Libs -->
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
<!-- jQuery UI 1.11.4 -->
|
<!-- jQuery UI 1.11.4 -->
|
||||||
@ -444,44 +415,18 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- Bootstrap 4 -->
|
<!-- Bootstrap 4 -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
<!-- ChartJS -->
|
|
||||||
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
|
||||||
<!-- Sparkline -->
|
|
||||||
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
|
||||||
<!-- jQuery Knob Chart -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
|
||||||
<!-- daterangepicker -->
|
|
||||||
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
|
||||||
<!-- Tempusdominus Bootstrap 4 -->
|
|
||||||
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
|
||||||
<!-- Summernote -->
|
|
||||||
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
|
||||||
<!-- overlayScrollbars -->
|
|
||||||
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
||||||
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
||||||
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
|
||||||
<!-- AdminLTE for demo purposes -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript"
|
|
||||||
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
|
||||||
|
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<!-- OWN -->
|
<!-- custom js -->
|
||||||
|
|
||||||
<script type="text/javascript" src="js/dashboard.js"></script>
|
<script type="text/javascript" src="js/dashboard.js"></script>
|
||||||
<script src="js/userManager.js"></script>
|
<script src="js/general.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -6,38 +6,27 @@
|
|||||||
<title>WasteInformation Server</title>
|
<title>WasteInformation Server</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- AdminLTE Libs -->
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/fontawesome-free/css/all.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css">
|
||||||
<!-- Tempusdominus Bbootstrap 4 -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">
|
<!-- !Theme style -->
|
||||||
<!-- iCheck -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/jqvmap/jqvmap.min.css">
|
|
||||||
<!-- Theme style -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/dist/css/adminlte.min.css">
|
||||||
<!-- overlayScrollbars -->
|
<!-- !overlayScrollbars -->
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
<link rel="stylesheet" href="lib/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">
|
||||||
<!-- Daterange picker -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/daterangepicker/daterangepicker.css">
|
|
||||||
<!-- summernote -->
|
|
||||||
<link rel="stylesheet" href="lib/AdminLTE/plugins/summernote/summernote-bs4.css">
|
|
||||||
<!-- Google Font: Source Sans Pro -->
|
<!-- Google Font: Source Sans Pro -->
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Bootstrap Date-Picker Plugin -->
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
||||||
|
|
||||||
<link rel="stylesheet"
|
<!-- custom stylesheets -->
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
|
|
||||||
|
|
||||||
<!-- <link rel="stylesheet" type="text/css" href="css/user.css">-->
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/general.css">
|
<link rel="stylesheet" type="text/css" href="css/general.css">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="hold-transition sidebar-mini layout-fixed">
|
<body class="hold-transition sidebar-mini layout-fixed">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
@ -54,17 +43,21 @@
|
|||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar user panel (optional) -->
|
<!-- Sidebar User -->
|
||||||
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
<nav class="user-panel mt-3 pb-3 mb-3">
|
||||||
<div class="image">
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
||||||
<!-- <img src="lib/AdminLTE/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image"> -->
|
data-accordion="false">
|
||||||
<i class="nav-icon fas fa-user img-circle elevation-2" style="color:white"></i>
|
|
||||||
</div>
|
<li class="nav-item">
|
||||||
<!-- <i class="nav-icon fas fa-tachometer-alt"></i> -->
|
<a href="user.html" class="nav-link">
|
||||||
<div class="info">
|
<i class="nav-icon fas fa-user"></i>
|
||||||
<a href="user.html" class="d-block" id="userlabel">Username to set!</a>
|
<p id="userlabel">
|
||||||
</div>
|
Username to set!
|
||||||
</div>
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
@ -80,14 +73,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="ShedulePickUp.html" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-calendar-alt"></i>
|
|
||||||
<p>
|
|
||||||
Shedule Pick-up
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li id="devicepanel" class="nav-item">
|
<li id="devicepanel" class="nav-item">
|
||||||
<a href="device.html" class="nav-link">
|
<a href="device.html" class="nav-link">
|
||||||
@ -107,15 +92,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="#todo" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-cog"></i>
|
|
||||||
<p>
|
|
||||||
Settings
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="index.html" class="nav-link" id="logoutbtn">
|
<a href="index.html" class="nav-link" id="logoutbtn">
|
||||||
@ -140,12 +116,12 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<h1 class="m-0 text-dark">Dashboard</h1>
|
<h1 class="m-0 text-dark sandwich"><i class="fas fa-bars"></i>  Devices</h1>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
<li class="breadcrumb-item"><a href="dashboard.html">Home</a></li>
|
||||||
<li class="breadcrumb-item active">Users</li>
|
<li class="breadcrumb-item active">Devices</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div><!-- /.col -->
|
</div><!-- /.col -->
|
||||||
</div><!-- /.row -->
|
</div><!-- /.row -->
|
||||||
@ -169,7 +145,6 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-bag"></i>
|
<i class="ion ion-bag"></i>
|
||||||
</div>
|
</div>
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@ -184,7 +159,6 @@
|
|||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="ion ion-stats-bars"></i>
|
<i class="ion ion-stats-bars"></i>
|
||||||
</div>
|
</div>
|
||||||
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- ./col -->
|
<!-- ./col -->
|
||||||
@ -264,6 +238,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- ./wrapper -->
|
<!-- ./wrapper -->
|
||||||
|
|
||||||
|
<!-- AdminLTE Libs -->
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
<!-- jQuery UI 1.11.4 -->
|
<!-- jQuery UI 1.11.4 -->
|
||||||
@ -274,42 +249,17 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- Bootstrap 4 -->
|
<!-- Bootstrap 4 -->
|
||||||
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
<!-- ChartJS -->
|
|
||||||
<script src="lib/AdminLTE/plugins/chart.js/Chart.min.js"></script>
|
|
||||||
<!-- Sparkline -->
|
|
||||||
<script src="lib/AdminLTE/plugins/sparklines/sparkline.js"></script>
|
|
||||||
<!-- JQVMap -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/jquery.vmap.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js"></script>
|
|
||||||
<!-- jQuery Knob Chart -->
|
|
||||||
<script src="lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js"></script>
|
|
||||||
<!-- daterangepicker -->
|
|
||||||
<script src="lib/AdminLTE/plugins/moment/moment.min.js"></script>
|
|
||||||
<script src="lib/AdminLTE/plugins/daterangepicker/daterangepicker.js"></script>
|
|
||||||
<!-- Tempusdominus Bootstrap 4 -->
|
|
||||||
<script src="lib/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
|
|
||||||
<!-- Summernote -->
|
|
||||||
<script src="lib/AdminLTE/plugins/summernote/summernote-bs4.min.js"></script>
|
|
||||||
<!-- overlayScrollbars -->
|
|
||||||
<script src="lib/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js"></script>
|
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
<script src="lib/AdminLTE/dist/js/adminlte.js"></script>
|
||||||
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
||||||
<script src="lib/AdminLTE/dist/js/pages/dashboard.js"></script>
|
|
||||||
<!-- AdminLTE for demo purposes -->
|
|
||||||
<script src="lib/AdminLTE/dist/js/demo.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript"
|
|
||||||
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
|
|
||||||
|
|
||||||
<!--<script type="text/javascript" src="js/user.js"></script>-->
|
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables/jquery.dataTables.js"></script>
|
||||||
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
<script src="lib/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js"></script>
|
||||||
|
|
||||||
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
<script src="lib/AdminLTE/plugins/sweetalert2/sweetalert2.all.js"></script>
|
||||||
|
|
||||||
<script src="js/userManager.js"></script>
|
<!-- custom js -->
|
||||||
|
<script src="js/general.js"></script>
|
||||||
<script src="js/device.js"></script>
|
<script src="js/device.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,19 +3,18 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Login Page</title>
|
<title>Login Page</title>
|
||||||
<!--Made with love by Mutiullah Samim -->
|
|
||||||
|
|
||||||
<!-- Latest compiled and minified CSS -->
|
<!-- Latest compiled and minified CSS -->
|
||||||
<link rel="stylesheet" href="lib/bootstrap.min.css">
|
<link rel="stylesheet" href="lib/bootstrap.min.css">
|
||||||
|
|
||||||
<!-- jQuery library -->
|
<!-- jQuery library -->
|
||||||
<script src="lib/jquery.min.js"></script>
|
<script src="lib/AdminLTE/plugins/jquery/jquery.min.js"></script>
|
||||||
|
|
||||||
<!-- Popper JS -->
|
<!-- Popper JS -->
|
||||||
<script src="lib/popper.min.js"></script>
|
<script src="lib/popper.min.js"></script>
|
||||||
|
|
||||||
<!-- Latest compiled JavaScript -->
|
<!-- Latest compiled JavaScript -->
|
||||||
<script src="lib/bootstrap.min.js"></script>
|
<script src="lib/AdminLTE/plugins/bootstrap/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
<!--Fontawesome CDN-->
|
<!--Fontawesome CDN-->
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"
|
||||||
|
@ -21,6 +21,16 @@ class Dashboard {
|
|||||||
|
|
||||||
//add click listeners to all buttons
|
//add click listeners to all buttons
|
||||||
this.addClickListeners();
|
this.addClickListeners();
|
||||||
|
|
||||||
|
// allow moveable tiles
|
||||||
|
$('.connectedSortable').sortable({
|
||||||
|
placeholder : 'sort-highlight',
|
||||||
|
connectWith : '.connectedSortable',
|
||||||
|
handle : '.card-header, .nav-tabs',
|
||||||
|
forcePlaceholderSize: true,
|
||||||
|
zIndex : 999999
|
||||||
|
})
|
||||||
|
$('.connectedSortable .card-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move')
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
@ -53,7 +63,7 @@ class Dashboard {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status == "inserted") {
|
if (data.status == "inserted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully created city!',
|
title: 'Successfully created city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@ -64,7 +74,7 @@ class Dashboard {
|
|||||||
_this.reloadtable();
|
_this.reloadtable();
|
||||||
} else if (data.status == "exists") {
|
} else if (data.status == "exists") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "warning",
|
icon: "warning",
|
||||||
title: 'Name already exists in db',
|
title: 'Name already exists in db',
|
||||||
html: 'Close popup.',
|
html: 'Close popup.',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@ -169,7 +179,7 @@ class Dashboard {
|
|||||||
$.post('/senddata/newdate', 'action=newdate&cityname=' + cityname.html() + "&zone=" + zone.html() + "&wastetype=" + wastetype.html() + "&date=" + date.val(), function (data) {
|
$.post('/senddata/newdate', 'action=newdate&cityname=' + cityname.html() + "&zone=" + zone.html() + "&wastetype=" + wastetype.html() + "&date=" + date.val(), function (data) {
|
||||||
if (data.status == "success") {
|
if (data.status == "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully created Date!',
|
title: 'Successfully created Date!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@ -185,7 +195,7 @@ class Dashboard {
|
|||||||
_this.reloadDateTable();
|
_this.reloadDateTable();
|
||||||
} else if (data.status == "citydoesntexist") {
|
} else if (data.status == "citydoesntexist") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "warning",
|
icon: "warning",
|
||||||
title: 'city name doesnt exist',
|
title: 'city name doesnt exist',
|
||||||
html: 'Close popup.',
|
html: 'Close popup.',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@ -265,7 +275,7 @@ class Dashboard {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status === "success") {
|
if (data.status === "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully deleted city!',
|
title: 'Successfully deleted city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@ -276,7 +286,7 @@ class Dashboard {
|
|||||||
reloadtable();
|
reloadtable();
|
||||||
} else if (data.status === "dependenciesnotdeleted") {
|
} else if (data.status === "dependenciesnotdeleted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "warning",
|
icon: "warning",
|
||||||
title: 'This city is a dependency of a date',
|
title: 'This city is a dependency of a date',
|
||||||
html: 'Do you want do delete it anyway with all dependencies?',
|
html: 'Do you want do delete it anyway with all dependencies?',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@ -292,7 +302,7 @@ class Dashboard {
|
|||||||
_this.citytable = $("#example2").DataTable();
|
_this.citytable = $("#example2").DataTable();
|
||||||
} else if (data.query == "nodbconn") {
|
} else if (data.query == "nodbconn") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "error",
|
icon: "error",
|
||||||
title: 'No connection to Database',
|
title: 'No connection to Database',
|
||||||
html: 'Setup DB here --> <a href="index.html">click<a/>.',
|
html: 'Setup DB here --> <a href="index.html">click<a/>.',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@ -335,7 +345,7 @@ class Dashboard {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status == "success") {
|
if (data.status == "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully deleted city!',
|
title: 'Successfully deleted city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@ -346,7 +356,7 @@ class Dashboard {
|
|||||||
reloadDateTable();
|
reloadDateTable();
|
||||||
} else if (data.status == "dependenciesnotdeleted") {
|
} else if (data.status == "dependenciesnotdeleted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "warning",
|
icon: "warning",
|
||||||
title: 'This city is a dependency of a date',
|
title: 'This city is a dependency of a date',
|
||||||
html: 'Do you want do delete it anyway with all dependencies?',
|
html: 'Do you want do delete it anyway with all dependencies?',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
|
@ -124,7 +124,7 @@ class Device {
|
|||||||
$.post('/senddata/Devicedata', 'action=addtodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype, function (data) {
|
$.post('/senddata/Devicedata', 'action=addtodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype, function (data) {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully configured!',
|
title: 'Successfully configured!',
|
||||||
html: 'This alert closes added.',
|
html: 'This alert closes added.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@ -157,7 +157,7 @@ class Device {
|
|||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status === "success") {
|
if (data.status === "success") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully deleted city!',
|
title: 'Successfully deleted city!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
@ -168,7 +168,7 @@ class Device {
|
|||||||
_this.reloadDevices();
|
_this.reloadDevices();
|
||||||
} else if (data.status === "dependenciesnotdeleted") {
|
} else if (data.status === "dependenciesnotdeleted") {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "warning",
|
icon: "warning",
|
||||||
title: 'This city is a dependency of a date',
|
title: 'This city is a dependency of a date',
|
||||||
html: 'Do you want do delete it anyway with all dependencies?',
|
html: 'Do you want do delete it anyway with all dependencies?',
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
@ -261,7 +261,7 @@ class Device {
|
|||||||
$.post('/senddata/Devicedata', 'action=savetodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype + '&devicename=' + devicename + '&devicelocation=' + devicelocation, function (data) {
|
$.post('/senddata/Devicedata', 'action=savetodb&deviceid=' + id + '&cityname=' + cityname + '&zonename=' + zone + '&wastetype=' + wastetype + '&devicename=' + devicename + '&devicelocation=' + devicelocation, function (data) {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
type: "success",
|
icon: "success",
|
||||||
title: 'Successfully configured!',
|
title: 'Successfully configured!',
|
||||||
html: 'This alert closes automatically.',
|
html: 'This alert closes automatically.',
|
||||||
timer: 1000,
|
timer: 1000,
|
||||||
|
@ -1,5 +1,19 @@
|
|||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
console.log("page loaded");
|
$('.sandwich').click(function () {
|
||||||
|
const bdy = $('body');
|
||||||
|
if (bdy.hasClass("sidebar-collapse")) {
|
||||||
|
bdy.removeClass("sidebar-collapse");
|
||||||
|
} else {
|
||||||
|
bdy.addClass("sidebar-collapse");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bdy.hasClass("sidebar-open")){
|
||||||
|
bdy.removeClass("sidebar-open");
|
||||||
|
} else {
|
||||||
|
bdy.addClass("sidebar-open");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$.post('/senddata/checkloginstate', 'action=getloginstate', function (data) {
|
$.post('/senddata/checkloginstate', 'action=getloginstate', function (data) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.loggedin == true) {
|
if (data.loggedin == true) {
|
@ -7,8 +7,6 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
$.post('/senddata/loginget', 'username=' + username + '&password=' + password, function (data) {
|
$.post('/senddata/loginget', 'username=' + username + '&password=' + password, function (data) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
// todo parse different errors here with popups
|
|
||||||
|
|
||||||
|
|
||||||
if (data.accept == true) {
|
if (data.accept == true) {
|
||||||
console.log("successfully logged in!");
|
console.log("successfully logged in!");
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
$(document).ready(function() {
|
|
||||||
$("#firstname").value("hhh");
|
|
||||||
|
|
||||||
$.post('/senddata/checkloginstate', 'action=getfirstname', function (data) {
|
|
||||||
console.log(data);
|
|
||||||
}, 'json');
|
|
||||||
});
|
|
@ -1,37 +1,38 @@
|
|||||||
$(document).ready(function() {
|
$(document).ready(function () {
|
||||||
$('#loginbtn').click(function(e) {
|
$('#loginbtn').click(function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
console.log("clicked login button");
|
console.log("clicked login button");
|
||||||
var username = $("#usernamefield")[0].value;
|
var username = $("#usernamefield")[0].value;
|
||||||
var firstname = $("#firstnamefield")[0].value;
|
var firstname = $("#firstnamefield")[0].value;
|
||||||
var lastname = $("#lastnamefield")[0].value;
|
var lastname = $("#lastnamefield")[0].value;
|
||||||
var email = $("#emailfield")[0].value;
|
var email = $("#emailfield")[0].value;
|
||||||
var password = $("#passfield")[0].value;
|
var password = $("#passfield")[0].value;
|
||||||
var replypassword = $("#replpassfield")[0].value;
|
var replypassword = $("#replpassfield")[0].value;
|
||||||
|
|
||||||
if (password != replypassword) {
|
if (password != replypassword) {
|
||||||
console.log("passwords doesnt match");
|
console.log("passwords doesnt match");
|
||||||
}else {
|
} else {
|
||||||
$.post('/senddata/registerpost','username='+username+
|
$.post('/senddata/registerpost',
|
||||||
'&firstname='+firstname+
|
'username=' + username +
|
||||||
'&lastname='+lastname+
|
'&firstname=' + firstname +
|
||||||
'&email='+email+
|
'&lastname=' + lastname +
|
||||||
'&password='+password,function(data){
|
'&email=' + email +
|
||||||
|
'&password=' + password, function (data) {
|
||||||
|
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
|
||||||
if (data.accept == true) {
|
if (data.accept == true) {
|
||||||
console.log("successfully registered!");
|
console.log("successfully registered!");
|
||||||
$("#successbar").show();
|
$("#successbar").show();
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function () {
|
||||||
window.location = 'index.html';
|
window.location = 'index.html';
|
||||||
},3000);
|
}, 3000);
|
||||||
}else {
|
} else {
|
||||||
console.log("error!");
|
console.log("error!");
|
||||||
$("#errorbar").show();
|
$("#errorbar").show();
|
||||||
|
}
|
||||||
|
}, 'json');
|
||||||
}
|
}
|
||||||
},'json');
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
$(function () {
|
|
||||||
console.log("bla");
|
|
||||||
})
|
|
7797
src/resources/wwwroot/lib/AdminLTE/dist/css/adminlte.css
vendored
7797
src/resources/wwwroot/lib/AdminLTE/dist/css/adminlte.css
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,444 +0,0 @@
|
|||||||
/*!
|
|
||||||
* AdminLTE v3.0.0
|
|
||||||
* Only Pages
|
|
||||||
* Author: Colorlib
|
|
||||||
* Website: AdminLTE.io <http://adminlte.io>
|
|
||||||
* License: Open source - MIT <http://opensource.org/licenses/MIT>
|
|
||||||
*/
|
|
||||||
.close, .mailbox-attachment-close {
|
|
||||||
float: right;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: 700;
|
|
||||||
line-height: 1;
|
|
||||||
color: #000;
|
|
||||||
text-shadow: 0 1px 0 #ffffff;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close:hover, .mailbox-attachment-close:hover {
|
|
||||||
color: #000;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close:not(:disabled):not(.disabled):hover, .mailbox-attachment-close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus, .mailbox-attachment-close:not(:disabled):not(.disabled):focus {
|
|
||||||
opacity: .75;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.close, button.mailbox-attachment-close {
|
|
||||||
padding: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
border: 0;
|
|
||||||
appearance: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.close.disabled, a.disabled.mailbox-attachment-close {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-messages > .table {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-controls {
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-controls.with-border {
|
|
||||||
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-read-info {
|
|
||||||
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-read-info h3 {
|
|
||||||
font-size: 20px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-read-info h5 {
|
|
||||||
margin: 0;
|
|
||||||
padding: 5px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-read-time {
|
|
||||||
color: #999;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-read-message {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachments {
|
|
||||||
padding-left: 0;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachments li {
|
|
||||||
border: 1px solid #eee;
|
|
||||||
float: left;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
margin-right: 10px;
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-name {
|
|
||||||
color: #666;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-icon,
|
|
||||||
.mailbox-attachment-info,
|
|
||||||
.mailbox-attachment-size {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-info {
|
|
||||||
background: #f8f9fa;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-size {
|
|
||||||
color: #999;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-size > span {
|
|
||||||
display: inline-block;
|
|
||||||
padding-top: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-icon {
|
|
||||||
color: #666;
|
|
||||||
font-size: 65px;
|
|
||||||
max-height: 132.5px;
|
|
||||||
padding: 20px 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-icon.has-img {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mailbox-attachment-icon.has-img > img {
|
|
||||||
height: auto;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen {
|
|
||||||
background: #e9ecef;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen .lockscreen-name {
|
|
||||||
font-weight: 600;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-logo {
|
|
||||||
font-size: 35px;
|
|
||||||
font-weight: 300;
|
|
||||||
margin-bottom: 25px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-logo a {
|
|
||||||
color: #495057;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-wrapper {
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 10%;
|
|
||||||
max-width: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-item {
|
|
||||||
border-radius: 4px;
|
|
||||||
background: #ffffff;
|
|
||||||
margin: 10px auto 30px;
|
|
||||||
padding: 0;
|
|
||||||
position: relative;
|
|
||||||
width: 290px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-image {
|
|
||||||
border-radius: 50%;
|
|
||||||
background: #ffffff;
|
|
||||||
left: -10px;
|
|
||||||
padding: 5px;
|
|
||||||
position: absolute;
|
|
||||||
top: -25px;
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-image > img {
|
|
||||||
border-radius: 50%;
|
|
||||||
height: 70px;
|
|
||||||
width: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-credentials {
|
|
||||||
margin-left: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-credentials .form-control {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-credentials .btn {
|
|
||||||
background-color: #ffffff;
|
|
||||||
border: 0;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lockscreen-footer {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-logo,
|
|
||||||
.register-logo {
|
|
||||||
font-size: 2.1rem;
|
|
||||||
font-weight: 300;
|
|
||||||
margin-bottom: .9rem;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-logo a,
|
|
||||||
.register-logo a {
|
|
||||||
color: #495057;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-page,
|
|
||||||
.register-page {
|
|
||||||
align-items: center;
|
|
||||||
background: #e9ecef;
|
|
||||||
display: flex;
|
|
||||||
height: 100vh;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-box,
|
|
||||||
.register-box {
|
|
||||||
width: 360px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 576px) {
|
|
||||||
.login-box,
|
|
||||||
.register-box {
|
|
||||||
margin-top: 20px;
|
|
||||||
width: 90%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body,
|
|
||||||
.register-card-body {
|
|
||||||
background: #ffffff;
|
|
||||||
border-top: 0;
|
|
||||||
color: #666;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control,
|
|
||||||
.register-card-body .input-group .form-control {
|
|
||||||
border-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control:focus,
|
|
||||||
.register-card-body .input-group .form-control:focus {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text,
|
|
||||||
.register-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text {
|
|
||||||
border-color: #80bdff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control.is-valid:focus,
|
|
||||||
.register-card-body .input-group .form-control.is-valid:focus {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text,
|
|
||||||
.register-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text {
|
|
||||||
border-color: #28a745;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control.is-invalid:focus,
|
|
||||||
.register-card-body .input-group .form-control.is-invalid:focus {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text,
|
|
||||||
.register-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text {
|
|
||||||
border-color: #dc3545;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card-body .input-group .input-group-text,
|
|
||||||
.register-card-body .input-group .input-group-text {
|
|
||||||
background-color: transparent;
|
|
||||||
border-bottom-right-radius: 0.25rem;
|
|
||||||
border-left: 0;
|
|
||||||
border-top-right-radius: 0.25rem;
|
|
||||||
color: #777;
|
|
||||||
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-box-msg,
|
|
||||||
.register-box-msg {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 20px 20px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.social-auth-links {
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-page {
|
|
||||||
margin: 20px auto 0;
|
|
||||||
width: 600px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
|
||||||
.error-page {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-page > .headline {
|
|
||||||
float: left;
|
|
||||||
font-size: 100px;
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
|
||||||
.error-page > .headline {
|
|
||||||
float: none;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-page > .error-content {
|
|
||||||
display: block;
|
|
||||||
margin-left: 190px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
|
||||||
.error-page > .error-content {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-page > .error-content > h3 {
|
|
||||||
font-size: 25px;
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
|
||||||
.error-page > .error-content > h3 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.invoice {
|
|
||||||
background: #ffffff;
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.125);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.invoice-title {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-user-img {
|
|
||||||
border: 3px solid #adb5bd;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 3px;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-username {
|
|
||||||
font-size: 21px;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post {
|
|
||||||
border-bottom: 1px solid #adb5bd;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
padding-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post:last-of-type {
|
|
||||||
border-bottom: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post .user-block {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post .row {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-image {
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-image-thumbs {
|
|
||||||
align-items: stretch;
|
|
||||||
display: flex;
|
|
||||||
margin-top: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-image-thumb {
|
|
||||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
background-color: #ffffff;
|
|
||||||
border: 1px solid #dee2e6;
|
|
||||||
display: flex;
|
|
||||||
margin-right: 1rem;
|
|
||||||
max-width: 7rem;
|
|
||||||
padding: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-image-thumb img {
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-image-thumb:hover {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-share a {
|
|
||||||
margin-right: .5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.projects td {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.projects .list-inline {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.projects img.table-avatar,
|
|
||||||
.projects .table-avatar img {
|
|
||||||
border-radius: 50%;
|
|
||||||
display: inline;
|
|
||||||
width: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.projects .project-state {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*# sourceMappingURL=adminlte.pages.css.map */
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 10 KiB |
@ -1,13 +1,13 @@
|
|||||||
/*!
|
/*!
|
||||||
* AdminLTE v3.0.0 (https://adminlte.io)
|
* AdminLTE v3.0.4 (https://adminlte.io)
|
||||||
* Copyright 2014-2019 Colorlib <http://colorlib.com>
|
* Copyright 2014-2020 Colorlib <http://colorlib.com>
|
||||||
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
||||||
*/
|
*/
|
||||||
(function (global, factory) {
|
(function (global, factory) {
|
||||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||||
(global = global || self, factory(global.adminlte = {}));
|
(global = global || self, factory(global.adminlte = {}));
|
||||||
}(this, function (exports) { 'use strict';
|
}(this, (function (exports) { 'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------
|
* --------------------------------------------
|
||||||
@ -52,14 +52,17 @@
|
|||||||
FOOTER_LG_FIXED: 'layout-lg-footer-fixed',
|
FOOTER_LG_FIXED: 'layout-lg-footer-fixed',
|
||||||
FOOTER_XL_FIXED: 'layout-xl-footer-fixed'
|
FOOTER_XL_FIXED: 'layout-xl-footer-fixed'
|
||||||
};
|
};
|
||||||
|
var Default = {
|
||||||
|
controlsidebarSlide: true,
|
||||||
|
scrollbarTheme: 'os-theme-light',
|
||||||
|
scrollbarAutoHide: 'l'
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var ControlSidebar =
|
var ControlSidebar = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function ControlSidebar(element, config) {
|
function ControlSidebar(element, config) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._config = config;
|
this._config = config;
|
||||||
@ -70,7 +73,7 @@
|
|||||||
|
|
||||||
var _proto = ControlSidebar.prototype;
|
var _proto = ControlSidebar.prototype;
|
||||||
|
|
||||||
_proto.show = function show() {
|
_proto.collapse = function collapse() {
|
||||||
// Show the control sidebar
|
// Show the control sidebar
|
||||||
if (this._config.controlsidebarSlide) {
|
if (this._config.controlsidebarSlide) {
|
||||||
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
||||||
@ -83,11 +86,11 @@
|
|||||||
$('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
$('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
var expandedEvent = $.Event(Event.EXPANDED);
|
var collapsedEvent = $.Event(Event.COLLAPSED);
|
||||||
$(this._element).trigger(expandedEvent);
|
$(this._element).trigger(collapsedEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
_proto.collapse = function collapse() {
|
_proto.show = function show() {
|
||||||
// Collapse the control sidebar
|
// Collapse the control sidebar
|
||||||
if (this._config.controlsidebarSlide) {
|
if (this._config.controlsidebarSlide) {
|
||||||
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
$('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
|
||||||
@ -102,19 +105,19 @@
|
|||||||
$('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
$('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
var collapsedEvent = $.Event(Event.COLLAPSED);
|
var expandedEvent = $.Event(Event.EXPANDED);
|
||||||
$(this._element).trigger(collapsedEvent);
|
$(this._element).trigger(expandedEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
_proto.toggle = function toggle() {
|
_proto.toggle = function toggle() {
|
||||||
var shouldOpen = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE);
|
var shouldClose = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE);
|
||||||
|
|
||||||
if (shouldOpen) {
|
if (shouldClose) {
|
||||||
// Open the control sidebar
|
|
||||||
this.show();
|
|
||||||
} else {
|
|
||||||
// Close the control sidebar
|
// Close the control sidebar
|
||||||
this.collapse();
|
this.collapse();
|
||||||
|
} else {
|
||||||
|
// Open the control sidebar
|
||||||
|
this.show();
|
||||||
}
|
}
|
||||||
} // Private
|
} // Private
|
||||||
;
|
;
|
||||||
@ -230,8 +233,10 @@
|
|||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
|
var _options = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new ControlSidebar(this, $(this).data());
|
data = new ControlSidebar(this, _options);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,6 +301,8 @@
|
|||||||
CONTENT_HEADER: '.content-header',
|
CONTENT_HEADER: '.content-header',
|
||||||
WRAPPER: '.wrapper',
|
WRAPPER: '.wrapper',
|
||||||
CONTROL_SIDEBAR: '.control-sidebar',
|
CONTROL_SIDEBAR: '.control-sidebar',
|
||||||
|
CONTROL_SIDEBAR_CONTENT: '.control-sidebar-content',
|
||||||
|
CONTROL_SIDEBAR_BTN: '[data-widget="control-sidebar"]',
|
||||||
LAYOUT_FIXED: '.layout-fixed',
|
LAYOUT_FIXED: '.layout-fixed',
|
||||||
FOOTER: '.main-footer',
|
FOOTER: '.main-footer',
|
||||||
PUSHMENU_BTN: '[data-widget="pushmenu"]',
|
PUSHMENU_BTN: '[data-widget="pushmenu"]',
|
||||||
@ -311,20 +318,22 @@
|
|||||||
NAVBAR_FIXED: 'layout-navbar-fixed',
|
NAVBAR_FIXED: 'layout-navbar-fixed',
|
||||||
FOOTER_FIXED: 'layout-footer-fixed',
|
FOOTER_FIXED: 'layout-footer-fixed',
|
||||||
LOGIN_PAGE: 'login-page',
|
LOGIN_PAGE: 'login-page',
|
||||||
REGISTER_PAGE: 'register-page'
|
REGISTER_PAGE: 'register-page',
|
||||||
|
CONTROL_SIDEBAR_SLIDE_OPEN: 'control-sidebar-slide-open',
|
||||||
|
CONTROL_SIDEBAR_OPEN: 'control-sidebar-open'
|
||||||
};
|
};
|
||||||
var Default = {
|
var Default = {
|
||||||
scrollbarTheme: 'os-theme-light',
|
scrollbarTheme: 'os-theme-light',
|
||||||
scrollbarAutoHide: 'l'
|
scrollbarAutoHide: 'l',
|
||||||
|
panelAutoHeight: true,
|
||||||
|
loginRegisterAutoHeight: true
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Layout =
|
var Layout = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Layout(element, config) {
|
function Layout(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@ -335,24 +344,47 @@
|
|||||||
|
|
||||||
var _proto = Layout.prototype;
|
var _proto = Layout.prototype;
|
||||||
|
|
||||||
_proto.fixLayoutHeight = function fixLayoutHeight() {
|
_proto.fixLayoutHeight = function fixLayoutHeight(extra) {
|
||||||
|
if (extra === void 0) {
|
||||||
|
extra = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var control_sidebar = 0;
|
||||||
|
|
||||||
|
if ($('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || extra == 'control_sidebar') {
|
||||||
|
control_sidebar = $(Selector.CONTROL_SIDEBAR_CONTENT).height();
|
||||||
|
}
|
||||||
|
|
||||||
var heights = {
|
var heights = {
|
||||||
window: $(window).height(),
|
window: $(window).height(),
|
||||||
header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0,
|
header: $(Selector.HEADER).length !== 0 ? $(Selector.HEADER).outerHeight() : 0,
|
||||||
footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0,
|
footer: $(Selector.FOOTER).length !== 0 ? $(Selector.FOOTER).outerHeight() : 0,
|
||||||
sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0
|
sidebar: $(Selector.SIDEBAR).length !== 0 ? $(Selector.SIDEBAR).height() : 0,
|
||||||
|
control_sidebar: control_sidebar
|
||||||
};
|
};
|
||||||
|
|
||||||
var max = this._max(heights);
|
var max = this._max(heights);
|
||||||
|
|
||||||
if (max == heights.window) {
|
var offset = this._config.panelAutoHeight;
|
||||||
$(Selector.CONTENT).css('min-height', max - heights.header - heights.footer);
|
|
||||||
} else {
|
if (offset === true) {
|
||||||
$(Selector.CONTENT).css('min-height', max - heights.header);
|
offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (offset !== false) {
|
||||||
|
if (max == heights.control_sidebar) {
|
||||||
|
$(Selector.CONTENT).css('min-height', max + offset);
|
||||||
|
} else if (max == heights.window) {
|
||||||
|
$(Selector.CONTENT).css('min-height', max + offset - heights.header - heights.footer);
|
||||||
|
} else {
|
||||||
|
$(Selector.CONTENT).css('min-height', max + offset - heights.header);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {
|
if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {
|
||||||
$(Selector.CONTENT).css('min-height', max - heights.header - heights.footer);
|
if (offset !== false) {
|
||||||
|
$(Selector.CONTENT).css('min-height', max + offset - heights.header - heights.footer);
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof $.fn.overlayScrollbars !== 'undefined') {
|
if (typeof $.fn.overlayScrollbars !== 'undefined') {
|
||||||
$(Selector.SIDEBAR).overlayScrollbars({
|
$(Selector.SIDEBAR).overlayScrollbars({
|
||||||
@ -365,6 +397,18 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.fixLoginRegisterHeight = function fixLoginRegisterHeight() {
|
||||||
|
if ($(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).length === 0) {
|
||||||
|
$('body, html').css('height', 'auto');
|
||||||
|
} else if ($(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).length !== 0) {
|
||||||
|
var box_height = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height();
|
||||||
|
|
||||||
|
if ($('body').css('min-height') !== box_height) {
|
||||||
|
$('body').css('min-height', box_height);
|
||||||
|
}
|
||||||
|
}
|
||||||
} // Private
|
} // Private
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -373,23 +417,27 @@
|
|||||||
|
|
||||||
// Activate layout height watcher
|
// Activate layout height watcher
|
||||||
this.fixLayoutHeight();
|
this.fixLayoutHeight();
|
||||||
|
|
||||||
|
if (this._config.loginRegisterAutoHeight === true) {
|
||||||
|
this.fixLoginRegisterHeight();
|
||||||
|
} else if (Number.isInteger(this._config.loginRegisterAutoHeight)) {
|
||||||
|
setInterval(this.fixLoginRegisterHeight, this._config.loginRegisterAutoHeight);
|
||||||
|
}
|
||||||
|
|
||||||
$(Selector.SIDEBAR).on('collapsed.lte.treeview expanded.lte.treeview', function () {
|
$(Selector.SIDEBAR).on('collapsed.lte.treeview expanded.lte.treeview', function () {
|
||||||
_this.fixLayoutHeight();
|
_this.fixLayoutHeight();
|
||||||
});
|
});
|
||||||
$(Selector.PUSHMENU_BTN).on('collapsed.lte.pushmenu shown.lte.pushmenu', function () {
|
$(Selector.PUSHMENU_BTN).on('collapsed.lte.pushmenu shown.lte.pushmenu', function () {
|
||||||
_this.fixLayoutHeight();
|
_this.fixLayoutHeight();
|
||||||
});
|
});
|
||||||
|
$(Selector.CONTROL_SIDEBAR_BTN).on('collapsed.lte.controlsidebar', function () {
|
||||||
|
_this.fixLayoutHeight();
|
||||||
|
}).on('expanded.lte.controlsidebar', function () {
|
||||||
|
_this.fixLayoutHeight('control_sidebar');
|
||||||
|
});
|
||||||
$(window).resize(function () {
|
$(window).resize(function () {
|
||||||
_this.fixLayoutHeight();
|
_this.fixLayoutHeight();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!$('body').hasClass(ClassName.LOGIN_PAGE) && !$('body').hasClass(ClassName.REGISTER_PAGE)) {
|
|
||||||
$('body, html').css('height', 'auto');
|
|
||||||
} else if ($('body').hasClass(ClassName.LOGIN_PAGE) || $('body').hasClass(ClassName.REGISTER_PAGE)) {
|
|
||||||
var box_height = $(Selector.LOGIN_BOX + ', ' + Selector.REGISTER_BOX).height();
|
|
||||||
$('body').css('min-height', box_height);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('body.hold-transition').removeClass('hold-transition');
|
$('body.hold-transition').removeClass('hold-transition');
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -406,17 +454,23 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
Layout._jQueryInterface = function _jQueryInterface(config) {
|
Layout._jQueryInterface = function _jQueryInterface(config) {
|
||||||
|
if (config === void 0) {
|
||||||
|
config = '';
|
||||||
|
}
|
||||||
|
|
||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _config = $.extend({}, Default, $(this).data());
|
var _options = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new Layout($(this), _config);
|
data = new Layout($(this), _options);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config === 'init') {
|
if (config === 'init' || config === '') {
|
||||||
|
data['_init']();
|
||||||
|
} else if (config === 'fixLayoutHeight' || config === 'fixLoginRegisterHeight') {
|
||||||
data[config]();
|
data[config]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -488,18 +542,16 @@
|
|||||||
WRAPPER: '.wrapper'
|
WRAPPER: '.wrapper'
|
||||||
};
|
};
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
SIDEBAR_OPEN: 'sidebar-open',
|
|
||||||
COLLAPSED: 'sidebar-collapse',
|
COLLAPSED: 'sidebar-collapse',
|
||||||
OPEN: 'sidebar-open'
|
OPEN: 'sidebar-open',
|
||||||
|
CLOSED: 'sidebar-closed'
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var PushMenu =
|
var PushMenu = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function PushMenu(element, options) {
|
function PushMenu(element, options) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._options = $.extend({}, Default, options);
|
this._options = $.extend({}, Default, options);
|
||||||
@ -514,14 +566,14 @@
|
|||||||
|
|
||||||
var _proto = PushMenu.prototype;
|
var _proto = PushMenu.prototype;
|
||||||
|
|
||||||
_proto.show = function show() {
|
_proto.expand = function expand() {
|
||||||
if (this._options.autoCollapseSize) {
|
if (this._options.autoCollapseSize) {
|
||||||
if ($(window).width() <= this._options.autoCollapseSize) {
|
if ($(window).width() <= this._options.autoCollapseSize) {
|
||||||
$(Selector.BODY).addClass(ClassName.OPEN);
|
$(Selector.BODY).addClass(ClassName.OPEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(Selector.BODY).removeClass(ClassName.COLLAPSED);
|
$(Selector.BODY).removeClass(ClassName.COLLAPSED).removeClass(ClassName.CLOSED);
|
||||||
|
|
||||||
if (this._options.enableRemember) {
|
if (this._options.enableRemember) {
|
||||||
localStorage.setItem("remember" + EVENT_KEY, ClassName.OPEN);
|
localStorage.setItem("remember" + EVENT_KEY, ClassName.OPEN);
|
||||||
@ -534,7 +586,7 @@
|
|||||||
_proto.collapse = function collapse() {
|
_proto.collapse = function collapse() {
|
||||||
if (this._options.autoCollapseSize) {
|
if (this._options.autoCollapseSize) {
|
||||||
if ($(window).width() <= this._options.autoCollapseSize) {
|
if ($(window).width() <= this._options.autoCollapseSize) {
|
||||||
$(Selector.BODY).removeClass(ClassName.OPEN);
|
$(Selector.BODY).removeClass(ClassName.OPEN).addClass(ClassName.CLOSED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,7 +604,7 @@
|
|||||||
if (!$(Selector.BODY).hasClass(ClassName.COLLAPSED)) {
|
if (!$(Selector.BODY).hasClass(ClassName.COLLAPSED)) {
|
||||||
this.collapse();
|
this.collapse();
|
||||||
} else {
|
} else {
|
||||||
this.show();
|
this.expand();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -569,6 +621,8 @@
|
|||||||
} else if (resize == true) {
|
} else if (resize == true) {
|
||||||
if ($(Selector.BODY).hasClass(ClassName.OPEN)) {
|
if ($(Selector.BODY).hasClass(ClassName.OPEN)) {
|
||||||
$(Selector.BODY).removeClass(ClassName.OPEN);
|
$(Selector.BODY).removeClass(ClassName.OPEN);
|
||||||
|
} else if ($(Selector.BODY).hasClass(ClassName.CLOSED)) {
|
||||||
|
this.expand();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -635,7 +689,7 @@
|
|||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (operation === 'toggle') {
|
if (typeof operation === 'string' && operation.match(/collapse|expand|toggle/)) {
|
||||||
data[operation]();
|
data[operation]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -710,21 +764,22 @@
|
|||||||
LI: 'nav-item',
|
LI: 'nav-item',
|
||||||
LINK: 'nav-link',
|
LINK: 'nav-link',
|
||||||
TREEVIEW_MENU: 'nav-treeview',
|
TREEVIEW_MENU: 'nav-treeview',
|
||||||
OPEN: 'menu-open'
|
OPEN: 'menu-open',
|
||||||
|
SIDEBAR_COLLAPSED: 'sidebar-collapse'
|
||||||
};
|
};
|
||||||
var Default = {
|
var Default = {
|
||||||
trigger: Selector.DATA_WIDGET + " " + Selector.LINK,
|
trigger: Selector.DATA_WIDGET + " " + Selector.LINK,
|
||||||
animationSpeed: 300,
|
animationSpeed: 300,
|
||||||
accordion: true
|
accordion: true,
|
||||||
|
expandSidebar: false,
|
||||||
|
sidebarButtonSelector: '[data-widget="pushmenu"]'
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Treeview =
|
var Treeview = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Treeview(element, config) {
|
function Treeview(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@ -752,6 +807,10 @@
|
|||||||
parentLi.addClass(ClassName.OPEN);
|
parentLi.addClass(ClassName.OPEN);
|
||||||
$(_this._element).trigger(expandedEvent);
|
$(_this._element).trigger(expandedEvent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (this._config.expandSidebar) {
|
||||||
|
this._expandSidebar();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
_proto.collapse = function collapse(treeviewMenu, parentLi) {
|
_proto.collapse = function collapse(treeviewMenu, parentLi) {
|
||||||
@ -799,6 +858,12 @@
|
|||||||
$(document).on('click', this._config.trigger, function (event) {
|
$(document).on('click', this._config.trigger, function (event) {
|
||||||
_this3.toggle(event);
|
_this3.toggle(event);
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._expandSidebar = function _expandSidebar() {
|
||||||
|
if ($('body').hasClass(ClassName.SIDEBAR_COLLAPSED)) {
|
||||||
|
$(this._config.sidebarButtonSelector).PushMenu('expand');
|
||||||
|
}
|
||||||
} // Static
|
} // Static
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -806,10 +871,10 @@
|
|||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _config = $.extend({}, Default, $(this).data());
|
var _options = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new Treeview($(this), _config);
|
data = new Treeview($(this), _options);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -877,9 +942,7 @@
|
|||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var DirectChat =
|
var DirectChat = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function DirectChat(element, config) {
|
function DirectChat(element, config) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
}
|
}
|
||||||
@ -969,9 +1032,7 @@
|
|||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var TodoList =
|
var TodoList = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function TodoList(element, config) {
|
function TodoList(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@ -1015,10 +1076,10 @@
|
|||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
var _config = $.extend({}, Default, $(this).data());
|
var _options = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new TodoList($(this), _config);
|
data = new TodoList($(this), _options);
|
||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1080,6 +1141,8 @@
|
|||||||
var ClassName = {
|
var ClassName = {
|
||||||
CARD: 'card',
|
CARD: 'card',
|
||||||
COLLAPSED: 'collapsed-card',
|
COLLAPSED: 'collapsed-card',
|
||||||
|
COLLAPSING: 'collapsing-card',
|
||||||
|
EXPANDING: 'expanding-card',
|
||||||
WAS_COLLAPSED: 'was-collapsed',
|
WAS_COLLAPSED: 'was-collapsed',
|
||||||
MAXIMIZED: 'maximized-card'
|
MAXIMIZED: 'maximized-card'
|
||||||
};
|
};
|
||||||
@ -1104,9 +1167,7 @@
|
|||||||
minimizeIcon: 'fa-compress'
|
minimizeIcon: 'fa-compress'
|
||||||
};
|
};
|
||||||
|
|
||||||
var CardWidget =
|
var CardWidget = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function CardWidget(element, settings) {
|
function CardWidget(element, settings) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._parent = element.parents(Selector.CARD).first();
|
this._parent = element.parents(Selector.CARD).first();
|
||||||
@ -1123,11 +1184,11 @@
|
|||||||
_proto.collapse = function collapse() {
|
_proto.collapse = function collapse() {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
this._parent.children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideUp(this._settings.animationSpeed, function () {
|
this._parent.addClass(ClassName.COLLAPSING).children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideUp(this._settings.animationSpeed, function () {
|
||||||
_this._parent.addClass(ClassName.COLLAPSED);
|
_this._parent.addClass(ClassName.COLLAPSED).removeClass(ClassName.COLLAPSING);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._parent.find(this._settings.collapseTrigger + ' .' + this._settings.collapseIcon).addClass(this._settings.expandIcon).removeClass(this._settings.collapseIcon);
|
this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.collapseIcon).addClass(this._settings.expandIcon).removeClass(this._settings.collapseIcon);
|
||||||
|
|
||||||
var collapsed = $.Event(Event.COLLAPSED);
|
var collapsed = $.Event(Event.COLLAPSED);
|
||||||
|
|
||||||
@ -1137,11 +1198,11 @@
|
|||||||
_proto.expand = function expand() {
|
_proto.expand = function expand() {
|
||||||
var _this2 = this;
|
var _this2 = this;
|
||||||
|
|
||||||
this._parent.children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideDown(this._settings.animationSpeed, function () {
|
this._parent.addClass(ClassName.EXPANDING).children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideDown(this._settings.animationSpeed, function () {
|
||||||
_this2._parent.removeClass(ClassName.COLLAPSED);
|
_this2._parent.removeClass(ClassName.COLLAPSED).removeClass(ClassName.EXPANDING);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._parent.find(this._settings.collapseTrigger + ' .' + this._settings.expandIcon).addClass(this._settings.collapseIcon).removeClass(this._settings.expandIcon);
|
this._parent.find('> ' + Selector.CARD_HEADER + ' ' + this._settings.collapseTrigger + ' .' + this._settings.expandIcon).addClass(this._settings.collapseIcon).removeClass(this._settings.expandIcon);
|
||||||
|
|
||||||
var expanded = $.Event(Event.EXPANDED);
|
var expanded = $.Event(Event.EXPANDED);
|
||||||
|
|
||||||
@ -1240,8 +1301,10 @@
|
|||||||
CardWidget._jQueryInterface = function _jQueryInterface(config) {
|
CardWidget._jQueryInterface = function _jQueryInterface(config) {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
|
var _options = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new CardWidget($(this), data);
|
data = new CardWidget($(this), _options);
|
||||||
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1340,9 +1403,7 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var CardRefresh =
|
var CardRefresh = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function CardRefresh(element, settings) {
|
function CardRefresh(element, settings) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._parent = element.parents(Selector.CARD).first();
|
this._parent = element.parents(Selector.CARD).first();
|
||||||
@ -1356,12 +1417,6 @@
|
|||||||
if (this._settings.source === '') {
|
if (this._settings.source === '') {
|
||||||
throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.');
|
throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.');
|
||||||
}
|
}
|
||||||
|
|
||||||
this._init();
|
|
||||||
|
|
||||||
if (this._settings.loadOnInit) {
|
|
||||||
this.load();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _proto = CardRefresh.prototype;
|
var _proto = CardRefresh.prototype;
|
||||||
@ -1409,21 +1464,26 @@
|
|||||||
$(this).find(this._settings.trigger).on('click', function () {
|
$(this).find(this._settings.trigger).on('click', function () {
|
||||||
_this.load();
|
_this.load();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (this._settings.loadOnInit) {
|
||||||
|
this.load();
|
||||||
|
}
|
||||||
} // Static
|
} // Static
|
||||||
;
|
;
|
||||||
|
|
||||||
CardRefresh._jQueryInterface = function _jQueryInterface(config) {
|
CardRefresh._jQueryInterface = function _jQueryInterface(config) {
|
||||||
var data = $(this).data(DATA_KEY);
|
var data = $(this).data(DATA_KEY);
|
||||||
var options = $(this).data();
|
|
||||||
|
var _options = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
data = new CardRefresh($(this), options);
|
data = new CardRefresh($(this), _options);
|
||||||
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
$(this).data(DATA_KEY, typeof config === 'string' ? data : config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof config === 'string' && config.match(/load/)) {
|
if (typeof config === 'string' && config.match(/load/)) {
|
||||||
data[config]();
|
data[config]();
|
||||||
} else if (typeof config === 'object') {
|
} else {
|
||||||
data._init($(this));
|
data._init($(this));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -1443,6 +1503,11 @@
|
|||||||
|
|
||||||
CardRefresh._jQueryInterface.call($(this), 'load');
|
CardRefresh._jQueryInterface.call($(this), 'load');
|
||||||
});
|
});
|
||||||
|
$(document).ready(function () {
|
||||||
|
$(Selector.DATA_REFRESH).each(function () {
|
||||||
|
CardRefresh._jQueryInterface.call($(this));
|
||||||
|
});
|
||||||
|
});
|
||||||
/**
|
/**
|
||||||
* jQuery API
|
* jQuery API
|
||||||
* ====================================================
|
* ====================================================
|
||||||
@ -1474,18 +1539,22 @@
|
|||||||
var DATA_KEY = 'lte.dropdown';
|
var DATA_KEY = 'lte.dropdown';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DROPDOWN_MENU: 'ul.dropdown-menu',
|
NAVBAR: '.navbar',
|
||||||
|
DROPDOWN_MENU: '.dropdown-menu',
|
||||||
|
DROPDOWN_MENU_ACTIVE: '.dropdown-menu.show',
|
||||||
DROPDOWN_TOGGLE: '[data-toggle="dropdown"]'
|
DROPDOWN_TOGGLE: '[data-toggle="dropdown"]'
|
||||||
};
|
};
|
||||||
|
var ClassName = {
|
||||||
|
DROPDOWN_HOVER: 'dropdown-hover',
|
||||||
|
DROPDOWN_RIGHT: 'dropdown-menu-right'
|
||||||
|
};
|
||||||
var Default = {};
|
var Default = {};
|
||||||
/**
|
/**
|
||||||
* Class Definition
|
* Class Definition
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Dropdown =
|
var Dropdown = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Dropdown(element, config) {
|
function Dropdown(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
@ -1504,6 +1573,35 @@
|
|||||||
this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) {
|
this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) {
|
||||||
$('.dropdown-submenu .show').removeClass("show").hide();
|
$('.dropdown-submenu .show').removeClass("show").hide();
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.fixPosition = function fixPosition() {
|
||||||
|
var elm = $(Selector.DROPDOWN_MENU_ACTIVE);
|
||||||
|
|
||||||
|
if (elm.length !== 0) {
|
||||||
|
if (elm.hasClass(ClassName.DROPDOWN_RIGHT)) {
|
||||||
|
elm.css('left', 'inherit');
|
||||||
|
elm.css('right', 0);
|
||||||
|
} else {
|
||||||
|
elm.css('left', 0);
|
||||||
|
elm.css('right', 'inherit');
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset = elm.offset();
|
||||||
|
var width = elm.width();
|
||||||
|
var windowWidth = $(window).width();
|
||||||
|
var visiblePart = windowWidth - offset.left;
|
||||||
|
|
||||||
|
if (offset.left < 0) {
|
||||||
|
elm.css('left', 'inherit');
|
||||||
|
elm.css('right', offset.left - 5);
|
||||||
|
} else {
|
||||||
|
if (visiblePart < width) {
|
||||||
|
elm.css('left', 'inherit');
|
||||||
|
elm.css('right', 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} // Static
|
} // Static
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1518,7 +1616,7 @@
|
|||||||
$(this).data(DATA_KEY, data);
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config === 'toggleSubmenu') {
|
if (config === 'toggleSubmenu' || config == 'fixPosition') {
|
||||||
data[config]();
|
data[config]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -1537,13 +1635,13 @@
|
|||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
Dropdown._jQueryInterface.call($(this), 'toggleSubmenu');
|
Dropdown._jQueryInterface.call($(this), 'toggleSubmenu');
|
||||||
}); // $(Selector.SIDEBAR + ' a').on('focusin', () => {
|
});
|
||||||
// $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED);
|
$(Selector.NAVBAR + ' ' + Selector.DROPDOWN_TOGGLE).on("click", function (event) {
|
||||||
// })
|
event.preventDefault();
|
||||||
// $(Selector.SIDEBAR + ' a').on('focusout', () => {
|
setTimeout(function () {
|
||||||
// $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED);
|
Dropdown._jQueryInterface.call($(this), 'fixPosition');
|
||||||
// })
|
}, 1);
|
||||||
|
});
|
||||||
/**
|
/**
|
||||||
* jQuery API
|
* jQuery API
|
||||||
* ====================================================
|
* ====================================================
|
||||||
@ -1622,9 +1720,7 @@
|
|||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Toasts =
|
var Toasts = /*#__PURE__*/function () {
|
||||||
/*#__PURE__*/
|
|
||||||
function () {
|
|
||||||
function Toasts(element, config) {
|
function Toasts(element, config) {
|
||||||
this._config = config;
|
this._config = config;
|
||||||
|
|
||||||
@ -1744,9 +1840,9 @@
|
|||||||
|
|
||||||
Toasts._jQueryInterface = function _jQueryInterface(option, config) {
|
Toasts._jQueryInterface = function _jQueryInterface(option, config) {
|
||||||
return this.each(function () {
|
return this.each(function () {
|
||||||
var _config = $.extend({}, Default, config);
|
var _options = $.extend({}, Default, config);
|
||||||
|
|
||||||
var toast = new Toasts($(this), _config);
|
var toast = new Toasts($(this), _options);
|
||||||
|
|
||||||
if (option === 'create') {
|
if (option === 'create') {
|
||||||
toast[option]();
|
toast[option]();
|
||||||
@ -1786,5 +1882,5 @@
|
|||||||
|
|
||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||||||
|
|
||||||
}));
|
})));
|
||||||
//# sourceMappingURL=adminlte.js.map
|
//# sourceMappingURL=adminlte.js.map
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
413
src/resources/wwwroot/lib/AdminLTE/dist/js/demo.js
vendored
413
src/resources/wwwroot/lib/AdminLTE/dist/js/demo.js
vendored
@ -1,413 +0,0 @@
|
|||||||
/**
|
|
||||||
* AdminLTE Demo Menu
|
|
||||||
* ------------------
|
|
||||||
* You should not use this file in production.
|
|
||||||
* This file is for demo purposes only.
|
|
||||||
*/
|
|
||||||
(function ($) {
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
var $sidebar = $('.control-sidebar')
|
|
||||||
var $container = $('<div />', {
|
|
||||||
class: 'p-3 control-sidebar-content'
|
|
||||||
})
|
|
||||||
|
|
||||||
$sidebar.append($container)
|
|
||||||
|
|
||||||
var navbar_dark_skins = [
|
|
||||||
'navbar-primary',
|
|
||||||
'navbar-secondary',
|
|
||||||
'navbar-info',
|
|
||||||
'navbar-success',
|
|
||||||
'navbar-danger',
|
|
||||||
'navbar-indigo',
|
|
||||||
'navbar-purple',
|
|
||||||
'navbar-pink',
|
|
||||||
'navbar-teal',
|
|
||||||
'navbar-cyan',
|
|
||||||
'navbar-dark',
|
|
||||||
'navbar-gray-dark',
|
|
||||||
'navbar-gray',
|
|
||||||
]
|
|
||||||
|
|
||||||
var navbar_light_skins = [
|
|
||||||
'navbar-light',
|
|
||||||
'navbar-warning',
|
|
||||||
'navbar-white',
|
|
||||||
'navbar-orange',
|
|
||||||
]
|
|
||||||
|
|
||||||
$container.append(
|
|
||||||
'<h5>Customize AdminLTE</h5><hr class="mb-2"/>'
|
|
||||||
)
|
|
||||||
|
|
||||||
var $no_border_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.main-header').hasClass('border-bottom-0'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.main-header').addClass('border-bottom-0')
|
|
||||||
} else {
|
|
||||||
$('.main-header').removeClass('border-bottom-0')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $no_border_container = $('<div />', {'class': 'mb-1'}).append($no_border_checkbox).append('<span>No Navbar border</span>')
|
|
||||||
$container.append($no_border_container)
|
|
||||||
|
|
||||||
var $text_sm_body_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('body').hasClass('text-sm'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('body').addClass('text-sm')
|
|
||||||
} else {
|
|
||||||
$('body').removeClass('text-sm')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $text_sm_body_container = $('<div />', {'class': 'mb-1'}).append($text_sm_body_checkbox).append('<span>Body small text</span>')
|
|
||||||
$container.append($text_sm_body_container)
|
|
||||||
|
|
||||||
var $text_sm_header_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.main-header').hasClass('text-sm'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.main-header').addClass('text-sm')
|
|
||||||
} else {
|
|
||||||
$('.main-header').removeClass('text-sm')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $text_sm_header_container = $('<div />', {'class': 'mb-1'}).append($text_sm_header_checkbox).append('<span>Navbar small text</span>')
|
|
||||||
$container.append($text_sm_header_container)
|
|
||||||
|
|
||||||
var $text_sm_sidebar_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.nav-sidebar').hasClass('text-sm'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.nav-sidebar').addClass('text-sm')
|
|
||||||
} else {
|
|
||||||
$('.nav-sidebar').removeClass('text-sm')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $text_sm_sidebar_container = $('<div />', {'class': 'mb-1'}).append($text_sm_sidebar_checkbox).append('<span>Sidebar nav small text</span>')
|
|
||||||
$container.append($text_sm_sidebar_container)
|
|
||||||
|
|
||||||
var $text_sm_footer_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.main-footer').hasClass('text-sm'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.main-footer').addClass('text-sm')
|
|
||||||
} else {
|
|
||||||
$('.main-footer').removeClass('text-sm')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $text_sm_footer_container = $('<div />', {'class': 'mb-1'}).append($text_sm_footer_checkbox).append('<span>Footer small text</span>')
|
|
||||||
$container.append($text_sm_footer_container)
|
|
||||||
|
|
||||||
var $flat_sidebar_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.nav-sidebar').hasClass('nav-flat'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.nav-sidebar').addClass('nav-flat')
|
|
||||||
} else {
|
|
||||||
$('.nav-sidebar').removeClass('nav-flat')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $flat_sidebar_container = $('<div />', {'class': 'mb-1'}).append($flat_sidebar_checkbox).append('<span>Sidebar nav flat style</span>')
|
|
||||||
$container.append($flat_sidebar_container)
|
|
||||||
|
|
||||||
var $legacy_sidebar_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.nav-sidebar').hasClass('nav-legacy'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.nav-sidebar').addClass('nav-legacy')
|
|
||||||
} else {
|
|
||||||
$('.nav-sidebar').removeClass('nav-legacy')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $legacy_sidebar_container = $('<div />', {'class': 'mb-1'}).append($legacy_sidebar_checkbox).append('<span>Sidebar nav legacy style</span>')
|
|
||||||
$container.append($legacy_sidebar_container)
|
|
||||||
|
|
||||||
var $compact_sidebar_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.nav-sidebar').hasClass('nav-compact'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.nav-sidebar').addClass('nav-compact')
|
|
||||||
} else {
|
|
||||||
$('.nav-sidebar').removeClass('nav-compact')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $compact_sidebar_container = $('<div />', {'class': 'mb-1'}).append($compact_sidebar_checkbox).append('<span>Sidebar nav compact</span>')
|
|
||||||
$container.append($compact_sidebar_container)
|
|
||||||
|
|
||||||
var $child_indent_sidebar_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.nav-sidebar').hasClass('nav-child-indent'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.nav-sidebar').addClass('nav-child-indent')
|
|
||||||
} else {
|
|
||||||
$('.nav-sidebar').removeClass('nav-child-indent')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $child_indent_sidebar_container = $('<div />', {'class': 'mb-1'}).append($child_indent_sidebar_checkbox).append('<span>Sidebar nav child indent</span>')
|
|
||||||
$container.append($child_indent_sidebar_container)
|
|
||||||
|
|
||||||
var $no_expand_sidebar_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.main-sidebar').hasClass('sidebar-no-expand'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.main-sidebar').addClass('sidebar-no-expand')
|
|
||||||
} else {
|
|
||||||
$('.main-sidebar').removeClass('sidebar-no-expand')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $no_expand_sidebar_container = $('<div />', {'class': 'mb-1'}).append($no_expand_sidebar_checkbox).append('<span>Main Sidebar disable hover/focus auto expand</span>')
|
|
||||||
$container.append($no_expand_sidebar_container)
|
|
||||||
|
|
||||||
var $text_sm_brand_checkbox = $('<input />', {
|
|
||||||
type : 'checkbox',
|
|
||||||
value : 1,
|
|
||||||
checked: $('.brand-link').hasClass('text-sm'),
|
|
||||||
'class': 'mr-1'
|
|
||||||
}).on('click', function () {
|
|
||||||
if ($(this).is(':checked')) {
|
|
||||||
$('.brand-link').addClass('text-sm')
|
|
||||||
} else {
|
|
||||||
$('.brand-link').removeClass('text-sm')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
var $text_sm_brand_container = $('<div />', {'class': 'mb-4'}).append($text_sm_brand_checkbox).append('<span>Brand small text</span>')
|
|
||||||
$container.append($text_sm_brand_container)
|
|
||||||
|
|
||||||
$container.append('<h6>Navbar Variants</h6>')
|
|
||||||
|
|
||||||
var $navbar_variants = $('<div />', {
|
|
||||||
'class': 'd-flex'
|
|
||||||
})
|
|
||||||
var navbar_all_colors = navbar_dark_skins.concat(navbar_light_skins)
|
|
||||||
var $navbar_variants_colors = createSkinBlock(navbar_all_colors, function (e) {
|
|
||||||
var color = $(this).data('color')
|
|
||||||
var $main_header = $('.main-header')
|
|
||||||
$main_header.removeClass('navbar-dark').removeClass('navbar-light')
|
|
||||||
navbar_all_colors.map(function (color) {
|
|
||||||
$main_header.removeClass(color)
|
|
||||||
})
|
|
||||||
|
|
||||||
if (navbar_dark_skins.indexOf(color) > -1) {
|
|
||||||
$main_header.addClass('navbar-dark')
|
|
||||||
} else {
|
|
||||||
$main_header.addClass('navbar-light')
|
|
||||||
}
|
|
||||||
|
|
||||||
$main_header.addClass(color)
|
|
||||||
})
|
|
||||||
|
|
||||||
$navbar_variants.append($navbar_variants_colors)
|
|
||||||
|
|
||||||
$container.append($navbar_variants)
|
|
||||||
|
|
||||||
var sidebar_colors = [
|
|
||||||
'bg-primary',
|
|
||||||
'bg-warning',
|
|
||||||
'bg-info',
|
|
||||||
'bg-danger',
|
|
||||||
'bg-success',
|
|
||||||
'bg-indigo',
|
|
||||||
'bg-navy',
|
|
||||||
'bg-purple',
|
|
||||||
'bg-fuchsia',
|
|
||||||
'bg-pink',
|
|
||||||
'bg-maroon',
|
|
||||||
'bg-orange',
|
|
||||||
'bg-lime',
|
|
||||||
'bg-teal',
|
|
||||||
'bg-olive'
|
|
||||||
]
|
|
||||||
|
|
||||||
var accent_colors = [
|
|
||||||
'accent-primary',
|
|
||||||
'accent-warning',
|
|
||||||
'accent-info',
|
|
||||||
'accent-danger',
|
|
||||||
'accent-success',
|
|
||||||
'accent-indigo',
|
|
||||||
'accent-navy',
|
|
||||||
'accent-purple',
|
|
||||||
'accent-fuchsia',
|
|
||||||
'accent-pink',
|
|
||||||
'accent-maroon',
|
|
||||||
'accent-orange',
|
|
||||||
'accent-lime',
|
|
||||||
'accent-teal',
|
|
||||||
'accent-olive'
|
|
||||||
]
|
|
||||||
|
|
||||||
var sidebar_skins = [
|
|
||||||
'sidebar-dark-primary',
|
|
||||||
'sidebar-dark-warning',
|
|
||||||
'sidebar-dark-info',
|
|
||||||
'sidebar-dark-danger',
|
|
||||||
'sidebar-dark-success',
|
|
||||||
'sidebar-dark-indigo',
|
|
||||||
'sidebar-dark-navy',
|
|
||||||
'sidebar-dark-purple',
|
|
||||||
'sidebar-dark-fuchsia',
|
|
||||||
'sidebar-dark-pink',
|
|
||||||
'sidebar-dark-maroon',
|
|
||||||
'sidebar-dark-orange',
|
|
||||||
'sidebar-dark-lime',
|
|
||||||
'sidebar-dark-teal',
|
|
||||||
'sidebar-dark-olive',
|
|
||||||
'sidebar-light-primary',
|
|
||||||
'sidebar-light-warning',
|
|
||||||
'sidebar-light-info',
|
|
||||||
'sidebar-light-danger',
|
|
||||||
'sidebar-light-success',
|
|
||||||
'sidebar-light-indigo',
|
|
||||||
'sidebar-light-navy',
|
|
||||||
'sidebar-light-purple',
|
|
||||||
'sidebar-light-fuchsia',
|
|
||||||
'sidebar-light-pink',
|
|
||||||
'sidebar-light-maroon',
|
|
||||||
'sidebar-light-orange',
|
|
||||||
'sidebar-light-lime',
|
|
||||||
'sidebar-light-teal',
|
|
||||||
'sidebar-light-olive'
|
|
||||||
]
|
|
||||||
|
|
||||||
$container.append('<h6>Accent Color Variants</h6>')
|
|
||||||
var $accent_variants = $('<div />', {
|
|
||||||
'class': 'd-flex'
|
|
||||||
})
|
|
||||||
$container.append($accent_variants)
|
|
||||||
$container.append(createSkinBlock(accent_colors, function () {
|
|
||||||
var color = $(this).data('color')
|
|
||||||
var accent_class = color
|
|
||||||
var $body = $('body')
|
|
||||||
accent_colors.map(function (skin) {
|
|
||||||
$body.removeClass(skin)
|
|
||||||
})
|
|
||||||
|
|
||||||
$body.addClass(accent_class)
|
|
||||||
}))
|
|
||||||
|
|
||||||
$container.append('<h6>Dark Sidebar Variants</h6>')
|
|
||||||
var $sidebar_variants = $('<div />', {
|
|
||||||
'class': 'd-flex'
|
|
||||||
})
|
|
||||||
$container.append($sidebar_variants)
|
|
||||||
$container.append(createSkinBlock(sidebar_colors, function () {
|
|
||||||
var color = $(this).data('color')
|
|
||||||
var sidebar_class = 'sidebar-dark-' + color.replace('bg-', '')
|
|
||||||
var $sidebar = $('.main-sidebar')
|
|
||||||
sidebar_skins.map(function (skin) {
|
|
||||||
$sidebar.removeClass(skin)
|
|
||||||
})
|
|
||||||
|
|
||||||
$sidebar.addClass(sidebar_class)
|
|
||||||
}))
|
|
||||||
|
|
||||||
$container.append('<h6>Light Sidebar Variants</h6>')
|
|
||||||
var $sidebar_variants = $('<div />', {
|
|
||||||
'class': 'd-flex'
|
|
||||||
})
|
|
||||||
$container.append($sidebar_variants)
|
|
||||||
$container.append(createSkinBlock(sidebar_colors, function () {
|
|
||||||
var color = $(this).data('color')
|
|
||||||
var sidebar_class = 'sidebar-light-' + color.replace('bg-', '')
|
|
||||||
var $sidebar = $('.main-sidebar')
|
|
||||||
sidebar_skins.map(function (skin) {
|
|
||||||
$sidebar.removeClass(skin)
|
|
||||||
})
|
|
||||||
|
|
||||||
$sidebar.addClass(sidebar_class)
|
|
||||||
}))
|
|
||||||
|
|
||||||
var logo_skins = navbar_all_colors
|
|
||||||
$container.append('<h6>Brand Logo Variants</h6>')
|
|
||||||
var $logo_variants = $('<div />', {
|
|
||||||
'class': 'd-flex'
|
|
||||||
})
|
|
||||||
$container.append($logo_variants)
|
|
||||||
var $clear_btn = $('<a />', {
|
|
||||||
href: 'javascript:void(0)'
|
|
||||||
}).text('clear').on('click', function () {
|
|
||||||
var $logo = $('.brand-link')
|
|
||||||
logo_skins.map(function (skin) {
|
|
||||||
$logo.removeClass(skin)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
$container.append(createSkinBlock(logo_skins, function () {
|
|
||||||
var color = $(this).data('color')
|
|
||||||
var $logo = $('.brand-link')
|
|
||||||
logo_skins.map(function (skin) {
|
|
||||||
$logo.removeClass(skin)
|
|
||||||
})
|
|
||||||
$logo.addClass(color)
|
|
||||||
}).append($clear_btn))
|
|
||||||
|
|
||||||
function createSkinBlock(colors, callback) {
|
|
||||||
var $block = $('<div />', {
|
|
||||||
'class': 'd-flex flex-wrap mb-3'
|
|
||||||
})
|
|
||||||
|
|
||||||
colors.map(function (color) {
|
|
||||||
var $color = $('<div />', {
|
|
||||||
'class': (typeof color === 'object' ? color.join(' ') : color).replace('navbar-', 'bg-').replace('accent-', 'bg-') + ' elevation-2'
|
|
||||||
})
|
|
||||||
|
|
||||||
$block.append($color)
|
|
||||||
|
|
||||||
$color.data('color', color)
|
|
||||||
|
|
||||||
$color.css({
|
|
||||||
width : '40px',
|
|
||||||
height : '20px',
|
|
||||||
borderRadius: '25px',
|
|
||||||
marginRight : 10,
|
|
||||||
marginBottom: 10,
|
|
||||||
opacity : 0.8,
|
|
||||||
cursor : 'pointer'
|
|
||||||
})
|
|
||||||
|
|
||||||
$color.hover(function () {
|
|
||||||
$(this).css({ opacity: 1 }).removeClass('elevation-2').addClass('elevation-4')
|
|
||||||
}, function () {
|
|
||||||
$(this).css({ opacity: 0.8 }).removeClass('elevation-4').addClass('elevation-2')
|
|
||||||
})
|
|
||||||
|
|
||||||
if (callback) {
|
|
||||||
$color.on('click', callback)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return $block
|
|
||||||
}
|
|
||||||
})(jQuery)
|
|
@ -1,264 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Abdullah A Almsaeed
|
|
||||||
* Date: 4 Jan 2014
|
|
||||||
* Description:
|
|
||||||
* This is a demo file used only for the main dashboard (index.html)
|
|
||||||
**/
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
// Make the dashboard widgets sortable Using jquery UI
|
|
||||||
$('.connectedSortable').sortable({
|
|
||||||
placeholder : 'sort-highlight',
|
|
||||||
connectWith : '.connectedSortable',
|
|
||||||
handle : '.card-header, .nav-tabs',
|
|
||||||
forcePlaceholderSize: true,
|
|
||||||
zIndex : 999999
|
|
||||||
})
|
|
||||||
$('.connectedSortable .card-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move')
|
|
||||||
|
|
||||||
// jQuery UI sortable for the todo list
|
|
||||||
$('.todo-list').sortable({
|
|
||||||
placeholder : 'sort-highlight',
|
|
||||||
handle : '.handle',
|
|
||||||
forcePlaceholderSize: true,
|
|
||||||
zIndex : 999999
|
|
||||||
})
|
|
||||||
|
|
||||||
// bootstrap WYSIHTML5 - text editor
|
|
||||||
$('.textarea').summernote()
|
|
||||||
|
|
||||||
$('.daterange').daterangepicker({
|
|
||||||
ranges : {
|
|
||||||
'Today' : [moment(), moment()],
|
|
||||||
'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
|
||||||
'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
|
|
||||||
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
|
||||||
'This Month' : [moment().startOf('month'), moment().endOf('month')],
|
|
||||||
'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
|
||||||
},
|
|
||||||
startDate: moment().subtract(29, 'days'),
|
|
||||||
endDate : moment()
|
|
||||||
}, function (start, end) {
|
|
||||||
window.alert('You chose: ' + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'))
|
|
||||||
})
|
|
||||||
|
|
||||||
/* jQueryKnob */
|
|
||||||
$('.knob').knob()
|
|
||||||
|
|
||||||
// jvectormap data
|
|
||||||
var visitorsData = {
|
|
||||||
'US': 398, //USA
|
|
||||||
'SA': 400, //Saudi Arabia
|
|
||||||
'CA': 1000, //Canada
|
|
||||||
'DE': 500, //Germany
|
|
||||||
'FR': 760, //France
|
|
||||||
'CN': 300, //China
|
|
||||||
'AU': 700, //Australia
|
|
||||||
'BR': 600, //Brazil
|
|
||||||
'IN': 800, //India
|
|
||||||
'GB': 320, //Great Britain
|
|
||||||
'RU': 3000 //Russia
|
|
||||||
}
|
|
||||||
// World map by jvectormap
|
|
||||||
$('#world-map').vectorMap({
|
|
||||||
map : 'usa_en',
|
|
||||||
backgroundColor : 'transparent',
|
|
||||||
regionStyle : {
|
|
||||||
initial: {
|
|
||||||
fill : 'rgba(255, 255, 255, 0.7)',
|
|
||||||
'fill-opacity' : 1,
|
|
||||||
stroke : 'rgba(0,0,0,.2)',
|
|
||||||
'stroke-width' : 1,
|
|
||||||
'stroke-opacity': 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
series : {
|
|
||||||
regions: [{
|
|
||||||
values : visitorsData,
|
|
||||||
scale : ['#ffffff', '#0154ad'],
|
|
||||||
normalizeFunction: 'polynomial'
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
onRegionLabelShow: function (e, el, code) {
|
|
||||||
if (typeof visitorsData[code] != 'undefined')
|
|
||||||
el.html(el.html() + ': ' + visitorsData[code] + ' new visitors')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// Sparkline charts
|
|
||||||
var sparkline1 = new Sparkline($("#sparkline-1")[0], {width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9'});
|
|
||||||
var sparkline2 = new Sparkline($("#sparkline-2")[0], {width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9'});
|
|
||||||
var sparkline3 = new Sparkline($("#sparkline-3")[0], {width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9'});
|
|
||||||
|
|
||||||
sparkline1.draw([1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]);
|
|
||||||
sparkline2.draw([515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]);
|
|
||||||
sparkline3.draw([15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]);
|
|
||||||
|
|
||||||
// The Calender
|
|
||||||
$('#calendar').datetimepicker({
|
|
||||||
format: 'L',
|
|
||||||
inline: true
|
|
||||||
})
|
|
||||||
|
|
||||||
// SLIMSCROLL FOR CHAT WIDGET
|
|
||||||
$('#chat-box').overlayScrollbars({
|
|
||||||
height: '250px'
|
|
||||||
})
|
|
||||||
|
|
||||||
/* Chart.js Charts */
|
|
||||||
// Sales chart
|
|
||||||
var salesChartCanvas = document.getElementById('revenue-chart-canvas').getContext('2d');
|
|
||||||
//$('#revenue-chart').get(0).getContext('2d');
|
|
||||||
|
|
||||||
var salesChartData = {
|
|
||||||
labels : ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
label : 'Digital Goods',
|
|
||||||
backgroundColor : 'rgba(60,141,188,0.9)',
|
|
||||||
borderColor : 'rgba(60,141,188,0.8)',
|
|
||||||
pointRadius : false,
|
|
||||||
pointColor : '#3b8bba',
|
|
||||||
pointStrokeColor : 'rgba(60,141,188,1)',
|
|
||||||
pointHighlightFill : '#fff',
|
|
||||||
pointHighlightStroke: 'rgba(60,141,188,1)',
|
|
||||||
data : [28, 48, 40, 19, 86, 27, 90]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label : 'Electronics',
|
|
||||||
backgroundColor : 'rgba(210, 214, 222, 1)',
|
|
||||||
borderColor : 'rgba(210, 214, 222, 1)',
|
|
||||||
pointRadius : false,
|
|
||||||
pointColor : 'rgba(210, 214, 222, 1)',
|
|
||||||
pointStrokeColor : '#c1c7d1',
|
|
||||||
pointHighlightFill : '#fff',
|
|
||||||
pointHighlightStroke: 'rgba(220,220,220,1)',
|
|
||||||
data : [65, 59, 80, 81, 56, 55, 40]
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
var salesChartOptions = {
|
|
||||||
maintainAspectRatio : false,
|
|
||||||
responsive : true,
|
|
||||||
legend: {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
scales: {
|
|
||||||
xAxes: [{
|
|
||||||
gridLines : {
|
|
||||||
display : false,
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
yAxes: [{
|
|
||||||
gridLines : {
|
|
||||||
display : false,
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This will get the first returned node in the jQuery collection.
|
|
||||||
var salesChart = new Chart(salesChartCanvas, {
|
|
||||||
type: 'line',
|
|
||||||
data: salesChartData,
|
|
||||||
options: salesChartOptions
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// Donut Chart
|
|
||||||
var pieChartCanvas = $('#sales-chart-canvas').get(0).getContext('2d')
|
|
||||||
var pieData = {
|
|
||||||
labels: [
|
|
||||||
'Instore Sales',
|
|
||||||
'Download Sales',
|
|
||||||
'Mail-Order Sales',
|
|
||||||
],
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
data: [30,12,20],
|
|
||||||
backgroundColor : ['#f56954', '#00a65a', '#f39c12'],
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
var pieOptions = {
|
|
||||||
legend: {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
maintainAspectRatio : false,
|
|
||||||
responsive : true,
|
|
||||||
}
|
|
||||||
//Create pie or douhnut chart
|
|
||||||
// You can switch between pie and douhnut using the method below.
|
|
||||||
var pieChart = new Chart(pieChartCanvas, {
|
|
||||||
type: 'doughnut',
|
|
||||||
data: pieData,
|
|
||||||
options: pieOptions
|
|
||||||
});
|
|
||||||
|
|
||||||
// Sales graph chart
|
|
||||||
var salesGraphChartCanvas = $('#line-chart').get(0).getContext('2d');
|
|
||||||
//$('#revenue-chart').get(0).getContext('2d');
|
|
||||||
|
|
||||||
var salesGraphChartData = {
|
|
||||||
labels : ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4', '2013 Q1', '2013 Q2'],
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
label : 'Digital Goods',
|
|
||||||
fill : false,
|
|
||||||
borderWidth : 2,
|
|
||||||
lineTension : 0,
|
|
||||||
spanGaps : true,
|
|
||||||
borderColor : '#efefef',
|
|
||||||
pointRadius : 3,
|
|
||||||
pointHoverRadius : 7,
|
|
||||||
pointColor : '#efefef',
|
|
||||||
pointBackgroundColor: '#efefef',
|
|
||||||
data : [2666, 2778, 4912, 3767, 6810, 5670, 4820, 15073, 10687, 8432]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
var salesGraphChartOptions = {
|
|
||||||
maintainAspectRatio : false,
|
|
||||||
responsive : true,
|
|
||||||
legend: {
|
|
||||||
display: false,
|
|
||||||
},
|
|
||||||
scales: {
|
|
||||||
xAxes: [{
|
|
||||||
ticks : {
|
|
||||||
fontColor: '#efefef',
|
|
||||||
},
|
|
||||||
gridLines : {
|
|
||||||
display : false,
|
|
||||||
color: '#efefef',
|
|
||||||
drawBorder: false,
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
yAxes: [{
|
|
||||||
ticks : {
|
|
||||||
stepSize: 5000,
|
|
||||||
fontColor: '#efefef',
|
|
||||||
},
|
|
||||||
gridLines : {
|
|
||||||
display : true,
|
|
||||||
color: '#efefef',
|
|
||||||
drawBorder: false,
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This will get the first returned node in the jQuery collection.
|
|
||||||
var salesGraphChart = new Chart(salesGraphChartCanvas, {
|
|
||||||
type: 'line',
|
|
||||||
data: salesGraphChartData,
|
|
||||||
options: salesGraphChartOptions
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
})
|
|
@ -1,267 +0,0 @@
|
|||||||
$(function () {
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
/* ChartJS
|
|
||||||
* -------
|
|
||||||
* Here we will create a few charts using ChartJS
|
|
||||||
*/
|
|
||||||
|
|
||||||
//-----------------------
|
|
||||||
//- MONTHLY SALES CHART -
|
|
||||||
//-----------------------
|
|
||||||
|
|
||||||
// Get context with jQuery - using jQuery's .get() method.
|
|
||||||
var salesChartCanvas = $('#salesChart').get(0).getContext('2d')
|
|
||||||
|
|
||||||
var salesChartData = {
|
|
||||||
labels : ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
label : 'Digital Goods',
|
|
||||||
backgroundColor : 'rgba(60,141,188,0.9)',
|
|
||||||
borderColor : 'rgba(60,141,188,0.8)',
|
|
||||||
pointRadius : false,
|
|
||||||
pointColor : '#3b8bba',
|
|
||||||
pointStrokeColor : 'rgba(60,141,188,1)',
|
|
||||||
pointHighlightFill : '#fff',
|
|
||||||
pointHighlightStroke: 'rgba(60,141,188,1)',
|
|
||||||
data : [28, 48, 40, 19, 86, 27, 90]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label : 'Electronics',
|
|
||||||
backgroundColor : 'rgba(210, 214, 222, 1)',
|
|
||||||
borderColor : 'rgba(210, 214, 222, 1)',
|
|
||||||
pointRadius : false,
|
|
||||||
pointColor : 'rgba(210, 214, 222, 1)',
|
|
||||||
pointStrokeColor : '#c1c7d1',
|
|
||||||
pointHighlightFill : '#fff',
|
|
||||||
pointHighlightStroke: 'rgba(220,220,220,1)',
|
|
||||||
data : [65, 59, 80, 81, 56, 55, 40]
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
var salesChartOptions = {
|
|
||||||
maintainAspectRatio : false,
|
|
||||||
responsive : true,
|
|
||||||
legend: {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
scales: {
|
|
||||||
xAxes: [{
|
|
||||||
gridLines : {
|
|
||||||
display : false,
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
yAxes: [{
|
|
||||||
gridLines : {
|
|
||||||
display : false,
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This will get the first returned node in the jQuery collection.
|
|
||||||
var salesChart = new Chart(salesChartCanvas, {
|
|
||||||
type: 'line',
|
|
||||||
data: salesChartData,
|
|
||||||
options: salesChartOptions
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
//---------------------------
|
|
||||||
//- END MONTHLY SALES CHART -
|
|
||||||
//---------------------------
|
|
||||||
|
|
||||||
//-------------
|
|
||||||
//- PIE CHART -
|
|
||||||
//-------------
|
|
||||||
// Get context with jQuery - using jQuery's .get() method.
|
|
||||||
var pieChartCanvas = $('#pieChart').get(0).getContext('2d')
|
|
||||||
var pieData = {
|
|
||||||
labels: [
|
|
||||||
'Chrome',
|
|
||||||
'IE',
|
|
||||||
'FireFox',
|
|
||||||
'Safari',
|
|
||||||
'Opera',
|
|
||||||
'Navigator',
|
|
||||||
],
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
data: [700,500,400,600,300,100],
|
|
||||||
backgroundColor : ['#f56954', '#00a65a', '#f39c12', '#00c0ef', '#3c8dbc', '#d2d6de'],
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
var pieOptions = {
|
|
||||||
legend: {
|
|
||||||
display: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Create pie or douhnut chart
|
|
||||||
// You can switch between pie and douhnut using the method below.
|
|
||||||
var pieChart = new Chart(pieChartCanvas, {
|
|
||||||
type: 'doughnut',
|
|
||||||
data: pieData,
|
|
||||||
options: pieOptions
|
|
||||||
})
|
|
||||||
|
|
||||||
//-----------------
|
|
||||||
//- END PIE CHART -
|
|
||||||
//-----------------
|
|
||||||
|
|
||||||
/* jVector Maps
|
|
||||||
* ------------
|
|
||||||
* Create a world map with markers
|
|
||||||
*/
|
|
||||||
$('#world-map-markers').mapael({
|
|
||||||
map: {
|
|
||||||
name : "usa_states",
|
|
||||||
zoom: {
|
|
||||||
enabled: true,
|
|
||||||
maxLevel: 10
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// $('#world-map-markers').vectorMap({
|
|
||||||
// map : 'world_en',
|
|
||||||
// normalizeFunction: 'polynomial',
|
|
||||||
// hoverOpacity : 0.7,
|
|
||||||
// hoverColor : false,
|
|
||||||
// backgroundColor : 'transparent',
|
|
||||||
// regionStyle : {
|
|
||||||
// initial : {
|
|
||||||
// fill : 'rgba(210, 214, 222, 1)',
|
|
||||||
// 'fill-opacity' : 1,
|
|
||||||
// stroke : 'none',
|
|
||||||
// 'stroke-width' : 0,
|
|
||||||
// 'stroke-opacity': 1
|
|
||||||
// },
|
|
||||||
// hover : {
|
|
||||||
// 'fill-opacity': 0.7,
|
|
||||||
// cursor : 'pointer'
|
|
||||||
// },
|
|
||||||
// selected : {
|
|
||||||
// fill: 'yellow'
|
|
||||||
// },
|
|
||||||
// selectedHover: {}
|
|
||||||
// },
|
|
||||||
// markerStyle : {
|
|
||||||
// initial: {
|
|
||||||
// fill : '#00a65a',
|
|
||||||
// stroke: '#111'
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// markers : [
|
|
||||||
// {
|
|
||||||
// latLng: [41.90, 12.45],
|
|
||||||
// name : 'Vatican City'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [43.73, 7.41],
|
|
||||||
// name : 'Monaco'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [-0.52, 166.93],
|
|
||||||
// name : 'Nauru'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [-8.51, 179.21],
|
|
||||||
// name : 'Tuvalu'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [43.93, 12.46],
|
|
||||||
// name : 'San Marino'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [47.14, 9.52],
|
|
||||||
// name : 'Liechtenstein'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [7.11, 171.06],
|
|
||||||
// name : 'Marshall Islands'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [17.3, -62.73],
|
|
||||||
// name : 'Saint Kitts and Nevis'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [3.2, 73.22],
|
|
||||||
// name : 'Maldives'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [35.88, 14.5],
|
|
||||||
// name : 'Malta'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [12.05, -61.75],
|
|
||||||
// name : 'Grenada'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [13.16, -61.23],
|
|
||||||
// name : 'Saint Vincent and the Grenadines'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [13.16, -59.55],
|
|
||||||
// name : 'Barbados'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [17.11, -61.85],
|
|
||||||
// name : 'Antigua and Barbuda'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [-4.61, 55.45],
|
|
||||||
// name : 'Seychelles'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [7.35, 134.46],
|
|
||||||
// name : 'Palau'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [42.5, 1.51],
|
|
||||||
// name : 'Andorra'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [14.01, -60.98],
|
|
||||||
// name : 'Saint Lucia'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [6.91, 158.18],
|
|
||||||
// name : 'Federated States of Micronesia'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [1.3, 103.8],
|
|
||||||
// name : 'Singapore'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [1.46, 173.03],
|
|
||||||
// name : 'Kiribati'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [-21.13, -175.2],
|
|
||||||
// name : 'Tonga'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [15.3, -61.38],
|
|
||||||
// name : 'Dominica'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [-20.2, 57.5],
|
|
||||||
// name : 'Mauritius'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [26.02, 50.55],
|
|
||||||
// name : 'Bahrain'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// latLng: [0.33, 6.73],
|
|
||||||
// name : 'São Tomé and Príncipe'
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// })
|
|
||||||
|
|
||||||
})
|
|
@ -1,140 +0,0 @@
|
|||||||
$(function () {
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
var ticksStyle = {
|
|
||||||
fontColor: '#495057',
|
|
||||||
fontStyle: 'bold'
|
|
||||||
}
|
|
||||||
|
|
||||||
var mode = 'index'
|
|
||||||
var intersect = true
|
|
||||||
|
|
||||||
var $salesChart = $('#sales-chart')
|
|
||||||
var salesChart = new Chart($salesChart, {
|
|
||||||
type : 'bar',
|
|
||||||
data : {
|
|
||||||
labels : ['JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'],
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
backgroundColor: '#007bff',
|
|
||||||
borderColor : '#007bff',
|
|
||||||
data : [1000, 2000, 3000, 2500, 2700, 2500, 3000]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
backgroundColor: '#ced4da',
|
|
||||||
borderColor : '#ced4da',
|
|
||||||
data : [700, 1700, 2700, 2000, 1800, 1500, 2000]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
maintainAspectRatio: false,
|
|
||||||
tooltips : {
|
|
||||||
mode : mode,
|
|
||||||
intersect: intersect
|
|
||||||
},
|
|
||||||
hover : {
|
|
||||||
mode : mode,
|
|
||||||
intersect: intersect
|
|
||||||
},
|
|
||||||
legend : {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
scales : {
|
|
||||||
yAxes: [{
|
|
||||||
// display: false,
|
|
||||||
gridLines: {
|
|
||||||
display : true,
|
|
||||||
lineWidth : '4px',
|
|
||||||
color : 'rgba(0, 0, 0, .2)',
|
|
||||||
zeroLineColor: 'transparent'
|
|
||||||
},
|
|
||||||
ticks : $.extend({
|
|
||||||
beginAtZero: true,
|
|
||||||
|
|
||||||
// Include a dollar sign in the ticks
|
|
||||||
callback: function (value, index, values) {
|
|
||||||
if (value >= 1000) {
|
|
||||||
value /= 1000
|
|
||||||
value += 'k'
|
|
||||||
}
|
|
||||||
return '$' + value
|
|
||||||
}
|
|
||||||
}, ticksStyle)
|
|
||||||
}],
|
|
||||||
xAxes: [{
|
|
||||||
display : true,
|
|
||||||
gridLines: {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
ticks : ticksStyle
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
var $visitorsChart = $('#visitors-chart')
|
|
||||||
var visitorsChart = new Chart($visitorsChart, {
|
|
||||||
data : {
|
|
||||||
labels : ['18th', '20th', '22nd', '24th', '26th', '28th', '30th'],
|
|
||||||
datasets: [{
|
|
||||||
type : 'line',
|
|
||||||
data : [100, 120, 170, 167, 180, 177, 160],
|
|
||||||
backgroundColor : 'transparent',
|
|
||||||
borderColor : '#007bff',
|
|
||||||
pointBorderColor : '#007bff',
|
|
||||||
pointBackgroundColor: '#007bff',
|
|
||||||
fill : false
|
|
||||||
// pointHoverBackgroundColor: '#007bff',
|
|
||||||
// pointHoverBorderColor : '#007bff'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type : 'line',
|
|
||||||
data : [60, 80, 70, 67, 80, 77, 100],
|
|
||||||
backgroundColor : 'tansparent',
|
|
||||||
borderColor : '#ced4da',
|
|
||||||
pointBorderColor : '#ced4da',
|
|
||||||
pointBackgroundColor: '#ced4da',
|
|
||||||
fill : false
|
|
||||||
// pointHoverBackgroundColor: '#ced4da',
|
|
||||||
// pointHoverBorderColor : '#ced4da'
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
maintainAspectRatio: false,
|
|
||||||
tooltips : {
|
|
||||||
mode : mode,
|
|
||||||
intersect: intersect
|
|
||||||
},
|
|
||||||
hover : {
|
|
||||||
mode : mode,
|
|
||||||
intersect: intersect
|
|
||||||
},
|
|
||||||
legend : {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
scales : {
|
|
||||||
yAxes: [{
|
|
||||||
// display: false,
|
|
||||||
gridLines: {
|
|
||||||
display : true,
|
|
||||||
lineWidth : '4px',
|
|
||||||
color : 'rgba(0, 0, 0, .2)',
|
|
||||||
zeroLineColor: 'transparent'
|
|
||||||
},
|
|
||||||
ticks : $.extend({
|
|
||||||
beginAtZero : true,
|
|
||||||
suggestedMax: 200
|
|
||||||
}, ticksStyle)
|
|
||||||
}],
|
|
||||||
xAxes: [{
|
|
||||||
display : true,
|
|
||||||
gridLines: {
|
|
||||||
display: false
|
|
||||||
},
|
|
||||||
ticks : ticksStyle
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
@ -1,2 +0,0 @@
|
|||||||
*
|
|
||||||
!/plugins/flot-old/
|
|
@ -1,399 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
|
|
||||||
* @package bootstrap-colorpicker
|
|
||||||
* @version v3.1.2
|
|
||||||
* @license MIT
|
|
||||||
* @link https://farbelous.github.io/bootstrap-colorpicker/
|
|
||||||
* @link https://github.com/farbelous/bootstrap-colorpicker.git
|
|
||||||
*/
|
|
||||||
.colorpicker {
|
|
||||||
position: relative;
|
|
||||||
display: none;
|
|
||||||
font-size: inherit;
|
|
||||||
color: inherit;
|
|
||||||
text-align: left;
|
|
||||||
list-style: none;
|
|
||||||
background-color: #ffffff;
|
|
||||||
background-clip: padding-box;
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
|
||||||
padding: .75rem .75rem;
|
|
||||||
width: 148px;
|
|
||||||
border-radius: 4px;
|
|
||||||
-webkit-box-sizing: content-box;
|
|
||||||
box-sizing: content-box; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-disabled,
|
|
||||||
.colorpicker.colorpicker-disabled * {
|
|
||||||
cursor: default !important; }
|
|
||||||
|
|
||||||
.colorpicker div {
|
|
||||||
position: relative; }
|
|
||||||
|
|
||||||
.colorpicker-popup {
|
|
||||||
position: absolute;
|
|
||||||
top: 100%;
|
|
||||||
left: 0;
|
|
||||||
float: left;
|
|
||||||
margin-top: 1px;
|
|
||||||
z-index: 1060; }
|
|
||||||
|
|
||||||
.colorpicker-popup.colorpicker-bs-popover-content {
|
|
||||||
position: relative;
|
|
||||||
top: auto;
|
|
||||||
left: auto;
|
|
||||||
float: none;
|
|
||||||
margin: 0;
|
|
||||||
z-index: initial;
|
|
||||||
border: none;
|
|
||||||
padding: 0.25rem 0;
|
|
||||||
border-radius: 0;
|
|
||||||
background: none;
|
|
||||||
-webkit-box-shadow: none;
|
|
||||||
box-shadow: none; }
|
|
||||||
|
|
||||||
.colorpicker:before,
|
|
||||||
.colorpicker:after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
clear: both;
|
|
||||||
line-height: 0; }
|
|
||||||
|
|
||||||
.colorpicker-clear {
|
|
||||||
clear: both;
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
.colorpicker:before {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 7px solid transparent;
|
|
||||||
border-right: 7px solid transparent;
|
|
||||||
border-bottom: 7px solid #ccc;
|
|
||||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
|
||||||
position: absolute;
|
|
||||||
top: -7px;
|
|
||||||
left: auto;
|
|
||||||
right: 6px; }
|
|
||||||
|
|
||||||
.colorpicker:after {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
border-left: 6px solid transparent;
|
|
||||||
border-right: 6px solid transparent;
|
|
||||||
border-bottom: 6px solid #ffffff;
|
|
||||||
position: absolute;
|
|
||||||
top: -6px;
|
|
||||||
left: auto;
|
|
||||||
right: 7px; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-with-alpha {
|
|
||||||
width: 170px; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-with-alpha .colorpicker-alpha {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
.colorpicker-saturation {
|
|
||||||
position: relative;
|
|
||||||
width: 126px;
|
|
||||||
height: 126px;
|
|
||||||
/* FF3.6+ */
|
|
||||||
/* Chrome,Safari4+ */
|
|
||||||
/* Chrome10+,Safari5.1+ */
|
|
||||||
/* Opera 11.10+ */
|
|
||||||
/* IE10+ */
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));
|
|
||||||
background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);
|
|
||||||
/* W3C */
|
|
||||||
cursor: crosshair;
|
|
||||||
float: left;
|
|
||||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
|
||||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
|
||||||
margin-bottom: 6px; }
|
|
||||||
.colorpicker-saturation .colorpicker-guide {
|
|
||||||
display: block;
|
|
||||||
height: 6px;
|
|
||||||
width: 6px;
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid #000;
|
|
||||||
-webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
|
|
||||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: -3px 0 0 -3px; }
|
|
||||||
|
|
||||||
.colorpicker-hue,
|
|
||||||
.colorpicker-alpha {
|
|
||||||
position: relative;
|
|
||||||
width: 16px;
|
|
||||||
height: 126px;
|
|
||||||
float: left;
|
|
||||||
cursor: row-resize;
|
|
||||||
margin-left: 6px;
|
|
||||||
margin-bottom: 6px; }
|
|
||||||
|
|
||||||
.colorpicker-alpha-color {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%; }
|
|
||||||
|
|
||||||
.colorpicker-hue,
|
|
||||||
.colorpicker-alpha-color {
|
|
||||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
|
||||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
|
|
||||||
|
|
||||||
.colorpicker-hue .colorpicker-guide,
|
|
||||||
.colorpicker-alpha .colorpicker-guide {
|
|
||||||
display: block;
|
|
||||||
height: 4px;
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.4);
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
margin-left: -2px;
|
|
||||||
margin-top: -2px;
|
|
||||||
right: -2px;
|
|
||||||
z-index: 1; }
|
|
||||||
|
|
||||||
.colorpicker-hue {
|
|
||||||
/* FF3.6+ */
|
|
||||||
/* Chrome,Safari4+ */
|
|
||||||
/* Chrome10+,Safari5.1+ */
|
|
||||||
/* Opera 11.10+ */
|
|
||||||
/* IE10+ */
|
|
||||||
background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
|
|
||||||
background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
|
|
||||||
/* W3C */ }
|
|
||||||
|
|
||||||
.colorpicker-alpha {
|
|
||||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
|
||||||
background-size: 10px 10px;
|
|
||||||
background-position: 0 0, 5px 5px;
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
.colorpicker-bar {
|
|
||||||
min-height: 16px;
|
|
||||||
margin: 6px 0 0 0;
|
|
||||||
clear: both;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 10px;
|
|
||||||
line-height: normal;
|
|
||||||
max-width: 100%;
|
|
||||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
|
||||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
|
|
||||||
.colorpicker-bar:before {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
clear: both; }
|
|
||||||
|
|
||||||
.colorpicker-bar.colorpicker-bar-horizontal {
|
|
||||||
height: 126px;
|
|
||||||
width: 16px;
|
|
||||||
margin: 0 0 6px 0;
|
|
||||||
float: left; }
|
|
||||||
|
|
||||||
.colorpicker-input-addon {
|
|
||||||
position: relative; }
|
|
||||||
|
|
||||||
.colorpicker-input-addon i {
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
vertical-align: text-top;
|
|
||||||
height: 16px;
|
|
||||||
width: 16px;
|
|
||||||
position: relative; }
|
|
||||||
|
|
||||||
.colorpicker-input-addon:before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: text-top;
|
|
||||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
|
||||||
background-size: 10px 10px;
|
|
||||||
background-position: 0 0, 5px 5px; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-inline {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
float: none;
|
|
||||||
z-index: auto;
|
|
||||||
vertical-align: text-bottom; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal {
|
|
||||||
width: 126px;
|
|
||||||
height: auto; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-bar {
|
|
||||||
width: 126px; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-saturation {
|
|
||||||
float: none;
|
|
||||||
margin-bottom: 0; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-hue,
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
|
|
||||||
float: none;
|
|
||||||
width: 126px;
|
|
||||||
height: 16px;
|
|
||||||
cursor: col-resize;
|
|
||||||
margin-left: 0;
|
|
||||||
margin-top: 6px;
|
|
||||||
margin-bottom: 0; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
bottom: -2px;
|
|
||||||
left: 0;
|
|
||||||
right: auto;
|
|
||||||
height: auto;
|
|
||||||
width: 4px; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-hue {
|
|
||||||
/* FF3.6+ */
|
|
||||||
/* Chrome,Safari4+ */
|
|
||||||
/* Chrome10+,Safari5.1+ */
|
|
||||||
/* Opera 11.10+ */
|
|
||||||
/* IE10+ */
|
|
||||||
background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
|
|
||||||
background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
|
|
||||||
/* W3C */ }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
|
|
||||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
|
||||||
background-size: 10px 10px;
|
|
||||||
background-position: 0 0, 5px 5px; }
|
|
||||||
|
|
||||||
.colorpicker-inline:before,
|
|
||||||
.colorpicker-no-arrow:before,
|
|
||||||
.colorpicker-popup.colorpicker-bs-popover-content:before {
|
|
||||||
content: none;
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
.colorpicker-inline:after,
|
|
||||||
.colorpicker-no-arrow:after,
|
|
||||||
.colorpicker-popup.colorpicker-bs-popover-content:after {
|
|
||||||
content: none;
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
.colorpicker-alpha,
|
|
||||||
.colorpicker-saturation,
|
|
||||||
.colorpicker-hue {
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-visible,
|
|
||||||
.colorpicker-alpha.colorpicker-visible,
|
|
||||||
.colorpicker-saturation.colorpicker-visible,
|
|
||||||
.colorpicker-hue.colorpicker-visible,
|
|
||||||
.colorpicker-bar.colorpicker-visible {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-hidden,
|
|
||||||
.colorpicker-alpha.colorpicker-hidden,
|
|
||||||
.colorpicker-saturation.colorpicker-hidden,
|
|
||||||
.colorpicker-hue.colorpicker-hidden,
|
|
||||||
.colorpicker-bar.colorpicker-hidden {
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
.colorpicker-inline.colorpicker-visible {
|
|
||||||
display: inline-block; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-disabled:after {
|
|
||||||
border: none;
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: rgba(233, 236, 239, 0.33);
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: auto;
|
|
||||||
z-index: 2;
|
|
||||||
position: absolute; }
|
|
||||||
|
|
||||||
.colorpicker.colorpicker-disabled .colorpicker-guide {
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
/** EXTENSIONS **/
|
|
||||||
.colorpicker-preview {
|
|
||||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
|
||||||
background-size: 10px 10px;
|
|
||||||
background-position: 0 0, 5px 5px; }
|
|
||||||
|
|
||||||
.colorpicker-preview > div {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%; }
|
|
||||||
|
|
||||||
.colorpicker-bar.colorpicker-swatches {
|
|
||||||
-webkit-box-shadow: none;
|
|
||||||
box-shadow: none;
|
|
||||||
height: auto; }
|
|
||||||
|
|
||||||
.colorpicker-swatches--inner {
|
|
||||||
clear: both;
|
|
||||||
margin-top: -6px; }
|
|
||||||
|
|
||||||
.colorpicker-swatch {
|
|
||||||
position: relative;
|
|
||||||
cursor: pointer;
|
|
||||||
float: left;
|
|
||||||
height: 16px;
|
|
||||||
width: 16px;
|
|
||||||
margin-right: 6px;
|
|
||||||
margin-top: 6px;
|
|
||||||
margin-left: 0;
|
|
||||||
display: block;
|
|
||||||
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
|
||||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
|
|
||||||
background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
|
|
||||||
background-size: 10px 10px;
|
|
||||||
background-position: 0 0, 5px 5px; }
|
|
||||||
|
|
||||||
.colorpicker-swatch--inner {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%; }
|
|
||||||
|
|
||||||
.colorpicker-swatch:nth-of-type(7n+0) {
|
|
||||||
margin-right: 0; }
|
|
||||||
|
|
||||||
.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {
|
|
||||||
margin-right: 6px; }
|
|
||||||
|
|
||||||
.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {
|
|
||||||
margin-right: 0; }
|
|
||||||
|
|
||||||
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {
|
|
||||||
margin-right: 0; }
|
|
||||||
|
|
||||||
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {
|
|
||||||
margin-right: 6px; }
|
|
||||||
|
|
||||||
.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {
|
|
||||||
margin-right: 6px; }
|
|
||||||
|
|
||||||
.colorpicker-swatch:last-of-type:after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
clear: both; }
|
|
||||||
|
|
||||||
*[dir='rtl'] .colorpicker-element input,
|
|
||||||
.colorpicker-element[dir='rtl'] input,
|
|
||||||
.colorpicker-element input[dir='rtl'] {
|
|
||||||
direction: ltr;
|
|
||||||
text-align: right; }
|
|
||||||
|
|
||||||
/*# sourceMappingURL=bootstrap-colorpicker.css.map */
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,328 +0,0 @@
|
|||||||
/*! =======================================================
|
|
||||||
VERSION 10.6.2
|
|
||||||
========================================================= */
|
|
||||||
/*! =========================================================
|
|
||||||
* bootstrap-slider.js
|
|
||||||
*
|
|
||||||
* Maintainers:
|
|
||||||
* Kyle Kemp
|
|
||||||
* - Twitter: @seiyria
|
|
||||||
* - Github: seiyria
|
|
||||||
* Rohit Kalkur
|
|
||||||
* - Twitter: @Rovolutionary
|
|
||||||
* - Github: rovolution
|
|
||||||
*
|
|
||||||
* =========================================================
|
|
||||||
*
|
|
||||||
* bootstrap-slider is released under the MIT License
|
|
||||||
* Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use,
|
|
||||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following
|
|
||||||
* conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*
|
|
||||||
* ========================================================= */
|
|
||||||
.slider {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal {
|
|
||||||
width: 210px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-track {
|
|
||||||
height: 10px;
|
|
||||||
width: 100%;
|
|
||||||
margin-top: -5px;
|
|
||||||
top: 50%;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-selection,
|
|
||||||
.slider.slider-horizontal .slider-track-low,
|
|
||||||
.slider.slider-horizontal .slider-track-high {
|
|
||||||
height: 100%;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-tick,
|
|
||||||
.slider.slider-horizontal .slider-handle {
|
|
||||||
margin-left: -10px;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-tick.triangle,
|
|
||||||
.slider.slider-horizontal .slider-handle.triangle {
|
|
||||||
position: relative;
|
|
||||||
top: 50%;
|
|
||||||
-ms-transform: translateY(-50%);
|
|
||||||
transform: translateY(-50%);
|
|
||||||
border-width: 0 10px 10px 10px;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-bottom-color: #2e6da4;
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-tick-container {
|
|
||||||
white-space: nowrap;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-tick-label-container {
|
|
||||||
white-space: nowrap;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .slider-tick-label-container .slider-tick-label {
|
|
||||||
padding-top: 4px;
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal .tooltip {
|
|
||||||
-ms-transform: translateX(-50%);
|
|
||||||
transform: translateX(-50%);
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal.slider-rtl .slider-track {
|
|
||||||
left: initial;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal.slider-rtl .slider-tick,
|
|
||||||
.slider.slider-horizontal.slider-rtl .slider-handle {
|
|
||||||
margin-left: initial;
|
|
||||||
margin-right: -10px;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal.slider-rtl .slider-tick-container {
|
|
||||||
left: initial;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-horizontal.slider-rtl .tooltip {
|
|
||||||
-ms-transform: translateX(50%);
|
|
||||||
transform: translateX(50%);
|
|
||||||
}
|
|
||||||
.slider.slider-vertical {
|
|
||||||
height: 210px;
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-track {
|
|
||||||
width: 10px;
|
|
||||||
height: 100%;
|
|
||||||
left: 25%;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-selection {
|
|
||||||
width: 100%;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-track-low,
|
|
||||||
.slider.slider-vertical .slider-track-high {
|
|
||||||
width: 100%;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-tick,
|
|
||||||
.slider.slider-vertical .slider-handle {
|
|
||||||
margin-top: -10px;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-tick.triangle,
|
|
||||||
.slider.slider-vertical .slider-handle.triangle {
|
|
||||||
border-width: 10px 0 10px 10px;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
border-left-color: #2e6da4;
|
|
||||||
border-right-color: #2e6da4;
|
|
||||||
margin-left: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-tick-label-container {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .slider-tick-label-container .slider-tick-label {
|
|
||||||
padding-left: 4px;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical .tooltip {
|
|
||||||
-ms-transform: translateY(-50%);
|
|
||||||
transform: translateY(-50%);
|
|
||||||
}
|
|
||||||
.slider.slider-vertical.slider-rtl .slider-track {
|
|
||||||
left: initial;
|
|
||||||
right: 25%;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical.slider-rtl .slider-selection {
|
|
||||||
left: initial;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical.slider-rtl .slider-tick.triangle,
|
|
||||||
.slider.slider-vertical.slider-rtl .slider-handle.triangle {
|
|
||||||
border-width: 10px 10px 10px 0;
|
|
||||||
}
|
|
||||||
.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label {
|
|
||||||
padding-left: initial;
|
|
||||||
padding-right: 4px;
|
|
||||||
}
|
|
||||||
.slider.slider-disabled .slider-handle {
|
|
||||||
background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.slider.slider-disabled .slider-track {
|
|
||||||
background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
.slider input {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.slider .tooltip {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
.slider .tooltip.top {
|
|
||||||
margin-top: -36px;
|
|
||||||
}
|
|
||||||
.slider .tooltip-inner {
|
|
||||||
white-space: nowrap;
|
|
||||||
max-width: none;
|
|
||||||
}
|
|
||||||
.slider .hide {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.slider-track {
|
|
||||||
position: absolute;
|
|
||||||
cursor: pointer;
|
|
||||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
||||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.slider-selection {
|
|
||||||
position: absolute;
|
|
||||||
background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
|
||||||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.slider-selection.tick-slider-selection {
|
|
||||||
background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.slider-track-low,
|
|
||||||
.slider-track-high {
|
|
||||||
position: absolute;
|
|
||||||
background: transparent;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.slider-handle {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
background-color: #337ab7;
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: none;
|
|
||||||
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
|
|
||||||
box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
|
|
||||||
border: 0px solid transparent;
|
|
||||||
}
|
|
||||||
.slider-handle:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.slider-handle.round {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
.slider-handle.triangle {
|
|
||||||
background: transparent none;
|
|
||||||
}
|
|
||||||
.slider-handle.custom {
|
|
||||||
background: transparent none;
|
|
||||||
}
|
|
||||||
.slider-handle.custom::before {
|
|
||||||
line-height: 20px;
|
|
||||||
font-size: 20px;
|
|
||||||
content: '\2605';
|
|
||||||
color: #726204;
|
|
||||||
}
|
|
||||||
.slider-tick {
|
|
||||||
position: absolute;
|
|
||||||
cursor: pointer;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
|
||||||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
filter: none;
|
|
||||||
opacity: 0.8;
|
|
||||||
border: 0px solid transparent;
|
|
||||||
}
|
|
||||||
.slider-tick.round {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
.slider-tick.triangle {
|
|
||||||
background: transparent none;
|
|
||||||
}
|
|
||||||
.slider-tick.custom {
|
|
||||||
background: transparent none;
|
|
||||||
}
|
|
||||||
.slider-tick.custom::before {
|
|
||||||
line-height: 20px;
|
|
||||||
font-size: 20px;
|
|
||||||
content: '\2605';
|
|
||||||
color: #726204;
|
|
||||||
}
|
|
||||||
.slider-tick.in-selection {
|
|
||||||
background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1,510 +0,0 @@
|
|||||||
/**
|
|
||||||
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
|
||||||
*
|
|
||||||
* @version v3.4.0
|
|
||||||
* @homepage https://bttstrp.github.io/bootstrap-switch
|
|
||||||
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
|
|
||||||
.clearfix {
|
|
||||||
*zoom: 1;
|
|
||||||
}
|
|
||||||
.clearfix:before,
|
|
||||||
.clearfix:after {
|
|
||||||
display: table;
|
|
||||||
content: "";
|
|
||||||
line-height: 0;
|
|
||||||
}
|
|
||||||
.clearfix:after {
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
.hide-text {
|
|
||||||
font: 0/0 a;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: none;
|
|
||||||
background-color: transparent;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
.input-block-level {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
min-height: 30px;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.bootstrap-switch {
|
|
||||||
display: inline-block;
|
|
||||||
direction: ltr;
|
|
||||||
cursor: pointer;
|
|
||||||
-webkit-border-radius: 5px;
|
|
||||||
-moz-border-radius: 5px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border: 1px solid;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
position: relative;
|
|
||||||
text-align: left;
|
|
||||||
overflow: hidden;
|
|
||||||
line-height: 8px;
|
|
||||||
z-index: 0;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
-o-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
vertical-align: middle;
|
|
||||||
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
-moz-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-container {
|
|
||||||
display: inline-block;
|
|
||||||
top: 0;
|
|
||||||
-webkit-border-radius: 4px;
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
|
||||||
-moz-transform: translate3d(0, 0, 0);
|
|
||||||
-o-transform: translate3d(0, 0, 0);
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label {
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-block !important;
|
|
||||||
padding-top: 4px;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
padding-left: 8px;
|
|
||||||
padding-right: 8px;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off {
|
|
||||||
text-align: center;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
||||||
background-color: #005fcc;
|
|
||||||
background-image: -moz-linear-gradient(top, #0044cc, #08c);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0044cc), to(#08c));
|
|
||||||
background-image: -webkit-linear-gradient(top, #0044cc, #08c);
|
|
||||||
background-image: -o-linear-gradient(top, #0044cc, #08c);
|
|
||||||
background-image: linear-gradient(to bottom, #0044cc, #08c);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0044cc', endColorstr='#ff0088cc', GradientType=0);
|
|
||||||
border-color: #08c #08c #005580;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #08c;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled],
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled] {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #08c;
|
|
||||||
*background-color: #0077b3;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active {
|
|
||||||
background-color: #006699 \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
||||||
background-color: #41a7c5;
|
|
||||||
background-image: -moz-linear-gradient(top, #2f96b4, #5bc0de);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2f96b4), to(#5bc0de));
|
|
||||||
background-image: -webkit-linear-gradient(top, #2f96b4, #5bc0de);
|
|
||||||
background-image: -o-linear-gradient(top, #2f96b4, #5bc0de);
|
|
||||||
background-image: linear-gradient(to bottom, #2f96b4, #5bc0de);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff5bc0de', GradientType=0);
|
|
||||||
border-color: #5bc0de #5bc0de #28a1c5;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #5bc0de;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info[disabled],
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info[disabled] {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #5bc0de;
|
|
||||||
*background-color: #46b8da;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active {
|
|
||||||
background-color: #31b0d5 \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
||||||
background-color: #58b058;
|
|
||||||
background-image: -moz-linear-gradient(top, #51a351, #62c462);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#51a351), to(#62c462));
|
|
||||||
background-image: -webkit-linear-gradient(top, #51a351, #62c462);
|
|
||||||
background-image: -o-linear-gradient(top, #51a351, #62c462);
|
|
||||||
background-image: linear-gradient(to bottom, #51a351, #62c462);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff51a351', endColorstr='#ff62c462', GradientType=0);
|
|
||||||
border-color: #62c462 #62c462 #3b9e3b;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #62c462;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success[disabled],
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success[disabled] {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #62c462;
|
|
||||||
*background-color: #4fbd4f;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active {
|
|
||||||
background-color: #42b142 \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
||||||
background-color: #f9a123;
|
|
||||||
background-image: -moz-linear-gradient(top, #f89406, #fbb450);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f89406), to(#fbb450));
|
|
||||||
background-image: -webkit-linear-gradient(top, #f89406, #fbb450);
|
|
||||||
background-image: -o-linear-gradient(top, #f89406, #fbb450);
|
|
||||||
background-image: linear-gradient(to bottom, #f89406, #fbb450);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#fffbb450', GradientType=0);
|
|
||||||
border-color: #fbb450 #fbb450 #f89406;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #fbb450;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning[disabled],
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning[disabled] {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #fbb450;
|
|
||||||
*background-color: #faa937;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active {
|
|
||||||
background-color: #fa9f1e \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
||||||
background-color: #d14641;
|
|
||||||
background-image: -moz-linear-gradient(top, #bd362f, #ee5f5b);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bd362f), to(#ee5f5b));
|
|
||||||
background-image: -webkit-linear-gradient(top, #bd362f, #ee5f5b);
|
|
||||||
background-image: -o-linear-gradient(top, #bd362f, #ee5f5b);
|
|
||||||
background-image: linear-gradient(to bottom, #bd362f, #ee5f5b);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ffee5f5b', GradientType=0);
|
|
||||||
border-color: #ee5f5b #ee5f5b #e51d18;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #ee5f5b;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger[disabled],
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled] {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #ee5f5b;
|
|
||||||
*background-color: #ec4844;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active {
|
|
||||||
background-color: #e9322d \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
|
|
||||||
color: #333;
|
|
||||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
background-image: -moz-linear-gradient(top, #e6e6e6, #fff);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#fff));
|
|
||||||
background-image: -webkit-linear-gradient(top, #e6e6e6, #fff);
|
|
||||||
background-image: -o-linear-gradient(top, #e6e6e6, #fff);
|
|
||||||
background-image: linear-gradient(to bottom, #e6e6e6, #fff);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffffffff', GradientType=0);
|
|
||||||
border-color: #fff #fff #d9d9d9;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #fff;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled],
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default[disabled] {
|
|
||||||
color: #333;
|
|
||||||
background-color: #fff;
|
|
||||||
*background-color: #f2f2f2;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active {
|
|
||||||
background-color: #e6e6e6 \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-label {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: -1px;
|
|
||||||
margin-bottom: -1px;
|
|
||||||
z-index: 100;
|
|
||||||
border-left: 1px solid #ccc;
|
|
||||||
border-right: 1px solid #ccc;
|
|
||||||
color: #333;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
background-image: -moz-linear-gradient(top, #fff, #e6e6e6);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#e6e6e6));
|
|
||||||
background-image: -webkit-linear-gradient(top, #fff, #e6e6e6);
|
|
||||||
background-image: -o-linear-gradient(top, #fff, #e6e6e6);
|
|
||||||
background-image: linear-gradient(to bottom, #fff, #e6e6e6);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
|
|
||||||
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
*background-color: #e6e6e6;
|
|
||||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-label:hover,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label:focus,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label.active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label.disabled,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label[disabled] {
|
|
||||||
color: #333;
|
|
||||||
background-color: #e6e6e6;
|
|
||||||
*background-color: #d9d9d9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-label:active,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label.active {
|
|
||||||
background-color: #cccccc \9;
|
|
||||||
}
|
|
||||||
.bootstrap-switch span::before {
|
|
||||||
content: "\200b";
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on {
|
|
||||||
-webkit-border-top-left-radius: 4px;
|
|
||||||
-moz-border-radius-topleft: 4px;
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
|
||||||
-moz-border-radius-bottomleft: 4px;
|
|
||||||
border-bottom-left-radius: 4px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off {
|
|
||||||
-webkit-border-top-right-radius: 4px;
|
|
||||||
-moz-border-radius-topright: 4px;
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
-webkit-border-bottom-right-radius: 4px;
|
|
||||||
-moz-border-radius-bottomright: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch input[type='radio'],
|
|
||||||
.bootstrap-switch input[type='checkbox'] {
|
|
||||||
position: absolute !important;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
opacity: 0;
|
|
||||||
filter: alpha(opacity=0);
|
|
||||||
z-index: -1;
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
.bootstrap-switch input[type='radio'].form-control,
|
|
||||||
.bootstrap-switch input[type='checkbox'].form-control {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini {
|
|
||||||
min-width: 71px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
|
|
||||||
padding: 3px 6px;
|
|
||||||
font-size: 10px;
|
|
||||||
line-height: 9px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-small {
|
|
||||||
min-width: 79px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
|
|
||||||
padding: 3px 6px;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 18px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-large {
|
|
||||||
min-width: 120px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
|
|
||||||
padding: 9px 12px;
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: normal;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate {
|
|
||||||
cursor: default !important;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
|
|
||||||
opacity: 0.5;
|
|
||||||
filter: alpha(opacity=50);
|
|
||||||
cursor: default !important;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
|
|
||||||
-webkit-transition: margin-left 0.5s;
|
|
||||||
-moz-transition: margin-left 0.5s;
|
|
||||||
-o-transition: margin-left 0.5s;
|
|
||||||
transition: margin-left 0.5s;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
|
|
||||||
-webkit-border-top-left-radius: 0;
|
|
||||||
-moz-border-radius-topleft: 0;
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
-webkit-border-bottom-left-radius: 0;
|
|
||||||
-moz-border-radius-bottomleft: 0;
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
-webkit-border-top-right-radius: 4px;
|
|
||||||
-moz-border-radius-topright: 4px;
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
-webkit-border-bottom-right-radius: 4px;
|
|
||||||
-moz-border-radius-bottomright: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
|
|
||||||
-webkit-border-top-right-radius: 0;
|
|
||||||
-moz-border-radius-topright: 0;
|
|
||||||
border-top-right-radius: 0;
|
|
||||||
-webkit-border-bottom-right-radius: 0;
|
|
||||||
-moz-border-radius-bottomright: 0;
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
-webkit-border-top-left-radius: 4px;
|
|
||||||
-moz-border-radius-topleft: 4px;
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
|
||||||
-moz-border-radius-bottomleft: 4px;
|
|
||||||
border-bottom-left-radius: 4px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-focused {
|
|
||||||
border-color: rgba(82, 168, 236, 0.8);
|
|
||||||
outline: 0;
|
|
||||||
outline: thin dotted \9;
|
|
||||||
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
|
|
||||||
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
|
|
||||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
|
|
||||||
-webkit-border-top-right-radius: 4px;
|
|
||||||
-moz-border-radius-topright: 4px;
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
-webkit-border-bottom-right-radius: 4px;
|
|
||||||
-moz-border-radius-bottomright: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
|
|
||||||
-webkit-border-top-left-radius: 4px;
|
|
||||||
-moz-border-radius-topleft: 4px;
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
|
||||||
-moz-border-radius-bottomleft: 4px;
|
|
||||||
border-bottom-left-radius: 4px;
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1,187 +0,0 @@
|
|||||||
/**
|
|
||||||
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
|
||||||
*
|
|
||||||
* @version v3.4.0
|
|
||||||
* @homepage https://bttstrp.github.io/bootstrap-switch
|
|
||||||
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
|
|
||||||
.bootstrap-switch {
|
|
||||||
display: inline-block;
|
|
||||||
direction: ltr;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 4px;
|
|
||||||
border: 1px solid;
|
|
||||||
border-color: #ccc;
|
|
||||||
position: relative;
|
|
||||||
text-align: left;
|
|
||||||
overflow: hidden;
|
|
||||||
line-height: 8px;
|
|
||||||
z-index: 0;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
vertical-align: middle;
|
|
||||||
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-container {
|
|
||||||
display: inline-block;
|
|
||||||
top: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch .bootstrap-switch-label {
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
cursor: pointer;
|
|
||||||
display: table-cell;
|
|
||||||
vertical-align: middle;
|
|
||||||
padding: 6px 12px;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off {
|
|
||||||
text-align: center;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
|
|
||||||
color: #fff;
|
|
||||||
background: #337ab7;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
|
|
||||||
color: #fff;
|
|
||||||
background: #5bc0de;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
|
|
||||||
color: #fff;
|
|
||||||
background: #5cb85c;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
|
|
||||||
background: #f0ad4e;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
|
|
||||||
color: #fff;
|
|
||||||
background: #d9534f;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
|
|
||||||
color: #000;
|
|
||||||
background: #eeeeee;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-label {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: -1px;
|
|
||||||
margin-bottom: -1px;
|
|
||||||
z-index: 100;
|
|
||||||
color: #333;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
.bootstrap-switch span::before {
|
|
||||||
content: "\200b";
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-on {
|
|
||||||
border-bottom-left-radius: 3px;
|
|
||||||
border-top-left-radius: 3px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch .bootstrap-switch-handle-off {
|
|
||||||
border-bottom-right-radius: 3px;
|
|
||||||
border-top-right-radius: 3px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch input[type='radio'],
|
|
||||||
.bootstrap-switch input[type='checkbox'] {
|
|
||||||
position: absolute !important;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: 0;
|
|
||||||
z-index: -1;
|
|
||||||
opacity: 0;
|
|
||||||
filter: alpha(opacity=0);
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
|
|
||||||
padding: 1px 5px;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
|
|
||||||
padding: 5px 10px;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
|
|
||||||
padding: 6px 16px;
|
|
||||||
font-size: 18px;
|
|
||||||
line-height: 1.3333333;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate {
|
|
||||||
cursor: default !important;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
|
|
||||||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
|
|
||||||
opacity: 0.5;
|
|
||||||
filter: alpha(opacity=50);
|
|
||||||
cursor: default !important;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
|
|
||||||
-webkit-transition: margin-left 0.5s;
|
|
||||||
-o-transition: margin-left 0.5s;
|
|
||||||
transition: margin-left 0.5s;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
border-bottom-right-radius: 3px;
|
|
||||||
border-top-right-radius: 3px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
border-top-right-radius: 0;
|
|
||||||
border-bottom-left-radius: 3px;
|
|
||||||
border-top-left-radius: 3px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-focused {
|
|
||||||
border-color: #66afe9;
|
|
||||||
outline: 0;
|
|
||||||
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
|
||||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
|
|
||||||
border-bottom-right-radius: 3px;
|
|
||||||
border-top-right-radius: 3px;
|
|
||||||
}
|
|
||||||
.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
|
|
||||||
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
|
|
||||||
border-bottom-left-radius: 3px;
|
|
||||||
border-top-left-radius: 3px;
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1,767 +0,0 @@
|
|||||||
/**
|
|
||||||
* bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
|
|
||||||
*
|
|
||||||
* @version v3.4.0
|
|
||||||
* @homepage https://bttstrp.github.io/bootstrap-switch
|
|
||||||
* @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function (global, factory) {
|
|
||||||
if (typeof define === "function" && define.amd) {
|
|
||||||
define(['jquery'], factory);
|
|
||||||
} else if (typeof exports !== "undefined") {
|
|
||||||
factory(require('jquery'));
|
|
||||||
} else {
|
|
||||||
var mod = {
|
|
||||||
exports: {}
|
|
||||||
};
|
|
||||||
factory(global.jquery);
|
|
||||||
global.bootstrapSwitch = mod.exports;
|
|
||||||
}
|
|
||||||
})(this, function (_jquery) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var _jquery2 = _interopRequireDefault(_jquery);
|
|
||||||
|
|
||||||
function _interopRequireDefault(obj) {
|
|
||||||
return obj && obj.__esModule ? obj : {
|
|
||||||
default: obj
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var _extends = Object.assign || function (target) {
|
|
||||||
for (var i = 1; i < arguments.length; i++) {
|
|
||||||
var source = arguments[i];
|
|
||||||
|
|
||||||
for (var key in source) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
||||||
target[key] = source[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return target;
|
|
||||||
};
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) {
|
|
||||||
if (!(instance instanceof Constructor)) {
|
|
||||||
throw new TypeError("Cannot call a class as a function");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var _createClass = function () {
|
|
||||||
function defineProperties(target, props) {
|
|
||||||
for (var i = 0; i < props.length; i++) {
|
|
||||||
var descriptor = props[i];
|
|
||||||
descriptor.enumerable = descriptor.enumerable || false;
|
|
||||||
descriptor.configurable = true;
|
|
||||||
if ("value" in descriptor) descriptor.writable = true;
|
|
||||||
Object.defineProperty(target, descriptor.key, descriptor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return function (Constructor, protoProps, staticProps) {
|
|
||||||
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
|
||||||
if (staticProps) defineProperties(Constructor, staticProps);
|
|
||||||
return Constructor;
|
|
||||||
};
|
|
||||||
}();
|
|
||||||
|
|
||||||
var $ = _jquery2.default || window.jQuery || window.$;
|
|
||||||
|
|
||||||
function getClasses(options, id) {
|
|
||||||
var state = options.state,
|
|
||||||
size = options.size,
|
|
||||||
disabled = options.disabled,
|
|
||||||
readonly = options.readonly,
|
|
||||||
indeterminate = options.indeterminate,
|
|
||||||
inverse = options.inverse;
|
|
||||||
|
|
||||||
return [state ? 'on' : 'off', size, disabled ? 'disabled' : undefined, readonly ? 'readonly' : undefined, indeterminate ? 'indeterminate' : undefined, inverse ? 'inverse' : undefined, id ? 'id-' + id : undefined].filter(function (v) {
|
|
||||||
return v == null;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvgetElementOptions() {
|
|
||||||
return {
|
|
||||||
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')
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvwidth() {
|
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
var $handles = this.$on.add(this.$off).add(this.$label).css('width', '');
|
|
||||||
var handleWidth = this.options.handleWidth === 'auto' ? Math.round(Math.max(this.$on.width(), this.$off.width())) : this.options.handleWidth;
|
|
||||||
$handles.width(handleWidth);
|
|
||||||
this.$label.width(function (index, width) {
|
|
||||||
if (_this.options.labelWidth !== 'auto') {
|
|
||||||
return _this.options.labelWidth;
|
|
||||||
}
|
|
||||||
if (width < handleWidth) {
|
|
||||||
return handleWidth;
|
|
||||||
}
|
|
||||||
return width;
|
|
||||||
});
|
|
||||||
this.privateHandleWidth = this.$on.outerWidth();
|
|
||||||
this.privateLabelWidth = this.$label.outerWidth();
|
|
||||||
this.$container.width(this.privateHandleWidth * 2 + this.privateLabelWidth);
|
|
||||||
return this.$wrapper.width(this.privateHandleWidth + this.privateLabelWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvcontainerPosition() {
|
|
||||||
var _this2 = this;
|
|
||||||
|
|
||||||
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.ope;
|
|
||||||
|
|
||||||
this.$container.css('margin-left', function () {
|
|
||||||
var values = [0, '-' + _this2.privateHandleWidth + 'px'];
|
|
||||||
if (_this2.options.indeterminate) {
|
|
||||||
return '-' + _this2.privateHandleWidth / 2 + 'px';
|
|
||||||
}
|
|
||||||
if (state) {
|
|
||||||
if (_this2.options.inverse) {
|
|
||||||
return values[1];
|
|
||||||
}
|
|
||||||
return values[0];
|
|
||||||
}
|
|
||||||
if (_this2.options.inverse) {
|
|
||||||
return values[0];
|
|
||||||
}
|
|
||||||
return values[1];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvgetClass(name) {
|
|
||||||
return this.options.baseClass + '-' + name;
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvinit() {
|
|
||||||
var _this3 = this;
|
|
||||||
|
|
||||||
var init = function init() {
|
|
||||||
_this3.setPrevOptions();
|
|
||||||
prvwidth.call(_this3);
|
|
||||||
prvcontainerPosition.call(_this3);
|
|
||||||
setTimeout(function () {
|
|
||||||
return _this3.options.animate && _this3.$wrapper.addClass(prvgetClass.call(_this3, 'animate'));
|
|
||||||
}, 50);
|
|
||||||
};
|
|
||||||
if (this.$wrapper.is(':visible')) {
|
|
||||||
init();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var initInterval = window.setInterval(function () {
|
|
||||||
return _this3.$wrapper.is(':visible') && (init() || true) && window.clearInterval(initInterval);
|
|
||||||
}, 50);
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvelementHandlers() {
|
|
||||||
var _this4 = this;
|
|
||||||
|
|
||||||
return this.$element.on({
|
|
||||||
'setPreviousOptions.bootstrapSwitch': function setPreviousOptionsBootstrapSwitch() {
|
|
||||||
return _this4.setPrevOptions();
|
|
||||||
},
|
|
||||||
|
|
||||||
'previousState.bootstrapSwitch': function previousStateBootstrapSwitch() {
|
|
||||||
_this4.options = _this4.prevOptions;
|
|
||||||
if (_this4.options.indeterminate) {
|
|
||||||
_this4.$wrapper.addClass(prvgetClass.call(_this4, 'indeterminate'));
|
|
||||||
}
|
|
||||||
_this4.$element.prop('checked', _this4.options.state).trigger('change.bootstrapSwitch', true);
|
|
||||||
},
|
|
||||||
|
|
||||||
'change.bootstrapSwitch': function changeBootstrapSwitch(event, skip) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopImmediatePropagation();
|
|
||||||
var state = _this4.$element.is(':checked');
|
|
||||||
prvcontainerPosition.call(_this4, state);
|
|
||||||
if (state === _this4.options.state) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_this4.options.state = state;
|
|
||||||
_this4.$wrapper.toggleClass(prvgetClass.call(_this4, 'off')).toggleClass(prvgetClass.call(_this4, 'on'));
|
|
||||||
if (!skip) {
|
|
||||||
if (_this4.$element.is(':radio')) {
|
|
||||||
$('[name="' + _this4.$element.attr('name') + '"]').not(_this4.$element).prop('checked', false).trigger('change.bootstrapSwitch', true);
|
|
||||||
}
|
|
||||||
_this4.$element.trigger('switchChange.bootstrapSwitch', [state]);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
'focus.bootstrapSwitch': function focusBootstrapSwitch(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
_this4.$wrapper.addClass(prvgetClass.call(_this4, 'focused'));
|
|
||||||
},
|
|
||||||
|
|
||||||
'blur.bootstrapSwitch': function blurBootstrapSwitch(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
_this4.$wrapper.removeClass(prvgetClass.call(_this4, 'focused'));
|
|
||||||
},
|
|
||||||
|
|
||||||
'keydown.bootstrapSwitch': function keydownBootstrapSwitch(event) {
|
|
||||||
if (!event.which || _this4.options.disabled || _this4.options.readonly) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (event.which === 37 || event.which === 39) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopImmediatePropagation();
|
|
||||||
_this4.state(event.which === 39);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvhandleHandlers() {
|
|
||||||
var _this5 = this;
|
|
||||||
|
|
||||||
this.$on.on('click.bootstrapSwitch', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
_this5.state(false);
|
|
||||||
return _this5.$element.trigger('focus.bootstrapSwitch');
|
|
||||||
});
|
|
||||||
return this.$off.on('click.bootstrapSwitch', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
_this5.state(true);
|
|
||||||
return _this5.$element.trigger('focus.bootstrapSwitch');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvlabelHandlers() {
|
|
||||||
var _this6 = this;
|
|
||||||
|
|
||||||
var dragStart = void 0;
|
|
||||||
var dragEnd = void 0;
|
|
||||||
var handlers = {
|
|
||||||
click: function click(event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
'mousedown.bootstrapSwitch touchstart.bootstrapSwitch': function mousedownBootstrapSwitchTouchstartBootstrapSwitch(event) {
|
|
||||||
if (dragStart || _this6.options.disabled || _this6.options.readonly) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
dragStart = (event.pageX || event.originalEvent.touches[0].pageX) - parseInt(_this6.$container.css('margin-left'), 10);
|
|
||||||
if (_this6.options.animate) {
|
|
||||||
_this6.$wrapper.removeClass(prvgetClass.call(_this6, 'animate'));
|
|
||||||
}
|
|
||||||
_this6.$element.trigger('focus.bootstrapSwitch');
|
|
||||||
},
|
|
||||||
|
|
||||||
'mousemove.bootstrapSwitch touchmove.bootstrapSwitch': function mousemoveBootstrapSwitchTouchmoveBootstrapSwitch(event) {
|
|
||||||
if (dragStart == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var difference = (event.pageX || event.originalEvent.touches[0].pageX) - dragStart;
|
|
||||||
event.preventDefault();
|
|
||||||
if (difference < -_this6.privateHandleWidth || difference > 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dragEnd = difference;
|
|
||||||
_this6.$container.css('margin-left', dragEnd + 'px');
|
|
||||||
},
|
|
||||||
|
|
||||||
'mouseup.bootstrapSwitch touchend.bootstrapSwitch': function mouseupBootstrapSwitchTouchendBootstrapSwitch(event) {
|
|
||||||
if (!dragStart) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
event.preventDefault();
|
|
||||||
if (_this6.options.animate) {
|
|
||||||
_this6.$wrapper.addClass(prvgetClass.call(_this6, 'animate'));
|
|
||||||
}
|
|
||||||
if (dragEnd) {
|
|
||||||
var state = dragEnd > -(_this6.privateHandleWidth / 2);
|
|
||||||
dragEnd = false;
|
|
||||||
_this6.state(_this6.options.inverse ? !state : state);
|
|
||||||
} else {
|
|
||||||
_this6.state(!_this6.options.state);
|
|
||||||
}
|
|
||||||
dragStart = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
'mouseleave.bootstrapSwitch': function mouseleaveBootstrapSwitch() {
|
|
||||||
_this6.$label.trigger('mouseup.bootstrapSwitch');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
this.$label.on(handlers);
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvexternalLabelHandler() {
|
|
||||||
var _this7 = this;
|
|
||||||
|
|
||||||
var $externalLabel = this.$element.closest('label');
|
|
||||||
$externalLabel.on('click', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopImmediatePropagation();
|
|
||||||
if (event.target === $externalLabel[0]) {
|
|
||||||
_this7.toggleState();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvformHandler() {
|
|
||||||
function isBootstrapSwitch() {
|
|
||||||
return $(this).data('bootstrap-switch');
|
|
||||||
}
|
|
||||||
|
|
||||||
function performReset() {
|
|
||||||
return $(this).bootstrapSwitch('state', this.checked);
|
|
||||||
}
|
|
||||||
|
|
||||||
var $form = this.$element.closest('form');
|
|
||||||
if ($form.data('bootstrap-switch')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$form.on('reset.bootstrapSwitch', function () {
|
|
||||||
window.setTimeout(function () {
|
|
||||||
$form.find('input').filter(isBootstrapSwitch).each(performReset);
|
|
||||||
}, 1);
|
|
||||||
}).data('bootstrap-switch', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function prvgetClasses(classes) {
|
|
||||||
var _this8 = this;
|
|
||||||
|
|
||||||
if (!$.isArray(classes)) {
|
|
||||||
return [prvgetClass.call(this, classes)];
|
|
||||||
}
|
|
||||||
return classes.map(function (v) {
|
|
||||||
return prvgetClass.call(_this8, v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var BootstrapSwitch = function () {
|
|
||||||
function BootstrapSwitch(element) {
|
|
||||||
var _this9 = this;
|
|
||||||
|
|
||||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
||||||
|
|
||||||
_classCallCheck(this, BootstrapSwitch);
|
|
||||||
|
|
||||||
this.$element = $(element);
|
|
||||||
this.options = $.extend({}, $.fn.bootstrapSwitch.defaults, prvgetElementOptions.call(this), options);
|
|
||||||
this.prevOptions = {};
|
|
||||||
this.$wrapper = $('<div>', {
|
|
||||||
class: function _class() {
|
|
||||||
return getClasses(_this9.options, _this9.$element.attr('id')).map(function (v) {
|
|
||||||
return prvgetClass.call(_this9, v);
|
|
||||||
}).concat([_this9.options.baseClass], prvgetClasses.call(_this9, _this9.options.wrapperClass)).join(' ');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.$container = $('<div>', { class: prvgetClass.call(this, 'container') });
|
|
||||||
this.$on = $('<span>', {
|
|
||||||
html: this.options.onText,
|
|
||||||
class: prvgetClass.call(this, 'handle-on') + ' ' + prvgetClass.call(this, this.options.onColor)
|
|
||||||
});
|
|
||||||
this.$off = $('<span>', {
|
|
||||||
html: this.options.offText,
|
|
||||||
class: prvgetClass.call(this, 'handle-off') + ' ' + prvgetClass.call(this, this.options.offColor)
|
|
||||||
});
|
|
||||||
this.$label = $('<span>', {
|
|
||||||
html: this.options.labelText,
|
|
||||||
class: prvgetClass.call(this, 'label')
|
|
||||||
});
|
|
||||||
|
|
||||||
this.$element.on('init.bootstrapSwitch', function () {
|
|
||||||
return _this9.options.onInit(element);
|
|
||||||
});
|
|
||||||
this.$element.on('switchChange.bootstrapSwitch', function () {
|
|
||||||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
||||||
args[_key] = arguments[_key];
|
|
||||||
}
|
|
||||||
|
|
||||||
var changeState = _this9.options.onSwitchChange.apply(element, args);
|
|
||||||
if (changeState === false) {
|
|
||||||
if (_this9.$element.is(':radio')) {
|
|
||||||
$('[name="' + _this9.$element.attr('name') + '"]').trigger('previousState.bootstrapSwitch', true);
|
|
||||||
} else {
|
|
||||||
_this9.$element.trigger('previousState.bootstrapSwitch', true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
if (this.options.indeterminate) {
|
|
||||||
this.$element.prop('indeterminate', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
prvinit.call(this);
|
|
||||||
prvelementHandlers.call(this);
|
|
||||||
prvhandleHandlers.call(this);
|
|
||||||
prvlabelHandlers.call(this);
|
|
||||||
prvformHandler.call(this);
|
|
||||||
prvexternalLabelHandler.call(this);
|
|
||||||
this.$element.trigger('init.bootstrapSwitch', this.options.state);
|
|
||||||
}
|
|
||||||
|
|
||||||
_createClass(BootstrapSwitch, [{
|
|
||||||
key: 'setPrevOptions',
|
|
||||||
value: function setPrevOptions() {
|
|
||||||
this.prevOptions = _extends({}, this.options);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'state',
|
|
||||||
value: function state(value, skip) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.state;
|
|
||||||
}
|
|
||||||
if (this.options.disabled || this.options.readonly || this.options.state && !this.options.radioAllOff && this.$element.is(':radio')) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
if (this.$element.is(':radio')) {
|
|
||||||
$('[name="' + this.$element.attr('name') + '"]').trigger('setPreviousOptions.bootstrapSwitch');
|
|
||||||
} else {
|
|
||||||
this.$element.trigger('setPreviousOptions.bootstrapSwitch');
|
|
||||||
}
|
|
||||||
if (this.options.indeterminate) {
|
|
||||||
this.indeterminate(false);
|
|
||||||
}
|
|
||||||
this.$element.prop('checked', Boolean(value)).trigger('change.bootstrapSwitch', skip);
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'toggleState',
|
|
||||||
value: function toggleState(skip) {
|
|
||||||
if (this.options.disabled || this.options.readonly) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
if (this.options.indeterminate) {
|
|
||||||
this.indeterminate(false);
|
|
||||||
return this.state(true);
|
|
||||||
}
|
|
||||||
return this.$element.prop('checked', !this.options.state).trigger('change.bootstrapSwitch', skip);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'size',
|
|
||||||
value: function size(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.size;
|
|
||||||
}
|
|
||||||
if (this.options.size != null) {
|
|
||||||
this.$wrapper.removeClass(prvgetClass.call(this, this.options.size));
|
|
||||||
}
|
|
||||||
if (value) {
|
|
||||||
this.$wrapper.addClass(prvgetClass.call(this, value));
|
|
||||||
}
|
|
||||||
prvwidth.call(this);
|
|
||||||
prvcontainerPosition.call(this);
|
|
||||||
this.options.size = value;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'animate',
|
|
||||||
value: function animate(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.animate;
|
|
||||||
}
|
|
||||||
if (this.options.animate === Boolean(value)) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
return this.toggleAnimate();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'toggleAnimate',
|
|
||||||
value: function toggleAnimate() {
|
|
||||||
this.options.animate = !this.options.animate;
|
|
||||||
this.$wrapper.toggleClass(prvgetClass.call(this, 'animate'));
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'disabled',
|
|
||||||
value: function disabled(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.disabled;
|
|
||||||
}
|
|
||||||
if (this.options.disabled === Boolean(value)) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
return this.toggleDisabled();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'toggleDisabled',
|
|
||||||
value: function toggleDisabled() {
|
|
||||||
this.options.disabled = !this.options.disabled;
|
|
||||||
this.$element.prop('disabled', this.options.disabled);
|
|
||||||
this.$wrapper.toggleClass(prvgetClass.call(this, 'disabled'));
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'readonly',
|
|
||||||
value: function readonly(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.readonly;
|
|
||||||
}
|
|
||||||
if (this.options.readonly === Boolean(value)) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
return this.toggleReadonly();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'toggleReadonly',
|
|
||||||
value: function toggleReadonly() {
|
|
||||||
this.options.readonly = !this.options.readonly;
|
|
||||||
this.$element.prop('readonly', this.options.readonly);
|
|
||||||
this.$wrapper.toggleClass(prvgetClass.call(this, 'readonly'));
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'indeterminate',
|
|
||||||
value: function indeterminate(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.indeterminate;
|
|
||||||
}
|
|
||||||
if (this.options.indeterminate === Boolean(value)) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
return this.toggleIndeterminate();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'toggleIndeterminate',
|
|
||||||
value: function toggleIndeterminate() {
|
|
||||||
this.options.indeterminate = !this.options.indeterminate;
|
|
||||||
this.$element.prop('indeterminate', this.options.indeterminate);
|
|
||||||
this.$wrapper.toggleClass(prvgetClass.call(this, 'indeterminate'));
|
|
||||||
prvcontainerPosition.call(this);
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'inverse',
|
|
||||||
value: function inverse(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.inverse;
|
|
||||||
}
|
|
||||||
if (this.options.inverse === Boolean(value)) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
return this.toggleInverse();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'toggleInverse',
|
|
||||||
value: function toggleInverse() {
|
|
||||||
this.$wrapper.toggleClass(prvgetClass.call(this, 'inverse'));
|
|
||||||
var $on = this.$on.clone(true);
|
|
||||||
var $off = this.$off.clone(true);
|
|
||||||
this.$on.replaceWith($off);
|
|
||||||
this.$off.replaceWith($on);
|
|
||||||
this.$on = $off;
|
|
||||||
this.$off = $on;
|
|
||||||
this.options.inverse = !this.options.inverse;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'onColor',
|
|
||||||
value: function onColor(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.onColor;
|
|
||||||
}
|
|
||||||
if (this.options.onColor) {
|
|
||||||
this.$on.removeClass(prvgetClass.call(this, this.options.onColor));
|
|
||||||
}
|
|
||||||
this.$on.addClass(prvgetClass.call(this, value));
|
|
||||||
this.options.onColor = value;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'offColor',
|
|
||||||
value: function offColor(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.offColor;
|
|
||||||
}
|
|
||||||
if (this.options.offColor) {
|
|
||||||
this.$off.removeClass(prvgetClass.call(this, this.options.offColor));
|
|
||||||
}
|
|
||||||
this.$off.addClass(prvgetClass.call(this, value));
|
|
||||||
this.options.offColor = value;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'onText',
|
|
||||||
value: function onText(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.onText;
|
|
||||||
}
|
|
||||||
this.$on.html(value);
|
|
||||||
prvwidth.call(this);
|
|
||||||
prvcontainerPosition.call(this);
|
|
||||||
this.options.onText = value;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'offText',
|
|
||||||
value: function offText(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.offText;
|
|
||||||
}
|
|
||||||
this.$off.html(value);
|
|
||||||
prvwidth.call(this);
|
|
||||||
prvcontainerPosition.call(this);
|
|
||||||
this.options.offText = value;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'labelText',
|
|
||||||
value: function labelText(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.labelText;
|
|
||||||
}
|
|
||||||
this.$label.html(value);
|
|
||||||
prvwidth.call(this);
|
|
||||||
this.options.labelText = value;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'handleWidth',
|
|
||||||
value: function handleWidth(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.handleWidth;
|
|
||||||
}
|
|
||||||
this.options.handleWidth = value;
|
|
||||||
prvwidth.call(this);
|
|
||||||
prvcontainerPosition.call(this);
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'labelWidth',
|
|
||||||
value: function labelWidth(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.labelWidth;
|
|
||||||
}
|
|
||||||
this.options.labelWidth = value;
|
|
||||||
prvwidth.call(this);
|
|
||||||
prvcontainerPosition.call(this);
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'baseClass',
|
|
||||||
value: function baseClass() {
|
|
||||||
return this.options.baseClass;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'wrapperClass',
|
|
||||||
value: function wrapperClass(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.wrapperClass;
|
|
||||||
}
|
|
||||||
var wrapperClass = value || $.fn.bootstrapSwitch.defaults.wrapperClass;
|
|
||||||
this.$wrapper.removeClass(prvgetClasses.call(this, this.options.wrapperClass).join(' '));
|
|
||||||
this.$wrapper.addClass(prvgetClasses.call(this, wrapperClass).join(' '));
|
|
||||||
this.options.wrapperClass = wrapperClass;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'radioAllOff',
|
|
||||||
value: function radioAllOff(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.radioAllOff;
|
|
||||||
}
|
|
||||||
var val = Boolean(value);
|
|
||||||
if (this.options.radioAllOff === val) {
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
this.options.radioAllOff = val;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'onInit',
|
|
||||||
value: function onInit(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.onInit;
|
|
||||||
}
|
|
||||||
this.options.onInit = value || $.fn.bootstrapSwitch.defaults.onInit;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'onSwitchChange',
|
|
||||||
value: function onSwitchChange(value) {
|
|
||||||
if (typeof value === 'undefined') {
|
|
||||||
return this.options.onSwitchChange;
|
|
||||||
}
|
|
||||||
this.options.onSwitchChange = value || $.fn.bootstrapSwitch.defaults.onSwitchChange;
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'destroy',
|
|
||||||
value: function destroy() {
|
|
||||||
var $form = this.$element.closest('form');
|
|
||||||
if ($form.length) {
|
|
||||||
$form.off('reset.bootstrapSwitch').removeData('bootstrap-switch');
|
|
||||||
}
|
|
||||||
this.$container.children().not(this.$element).remove();
|
|
||||||
this.$element.unwrap().unwrap().off('.bootstrapSwitch').removeData('bootstrap-switch');
|
|
||||||
return this.$element;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return BootstrapSwitch;
|
|
||||||
}();
|
|
||||||
|
|
||||||
function bootstrapSwitch(option) {
|
|
||||||
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
||||||
args[_key2 - 1] = arguments[_key2];
|
|
||||||
}
|
|
||||||
|
|
||||||
function reducer(ret, next) {
|
|
||||||
var $this = $(next);
|
|
||||||
var existingData = $this.data('bootstrap-switch');
|
|
||||||
var data = existingData || new BootstrapSwitch(next, option);
|
|
||||||
if (!existingData) {
|
|
||||||
$this.data('bootstrap-switch', data);
|
|
||||||
}
|
|
||||||
if (typeof option === 'string') {
|
|
||||||
return data[option].apply(data, args);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return Array.prototype.reduce.call(this, reducer, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.bootstrapSwitch = bootstrapSwitch;
|
|
||||||
$.fn.bootstrapSwitch.Constructor = BootstrapSwitch;
|
|
||||||
$.fn.bootstrapSwitch.defaults = {
|
|
||||||
state: true,
|
|
||||||
size: null,
|
|
||||||
animate: true,
|
|
||||||
disabled: false,
|
|
||||||
readonly: false,
|
|
||||||
indeterminate: false,
|
|
||||||
inverse: false,
|
|
||||||
radioAllOff: false,
|
|
||||||
onColor: 'primary',
|
|
||||||
offColor: 'default',
|
|
||||||
onText: 'ON',
|
|
||||||
offText: 'OFF',
|
|
||||||
labelText: ' ',
|
|
||||||
handleWidth: 'auto',
|
|
||||||
labelWidth: 'auto',
|
|
||||||
baseClass: 'bootstrap-switch',
|
|
||||||
wrapperClass: 'wrapper',
|
|
||||||
onInit: function onInit() {},
|
|
||||||
onSwitchChange: function onSwitchChange() {}
|
|
||||||
};
|
|
||||||
});
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,87 +0,0 @@
|
|||||||
/*
|
|
||||||
* Bootstrap Duallistbox - v4.0.1
|
|
||||||
* 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: 50%;
|
|
||||||
box-sizing: content-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bootstrap-duallistbox-container .btn-group .btn {
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
}
|
|
||||||
.bootstrap-duallistbox-container:not(.moveonselect) select {
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
border-top-right-radius: 0;
|
|
||||||
}
|
|
||||||
.bootstrap-duallistbox-container .moveall,
|
|
||||||
.bootstrap-duallistbox-container .removeall {
|
|
||||||
width: 50%;
|
|
||||||
box-sizing: content-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.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 0;
|
|
||||||
-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%;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
.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:50%;box-sizing:content-box}.bootstrap-duallistbox-container .btn-group .btn{border-bottom-left-radius:0;border-bottom-right-radius:0}.bootstrap-duallistbox-container:not(.moveonselect) select{border-top-left-radius:0;border-top-right-radius:0}.bootstrap-duallistbox-container .moveall,.bootstrap-duallistbox-container .removeall{width:50%;box-sizing:content-box}.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 0;-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%}
|
|
@ -1,890 +0,0 @@
|
|||||||
/*
|
|
||||||
* Bootstrap Duallistbox - v4.0.1
|
|
||||||
* 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(factory) {
|
|
||||||
if (typeof define === 'function' && define.amd) {
|
|
||||||
define(['jquery'], factory);
|
|
||||||
} else if (typeof module === 'object' && module.exports) {
|
|
||||||
module.exports = function(root, jQuery) {
|
|
||||||
if (jQuery === undefined) {
|
|
||||||
if (typeof window !== 'undefined') {
|
|
||||||
jQuery = require('jquery');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
jQuery = require('jquery')(root);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
factory(jQuery);
|
|
||||||
return jQuery;
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
factory(jQuery);
|
|
||||||
}
|
|
||||||
}(function($) {
|
|
||||||
// Create the defaults once
|
|
||||||
var pluginName = 'bootstrapDualListbox',
|
|
||||||
defaults = {
|
|
||||||
filterTextClear: 'show all',
|
|
||||||
filterPlaceHolder: 'Filter',
|
|
||||||
moveSelectedLabel: 'Move selected',
|
|
||||||
moveAllLabel: 'Move all',
|
|
||||||
removeSelectedLabel: 'Remove selected',
|
|
||||||
removeAllLabel: 'Remove all',
|
|
||||||
moveOnSelect: true, // true/false (forced true on androids, see the comment later)
|
|
||||||
moveOnDoubleClick: true, // true/false (forced false on androids, cause moveOnSelect is forced to true)
|
|
||||||
preserveSelectionOnMove: false, // 'all' / 'moved' / false
|
|
||||||
selectedListLabel: false, // 'string', false
|
|
||||||
nonSelectedListLabel: false, // 'string', false
|
|
||||||
helperSelectNamePostfix: '_helper', // 'string_of_postfix' / false
|
|
||||||
selectorMinimalHeight: 100,
|
|
||||||
showFilterInputs: true, // whether to show filter inputs
|
|
||||||
nonSelectedFilter: '', // string, filter the non selected options
|
|
||||||
selectedFilter: '', // string, filter the selected options
|
|
||||||
infoText: 'Showing all {0}', // text when all options are visible / false for no info text
|
|
||||||
infoTextFiltered: '<span class="badge badge-warning">Filtered</span> {0} from {1}', // when not all of the options are visible due to the filter
|
|
||||||
infoTextEmpty: 'Empty list', // when there are no options present in the list
|
|
||||||
filterOnValues: false, // filter by selector's values, boolean
|
|
||||||
sortByInputOrder: false,
|
|
||||||
eventMoveOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead
|
|
||||||
eventMoveAllOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead
|
|
||||||
eventRemoveOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead
|
|
||||||
eventRemoveAllOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead
|
|
||||||
btnClass: 'btn-outline-secondary', // sets the button style class for all the buttons
|
|
||||||
btnMoveText: '>', // string, sets the text for the "Move" button
|
|
||||||
btnRemoveText: '<', // string, sets the text for the "Remove" button
|
|
||||||
btnMoveAllText: '>>', // string, sets the text for the "Move All" button
|
|
||||||
btnRemoveAllText: '<<' // string, sets the text for the "Remove All" button
|
|
||||||
},
|
|
||||||
// Selections are invisible on android if the containing select is styled with CSS
|
|
||||||
// http://code.google.com/p/android/issues/detail?id=16922
|
|
||||||
isBuggyAndroid = /android/i.test(navigator.userAgent.toLowerCase());
|
|
||||||
|
|
||||||
// The actual plugin constructor
|
|
||||||
function BootstrapDualListbox(element, options) {
|
|
||||||
this.element = $(element);
|
|
||||||
// jQuery has an extend method which merges the contents of two or
|
|
||||||
// more objects, storing the result in the first object. The first object
|
|
||||||
// is generally empty as we don't want to alter the default options for
|
|
||||||
// future instances of the plugin
|
|
||||||
this.settings = $.extend({}, defaults, options);
|
|
||||||
this._defaults = defaults;
|
|
||||||
this._name = pluginName;
|
|
||||||
this.init();
|
|
||||||
}
|
|
||||||
|
|
||||||
function triggerChangeEvent(dualListbox) {
|
|
||||||
dualListbox.element.trigger('change');
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateSelectionStates(dualListbox) {
|
|
||||||
dualListbox.element.find('option').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if (typeof($item.data('original-index')) === 'undefined') {
|
|
||||||
$item.data('original-index', dualListbox.elementCount++);
|
|
||||||
}
|
|
||||||
if (typeof($item.data('_selected')) === 'undefined') {
|
|
||||||
$item.data('_selected', false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function changeSelectionState(dualListbox, original_index, selected) {
|
|
||||||
dualListbox.element.find('option').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if ($item.data('original-index') === original_index) {
|
|
||||||
$item.prop('selected', selected);
|
|
||||||
if(selected){
|
|
||||||
$item.attr('data-sortindex', dualListbox.sortIndex);
|
|
||||||
dualListbox.sortIndex++;
|
|
||||||
} else {
|
|
||||||
$item.removeAttr('data-sortindex');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatString(s, args) {
|
|
||||||
console.log(s, args);
|
|
||||||
return s.replace(/{(\d+)}/g, function(match, number) {
|
|
||||||
return typeof args[number] !== 'undefined' ? args[number] : match;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function refreshInfo(dualListbox) {
|
|
||||||
if (!dualListbox.settings.infoText) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var visible1 = dualListbox.elements.select1.find('option').length,
|
|
||||||
visible2 = dualListbox.elements.select2.find('option').length,
|
|
||||||
all1 = dualListbox.element.find('option').length - dualListbox.selectedElements,
|
|
||||||
all2 = dualListbox.selectedElements,
|
|
||||||
content = '';
|
|
||||||
|
|
||||||
if (all1 === 0) {
|
|
||||||
content = dualListbox.settings.infoTextEmpty;
|
|
||||||
} else if (visible1 === all1) {
|
|
||||||
content = formatString(dualListbox.settings.infoText, [visible1, all1]);
|
|
||||||
} else {
|
|
||||||
content = formatString(dualListbox.settings.infoTextFiltered, [visible1, all1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.elements.info1.html(content);
|
|
||||||
dualListbox.elements.box1.toggleClass('filtered', !(visible1 === all1 || all1 === 0));
|
|
||||||
|
|
||||||
if (all2 === 0) {
|
|
||||||
content = dualListbox.settings.infoTextEmpty;
|
|
||||||
} else if (visible2 === all2) {
|
|
||||||
content = formatString(dualListbox.settings.infoText, [visible2, all2]);
|
|
||||||
} else {
|
|
||||||
content = formatString(dualListbox.settings.infoTextFiltered, [visible2, all2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.elements.info2.html(content);
|
|
||||||
dualListbox.elements.box2.toggleClass('filtered', !(visible2 === all2 || all2 === 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
function refreshSelects(dualListbox) {
|
|
||||||
dualListbox.selectedElements = 0;
|
|
||||||
|
|
||||||
dualListbox.elements.select1.empty();
|
|
||||||
dualListbox.elements.select2.empty();
|
|
||||||
|
|
||||||
dualListbox.element.find('option').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if ($item.prop('selected')) {
|
|
||||||
dualListbox.selectedElements++;
|
|
||||||
dualListbox.elements.select2.append($item.clone(true).prop('selected', $item.data('_selected')));
|
|
||||||
} else {
|
|
||||||
dualListbox.elements.select1.append($item.clone(true).prop('selected', $item.data('_selected')));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (dualListbox.settings.showFilterInputs) {
|
|
||||||
filter(dualListbox, 1);
|
|
||||||
filter(dualListbox, 2);
|
|
||||||
}
|
|
||||||
refreshInfo(dualListbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
function filter(dualListbox, selectIndex) {
|
|
||||||
if (!dualListbox.settings.showFilterInputs) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
saveSelections(dualListbox, selectIndex);
|
|
||||||
|
|
||||||
dualListbox.elements['select'+selectIndex].empty().scrollTop(0);
|
|
||||||
var regex,
|
|
||||||
allOptions = dualListbox.element.find('option'),
|
|
||||||
options = dualListbox.element;
|
|
||||||
|
|
||||||
if (selectIndex === 1) {
|
|
||||||
options = allOptions.not(':selected');
|
|
||||||
} else {
|
|
||||||
options = options.find('option:selected');
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
regex = new RegExp($.trim(dualListbox.elements['filterInput'+selectIndex].val()), 'gi');
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
// a regex to match nothing
|
|
||||||
regex = new RegExp('/a^/', 'gi');
|
|
||||||
}
|
|
||||||
|
|
||||||
options.each(function(index, item) {
|
|
||||||
var $item = $(item),
|
|
||||||
isFiltered = true;
|
|
||||||
if (item.text.match(regex) || (dualListbox.settings.filterOnValues && $item.attr('value').match(regex) ) ) {
|
|
||||||
isFiltered = false;
|
|
||||||
dualListbox.elements['select'+selectIndex].append($item.clone(true).prop('selected', $item.data('_selected')));
|
|
||||||
}
|
|
||||||
allOptions.eq($item.data('original-index')).data('filtered'+selectIndex, isFiltered);
|
|
||||||
});
|
|
||||||
|
|
||||||
refreshInfo(dualListbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
function saveSelections(dualListbox, selectIndex) {
|
|
||||||
var options = dualListbox.element.find('option');
|
|
||||||
dualListbox.elements['select'+selectIndex].find('option').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
options.eq($item.data('original-index')).data('_selected', $item.prop('selected'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function sortOptionsByInputOrder(select){
|
|
||||||
var selectopt = select.children('option');
|
|
||||||
|
|
||||||
selectopt.sort(function(a,b){
|
|
||||||
var an = parseInt(a.getAttribute('data-sortindex')),
|
|
||||||
bn = parseInt(b.getAttribute('data-sortindex'));
|
|
||||||
|
|
||||||
if(an > bn) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if(an < bn) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
selectopt.detach().appendTo(select);
|
|
||||||
}
|
|
||||||
|
|
||||||
function sortOptions(select) {
|
|
||||||
select.find('option').sort(function(a, b) {
|
|
||||||
return ($(a).data('original-index') > $(b).data('original-index')) ? 1 : -1;
|
|
||||||
}).appendTo(select);
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearSelections(dualListbox) {
|
|
||||||
dualListbox.elements.select1.find('option').each(function() {
|
|
||||||
dualListbox.element.find('option').data('_selected', false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function move(dualListbox) {
|
|
||||||
if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 1);
|
|
||||||
saveSelections(dualListbox, 2);
|
|
||||||
} else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.elements.select1.find('option:selected').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if (!$item.data('filtered1')) {
|
|
||||||
changeSelectionState(dualListbox, $item.data('original-index'), true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
refreshSelects(dualListbox);
|
|
||||||
triggerChangeEvent(dualListbox);
|
|
||||||
if(dualListbox.settings.sortByInputOrder){
|
|
||||||
sortOptionsByInputOrder(dualListbox.elements.select2);
|
|
||||||
} else {
|
|
||||||
sortOptions(dualListbox.elements.select2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove(dualListbox) {
|
|
||||||
if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 1);
|
|
||||||
saveSelections(dualListbox, 2);
|
|
||||||
} else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.elements.select2.find('option:selected').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if (!$item.data('filtered2')) {
|
|
||||||
changeSelectionState(dualListbox, $item.data('original-index'), false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
refreshSelects(dualListbox);
|
|
||||||
triggerChangeEvent(dualListbox);
|
|
||||||
sortOptions(dualListbox.elements.select1);
|
|
||||||
if(dualListbox.settings.sortByInputOrder){
|
|
||||||
sortOptionsByInputOrder(dualListbox.elements.select2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveAll(dualListbox) {
|
|
||||||
if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 1);
|
|
||||||
saveSelections(dualListbox, 2);
|
|
||||||
} else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.element.find('option').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if (!$item.data('filtered1')) {
|
|
||||||
$item.prop('selected', true);
|
|
||||||
$item.attr('data-sortindex', dualListbox.sortIndex);
|
|
||||||
dualListbox.sortIndex++;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
refreshSelects(dualListbox);
|
|
||||||
triggerChangeEvent(dualListbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeAll(dualListbox) {
|
|
||||||
if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 1);
|
|
||||||
saveSelections(dualListbox, 2);
|
|
||||||
} else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
|
|
||||||
saveSelections(dualListbox, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.element.find('option').each(function(index, item) {
|
|
||||||
var $item = $(item);
|
|
||||||
if (!$item.data('filtered2')) {
|
|
||||||
$item.prop('selected', false);
|
|
||||||
$item.removeAttr('data-sortindex');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
refreshSelects(dualListbox);
|
|
||||||
triggerChangeEvent(dualListbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
function bindEvents(dualListbox) {
|
|
||||||
dualListbox.elements.form.submit(function(e) {
|
|
||||||
if (dualListbox.elements.filterInput1.is(':focus')) {
|
|
||||||
e.preventDefault();
|
|
||||||
dualListbox.elements.filterInput1.focusout();
|
|
||||||
} else if (dualListbox.elements.filterInput2.is(':focus')) {
|
|
||||||
e.preventDefault();
|
|
||||||
dualListbox.elements.filterInput2.focusout();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dualListbox.element.on('bootstrapDualListbox.refresh', function(e, mustClearSelections){
|
|
||||||
dualListbox.refresh(mustClearSelections);
|
|
||||||
});
|
|
||||||
|
|
||||||
dualListbox.elements.filterClear1.on('click', function() {
|
|
||||||
dualListbox.setNonSelectedFilter('', true);
|
|
||||||
});
|
|
||||||
|
|
||||||
dualListbox.elements.filterClear2.on('click', function() {
|
|
||||||
dualListbox.setSelectedFilter('', true);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (dualListbox.settings.eventMoveOverride === false) {
|
|
||||||
dualListbox.elements.moveButton.on('click', function() {
|
|
||||||
move(dualListbox);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dualListbox.settings.eventMoveAllOverride === false) {
|
|
||||||
dualListbox.elements.moveAllButton.on('click', function() {
|
|
||||||
moveAll(dualListbox);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dualListbox.settings.eventRemoveOverride === false) {
|
|
||||||
dualListbox.elements.removeButton.on('click', function() {
|
|
||||||
remove(dualListbox);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dualListbox.settings.eventRemoveAllOverride === false) {
|
|
||||||
dualListbox.elements.removeAllButton.on('click', function() {
|
|
||||||
removeAll(dualListbox);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
dualListbox.elements.filterInput1.on('change keyup', function() {
|
|
||||||
filter(dualListbox, 1);
|
|
||||||
});
|
|
||||||
|
|
||||||
dualListbox.elements.filterInput2.on('change keyup', function() {
|
|
||||||
filter(dualListbox, 2);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
BootstrapDualListbox.prototype = {
|
|
||||||
init: function () {
|
|
||||||
// Add the custom HTML template
|
|
||||||
this.container = $('' +
|
|
||||||
'<div class="bootstrap-duallistbox-container row">' +
|
|
||||||
' <div class="box1 col-md-6">' +
|
|
||||||
' <label></label>' +
|
|
||||||
' <span class="info-container">' +
|
|
||||||
' <span class="info"></span>' +
|
|
||||||
' <button type="button" class="btn btn-sm clear1" style="float:right!important;"></button>' +
|
|
||||||
' </span>' +
|
|
||||||
' <input class="form-control filter" type="text">' +
|
|
||||||
' <div class="btn-group buttons">' +
|
|
||||||
' <button type="button" class="btn moveall"></button>' +
|
|
||||||
' <button type="button" class="btn move"></button>' +
|
|
||||||
' </div>' +
|
|
||||||
' <select multiple="multiple"></select>' +
|
|
||||||
' </div>' +
|
|
||||||
' <div class="box2 col-md-6">' +
|
|
||||||
' <label></label>' +
|
|
||||||
' <span class="info-container">' +
|
|
||||||
' <span class="info"></span>' +
|
|
||||||
' <button type="button" class="btn btn-sm clear2" style="float:right!important;"></button>' +
|
|
||||||
' </span>' +
|
|
||||||
' <input class="form-control filter" type="text">' +
|
|
||||||
' <div class="btn-group buttons">' +
|
|
||||||
' <button type="button" class="btn remove"></button>' +
|
|
||||||
' <button type="button" class="btn removeall"></button>' +
|
|
||||||
' </div>' +
|
|
||||||
' <select multiple="multiple"></select>' +
|
|
||||||
' </div>' +
|
|
||||||
'</div>')
|
|
||||||
.insertBefore(this.element);
|
|
||||||
|
|
||||||
// Cache the inner elements
|
|
||||||
this.elements = {
|
|
||||||
originalSelect: this.element,
|
|
||||||
box1: $('.box1', this.container),
|
|
||||||
box2: $('.box2', this.container),
|
|
||||||
filterInput1: $('.box1 .filter', this.container),
|
|
||||||
filterInput2: $('.box2 .filter', this.container),
|
|
||||||
filterClear1: $('.box1 .clear1', this.container),
|
|
||||||
filterClear2: $('.box2 .clear2', this.container),
|
|
||||||
label1: $('.box1 > label', this.container),
|
|
||||||
label2: $('.box2 > label', this.container),
|
|
||||||
info1: $('.box1 .info', this.container),
|
|
||||||
info2: $('.box2 .info', this.container),
|
|
||||||
select1: $('.box1 select', this.container),
|
|
||||||
select2: $('.box2 select', this.container),
|
|
||||||
moveButton: $('.box1 .move', this.container),
|
|
||||||
removeButton: $('.box2 .remove', this.container),
|
|
||||||
moveAllButton: $('.box1 .moveall', this.container),
|
|
||||||
removeAllButton: $('.box2 .removeall', this.container),
|
|
||||||
form: $($('.box1 .filter', this.container)[0].form)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Set select IDs
|
|
||||||
this.originalSelectName = this.element.attr('name') || '';
|
|
||||||
var select1Id = 'bootstrap-duallistbox-nonselected-list_' + this.originalSelectName,
|
|
||||||
select2Id = 'bootstrap-duallistbox-selected-list_' + this.originalSelectName;
|
|
||||||
this.elements.select1.attr('id', select1Id);
|
|
||||||
this.elements.select2.attr('id', select2Id);
|
|
||||||
this.elements.label1.attr('for', select1Id);
|
|
||||||
this.elements.label2.attr('for', select2Id);
|
|
||||||
|
|
||||||
// Apply all settings
|
|
||||||
this.selectedElements = 0;
|
|
||||||
this.sortIndex = 0;
|
|
||||||
this.elementCount = 0;
|
|
||||||
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.setMoveOnDoubleClick(this.settings.moveOnDoubleClick);
|
|
||||||
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);
|
|
||||||
|
|
||||||
updateSelectionStates(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.setSortByInputOrder(this.settings.sortByInputOrder);
|
|
||||||
this.setEventMoveOverride(this.settings.eventMoveOverride);
|
|
||||||
this.setEventMoveAllOverride(this.settings.eventMoveAllOverride);
|
|
||||||
this.setEventRemoveOverride(this.settings.eventRemoveOverride);
|
|
||||||
this.setEventRemoveAllOverride(this.settings.eventRemoveAllOverride);
|
|
||||||
this.setBtnClass(this.settings.btnClass);
|
|
||||||
this.setBtnMoveText(this.settings.btnMoveText);
|
|
||||||
this.setBtnRemoveText(this.settings.btnRemoveText);
|
|
||||||
this.setBtnMoveAllText(this.settings.btnMoveAllText);
|
|
||||||
this.setBtnRemoveAllText(this.settings.btnRemoveAllText);
|
|
||||||
|
|
||||||
// Hide the original select
|
|
||||||
this.element.hide();
|
|
||||||
|
|
||||||
bindEvents(this);
|
|
||||||
refreshSelects(this);
|
|
||||||
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setFilterTextClear: function(value, refresh) {
|
|
||||||
this.settings.filterTextClear = value;
|
|
||||||
this.elements.filterClear1.html(value);
|
|
||||||
this.elements.filterClear2.html(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setFilterPlaceHolder: function(value, refresh) {
|
|
||||||
this.settings.filterPlaceHolder = value;
|
|
||||||
this.elements.filterInput1.attr('placeholder', value);
|
|
||||||
this.elements.filterInput2.attr('placeholder', value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setMoveSelectedLabel: function(value, refresh) {
|
|
||||||
this.settings.moveSelectedLabel = value;
|
|
||||||
this.elements.moveButton.attr('title', value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setMoveAllLabel: function(value, refresh) {
|
|
||||||
this.settings.moveAllLabel = value;
|
|
||||||
this.elements.moveAllButton.attr('title', value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setRemoveSelectedLabel: function(value, refresh) {
|
|
||||||
this.settings.removeSelectedLabel = value;
|
|
||||||
this.elements.removeButton.attr('title', value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setRemoveAllLabel: function(value, refresh) {
|
|
||||||
this.settings.removeAllLabel = value;
|
|
||||||
this.elements.removeAllButton.attr('title', value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setMoveOnSelect: function(value, refresh) {
|
|
||||||
if (isBuggyAndroid) {
|
|
||||||
value = true;
|
|
||||||
}
|
|
||||||
this.settings.moveOnSelect = value;
|
|
||||||
if (this.settings.moveOnSelect) {
|
|
||||||
this.container.addClass('moveonselect');
|
|
||||||
var self = this;
|
|
||||||
this.elements.select1.on('change', function() {
|
|
||||||
move(self);
|
|
||||||
});
|
|
||||||
this.elements.select2.on('change', function() {
|
|
||||||
remove(self);
|
|
||||||
});
|
|
||||||
this.elements.moveButton.detach();
|
|
||||||
this.elements.removeButton.detach();
|
|
||||||
} else {
|
|
||||||
this.container.removeClass('moveonselect');
|
|
||||||
this.elements.select1.off('change');
|
|
||||||
this.elements.select2.off('change');
|
|
||||||
this.elements.moveButton.insertAfter(this.elements.moveAllButton);
|
|
||||||
this.elements.removeButton.insertBefore(this.elements.removeAllButton);
|
|
||||||
}
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setMoveOnDoubleClick: function(value, refresh) {
|
|
||||||
if (isBuggyAndroid) {
|
|
||||||
value = false;
|
|
||||||
}
|
|
||||||
this.settings.moveOnDoubleClick = value;
|
|
||||||
if (this.settings.moveOnDoubleClick) {
|
|
||||||
this.container.addClass('moveondoubleclick');
|
|
||||||
var self = this;
|
|
||||||
this.elements.select1.on('dblclick', function() {
|
|
||||||
move(self);
|
|
||||||
});
|
|
||||||
this.elements.select2.on('dblclick', function() {
|
|
||||||
remove(self);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.container.removeClass('moveondoubleclick');
|
|
||||||
this.elements.select1.off('dblclick');
|
|
||||||
this.elements.select2.off('dblclick');
|
|
||||||
}
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setPreserveSelectionOnMove: function(value, refresh) {
|
|
||||||
// We are forcing to move on select and disabling preserveSelectionOnMove on Android
|
|
||||||
if (isBuggyAndroid) {
|
|
||||||
value = false;
|
|
||||||
}
|
|
||||||
this.settings.preserveSelectionOnMove = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setSelectedListLabel: function(value, refresh) {
|
|
||||||
this.settings.selectedListLabel = value;
|
|
||||||
if (value) {
|
|
||||||
this.elements.label2.show().html(value);
|
|
||||||
} else {
|
|
||||||
this.elements.label2.hide().html(value);
|
|
||||||
}
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setNonSelectedListLabel: function(value, refresh) {
|
|
||||||
this.settings.nonSelectedListLabel = value;
|
|
||||||
if (value) {
|
|
||||||
this.elements.label1.show().html(value);
|
|
||||||
} else {
|
|
||||||
this.elements.label1.hide().html(value);
|
|
||||||
}
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setHelperSelectNamePostfix: function(value, refresh) {
|
|
||||||
this.settings.helperSelectNamePostfix = value;
|
|
||||||
if (value) {
|
|
||||||
this.elements.select1.attr('name', this.originalSelectName + value + '1');
|
|
||||||
this.elements.select2.attr('name', this.originalSelectName + value + '2');
|
|
||||||
} else {
|
|
||||||
this.elements.select1.removeAttr('name');
|
|
||||||
this.elements.select2.removeAttr('name');
|
|
||||||
}
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setSelectOrMinimalHeight: function(value, refresh) {
|
|
||||||
this.settings.selectorMinimalHeight = value;
|
|
||||||
var height = this.element.height();
|
|
||||||
if (this.element.height() < value) {
|
|
||||||
height = value;
|
|
||||||
}
|
|
||||||
this.elements.select1.height(height);
|
|
||||||
this.elements.select2.height(height);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setShowFilterInputs: function(value, refresh) {
|
|
||||||
if (!value) {
|
|
||||||
this.setNonSelectedFilter('');
|
|
||||||
this.setSelectedFilter('');
|
|
||||||
refreshSelects(this);
|
|
||||||
this.elements.filterInput1.hide();
|
|
||||||
this.elements.filterInput2.hide();
|
|
||||||
} else {
|
|
||||||
this.elements.filterInput1.show();
|
|
||||||
this.elements.filterInput2.show();
|
|
||||||
}
|
|
||||||
this.settings.showFilterInputs = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setNonSelectedFilter: function(value, refresh) {
|
|
||||||
if (this.settings.showFilterInputs) {
|
|
||||||
this.settings.nonSelectedFilter = value;
|
|
||||||
this.elements.filterInput1.val(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setSelectedFilter: function(value, refresh) {
|
|
||||||
if (this.settings.showFilterInputs) {
|
|
||||||
this.settings.selectedFilter = value;
|
|
||||||
this.elements.filterInput2.val(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setInfoText: function(value, refresh) {
|
|
||||||
this.settings.infoText = value;
|
|
||||||
if (value) {
|
|
||||||
this.elements.info1.show();
|
|
||||||
this.elements.info2.show();
|
|
||||||
} else {
|
|
||||||
this.elements.info1.hide();
|
|
||||||
this.elements.info2.hide();
|
|
||||||
}
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setInfoTextFiltered: function(value, refresh) {
|
|
||||||
this.settings.infoTextFiltered = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setInfoTextEmpty: function(value, refresh) {
|
|
||||||
this.settings.infoTextEmpty = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setFilterOnValues: function(value, refresh) {
|
|
||||||
this.settings.filterOnValues = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setSortByInputOrder: function(value, refresh){
|
|
||||||
this.settings.sortByInputOrder = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setEventMoveOverride: function(value, refresh) {
|
|
||||||
this.settings.eventMoveOverride = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setEventMoveAllOverride: function(value, refresh) {
|
|
||||||
this.settings.eventMoveAllOverride = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setEventRemoveOverride: function(value, refresh) {
|
|
||||||
this.settings.eventRemoveOverride = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setEventRemoveAllOverride: function(value, refresh) {
|
|
||||||
this.settings.eventRemoveAllOverride = value;
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setBtnClass: function(value, refresh) {
|
|
||||||
this.settings.btnClass = value;
|
|
||||||
this.elements.moveButton.attr('class', 'btn move').addClass(value);
|
|
||||||
this.elements.removeButton.attr('class', 'btn remove').addClass(value);
|
|
||||||
this.elements.moveAllButton.attr('class', 'btn moveall').addClass(value);
|
|
||||||
this.elements.removeAllButton.attr('class', 'btn removeall').addClass(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setBtnMoveText: function(value, refresh) {
|
|
||||||
this.settings.btnMoveText = value;
|
|
||||||
this.elements.moveButton.html(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setBtnRemoveText: function(value, refresh) {
|
|
||||||
this.settings.btnMoveText = value;
|
|
||||||
this.elements.removeButton.html(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setBtnMoveAllText: function(value, refresh) {
|
|
||||||
this.settings.btnMoveText = value;
|
|
||||||
this.elements.moveAllButton.html(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
setBtnRemoveAllText: function(value, refresh) {
|
|
||||||
this.settings.btnMoveText = value;
|
|
||||||
this.elements.removeAllButton.html(value);
|
|
||||||
if (refresh) {
|
|
||||||
refreshSelects(this);
|
|
||||||
}
|
|
||||||
return this.element;
|
|
||||||
},
|
|
||||||
getContainer: function() {
|
|
||||||
return this.container;
|
|
||||||
},
|
|
||||||
refresh: function(mustClearSelections) {
|
|
||||||
updateSelectionStates(this);
|
|
||||||
|
|
||||||
if (!mustClearSelections) {
|
|
||||||
saveSelections(this, 1);
|
|
||||||
saveSelections(this, 2);
|
|
||||||
} else {
|
|
||||||
clearSelections(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshSelects(this);
|
|
||||||
},
|
|
||||||
destroy: function() {
|
|
||||||
this.container.remove();
|
|
||||||
this.element.show();
|
|
||||||
$.data(this, 'plugin_' + pluginName, null);
|
|
||||||
return this.element;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// A really lightweight plugin wrapper around the constructor,
|
|
||||||
// preventing against multiple instantiations
|
|
||||||
$.fn[ pluginName ] = function (options) {
|
|
||||||
var args = arguments;
|
|
||||||
|
|
||||||
// Is the first parameter an object (options), or was omitted, instantiate a new instance of the plugin.
|
|
||||||
if (options === undefined || typeof options === 'object') {
|
|
||||||
return this.each(function () {
|
|
||||||
// If this is not a select
|
|
||||||
if (!$(this).is('select')) {
|
|
||||||
$(this).find('select').each(function(index, item) {
|
|
||||||
// For each nested select, instantiate the Dual List Box
|
|
||||||
$(item).bootstrapDualListbox(options);
|
|
||||||
});
|
|
||||||
} else if (!$.data(this, 'plugin_' + pluginName)) {
|
|
||||||
// Only allow the plugin to be instantiated once so we check that the element has no plugin instantiation yet
|
|
||||||
|
|
||||||
// if it has no instance, create a new one, pass options to our plugin constructor,
|
|
||||||
// and store the plugin instance in the elements jQuery data object.
|
|
||||||
$.data(this, 'plugin_' + pluginName, new BootstrapDualListbox(this, options));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// If the first parameter is a string and it doesn't start with an underscore or "contains" the `init`-function,
|
|
||||||
// treat this as a call to a public method.
|
|
||||||
} else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
|
|
||||||
|
|
||||||
// Cache the method call to make it possible to return a value
|
|
||||||
var returns;
|
|
||||||
|
|
||||||
this.each(function () {
|
|
||||||
var instance = $.data(this, 'plugin_' + pluginName);
|
|
||||||
// Tests that there's already a plugin-instance and checks that the requested public method exists
|
|
||||||
if (instance instanceof BootstrapDualListbox && typeof instance[options] === 'function') {
|
|
||||||
// Call the method of our plugin instance, and pass it the supplied arguments.
|
|
||||||
returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// If the earlier cached method gives a value back return the value,
|
|
||||||
// otherwise return this to preserve chainability.
|
|
||||||
return returns !== undefined ? returns : this;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}));
|
|
File diff suppressed because one or more lines are too long
@ -1,167 +0,0 @@
|
|||||||
/*!
|
|
||||||
* bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)
|
|
||||||
* Copyright 2018 - 2019 Johann-S <johann.servoire@gmail.com>
|
|
||||||
* Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
(function (global, factory) {
|
|
||||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
||||||
typeof define === 'function' && define.amd ? define(factory) :
|
|
||||||
(global = global || self, global.bsCustomFileInput = factory());
|
|
||||||
}(this, function () { 'use strict';
|
|
||||||
|
|
||||||
var Selector = {
|
|
||||||
CUSTOMFILE: '.custom-file input[type="file"]',
|
|
||||||
CUSTOMFILELABEL: '.custom-file-label',
|
|
||||||
FORM: 'form',
|
|
||||||
INPUT: 'input'
|
|
||||||
};
|
|
||||||
|
|
||||||
var textNodeType = 3;
|
|
||||||
|
|
||||||
var getDefaultText = function getDefaultText(input) {
|
|
||||||
var defaultText = '';
|
|
||||||
var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);
|
|
||||||
|
|
||||||
if (label) {
|
|
||||||
defaultText = label.innerHTML;
|
|
||||||
}
|
|
||||||
|
|
||||||
return defaultText;
|
|
||||||
};
|
|
||||||
|
|
||||||
var findFirstChildNode = function findFirstChildNode(element) {
|
|
||||||
if (element.childNodes.length > 0) {
|
|
||||||
var childNodes = [].slice.call(element.childNodes);
|
|
||||||
|
|
||||||
for (var i = 0; i < childNodes.length; i++) {
|
|
||||||
var node = childNodes[i];
|
|
||||||
|
|
||||||
if (node.nodeType !== textNodeType) {
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return element;
|
|
||||||
};
|
|
||||||
|
|
||||||
var restoreDefaultText = function restoreDefaultText(input) {
|
|
||||||
var defaultText = input.bsCustomFileInput.defaultText;
|
|
||||||
var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);
|
|
||||||
|
|
||||||
if (label) {
|
|
||||||
var element = findFirstChildNode(label);
|
|
||||||
element.innerHTML = defaultText;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var fileApi = !!window.File;
|
|
||||||
var FAKE_PATH = 'fakepath';
|
|
||||||
var FAKE_PATH_SEPARATOR = '\\';
|
|
||||||
|
|
||||||
var getSelectedFiles = function getSelectedFiles(input) {
|
|
||||||
if (input.hasAttribute('multiple') && fileApi) {
|
|
||||||
return [].slice.call(input.files).map(function (file) {
|
|
||||||
return file.name;
|
|
||||||
}).join(', ');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (input.value.indexOf(FAKE_PATH) !== -1) {
|
|
||||||
var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);
|
|
||||||
return splittedValue[splittedValue.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
return input.value;
|
|
||||||
};
|
|
||||||
|
|
||||||
function handleInputChange() {
|
|
||||||
var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);
|
|
||||||
|
|
||||||
if (label) {
|
|
||||||
var element = findFirstChildNode(label);
|
|
||||||
var inputValue = getSelectedFiles(this);
|
|
||||||
|
|
||||||
if (inputValue.length) {
|
|
||||||
element.innerHTML = inputValue;
|
|
||||||
} else {
|
|
||||||
restoreDefaultText(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleFormReset() {
|
|
||||||
var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {
|
|
||||||
return !!input.bsCustomFileInput;
|
|
||||||
});
|
|
||||||
|
|
||||||
for (var i = 0, len = customFileList.length; i < len; i++) {
|
|
||||||
restoreDefaultText(customFileList[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var customProperty = 'bsCustomFileInput';
|
|
||||||
var Event = {
|
|
||||||
FORMRESET: 'reset',
|
|
||||||
INPUTCHANGE: 'change'
|
|
||||||
};
|
|
||||||
var bsCustomFileInput = {
|
|
||||||
init: function init(inputSelector, formSelector) {
|
|
||||||
if (inputSelector === void 0) {
|
|
||||||
inputSelector = Selector.CUSTOMFILE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (formSelector === void 0) {
|
|
||||||
formSelector = Selector.FORM;
|
|
||||||
}
|
|
||||||
|
|
||||||
var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));
|
|
||||||
var formList = [].slice.call(document.querySelectorAll(formSelector));
|
|
||||||
|
|
||||||
for (var i = 0, len = customFileInputList.length; i < len; i++) {
|
|
||||||
var input = customFileInputList[i];
|
|
||||||
Object.defineProperty(input, customProperty, {
|
|
||||||
value: {
|
|
||||||
defaultText: getDefaultText(input)
|
|
||||||
},
|
|
||||||
writable: true
|
|
||||||
});
|
|
||||||
handleInputChange.call(input);
|
|
||||||
input.addEventListener(Event.INPUTCHANGE, handleInputChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var _i = 0, _len = formList.length; _i < _len; _i++) {
|
|
||||||
formList[_i].addEventListener(Event.FORMRESET, handleFormReset);
|
|
||||||
|
|
||||||
Object.defineProperty(formList[_i], customProperty, {
|
|
||||||
value: true,
|
|
||||||
writable: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
destroy: function destroy() {
|
|
||||||
var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {
|
|
||||||
return !!form.bsCustomFileInput;
|
|
||||||
});
|
|
||||||
var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {
|
|
||||||
return !!input.bsCustomFileInput;
|
|
||||||
});
|
|
||||||
|
|
||||||
for (var i = 0, len = customFileInputList.length; i < len; i++) {
|
|
||||||
var input = customFileInputList[i];
|
|
||||||
restoreDefaultText(input);
|
|
||||||
input[customProperty] = undefined;
|
|
||||||
input.removeEventListener(Event.INPUTCHANGE, handleInputChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {
|
|
||||||
formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);
|
|
||||||
|
|
||||||
formList[_i2][customProperty] = undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return bsCustomFileInput;
|
|
||||||
|
|
||||||
}));
|
|
||||||
//# sourceMappingURL=bs-custom-file-input.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,7 +0,0 @@
|
|||||||
/*!
|
|
||||||
* bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)
|
|
||||||
* Copyright 2018 - 2019 Johann-S <johann.servoire@gmail.com>
|
|
||||||
* Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).bsCustomFileInput=t()}(this,function(){"use strict";var d={CUSTOMFILE:'.custom-file input[type="file"]',CUSTOMFILELABEL:".custom-file-label",FORM:"form",INPUT:"input"},r=function(e){if(0<e.childNodes.length)for(var t=[].slice.call(e.childNodes),n=0;n<t.length;n++){var r=t[n];if(3!==r.nodeType)return r}return e},u=function(e){var t=e.bsCustomFileInput.defaultText,n=e.parentNode.querySelector(d.CUSTOMFILELABEL);n&&(r(n).innerHTML=t)},n=!!window.File,l=function(e){if(e.hasAttribute("multiple")&&n)return[].slice.call(e.files).map(function(e){return e.name}).join(", ");if(-1===e.value.indexOf("fakepath"))return e.value;var t=e.value.split("\\");return t[t.length-1]};function v(){var e=this.parentNode.querySelector(d.CUSTOMFILELABEL);if(e){var t=r(e),n=l(this);n.length?t.innerHTML=n:u(this)}}function p(){for(var e=[].slice.call(this.querySelectorAll(d.INPUT)).filter(function(e){return!!e.bsCustomFileInput}),t=0,n=e.length;t<n;t++)u(e[t])}var m="bsCustomFileInput",L="reset",h="change";return{init:function(e,t){void 0===e&&(e=d.CUSTOMFILE),void 0===t&&(t=d.FORM);for(var n,r,l,i=[].slice.call(document.querySelectorAll(e)),o=[].slice.call(document.querySelectorAll(t)),u=0,c=i.length;u<c;u++){var f=i[u];Object.defineProperty(f,m,{value:{defaultText:(n=f,r=void 0,void 0,r="",l=n.parentNode.querySelector(d.CUSTOMFILELABEL),l&&(r=l.innerHTML),r)},writable:!0}),v.call(f),f.addEventListener(h,v)}for(var a=0,s=o.length;a<s;a++)o[a].addEventListener(L,p),Object.defineProperty(o[a],m,{value:!0,writable:!0})},destroy:function(){for(var e=[].slice.call(document.querySelectorAll(d.FORM)).filter(function(e){return!!e.bsCustomFileInput}),t=[].slice.call(document.querySelectorAll(d.INPUT)).filter(function(e){return!!e.bsCustomFileInput}),n=0,r=t.length;n<r;n++){var l=t[n];u(l),l[m]=void 0,l.removeEventListener(h,v)}for(var i=0,o=e.length;i<o;i++)e[i].removeEventListener(L,p),e[i][m]=void 0}}});
|
|
||||||
//# sourceMappingURL=bs-custom-file-input.min.js.map
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user