mirror of
https://github.com/fspc/Yellow-Bike-Database.git
synced 2025-04-04 09:33:24 -04:00
Compare commits
No commits in common. "devel" and "v1.0" have entirely different histories.
15
.gitignore
vendored
15
.gitignore
vendored
@ -1,15 +0,0 @@
|
||||
*~
|
||||
*swp
|
||||
csv/*
|
||||
js/chosen
|
||||
js/nouislider
|
||||
CBDB/
|
||||
php-console/
|
||||
examples/cert.pem
|
||||
Connections/local_configurations.php
|
||||
js/PickMeUp-2.8.0/
|
||||
json/shop.php
|
||||
sql/populate-private.sql
|
||||
stats/dhhr.php
|
||||
temp/
|
||||
test.php
|
@ -1,6 +1,4 @@
|
||||
<?php
|
||||
// DO NOT EDIT - USE Connections/local_configurations instead
|
||||
|
||||
# FileName="Connection_php_mysql.htm"
|
||||
# Type="MYSQL"
|
||||
# HTTP="true"
|
||||
@ -8,8 +6,5 @@ $hostname_YBDB = "enter_hostname";
|
||||
$database_YBDB = "enter_schema";
|
||||
$username_YBDB = "enter_username";
|
||||
$password_YBDB = "enter_password";
|
||||
if(file_exists( realpath($_SERVER["DOCUMENT_ROOT"]) . "/Connections/local_configurations.php")) {
|
||||
require_once('local_configurations.php');
|
||||
}
|
||||
$YBDB = mysql_pconnect($hostname_YBDB, $username_YBDB, $password_YBDB) or trigger_error(mysql_error(),E_USER_ERROR);
|
||||
$YBDB = mysql_pconnect($hostname_YBDB, $username_YBDB, $password_YBDB) or trigger_error(mysql_error(),E_USER_ERROR);
|
||||
?>
|
||||
|
@ -1,10 +1,7 @@
|
||||
<?php
|
||||
require_once('YBDB.php');
|
||||
require_once('YBDB.php');
|
||||
|
||||
|
||||
// DO NOT EDIT - USE Connections/local_configurations.php instead with definitions between
|
||||
// <?php (no space between ? and >) ? >
|
||||
|
||||
/*
|
||||
Choose your timezone from http://php.net/manual/en/timezones.php
|
||||
|
||||
@ -18,139 +15,31 @@ require_once('YBDB.php');
|
||||
Hawaii no DST ..... Pacific/Honolulu
|
||||
|
||||
*/
|
||||
if( !defined( 'TIMEZONE' ) ) define("TIMEZONE", "America/New_York");
|
||||
define("TIMEZONE", "America/New_York");
|
||||
|
||||
/***
|
||||
DHCP
|
||||
****/
|
||||
// The public IP address of the device which has opened a shop determines the ownership of that shop.
|
||||
// In that way, more than one shop can run without conflicting with each other from different locations.
|
||||
// However, in some cases the IP changes frequently due to DHCP during a 24hr shop.
|
||||
// Definitions:
|
||||
// default (use full IP address assigned)
|
||||
// or
|
||||
// Enter the numbers that defines a Class (A|B|C) Network, eg. 73.79;
|
||||
// 73.79 would match a Class B network with an IP range of 73.79.*.*
|
||||
// For additional info, read https://www.webopedia.com/DidYouKnow/Internet/IPaddressing.asp
|
||||
if( !defined( 'IP' ) ) define("IP", "default");
|
||||
|
||||
/*********
|
||||
MEMBERSHIP
|
||||
**********/
|
||||
// Define when a volunteer becomes a member based hours and days for the calendar year vs a paid membership
|
||||
// This can also be used as a metric.
|
||||
/*
|
||||
At Positive Spin
|
||||
Actual memberships begin on the day they are purchased
|
||||
Memberships - $60/year
|
||||
Memberships include unlimited access to an available work stand during open shop hours and a 10% discount on new parts.
|
||||
*/
|
||||
|
||||
// Needs to volunteer at least this amount of defined hours before being considered a member
|
||||
// Note: used only as a metric for reports
|
||||
if( !defined( 'MEMBERSHIP_HOURS' ) ) define("MEMBERSHIP_HOURS",8);
|
||||
// Needs to volunteer at least this amount of defined hours before being considered a member
|
||||
define("MEMBERSHIP_HOURS",8);
|
||||
|
||||
// Needs to volunteer at least this number of days before being considered a member
|
||||
// Note: used only as a metric for reports
|
||||
if( !defined( 'MEMBERSHIP_DAYS' ) ) define("MEMBERSHIP_DAYS",2);
|
||||
define("MEMBERSHIP_DAYS",2);
|
||||
|
||||
// Define how long a patron remains a member if they purchase a membership.
|
||||
if( !defined( 'PURCHASED_MEMBERSHIP_DAYS' ) ) define("PURCHASED_MEMBERSHIP_DAYS",365);
|
||||
|
||||
// Define discount for paid members (applies when volunteer benefits do not)
|
||||
if( !defined( 'MEMBERSHIP_DISCOUNT' ) ) define("MEMBERSHIP_DISCOUNT",10); // PERCENTAGE
|
||||
|
||||
/*********
|
||||
STAND TIME
|
||||
**********/
|
||||
// Determines the hourly cost for Stand Time (transaction_type_id)
|
||||
if( !defined( 'STAND_TIME_HOURLY_RATE' ) ) define("STAND_TIME_HOURLY_RATE",10); // IN DOLLARS
|
||||
|
||||
// Define how much time over 1hr is allowed before charging for the next hour.
|
||||
if( !defined( 'STAND_TIME_GRACE_PERIOD' ) ) define("STAND_TIME_GRACE_PERIOD",15); // IN MINUTES 1 - 59
|
||||
|
||||
// Define how many free days of stand time are allotted after purchase of a bike
|
||||
if( !defined( 'FREE_STAND_TIME_PERIOD' ) ) define("FREE_STAND_TIME_PERIOD",30); // IN DAYS
|
||||
|
||||
/********************************
|
||||
SWEAT EQUITY / VOLUNTEER BENEFITS
|
||||
*********************************/
|
||||
// For example:
|
||||
// The settings below are specific to Positive Spin Policies
|
||||
// Calendar Year = January 1 .. December 31 (366 for leap years)
|
||||
/*
|
||||
These hours can only be used to purchase used parts, bicycles and stand time.
|
||||
|
||||
Volunteers may only purchase one bike with volunteer hours per calendar year.
|
||||
|
||||
If you would like to spend more than $100 in volunteer hours during a calendar year,
|
||||
75% of every dollar spent over $100 must be paid for with cash/credit card/check/etc
|
||||
for volunteers who have volunteered fewer than 100 hours. For volunteers who have
|
||||
donated more than 100 hours of their time in the past 365 days, this match can be reduced to 50%.
|
||||
|
||||
(Sweat Equity / Volunteer Benefits can't be combined with Membership Benefits.)
|
||||
|
||||
*/
|
||||
if( !defined( 'SWEAT_EQUITY_LIMIT' ) ) define("SWEAT_EQUITY_LIMIT",100); // IN DOLLARS
|
||||
if( !defined( 'MAX_BIKE_EARNED' ) ) define("MAX_BIKE_EARNED",1); // AMOUNT OF BIKES
|
||||
if( !defined( 'VOLUNTEER_HOUR_VALUE' ) ) define("VOLUNTEER_HOUR_VALUE",8); // IN DOLLARS
|
||||
if( !defined( 'VOLUNTEER_DISCOUNT' ) ) define("VOLUNTEER_DISCOUNT",25); // PERCENTAGE
|
||||
if( !defined( 'SPECIAL_VOLUNTEER_HOURS_QUALIFICATION' ) ) define("SPECIAL_VOLUNTEER_HOURS_QUALIFICATION",100); // IN HOURS
|
||||
if( !defined( 'SPECIAL_VOLUNTEER_DISCOUNT' ) ) define("SPECIAL_VOLUNTEER_DISCOUNT",50); // PERCENTAGE
|
||||
|
||||
// Customized sweat equity limit per contact_id
|
||||
// e.g. for sweat equity limit of $200 for contact_id 500: array(500 => 200)
|
||||
$custom_sweat_equity_limit = array();
|
||||
|
||||
// Determine if stand time behaviour will be based on the SWEAT_EQUITY_LIMIT with discounts applied,
|
||||
// or 1 to 1 (1hr of volunteering === 1hr of free stand time) regardless of the SWEAT_EQUITY_LIMIT
|
||||
define("REDEEM_ONE_TO_ONE", true);
|
||||
|
||||
// Map transaction_type_id for transaction to benefits;
|
||||
// Bicycles and Stand Time are special transaction types for volunteers, but they should still be mapped if benefits are desired.
|
||||
$transactions_with_volunteer_benefits = array( "Bicycles" => true,
|
||||
"Stand Time" => true,
|
||||
"Used Parts" => true
|
||||
);
|
||||
|
||||
// Volunteer benefits take priority over membership benefits if patron qualifies for both
|
||||
$transactions_with_membership_benefits = array( "Stand Time" => true,
|
||||
"Used Parts" => true,
|
||||
"New Parts" => true,
|
||||
"Helmets" => true,
|
||||
"Cargo Related" => true,
|
||||
"Car Racks" => true
|
||||
);
|
||||
|
||||
/*********
|
||||
BANNED IDS
|
||||
**********/
|
||||
|
||||
// Ban those pesky individuals who continually refuse to follow policies and safer space agreements by contact_id
|
||||
$banned_individuals = array();
|
||||
|
||||
/************
|
||||
PROBATION IDS
|
||||
************/
|
||||
|
||||
// Put individuals under probation by contact_id. Probation could be used for a variety of scenarios,
|
||||
// an individual who may potentially become banned, or who has been deemed as worthy of coming out of a ban,
|
||||
// or someone who IOU's volunteer time for a bike they earned (generally, people should not be allowed to do
|
||||
// this in the first place), etc.
|
||||
$probation_individuals = array();
|
||||
|
||||
/*******
|
||||
CONTACTS
|
||||
********/
|
||||
|
||||
// Allow waiver (recommended) in Add/Edit Contacts; 1 = yes, 0 = no
|
||||
// Waiver text may be modified in Connections/waiver.txt
|
||||
if( !defined( 'WAIVER' ) ) define("WAIVER", 1);
|
||||
|
||||
if( !defined( 'WAIVER_LABEL' ) ) define("WAIVER_LABEL","Waiver of Liability and Safer Spaces Agreement:");
|
||||
define("WAIVER", 1);
|
||||
|
||||
// Allow email_list option in Add/Edit Contacts; 1 = yes, 0 = no
|
||||
if( !defined( 'EMAIL_LIST' ) ) define("EMAIL_LIST", 1);
|
||||
define("EMAIL_LIST", 1);
|
||||
|
||||
// Define a url for an email connector that will connect to an email list.
|
||||
// The url can be a server:port, program, etc.
|
||||
@ -159,20 +48,20 @@ if( !defined( 'EMAIL_LIST' ) ) define("EMAIL_LIST", 1);
|
||||
// The purpose of email connectors is to provide autonomy in the choice
|
||||
// of email services and programs. E.g. mailman, googlegroups
|
||||
// See ./examples for an example mailman connector
|
||||
if( !defined( 'EMAIL_LIST_CONNECTOR' ) ) define("EMAIL_LIST_CONNECTOR","https://wvcompletestreets.org:9987");
|
||||
define("EMAIL_LIST_CONNECTOR","https://wvcompletestreets.org:9987");
|
||||
|
||||
// Define the password that is unique to the connector.
|
||||
if( !defined( 'EMAIL_LIST_CONNECTOR_PASSWORD' ) ) define("EMAIL_LIST_CONNECTOR_PASSWORD","bikebike");
|
||||
define("EMAIL_LIST_CONNECTOR_PASSWORD","bikebike");
|
||||
|
||||
// If a self-signed ssl certificate that is associated with the email connector is being provided,
|
||||
// designate an absolute path, if not, change to false.
|
||||
if( !defined( 'SSL_CERTIFICATE' ) ) define("SSL_CERTIFICATE", "/var/www/html/examples/cert.pem");
|
||||
define("SSL_CERTIFICATE", "/var/www/html/examples/cert.pem");
|
||||
|
||||
//// "Volunteer Interest" form ////
|
||||
if( !defined( 'VOLUNTEER_INTEREST_FORM' ) ) define("VOLUNTEER_INTEREST_FORM", true);
|
||||
define("VOLUNTEER_INTEREST_FORM", true);
|
||||
|
||||
// Form name
|
||||
if( !defined( 'VOLUNTEER_INTEREST_FORM_NAME' ) ) define("VOLUNTEER_INTEREST_FORM_NAME","Volunteer Interests");
|
||||
define("VOLUNTEER_INTEREST_FORM_NAME","Volunteer Interests");
|
||||
|
||||
// NOTE: Introductory text can be modified in Connections/volunteer_interest_form_introduction.txt
|
||||
|
||||
@ -194,7 +83,7 @@ $volunteer_interests = array(
|
||||
);
|
||||
|
||||
// Provide a comment box - true of false
|
||||
if( !defined( 'VOLUNTEER_INTEREST_COMMENTS' ) ) define("VOLUNTEER_INTEREST_COMMENTS", true);
|
||||
define("VOLUNTEER_INTEREST_COMMENTS", true);
|
||||
|
||||
// NOTE: The 2 variables ($volunteer_interest_changename & $volunteer_interests_deletename)
|
||||
// below allow you to change or delete an interest.
|
||||
@ -227,40 +116,37 @@ TRANSACTIONS
|
||||
************/
|
||||
|
||||
// User defined constants - read sql/populate.sql for an explanation
|
||||
if( !defined( 'STORAGE_PERIOD' ) ) define("STORAGE_PERIOD", 14);
|
||||
if( !defined( 'ACCOUNTING_GROUP' ) ) define("ACCOUNTING_GROUP", "Sales");
|
||||
if( !defined( 'DEFAULT_TRANSACTION_TYPE' ) ) define("DEFAULT_TRANSACTION_TYPE", "Sale - Used Parts");
|
||||
define("STORAGE_PERIOD", 14);
|
||||
define("ACCOUNTING_GROUP", "Sales");
|
||||
define("DEFAULT_TRANSACTION_TYPE", "Sale - Used Parts");
|
||||
|
||||
// shop_user_role
|
||||
if( !defined( 'DEFAULT_SHOP_USER' ) ) define("DEFAULT_SHOP_USER", "Stand Time");
|
||||
define("DEFAULT_SHOP_USER", "Personal");
|
||||
|
||||
/* Change Fund - A specific amount of money for the purpose of making change.
|
||||
The amount on hand should remain the same at all times;
|
||||
therefore a change funds does not require replenishment.
|
||||
*/
|
||||
if( !defined( 'CHANGE_FUND' ) ) define("CHANGE_FUND", 20);
|
||||
define("CHANGE_FUND", 20);
|
||||
|
||||
// How many hours should the shop be open from the time a person logins? Hours display in pulldown in shop_log.php
|
||||
// No overtime for volunteers. :)
|
||||
// shop will be current shop for the 24hr day yyyy-mm-dd (currently no check for hrs, only date)
|
||||
if( !defined( 'SHOP_HOURS_LENGTH' ) ) define("SHOP_HOURS_LENGTH", 10);
|
||||
define("SHOP_HOURS_LENGTH", 10);
|
||||
|
||||
// What minute interval should be displayed for list_time()? In other words, the time_in and time_out pulldown lists.
|
||||
// choose an interval that is divisible by 60 minutes, 1, 5, 15, 30 etc.
|
||||
if( !defined( 'LIST_MINUTE_INTERVAL' ) ) define("LIST_MINUTE_INTERVAL", 1);
|
||||
|
||||
/* If you elect to keep records for non-shop hours, decide which shop should be used for that purpose.
|
||||
The first shop created, 1, makes sense. A link will show in start_shop.php.
|
||||
If you do not want this functionality at all, choose 0.
|
||||
*/
|
||||
if( !defined( 'NONSHOP' ) ) define("NONSHOP", 0);
|
||||
define("NONSHOP", 0);
|
||||
|
||||
// How many transactions do you want shown by default
|
||||
if( !defined( 'NUMBER_OF_TRANSACTIONS' ) ) define("NUMBER_OF_TRANSACTIONS", 11);
|
||||
define("NUMBER_OF_TRANSACTIONS", 11);
|
||||
|
||||
|
||||
// Define csv directory (see directions below for creating it)
|
||||
if( !defined( 'CSV_DIRECTORY' ) ) define("CSV_DIRECTORY","csv");
|
||||
define("CSV_DIRECTORY","csv");
|
||||
|
||||
// Make a directory to store csv accounting files. Currently used for GnuCash format.
|
||||
// Assuming the root of the website, and directory is called csv, and a Debian-based distribution:
|
||||
@ -270,7 +156,7 @@ if( !defined( 'CSV_DIRECTORY' ) ) define("CSV_DIRECTORY","csv");
|
||||
|
||||
|
||||
// Define array mapping for Accounts. Usually Asset Accounts since Income is generally the main type of transaction.
|
||||
// Currently there are four types of accounts with checking and credit being supported (working): checking, credit, account_receivable, donation
|
||||
// Currently four types of accounts are supported: checking, credit, account_receivable, donation
|
||||
// checking/credit = transaction has been 1) paid and is 2) cash & check [checking] or a credit card [credit] and 3) deposited
|
||||
// note: checking type may include $0 transactions, e.g. earn-a-bike
|
||||
// account_receivable = there is an 1). account receivable invoice and it has been 2) paid and 3) deposited
|
||||
@ -294,79 +180,24 @@ $gnucash_accounts = array( "Assets:Current Assets:Checking Account" => "checking
|
||||
// Note: Remote shops function independently via their IP identification.
|
||||
//
|
||||
// Normally, you will want this set at 0.
|
||||
if( !defined( 'SHOW_SHOP_ID' ) ) define('SHOW_SHOP_ID',0);
|
||||
|
||||
/*************
|
||||
ETHERPAD LITE
|
||||
**************/
|
||||
// Allow comments/feedback/notes to be added per individual_history_log in reports,
|
||||
// and globally in shop_log. An etherpad host has to be defined for this to work.
|
||||
// See wiki for instructions on how to setup an etherpad docker instance or just go to
|
||||
// https://github.com/fspc/etherpad-and-draw-node-alpine
|
||||
//
|
||||
// prefix allows you to set a prefix to the name of the autogenerated padId:
|
||||
// etherpad = prefix + "pad_contact_id_" + contact_id;
|
||||
// etherpad_global = prefix_ + "global_pad"
|
||||
// See https://github.com/ether/etherpad-lite-jquery-plugin for information about other configurations.
|
||||
$etherpad = array(
|
||||
"host" => "",
|
||||
"userName" => "PositiveSpin",
|
||||
"noColors" => true,
|
||||
"height" => "75%",
|
||||
"plugins" => array()
|
||||
);
|
||||
|
||||
$etherpad_global = array(
|
||||
"host" => "",
|
||||
"userName" => "PositiveSpin",
|
||||
"noColors" => true,
|
||||
"height" => "100%",
|
||||
"plugins" => array()
|
||||
);
|
||||
|
||||
// END OF USER DEFINED CONFIGURATIONS
|
||||
|
||||
|
||||
if(file_exists( realpath($_SERVER["DOCUMENT_ROOT"]) . "/Connections/local_configurations.php")) {
|
||||
require('local_configurations.php');
|
||||
}
|
||||
define('SHOW_SHOP_ID',0);
|
||||
|
||||
// other constants
|
||||
if( !defined( 'PAGE_START_SHOP' ) ) define("PAGE_START_SHOP", "/start_shop.php");
|
||||
if( !defined( 'PAGE_SHOP_LOG' ) ) define("PAGE_SHOP_LOG", "/shop_log.php");
|
||||
if( !defined( 'PAGE_EDIT_CONTACT' ) ) define("PAGE_EDIT_CONTACT", "/contact_add_edit.php");
|
||||
if( !defined( 'PAGE_SELECT_CONTACT' ) ) define("PAGE_SELECT_CONTACT", "/contact_add_edit_select.php");
|
||||
if( !defined( 'PAGE_SHOP_LOG_DELETE_VISIT' ) ) define("PAGE_SHOP_LOG_DELETE_VISIT", "/shop_log_delete_shopvisitid.php");
|
||||
if( !defined( 'INDIVIDUAL_HOURS_LOG' ) ) define("INDIVIDUAL_HOURS_LOG", "/individual_hours_log.php");
|
||||
if( !defined( 'INDIVIDUAL_HISTORY_LOG' ) ) define("INDIVIDUAL_HISTORY_LOG", "/individual_history_log.php");
|
||||
if( !defined( 'PAGE_SALE_LOG' ) ) define("PAGE_SALE_LOG", "/transaction_log.php");
|
||||
if( !defined( 'PAGE_EDIT_LOCATION' ) ) define("PAGE_EDIT_LOCATION", "/location_add_edit.php");
|
||||
if( !defined( 'PAGE_SELECT_LOCATION' ) ) define("PAGE_SELECT_LOCATION", "/location_add_edit_select.php");
|
||||
define("PAGE_START_SHOP", "/start_shop.php");
|
||||
define("PAGE_SHOP_LOG", "/shop_log.php");
|
||||
define("PAGE_EDIT_CONTACT", "/contact_add_edit.php");
|
||||
define("PAGE_SELECT_CONTACT", "/contact_add_edit_select.php");
|
||||
define("PAGE_SHOP_LOG_DELETE_VISIT", "/shop_log_delete_shopvisitid.php");
|
||||
define("INDIVIDUAL_HOURS_LOG", "/individual_hours_log.php");
|
||||
define("INDIVIDUAL_HISTORY_LOG", "/individual_history_log.php");
|
||||
define("PAGE_SALE_LOG", "/transaction_log.php");
|
||||
define("PAGE_EDIT_LOCATION", "/location_add_edit.php");
|
||||
define("PAGE_SELECT_LOCATION", "/location_add_edit_select.php");
|
||||
|
||||
// Highlight search results in transaction_log
|
||||
function highlightKeywords($text, $keyword) {
|
||||
|
||||
$wordsAry = explode(" ", $keyword);
|
||||
$wordsCount = count($wordsAry);
|
||||
|
||||
// Using REGEXP, this removes regex from search
|
||||
$find = array('/[\*\.\$\^\?\+\[\]\|\(\)\,\{\}\:\\\]/');
|
||||
$replace = array('');
|
||||
|
||||
for($i=0;$i<$wordsCount;$i++) {
|
||||
|
||||
$wordsAry[$i] = preg_replace($find, $replace, $wordsAry[$i]);
|
||||
$highlighted_text = "<span style='color:black; background:#ffeb3bc7; box-shadow:2px 0 #ffeb3bc7, -2px 0 0 #ffeb3bc7; padding: 0px 0;'>$wordsAry[$i]</span>";
|
||||
$text = str_ireplace($wordsAry[$i], $highlighted_text, $text);
|
||||
//$text = str_replace($wordsAry[$i], $highlighted_text, $text);
|
||||
|
||||
}
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
//This is a general function to generate the contents of a list box based on a MySQL query. All necessary parameters for the query are passed
|
||||
function generate_list($querySQL,$list_value,$list_text, $form_name, $default_value, $color)
|
||||
function generate_list($querySQL,$list_value,$list_text, $form_name, $default_value)
|
||||
{
|
||||
global $database_YBDB, $YBDB;
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
@ -387,8 +218,7 @@ function generate_list($querySQL,$list_value,$list_text, $form_name, $default_va
|
||||
if( $default_value == $row_recordset[$list_value]){
|
||||
$default_delimiter = 'selected="selected"';
|
||||
} else { $default_delimiter = '';}
|
||||
echo '<option style="color:' . $color . ';" value="' . $row_recordset[$list_value] . '" ' . $default_delimiter . '>' .
|
||||
$row_recordset[$list_text] . '</option>';
|
||||
echo '<option value="' . $row_recordset[$list_value] . '"' . $default_delimiter .'>' . $row_recordset[$list_text] . '</option>\n';
|
||||
} while ($row_recordset = mysql_fetch_assoc($recordset));
|
||||
$rows = mysql_num_rows($recordset);
|
||||
if($rows > 0) {
|
||||
@ -402,7 +232,7 @@ function generate_list($querySQL,$list_value,$list_text, $form_name, $default_va
|
||||
}
|
||||
|
||||
|
||||
function list_CurrentShopUsers($form_name = "none", $default_value = "", $max_name_length = 20 ){
|
||||
function list_CurrentShopUsers($form_name = "none", $default_value = "", $max_name_length = 20){
|
||||
$current_shop = current_shop_by_ip();
|
||||
$querySQL = "SELECT DISTINCT full_name, shop_hours.contact_id ,hidden FROM shop_hours
|
||||
LEFT JOIN (SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length)
|
||||
@ -418,7 +248,7 @@ function list_CurrentShopUsers($form_name = "none", $default_value = "", $max_na
|
||||
// Drop down list queries - functions below could be made into one function if query, $list_value and $list_text parameters were passed
|
||||
|
||||
// Function provides specific MySQL parameters to the function that generates the list box code
|
||||
function list_contacts($form_name = "none", $default_value = "", $max_name_length = 30 ){
|
||||
function list_contacts($form_name = "none", $default_value = "", $max_name_length = 20){
|
||||
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length) AS full_name, contact_id, hidden FROM contacts WHERE (first_name <> '' OR last_name <> '') AND hidden <> 1 ORDER BY last_name, first_name, middle_initial";
|
||||
$list_value = "contact_id";
|
||||
$list_text = "full_name";
|
||||
@ -426,7 +256,7 @@ function list_contacts($form_name = "none", $default_value = "", $max_name_lengt
|
||||
}
|
||||
|
||||
|
||||
function list_coordinators($form_name = "none", $default_value = "", $max_name_length = 20 ){
|
||||
function list_coordinators($form_name = "none", $default_value = "", $max_name_length = 20){
|
||||
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),40) AS full_name, contacts.contact_id, hidden, shop_user_role FROM contacts
|
||||
LEFT JOIN (SELECT contact_id, shop_user_role, sales FROM shop_hours
|
||||
LEFT JOIN shop_user_roles ON shop_user_roles.shop_user_role_id = shop_hours.shop_user_role
|
||||
@ -439,7 +269,7 @@ ORDER BY last_name, first_name, middle_initial;";
|
||||
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
|
||||
}
|
||||
|
||||
function list_current_coordinators($form_name = "none", $default_value = "", $max_name_length = 20 ){
|
||||
function list_current_coordinators($form_name = "none", $default_value = "", $max_name_length = 20){
|
||||
$current_shop = current_shop_by_ip();
|
||||
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),40) AS full_name, contacts.contact_id, hidden, shop_user_role FROM contacts
|
||||
LEFT JOIN (SELECT contact_id, shop_user_role, sales FROM shop_hours LEFT JOIN shop_user_roles ON shop_user_roles.shop_user_role_id = shop_hours.shop_user_role WHERE shop_user_roles.sales = 1 AND shop_id = $current_shop GROUP BY contact_id) as shop_hours ON shop_hours.contact_id=contacts.contact_id
|
||||
@ -493,7 +323,7 @@ function list_shop_locations($form_name = "none", $default_value = ""){
|
||||
|
||||
// Function provides specific MySQL parameters to the function that generates the list box code
|
||||
function list_transaction_types($form_name = "none", $default_value = ""){
|
||||
$querySQL = "SELECT transaction_type_id FROM transaction_types WHERE active = 1 ORDER BY rank + 0;";
|
||||
$querySQL = "SELECT transaction_type_id FROM transaction_types ORDER BY rank + 0;";
|
||||
$list_value = "transaction_type_id";
|
||||
$list_text = "transaction_type_id";
|
||||
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
|
||||
@ -506,19 +336,7 @@ function list_donation_types($form_name = "none", $default_value = ""){
|
||||
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
|
||||
}
|
||||
|
||||
// now combined with list_CurrentShopUsers
|
||||
function list_donation_locations($form_name = "none", $default_value = "", $max_name_length = 20 ){
|
||||
$current_shop = current_shop_by_ip();
|
||||
$querySQL = "SELECT DISTINCT full_name, shop_hours.contact_id ,hidden FROM shop_hours
|
||||
LEFT JOIN (SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length)
|
||||
AS full_name, contact_id, hidden FROM contacts) as contacts ON shop_hours.contact_id=contacts.contact_id
|
||||
WHERE shop_hours.shop_id = $current_shop
|
||||
ORDER BY full_name;";
|
||||
$list_value = "contact_id";
|
||||
$list_text = "full_name";
|
||||
$color = "blue";
|
||||
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value, $color);
|
||||
|
||||
function list_donation_locations($form_name = "none", $default_value = "", $max_name_length = 20){
|
||||
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length) AS full_name,
|
||||
location_name, contact_id FROM contacts WHERE location_type IS NULL ORDER BY location_name";
|
||||
$list_value = "contact_id";
|
||||
@ -550,28 +368,6 @@ function currency_format($value, $places = 2){
|
||||
echo "$ ";
|
||||
if(is_null($value)) echo number_format(0,$places);
|
||||
else echo number_format($value,$places);
|
||||
}
|
||||
|
||||
// function to set time zone in mysql.
|
||||
// Time zones must be setup in mysql for this to work: mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
|
||||
set_time_zone();
|
||||
function set_time_zone() {
|
||||
global $database_YBDB, $YBDB;
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
$query = "SET time_zone='" . TIMEZONE . "';";
|
||||
$Recordset1 = mysql_query($query, $YBDB);
|
||||
|
||||
$error = "<p>YBDB relies heavily on accurate time calculations.</p>" .
|
||||
"<p>Make sure you have installed time zone support for mysql or mariadb as explained " .
|
||||
'<a href="https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html">here</a>.<br> ' .
|
||||
"In GNU/Linux you run the mysql_tzinfo_to_sql program from the commandline:</p>" .
|
||||
"<code>mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql.</code>";
|
||||
|
||||
if(!$Recordset1) {
|
||||
echo mysql_error() . "\n" . $error;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//function to convert server time to local time. To be used by all other current date / time requests.
|
||||
@ -666,54 +462,13 @@ function list_15min($start_time, $start_offset_min, $form_name, $hours, $display
|
||||
echo "</select>";
|
||||
|
||||
}
|
||||
|
||||
// replacement for the hardwired list_min15()
|
||||
// $start_time = time_in
|
||||
// $start_offset_min = 0
|
||||
// $form_name = time_out
|
||||
// $hours = 0
|
||||
// $display_elapsed_hours = 1
|
||||
// $default_value = $row_Recordset1['time_out']
|
||||
function list_min($start_time, $start_offset_min, $form_name, $hours, $display_elapsed_hours, $default_value, $min=15){
|
||||
list($date, $time) = split('[ ]', $start_time);
|
||||
list($Y, $m, $d) = split('[-]', $date);
|
||||
list($H, $i, $s) = split('[:]', $time);
|
||||
//$min_inc is used to round round to nearest 15min
|
||||
$min_inc = $min - intval($i) % $min;
|
||||
$start_time = mktime($H, $i, 0, $m,$d,$Y) + $min_inc * 60 + $start_offset_min*60 ;
|
||||
//$start_time_am = date("H:i a", mktime($H, $i, $s, 1,1,2000));
|
||||
|
||||
echo "<select name=\"$form_name\">";
|
||||
if($default_value <> "none" && $default_value <> "0000-00-00 00:00:00"){
|
||||
//if a default value is requested it is displayed at the top of the list
|
||||
echo '<option value="' . $default_value . '">' . date_to_time($default_value) . '</option>';
|
||||
}
|
||||
if (current_date() == $date) {
|
||||
// if current date does not match shop date current date will no be an option
|
||||
echo '<option value="current_time">Current Time</option>';
|
||||
echo '<option value="current_time">--------------------</option>';
|
||||
}
|
||||
for ($j = 0; $j <= $hours* (60 / $min); $j++) {
|
||||
$list_time = $start_time + $j*$min*60;
|
||||
if ($display_elapsed_hours == 1) {
|
||||
$elapsed_hours = " [" . date("G:i",mktime(0, 0, 0, 1,1,2000) + ($j+1)*$min*60). " hrs]";
|
||||
} else {
|
||||
$elapsed_hours = "";
|
||||
}
|
||||
|
||||
$list_time_return = date("Y-m-d H:i:s", $list_time);
|
||||
$list_time_display = date("g:i a", $list_time). $elapsed_hours;
|
||||
echo "<option value=\"". $list_time_return ."\">" . $list_time_display . "</option>";
|
||||
}
|
||||
echo "</select>";
|
||||
|
||||
}
|
||||
|
||||
|
||||
function list_time($time_list_start, $time, $form_name = "none", $start_offset_min = 0 , $display_elapsed_hours = 0, $default_value = "none", $hours_listed = 8, $et = ""){
|
||||
if($time == "0000-00-00 00:00:00" || $default_value <> "none"){
|
||||
//create drop down
|
||||
//echo list_15min("0000-00-00 01:20:00", 4, "frm_time_out" );
|
||||
echo list_min($time_list_start,$start_offset_min, $form_name, $hours_listed, $display_elapsed_hours, $default_value, LIST_MINUTE_INTERVAL);
|
||||
echo list_15min($time_list_start,$start_offset_min, $form_name, $hours_listed, $display_elapsed_hours, $default_value );
|
||||
} else {
|
||||
//list time out
|
||||
echo date_to_time($time) . " [{$et} hrs]";
|
||||
@ -723,7 +478,7 @@ function list_time($time_list_start, $time, $form_name = "none", $start_offset_m
|
||||
|
||||
function sign_out($time_out, $first_name){
|
||||
if($time_out == "0000-00-00 00:00:00"){
|
||||
echo '<input type="submit" name="submit" class="sign_out" value="Sign Out: ' . $first_name . '" />';
|
||||
echo '<input type="submit" name="submit" value="Sign Out: ' . $first_name . '" />';
|
||||
}
|
||||
}
|
||||
|
||||
@ -766,13 +521,6 @@ function dateandtimein($date, $time){
|
||||
|
||||
|
||||
// Drop-Down lists
|
||||
function list_contacts_select_contact($form_name = "contact_id", $default_value = "")
|
||||
{
|
||||
echo "<select name={$form_name} class='yb_standard'>\n";
|
||||
echo "<option value='everyone'>Everyone</option>\n";
|
||||
list_contacts("none",$default_value);
|
||||
echo "</select>\n";
|
||||
}
|
||||
|
||||
function list_contacts_edit_add($form_name = "contact_id", $default_value = "")
|
||||
{
|
||||
@ -835,7 +583,7 @@ function list_contacts_YBP_project($form_name = "contact_id", $default_value = "
|
||||
echo "<option value='no_selection'>--------------</option>";
|
||||
list_donation_locations("none",$default_value);
|
||||
echo "</select>\n";
|
||||
}
|
||||
}
|
||||
|
||||
function list_donation_locations_edit_add($form_name = "contact_id", $default_value = "")
|
||||
{
|
||||
@ -884,27 +632,17 @@ function max_shop_id(){
|
||||
return $row_Recordset1['shop_id'];
|
||||
}
|
||||
|
||||
// Is there currently a shop?
|
||||
// curl https://ipinfo.io/ip
|
||||
// Is there currently a shop?
|
||||
function current_shop_by_ip(){
|
||||
global $database_YBDB, $YBDB;
|
||||
$IP = $_SERVER['REMOTE_ADDR'];
|
||||
$current_date = current_date();
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
|
||||
if( IP == "default") {
|
||||
$query_Recordset1 = "SELECT shop_id FROM shops WHERE ip_address = '{$IP}' AND date REGEXP '^{$current_date} ' ORDER BY shop_id DESC;";
|
||||
$Recordset1 = mysql_query($query_Recordset1, $YBDB) or die(mysql_error());
|
||||
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
|
||||
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
|
||||
} else {
|
||||
$ip = IP;
|
||||
$query_Recordset1 = "SELECT shop_id FROM shops WHERE ip_address REGEXP '^{$ip}' AND date REGEXP '^{$current_date} ' ORDER BY shop_id DESC;";
|
||||
$Recordset1 = mysql_query($query_Recordset1, $YBDB) or die(mysql_error());
|
||||
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
|
||||
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
|
||||
}
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
$query_Recordset1 = "SELECT shop_id FROM shops WHERE ip_address = '{$IP}' AND date = '{$current_date}' ORDER BY shop_id DESC;";
|
||||
$Recordset1 = mysql_query($query_Recordset1, $YBDB) or die(mysql_error());
|
||||
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
|
||||
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
|
||||
return $row_Recordset1['shop_id'];
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,7 @@
|
||||
<h2>Waiver of Liability</h2>
|
||||
<p>I, and my heirs, in consideration of my participation with Positive Spin
|
||||
I, and my heirs, in consideration of my participation with Positive Spin
|
||||
Incorporated hereby release Positive Spin Incorporated, its officers, directors
|
||||
and agents, and any other people officially connected with this organization,
|
||||
from any and all liability for damage to or loss of personal property, sickness,
|
||||
or injury from whatever source, legal entanglements, imprisonment, death, or
|
||||
from any and all liability for damage to or loss of personal property, sickness, or injury from whatever source, legal entanglements, imprisonment, death, or
|
||||
loss of money, which might occur while participating in said
|
||||
event/activity/class. Specifically, I release Positive Spin Incorporated from
|
||||
any liability or responsibility for my personal well-being, condition of tools
|
||||
@ -17,17 +15,3 @@ participation in this program is strictly voluntary and I freely chose to
|
||||
participate. I understand Positive Spin Incorporated does not provide medical
|
||||
coverage for me. I verify that I will be responsible for any medical costs I
|
||||
incur as a result of my participation.
|
||||
</p>
|
||||
|
||||
<h2>Positive Spin's Safer Space Agreement</h2>
|
||||
<p>As visitors or volunteers at Positive Spin, we agree to maintain a safer space.
|
||||
A safer space is an inclusive environment in which everyone can feel welcome,
|
||||
where no one is shown favoritism, and everyone can feel safe from oppressive,
|
||||
discriminatory and hateful behavior and language. This includes, but is not limited to,
|
||||
physical and verbal abuse, sexual harassment, or discrimination based on race, culture,
|
||||
age, sex, gender identity, sexual orientation, religion, political beliefs, physical characteristics, disabilities, social or economic background.
|
||||
</p>
|
||||
<p>If you feel anyone is not abiding by this agreement, please tell a volunteer or
|
||||
constructively confront the individual yourself. If behavior that violates this agreement persists,
|
||||
it can potentially lead to being banned from Positive Spin.
|
||||
</p>
|
||||
|
674
LICENSE
674
LICENSE
@ -1,674 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
15
README.md
15
README.md
@ -1,14 +1,7 @@
|
||||
# Yellow-Bike-Database
|
||||
#Yellow-Bike-Database
|
||||
|
||||
Yellow Bike Database (YBDB) is a specialized software for Community Bike Shops (CBS). It is one of the most, if not the most mature solutions currently available for CBSes. Originally, developed for the Austin Yellow Bike Project, this software fork has taken on a life of its own, borrowing on the simplicity of the original software but adding many enhancements to lessen the learning curve, and bring it into the 21st century!
|
||||
**Development Branch of Yellow Bike Project Hours and Transaction Database**
|
||||
|
||||
In 2014, Positive Spin of Morgantown, WV in the USA was looking for a way to replace the messy, ineffective, and highly error-prone paper based record system used by the shop. Docker images were created to
|
||||
[test out and explore](https://bike.bikelover.org) what few projects could be found at the time. YBDB stood out, not because of its appearance, but because of how closely its approach mirrored the paper based recording system used by Positive Spin.
|
||||
The basic objective here since Yellow Bike Project does not host their own version control repository, at least until recently (on December 29, 2014 a repository was [setup](https://github.com/nwilkes2/CommunityBikeShopDB)), is to keep Main pristine, and do development work here, on the assumption that they may want to commit new changes. This branch is being used by [YBDB](https://github.com/fspc/ybdb), the BikeBike Docker image.
|
||||
|
||||
It was a successful choice, and continues to improve! You can read more about the FLOSS process at [bikecollectives.org in this presentation](https://www.bikecollectives.org/wiki/images/1/1e/2017-SE-BikeBike-Libre-slides.pdf).
|
||||
|
||||
There is a demo at [https://ybdb.bikelover.org](https://ybdb.bikelover.org). Try it out!
|
||||
|
||||
Docker Development is at [https://github.com/fspc/ybdb](https://github.com/fspc/ybdb).
|
||||
|
||||
Check out the [Wiki](https://github.com/fspc/Yellow-Bike-Database/wiki)!
|
||||
There is a demo at [http://ybdb.wvcompletestreets.org](http://ybdb.wvcompletestreets.org). Try it out!
|
||||
|
@ -10,7 +10,6 @@ $handler->start();*/
|
||||
|
||||
|
||||
$waiver = WAIVER;
|
||||
$waiver_label = WAIVER_LABEL;
|
||||
$email_list = EMAIL_LIST;
|
||||
$volunteer_interest_form = VOLUNTEER_INTEREST_FORM;
|
||||
$volunteer_interest_form_name = VOLUNTEER_INTEREST_FORM_NAME;
|
||||
@ -103,12 +102,11 @@ if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
|
||||
$query = 'SELECT MAX(contact_id) as contact_id FROM contacts;';
|
||||
$sql = mysql_query($query, $YBDB) or die(mysql_error());
|
||||
$result = mysql_fetch_assoc($sql);
|
||||
$submitted_contact_id = $result['contact_id'] + 1;
|
||||
$current_date_time = GetSQLValueString('current_time', "date");
|
||||
$submitted_contact_id = $result['contact_id'] + 1;
|
||||
|
||||
// Insert new contact information into a new record
|
||||
$updateSQL = 'INSERT INTO contacts (contact_id, first_name, middle_initial, last_name, email,' .
|
||||
' phone, address1, address2, city, state, DOB, receive_newsletter, waiver, pass, zip, date_created)' .
|
||||
' phone, address1, address2, city, state, DOB, receive_newsletter, waiver, pass, zip)' .
|
||||
' VALUES (' .
|
||||
$submitted_contact_id . ', ' .
|
||||
'"' . $_POST['first_name'] . '", ' .
|
||||
@ -124,8 +122,7 @@ if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
|
||||
'"' . $_POST['email_list'] . '", ' .
|
||||
1 . ', ' .
|
||||
'ENCODE("' . $_POST['password'] . '",' . '"yblcatx"), ' .
|
||||
'"' . $_POST['zip'] . '", ' .
|
||||
$current_date_time . ');';
|
||||
'"' . $_POST['zip'] . '");';
|
||||
} else {
|
||||
|
||||
// Update existing contact record
|
||||
@ -273,8 +270,7 @@ $totalRows_Recordset1 = mysql_num_rows($Recordset1);
|
||||
<td><label class="contacts">Name:</label></td>
|
||||
<td><input id="first_name" type="text" name="first_name" value="<?php echo $row_Recordset1['first_name']; ?>" size="32">
|
||||
<span id="first_name_error"></span>
|
||||
<input id="middle_initial" name="middle_initial" type="text" value="<?php echo $row_Recordset1['middle_initial']; ?>" size="1" maxlength="1">
|
||||
<span id="middle_initial_error"></span>
|
||||
<input name="middle_initial" type="text" value="<?php echo $row_Recordset1['middle_initial']; ?>" size="1" maxlength="1">
|
||||
<input id="last_name" type="text" name="last_name" value="<?php echo $row_Recordset1['last_name']; ?>" size="32">
|
||||
<span id="last_name_error"></span>
|
||||
</td>
|
||||
@ -333,14 +329,14 @@ $totalRows_Recordset1 = mysql_num_rows($Recordset1);
|
||||
</tr>
|
||||
<?php if($waiver) { ?>
|
||||
<tr>
|
||||
<td><label class="contacts"><?php echo $waiver_label; ?></label></td>
|
||||
<td><label class="contacts">Waiver of Liability:</label></td>
|
||||
<td> <div id="waiver">
|
||||
<p>
|
||||
<?php include("Connections/waiver.txt"); ?>
|
||||
<br />
|
||||
</p>
|
||||
</div><input id="waiver_checkbox" name="waiver_checkbox" type="checkbox"> I agree <span id="waiver_error"></span>
|
||||
<input type="submit" id="waiver_button" value="Show Complete Text" \>
|
||||
<input type="submit" id="waiver_button" value="Show Waiver" \>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -96,5 +96,3 @@ if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php include("include_footer.html"); ?>
|
||||
|
||||
|
@ -41,8 +41,7 @@
|
||||
font-weight: bold;
|
||||
}
|
||||
.yb_heading3red {
|
||||
//color: #FF0000;
|
||||
color: blue;
|
||||
color: #FF0000;
|
||||
background-color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
}
|
||||
@ -79,20 +78,4 @@
|
||||
.yb_standardred {
|
||||
color: #FF0000;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
margin: 20px 0 5px;
|
||||
font-size: 85%;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.footer-line a {
|
||||
text-decoration: none;
|
||||
color: #cc3334;
|
||||
}
|
||||
|
||||
.footer-line a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
/**
|
||||
* @package PickMeUp - jQuery datepicker plugin
|
||||
* @author Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
||||
* @author Stefan Petre <www.eyecon.ro>
|
||||
* @copyright Copyright (c) 2013-2015, Nazar Mokrynskyi
|
||||
* @copyright Copyright (c) 2008-2009, Stefan Petre
|
||||
* @license MIT License, see license.txt
|
||||
*/
|
||||
.pickmeup {
|
||||
background: #000;
|
||||
border-radius: 0.4em;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
display: none;
|
||||
position: absolute; }
|
||||
.pickmeup * {
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box; }
|
||||
.pickmeup .pmu-instance {
|
||||
display: inline-block;
|
||||
height: 13.8em;
|
||||
padding: .5em;
|
||||
text-align: center;
|
||||
width: 15em; }
|
||||
.pickmeup .pmu-instance .pmu-button {
|
||||
color: #eee;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
text-decoration: none; }
|
||||
.pickmeup .pmu-instance .pmu-today {
|
||||
background: #17384d;
|
||||
color: #88c5eb; }
|
||||
.pickmeup .pmu-instance .pmu-button:hover {
|
||||
background: "transparent";
|
||||
color: #88c5eb; }
|
||||
.pickmeup .pmu-instance .pmu-not-in-month {
|
||||
color: #666; }
|
||||
.pickmeup .pmu-instance .pmu-disabled,
|
||||
.pickmeup .pmu-instance .pmu-disabled:hover {
|
||||
color: #333;
|
||||
cursor: default; }
|
||||
.pickmeup .pmu-instance .pmu-selected {
|
||||
background: #136a9f;
|
||||
color: #eee; }
|
||||
.pickmeup .pmu-instance .pmu-not-in-month.pmu-selected {
|
||||
background: #17384d; }
|
||||
.pickmeup .pmu-instance nav {
|
||||
color: #eee;
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
line-height: 2em; }
|
||||
.pickmeup .pmu-instance nav *:first-child :hover {
|
||||
color: #88c5eb; }
|
||||
.pickmeup .pmu-instance nav .pmu-prev,
|
||||
.pickmeup .pmu-instance nav .pmu-next {
|
||||
display: none;
|
||||
height: 2em;
|
||||
width: 1em; }
|
||||
.pickmeup .pmu-instance nav .pmu-month {
|
||||
width: 14em; }
|
||||
.pickmeup .pmu-instance .pmu-years *,
|
||||
.pickmeup .pmu-instance .pmu-months * {
|
||||
display: inline-block;
|
||||
line-height: 3.6em;
|
||||
width: 3.5em; }
|
||||
.pickmeup .pmu-instance .pmu-day-of-week {
|
||||
color: #999;
|
||||
cursor: default; }
|
||||
.pickmeup .pmu-instance .pmu-day-of-week *,
|
||||
.pickmeup .pmu-instance .pmu-days * {
|
||||
display: inline-block;
|
||||
line-height: 1.5em;
|
||||
width: 2em; }
|
||||
.pickmeup .pmu-instance .pmu-day-of-week * {
|
||||
line-height: 1.8em; }
|
||||
.pickmeup .pmu-instance:first-child .pmu-prev,
|
||||
.pickmeup .pmu-instance:last-child .pmu-next {
|
||||
display: block; }
|
||||
.pickmeup .pmu-instance:first-child .pmu-month,
|
||||
.pickmeup .pmu-instance:last-child .pmu-month {
|
||||
width: 13em; }
|
||||
.pickmeup .pmu-instance:first-child:last-child .pmu-month {
|
||||
width: 12em; }
|
||||
.pickmeup:not(.pmu-view-days) .pmu-days, .pickmeup:not(.pmu-view-days) .pmu-day-of-week, .pickmeup:not(.pmu-view-months) .pmu-months, .pickmeup:not(.pmu-view-years) .pmu-years {
|
||||
display: none; }
|
@ -1,69 +0,0 @@
|
||||
.stats td {
|
||||
padding: 0px 10px 0px 10px;
|
||||
}
|
||||
|
||||
|
||||
#status_totals, #community_service_hours, #shops, #members, #dhhr_hours{
|
||||
height: 36px;
|
||||
width: 98px;
|
||||
font-size: x-large;
|
||||
color:green;
|
||||
}
|
||||
|
||||
|
||||
.stats-clear:after,.stats-clear:before,.stats-bar {
|
||||
content:"";
|
||||
display:table;
|
||||
clear:both;
|
||||
}
|
||||
.nextprev a {
|
||||
font-size:17px;
|
||||
border:1px solid #cccccc;
|
||||
}
|
||||
.nextprev a:link,.nextprev a:visited {
|
||||
background-color:#ffffff;
|
||||
color:#000000;
|
||||
}
|
||||
.nextprev a.stats-right {
|
||||
background-color:#4CAF50;
|
||||
color:#ffffff;
|
||||
border-color:#4CAF50
|
||||
}
|
||||
.stats-btn,.stats-button {
|
||||
border:none;
|
||||
display:inline-block;
|
||||
outline:0;
|
||||
padding:8px 16px;
|
||||
vertical-align:middle;
|
||||
overflow:hidden;
|
||||
text-decoration:none;
|
||||
color:inherit;
|
||||
background-color:inherit;
|
||||
text-align:center;
|
||||
cursor:pointer;
|
||||
white-space:nowrap
|
||||
}
|
||||
.stats-btn:hover {
|
||||
box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
|
||||
}
|
||||
.stats-btn,.stats-button {
|
||||
-webkit-touch-callout:none;
|
||||
-webkit-user-select:none;
|
||||
-khtml-user-select:none;
|
||||
-moz-user-select:none;
|
||||
-ms-user-select:none;
|
||||
user-select:none;
|
||||
}
|
||||
.stats-disabled,.stats-btn:disabled,.stats-button:disabled {
|
||||
cursor:not-allowed;opacity:0.3;
|
||||
}
|
||||
.stats-disabled *,:disabled *{
|
||||
pointer-events:none;
|
||||
}
|
||||
.stats-btn.stats-disabled:hover,.stats-btn:disabled:hover {
|
||||
box-shadow:none;
|
||||
}
|
||||
/*
|
||||
.stats-left{float:left!important}
|
||||
.stats-right{float:right!important}
|
||||
*/
|
@ -1,574 +0,0 @@
|
||||
/* Tabulator v3.3.1 (c) Oliver Folkerd */
|
||||
.tabulator {
|
||||
position: relative;
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin-bottom: 20px;
|
||||
-ms-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator.tabulator-block-select {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border-bottom: 2px solid #ddd;
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-moving {
|
||||
position: absolute;
|
||||
border: 1px solid #ddd;
|
||||
background: #e6e6e6;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
position: relative;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border: 1px solid #999;
|
||||
padding: 1px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 14px;
|
||||
right: 8px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
border-top: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
|
||||
position: absolute;
|
||||
background-color: #e6e6e6 !important;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
||||
cursor: pointer;
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
background: white !important;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
|
||||
background: white !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder span {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #fff;
|
||||
white-space: nowrap;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
|
||||
font-weight: bold;
|
||||
background: #ececec !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
|
||||
border-bottom: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
|
||||
border-top: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
min-height: 30px;
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover {
|
||||
background-color: #f5f5f5 !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected {
|
||||
background-color: #9ABCEA;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected:hover {
|
||||
background-color: #769BCC;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-moving {
|
||||
position: absolute;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
pointer-events: none !important;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
background-color: inherit;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 8px;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:last-of-type {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing {
|
||||
border: 1px solid #1D68CD;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator .tabulator-row .tabulator-cell.tabulator-editing select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail {
|
||||
border: 1px solid #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle {
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin: 2px 10% 0 10%;
|
||||
background: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group {
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #999;
|
||||
border-right: 1px solid #ddd;
|
||||
border-top: 1px solid #999;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
background: #fafafa;
|
||||
font-weight: bold;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group:hover {
|
||||
cursor: pointer;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
|
||||
margin-right: 10px;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow {
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow {
|
||||
margin-left: 1000px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group .tabulator-arrow {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 16px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-right: 0;
|
||||
border-left: 6px solid #666;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group span {
|
||||
margin-left: 10px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle.prev {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle:hover {
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer {
|
||||
padding: 5px 10px;
|
||||
border-top: 2px solid #ddd;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: calc("100% + 20px");
|
||||
margin: -5px -10px 5px -10px;
|
||||
text-align: left;
|
||||
background: white !important;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-top: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
|
||||
background: white !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
|
||||
margin-bottom: -5px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-pages {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page {
|
||||
display: inline-block;
|
||||
margin: 0 2px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 3px;
|
||||
padding: 2px 5px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page.active {
|
||||
color: #d00;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
||||
cursor: pointer;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader {
|
||||
position: absolute;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 100;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-loading {
|
||||
border: 4px solid #333;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-error {
|
||||
border: 4px solid #D00;
|
||||
color: #590000;
|
||||
}
|
||||
|
||||
.tabulator.table-striped .tabulator-row:nth-child(even) {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.tabulator.table-bordered {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator.table-bordered .tabulator-header .tabulator-col {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row {
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active {
|
||||
background: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.success {
|
||||
background: #dff0d8 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.info {
|
||||
background: #d9edf7 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning {
|
||||
background: #fcf8e3 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.danger {
|
||||
background: #f2dede !important;
|
||||
}
|
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
@ -1,535 +0,0 @@
|
||||
/* Tabulator v3.3.1 (c) Oliver Folkerd */
|
||||
.tabulator {
|
||||
position: relative;
|
||||
border: 1px solid #999;
|
||||
background-color: #888;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
-ms-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator.tabulator-block-select {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #999;
|
||||
background-color: #e6e6e6;
|
||||
color: #555;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
border-right: 1px solid #aaa;
|
||||
background: #e6e6e6;
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-moving {
|
||||
position: absolute;
|
||||
border: 1px solid #999;
|
||||
background: #cdcdcd;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
position: relative;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border: 1px solid #999;
|
||||
padding: 1px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: 8px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
border-top: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
|
||||
position: absolute;
|
||||
background-color: #e6e6e6 !important;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
||||
cursor: pointer;
|
||||
background-color: #cdcdcd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
min-width: 200%;
|
||||
background: #f3f3f3 !important;
|
||||
border-top: 1px solid #aaa;
|
||||
border-bottom: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
|
||||
background: #f3f3f3 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder span {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
color: #ccc;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #fff;
|
||||
white-space: nowrap;
|
||||
overflow: visible;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
|
||||
font-weight: bold;
|
||||
background: #e2e2e2 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
|
||||
border-bottom: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
|
||||
border-top: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
min-height: 22px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-row-even {
|
||||
background-color: #EFEFEF;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover {
|
||||
background-color: #bbb;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected {
|
||||
background-color: #9ABCEA;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected:hover {
|
||||
background-color: #769BCC;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-row-moving {
|
||||
border: 1px solid #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-moving {
|
||||
position: absolute;
|
||||
border-top: 1px solid #aaa;
|
||||
border-bottom: 1px solid #aaa;
|
||||
pointer-events: none;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
background-color: inherit;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 4px;
|
||||
border-right: 1px solid #aaa;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing {
|
||||
border: 1px solid #1D68CD;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator .tabulator-row .tabulator-cell.tabulator-editing select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail {
|
||||
border: 1px solid #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle {
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin: 2px 10% 0 10%;
|
||||
background: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group {
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #999;
|
||||
border-right: 1px solid #aaa;
|
||||
border-top: 1px solid #999;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
background: #ccc;
|
||||
font-weight: bold;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group:hover {
|
||||
cursor: pointer;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
|
||||
margin-right: 10px;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow {
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow {
|
||||
margin-left: 1000px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group .tabulator-arrow {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 16px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-right: 0;
|
||||
border-left: 6px solid #666;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group span {
|
||||
margin-left: 10px;
|
||||
color: #d00;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer {
|
||||
padding: 5px 10px;
|
||||
border-top: 1px solid #999;
|
||||
background-color: #e6e6e6;
|
||||
text-align: right;
|
||||
color: #555;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: calc("100% + 20px");
|
||||
margin: -5px -10px 5px -10px;
|
||||
text-align: left;
|
||||
background: #f3f3f3 !important;
|
||||
border-bottom: 1px solid #aaa;
|
||||
border-top: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
|
||||
background: #f3f3f3 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
|
||||
margin-bottom: -5px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-pages {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page {
|
||||
display: inline-block;
|
||||
margin: 0 2px;
|
||||
padding: 2px 5px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: #555;
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page.active {
|
||||
color: #d00;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
||||
cursor: pointer;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle.prev {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle:hover {
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader {
|
||||
position: absolute;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 100;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-loading {
|
||||
border: 4px solid #333;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-error {
|
||||
border: 4px solid #D00;
|
||||
color: #590000;
|
||||
}
|
3
css/tabulator/tabulator.min.css
vendored
3
css/tabulator/tabulator.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,539 +0,0 @@
|
||||
/* Tabulator v3.3.1 (c) Oliver Folkerd */
|
||||
.tabulator {
|
||||
position: relative;
|
||||
border: 1px solid #333;
|
||||
background-color: #222;
|
||||
overflow: hidden;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
-ms-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator.tabulator-block-select {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #999;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
border-right: 1px solid #aaa;
|
||||
background-color: #333;
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-moving {
|
||||
position: absolute;
|
||||
border: 1px solid #999;
|
||||
background: #1a1a1a;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
position: relative;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border: 1px solid #999;
|
||||
padding: 1px;
|
||||
background: #444;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: 8px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
border-top: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
|
||||
position: absolute;
|
||||
background-color: #1a1a1a !important;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {
|
||||
border: 1px solid #999;
|
||||
background: #444;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
||||
cursor: pointer;
|
||||
background-color: #1a1a1a;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #888;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #888;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
min-width: 200%;
|
||||
background: #1a1a1a !important;
|
||||
border-top: 1px solid #888;
|
||||
border-bottom: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
|
||||
background: #1a1a1a !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder span {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
color: #eee;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #666;
|
||||
white-space: nowrap;
|
||||
overflow: visible;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
|
||||
font-weight: bold;
|
||||
background: #373737 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
|
||||
border-bottom: 2px solid #888;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
|
||||
border-top: 2px solid #888;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
min-height: 22px;
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row:nth-child(even) {
|
||||
background-color: #444;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover {
|
||||
background-color: #999;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected {
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected:hover {
|
||||
background-color: #888;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-moving {
|
||||
position: absolute;
|
||||
border-top: 1px solid #888;
|
||||
border-bottom: 1px solid #888;
|
||||
pointer-events: none !important;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
background-color: inherit;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #888;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #888;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 4px;
|
||||
border-right: 1px solid #888;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing {
|
||||
border: 1px solid #999;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator .tabulator-row .tabulator-cell.tabulator-editing select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail {
|
||||
border: 1px solid #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle {
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin: 2px 10% 0 10%;
|
||||
background: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group {
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #999;
|
||||
border-right: 1px solid #888;
|
||||
border-top: 1px solid #999;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
background: #ccc;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group:hover {
|
||||
cursor: pointer;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
|
||||
margin-right: 10px;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow {
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow {
|
||||
margin-left: 1000px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group .tabulator-arrow {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 16px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-right: 0;
|
||||
border-left: 6px solid #666;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group span {
|
||||
margin-left: 10px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle.prev {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle:hover {
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer {
|
||||
padding: 5px 10px;
|
||||
border-top: 1px solid #999;
|
||||
background-color: #333;
|
||||
text-align: right;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: calc("100% + 20px");
|
||||
margin: -5px -10px 5px -10px;
|
||||
text-align: left;
|
||||
background: #262626 !important;
|
||||
border-bottom: 1px solid #888;
|
||||
border-top: 1px solid #888;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
|
||||
background: #262626 !important;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
|
||||
margin-bottom: -5px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-pages {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page {
|
||||
display: inline-block;
|
||||
margin: 0 2px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 2px 5px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: #333;
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page.active {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
||||
cursor: pointer;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader {
|
||||
position: absolute;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 100;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-loading {
|
||||
border: 4px solid #333;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-error {
|
||||
border: 4px solid #D00;
|
||||
color: #590000;
|
||||
}
|
3
css/tabulator/tabulator_midnight.min.css
vendored
3
css/tabulator/tabulator_midnight.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,562 +0,0 @@
|
||||
/* Tabulator v3.3.1 (c) Oliver Folkerd */
|
||||
.tabulator {
|
||||
position: relative;
|
||||
border: 1px solid #fff;
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
font-size: 16px;
|
||||
text-align: left;
|
||||
-ms-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator.tabulator-block-select {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border-bottom: 3px solid #3759D7;
|
||||
margin-bottom: 4px;
|
||||
background-color: #fff;
|
||||
color: #3759D7;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
padding-left: 10px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
border-right: 2px solid #fff;
|
||||
background-color: #fff;
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-moving {
|
||||
position: absolute;
|
||||
border: 1px solid #3759D7;
|
||||
background: #e6e6e6;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
position: relative;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border: 1px solid #3759D7;
|
||||
padding: 1px;
|
||||
background: #fff;
|
||||
font-size: 1em;
|
||||
color: #3759D7;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: 8px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #b7c3f1;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
border-top: 2px solid #3759D7;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
|
||||
position: absolute;
|
||||
background-color: #e6e6e6 !important;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
||||
cursor: pointer;
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #b7c3f1;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #3759D7;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: 6px solid #3759D7;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||
padding-left: 10px;
|
||||
border-right: 2px solid #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
min-width: 200%;
|
||||
border-top: 2px solid #3759D7 !important;
|
||||
background: white !important;
|
||||
border-top: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
|
||||
padding-left: 0 !important;
|
||||
background: white !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder span {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
color: #3759D7;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #f3f3f3;
|
||||
white-space: nowrap;
|
||||
overflow: visible;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
|
||||
font-weight: bold;
|
||||
background: #f2f2f2 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
|
||||
border-bottom: 2px solid #3759D7;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
|
||||
border-top: 2px solid #3759D7;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
min-height: 24px;
|
||||
background-color: #3759D7;
|
||||
padding-left: 10px !important;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row:nth-child(even) {
|
||||
background-color: #627ce0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row:nth-child(even) .tabulator-cell {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover .tabulator-cell {
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected .tabulator-cell {
|
||||
background-color: #9ABCEA;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected:hover .tabulator-cell {
|
||||
background-color: #769BCC;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-moving {
|
||||
position: absolute;
|
||||
border-top: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
pointer-events: none !important;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
background-color: inherit;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-left {
|
||||
padding-left: 10px;
|
||||
border-right: 2px solid #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 6px 4px;
|
||||
border-right: 2px solid #fff;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing {
|
||||
border: 1px solid #1D68CD;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator .tabulator-row .tabulator-cell.tabulator-editing select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail {
|
||||
border: 1px solid #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle {
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin: 2px 10% 0 10%;
|
||||
background: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group {
|
||||
box-sizing: border-box;
|
||||
border-bottom: 2px solid #3759D7;
|
||||
border-top: 2px solid #3759D7;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
background: #8ca0e8;
|
||||
font-weight: bold;
|
||||
color: fff;
|
||||
margin-bottom: 2px;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group:hover {
|
||||
cursor: pointer;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
|
||||
margin-right: 10px;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #3759D7;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow {
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow {
|
||||
margin-left: 1000px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group .tabulator-arrow {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 16px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-right: 0;
|
||||
border-left: 6px solid #3759D7;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group span {
|
||||
margin-left: 10px;
|
||||
color: #3759D7;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle.prev {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle:hover {
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer {
|
||||
padding: 5px 10px;
|
||||
border-top: 1px solid #999;
|
||||
background-color: #fff;
|
||||
text-align: right;
|
||||
color: #3759D7;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: calc("100% + 20px");
|
||||
margin: -5px -10px 5px -10px;
|
||||
text-align: left;
|
||||
background: white !important;
|
||||
border-top: 3px solid #3759D7 !important;
|
||||
border-bottom: 2px solid #3759D7 !important;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-top: 1px solid #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
|
||||
background: white !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
|
||||
margin-bottom: -5px;
|
||||
border-bottom: none;
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-pages {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page {
|
||||
display: inline-block;
|
||||
margin: 0 2px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 2px 5px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: #3759D7;
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page.active {
|
||||
color: #3759D7;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
||||
cursor: pointer;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader {
|
||||
position: absolute;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 100;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-loading {
|
||||
border: 4px solid #333;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-error {
|
||||
border: 4px solid #D00;
|
||||
color: #590000;
|
||||
}
|
3
css/tabulator/tabulator_modern.min.css
vendored
3
css/tabulator/tabulator_modern.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,534 +0,0 @@
|
||||
/* Tabulator v3.3.1 (c) Oliver Folkerd */
|
||||
.tabulator {
|
||||
position: relative;
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
-ms-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator.tabulator-block-select {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #999;
|
||||
background-color: #fff;
|
||||
color: #555;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
border-right: 1px solid #ddd;
|
||||
background-color: #fff;
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-moving {
|
||||
position: absolute;
|
||||
border: 1px solid #999;
|
||||
background: #e6e6e6;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
position: relative;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border: 1px solid #999;
|
||||
padding: 1px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: 8px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
border-top: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
|
||||
position: absolute;
|
||||
background-color: #e6e6e6 !important;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
||||
cursor: pointer;
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
min-width: 200%;
|
||||
background: #f2f2f2 !important;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #999;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
|
||||
background: #f2f2f2 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder span {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #fff;
|
||||
white-space: nowrap;
|
||||
overflow: visible;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
|
||||
font-weight: bold;
|
||||
background: #f2f2f2 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
|
||||
border-bottom: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
|
||||
border-top: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
min-height: 22px;
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row:nth-child(even) {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover {
|
||||
background-color: #bbb;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected {
|
||||
background-color: #9ABCEA;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected:hover {
|
||||
background-color: #769BCC;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-moving {
|
||||
position: absolute;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
pointer-events: none !important;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
background-color: inherit;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 4px;
|
||||
border-right: 1px solid #ddd;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:last-of-type {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing {
|
||||
border: 1px solid #1D68CD;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator .tabulator-row .tabulator-cell.tabulator-editing select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail {
|
||||
border: 1px solid #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle {
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin: 2px 10% 0 10%;
|
||||
background: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group {
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #999;
|
||||
border-right: 1px solid #ddd;
|
||||
border-top: 1px solid #999;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
background: #fafafa;
|
||||
font-weight: bold;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group:hover {
|
||||
cursor: pointer;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
|
||||
margin-right: 10px;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #666;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow {
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow {
|
||||
margin-left: 1000px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group .tabulator-arrow {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 16px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-right: 0;
|
||||
border-left: 6px solid #666;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group span {
|
||||
margin-left: 10px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle.prev {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle:hover {
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer {
|
||||
padding: 5px 10px;
|
||||
border-top: 1px solid #999;
|
||||
background-color: #fff;
|
||||
text-align: right;
|
||||
color: #555;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: calc("100% + 20px");
|
||||
margin: -5px -10px 5px -10px;
|
||||
text-align: left;
|
||||
background: #f2f2f2 !important;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-top: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
|
||||
background: #f2f2f2 !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
|
||||
margin-bottom: -5px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-pages {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page {
|
||||
display: inline-block;
|
||||
margin: 0 2px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 2px 5px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: #555;
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page.active {
|
||||
color: #d00;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
||||
cursor: pointer;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader {
|
||||
position: absolute;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 100;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-loading {
|
||||
border: 4px solid #333;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-error {
|
||||
border: 4px solid #D00;
|
||||
color: #590000;
|
||||
}
|
3
css/tabulator/tabulator_simple.min.css
vendored
3
css/tabulator/tabulator_simple.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,533 +0,0 @@
|
||||
/* Tabulator v3.3.1 (c) Oliver Folkerd */
|
||||
.tabulator {
|
||||
position: relative;
|
||||
border-bottom: 5px solid #222;
|
||||
background-color: #fff;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
-ms-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator[tabulator-layout="fitColumns"] .tabulator-row .tabulator-cell:last-of-type {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.tabulator.tabulator-block-select {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border-bottom: 3px solid #3FB449;
|
||||
background-color: #222;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
border-right: 1px solid #aaa;
|
||||
background-color: #222;
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-moving {
|
||||
position: absolute;
|
||||
border: 1px solid #3FB449;
|
||||
background: #090909;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
||||
position: relative;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
border: 1px solid #999;
|
||||
padding: 1px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 14px;
|
||||
right: 8px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
border-top: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
|
||||
position: absolute;
|
||||
background-color: #222 !important;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
margin-top: 2px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
|
||||
cursor: pointer;
|
||||
background-color: #090909;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #bbb;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: none;
|
||||
border-bottom: 6px solid #3FB449;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
|
||||
border-top: 6px solid #3FB449;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
min-width: 200%;
|
||||
background: #3c3c3c !important;
|
||||
border-top: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
|
||||
background: #3c3c3c !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-placeholder span {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
color: #3FB449;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #fff;
|
||||
white-space: nowrap;
|
||||
overflow: visible;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
|
||||
font-weight: bold;
|
||||
background: #484848 !important;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
min-height: 22px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-row-even {
|
||||
background-color: #EFEFEF;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selectable:hover {
|
||||
background-color: #bbb;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected {
|
||||
background-color: #9ABCEA;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-selected:hover {
|
||||
background-color: #769BCC;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-row-moving {
|
||||
border: 1px solid #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-moving {
|
||||
position: absolute;
|
||||
border-top: 1px solid #aaa;
|
||||
border-bottom: 1px solid #aaa;
|
||||
pointer-events: none !important;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
background-color: inherit;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-left {
|
||||
border-right: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-frozen.tabulator-frozen-right {
|
||||
border-left: 2px solid #aaa;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 6px;
|
||||
border-right: 1px solid #aaa;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing {
|
||||
border: 1px solid #1D68CD;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator .tabulator-row .tabulator-cell.tabulator-editing select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail {
|
||||
border: 1px solid #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator .tabulator-row .tabulator-cell.tabulator-validation-fail select {
|
||||
border: 1px;
|
||||
background: transparent;
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle {
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin: 2px 10% 0 10%;
|
||||
background: #666;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group {
|
||||
box-sizing: border-box;
|
||||
border-right: 1px solid #aaa;
|
||||
border-top: 1px solid #000;
|
||||
border-bottom: 2px solid #3FB449;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
background: #222;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group:hover {
|
||||
cursor: pointer;
|
||||
background-color: #090909;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
|
||||
margin-right: 10px;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #3FB449;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-1 .tabulator-arrow {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-2 .tabulator-arrow {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-3 .tabulator-arrow {
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-4 .tabulator-arrow {
|
||||
margin-left: 80px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group.tabulator-group-level-5 .tabulator-arrow {
|
||||
margin-left: 1000px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group .tabulator-arrow {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 16px;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-right: 0;
|
||||
border-left: 6px solid #3FB449;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-row.tabulator-group span {
|
||||
margin-left: 10px;
|
||||
color: #3FB449;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer {
|
||||
padding: 5px 10px;
|
||||
padding-top: 8px;
|
||||
border-top: 3px solid #3FB449;
|
||||
background-color: #222;
|
||||
text-align: right;
|
||||
color: #222;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder {
|
||||
box-sizing: border-box;
|
||||
width: calc("100% + 20px");
|
||||
margin: -8px -10px 8px -10px;
|
||||
text-align: left;
|
||||
background: #3c3c3c !important;
|
||||
border-bottom: 1px solid #aaa;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
|
||||
background: #3c3c3c !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
|
||||
margin-bottom: -5px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-pages {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page {
|
||||
display: inline-block;
|
||||
margin: 0 2px;
|
||||
padding: 2px 5px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
background: #fff;
|
||||
color: #222;
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page.active {
|
||||
color: #3FB449;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
|
||||
cursor: pointer;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle.prev {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.tabulator .tabulator-col-resize-handle:hover {
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader {
|
||||
position: absolute;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 100;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-loading {
|
||||
border: 4px solid #333;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tabulator .tablulator-loader .tabulator-loader-msg.tabulator-error {
|
||||
border: 4px solid #D00;
|
||||
color: #590000;
|
||||
}
|
3
css/tabulator/tabulator_site.min.css
vendored
3
css/tabulator/tabulator_site.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -84,65 +84,4 @@ input[value=Save]:focus, input[value=Close]:focus {
|
||||
#payment_error, #payment_type_error,
|
||||
#quantity_error, #anonymous_error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* for shop_log */
|
||||
#shop_log td {
|
||||
padding: 0px 10px 0px 10px;
|
||||
}
|
||||
|
||||
/* for memberships */
|
||||
#expired_membership {
|
||||
color: orchid;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#paid_member {
|
||||
color: blue;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
/* for volunteers */
|
||||
#volunteer_hours {
|
||||
color: blueviolet;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
/* for stand time */
|
||||
#stand_time_total {
|
||||
color: green;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
/* spinner for volunteer hour redemption */
|
||||
#redeemable_hours {
|
||||
display: none;
|
||||
margin-left: 10px;
|
||||
font-size: .9em;
|
||||
width: 82px;
|
||||
height: 23px;
|
||||
}
|
||||
|
||||
.ui-spinner {
|
||||
display: none;
|
||||
margin-left: 10px;
|
||||
width: 85px;
|
||||
height: 26px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-widget input {
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
#original_price, #membership_discount, #membership_discount_price, #volunteer_hours_to_membership_discount {
|
||||
display: none;
|
||||
color: blueviolet;
|
||||
}
|
||||
|
||||
//.css({color: "#1b691e", textDecoration: "none", cursor: "crosshair"});
|
||||
.shop_id a {
|
||||
background-color: #1b691e;
|
||||
cursor: crosshair;
|
||||
text-decoration: none;
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.2 KiB |
713
css/ui/jquery-ui.css
vendored
713
css/ui/jquery-ui.css
vendored
@ -1,713 +0,0 @@
|
||||
/*! jQuery UI - v1.12.1 - 2017-07-27
|
||||
* http://jqueryui.com
|
||||
* Includes: core.css, button.css, controlgroup.css, checkboxradio.css, spinner.css, theme.css
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
|
||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden {
|
||||
display: none;
|
||||
}
|
||||
.ui-helper-hidden-accessible {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
.ui-helper-reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
line-height: 1.3;
|
||||
text-decoration: none;
|
||||
font-size: 100%;
|
||||
list-style: none;
|
||||
}
|
||||
.ui-helper-clearfix:before,
|
||||
.ui-helper-clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.ui-helper-clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.ui-helper-zfix {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
filter:Alpha(Opacity=0); /* support: IE8 */
|
||||
}
|
||||
|
||||
.ui-front {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled {
|
||||
cursor: default !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
.ui-icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-top: -.25em;
|
||||
position: relative;
|
||||
text-indent: -99999px;
|
||||
overflow: hidden;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.ui-widget-icon-block {
|
||||
left: 50%;
|
||||
margin-left: -8px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-button {
|
||||
padding: .4em 1em;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
line-height: normal;
|
||||
margin-right: .1em;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
/* Support: IE <= 11 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.ui-button,
|
||||
.ui-button:link,
|
||||
.ui-button:visited,
|
||||
.ui-button:hover,
|
||||
.ui-button:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* to make room for the icon, a width needs to be set here */
|
||||
.ui-button-icon-only {
|
||||
width: 2em;
|
||||
box-sizing: border-box;
|
||||
text-indent: -9999px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* no icon support for input elements */
|
||||
input.ui-button.ui-button-icon-only {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
/* button icon element(s) */
|
||||
.ui-button-icon-only .ui-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -8px;
|
||||
margin-left: -8px;
|
||||
}
|
||||
|
||||
.ui-button.ui-icon-notext .ui-icon {
|
||||
padding: 0;
|
||||
width: 2.1em;
|
||||
height: 2.1em;
|
||||
text-indent: -9999px;
|
||||
white-space: nowrap;
|
||||
|
||||
}
|
||||
|
||||
input.ui-button.ui-icon-notext .ui-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
text-indent: 0;
|
||||
white-space: normal;
|
||||
padding: .4em 1em;
|
||||
}
|
||||
|
||||
/* workarounds */
|
||||
/* Support: Firefox 5 - 40 */
|
||||
input.ui-button::-moz-focus-inner,
|
||||
button.ui-button::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ui-controlgroup {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
.ui-controlgroup > .ui-controlgroup-item {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
.ui-controlgroup > .ui-controlgroup-item:focus,
|
||||
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ui-controlgroup-vertical > .ui-controlgroup-item {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
text-align: left;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-item {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.ui-controlgroup .ui-controlgroup-label {
|
||||
padding: .4em 1em;
|
||||
}
|
||||
.ui-controlgroup .ui-controlgroup-label span {
|
||||
font-size: 80%;
|
||||
}
|
||||
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
|
||||
border-left: none;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
|
||||
border-top: none;
|
||||
}
|
||||
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
|
||||
border-right: none;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* Spinner specific style fixes */
|
||||
.ui-controlgroup-vertical .ui-spinner-input {
|
||||
|
||||
/* Support: IE8 only, Android < 4.4 only */
|
||||
width: 75%;
|
||||
width: calc( 100% - 2.4em );
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
|
||||
border-top-style: solid;
|
||||
}
|
||||
|
||||
.ui-checkboxradio-label .ui-icon-background {
|
||||
box-shadow: inset 1px 1px 1px #ccc;
|
||||
border-radius: .12em;
|
||||
border: none;
|
||||
}
|
||||
.ui-checkboxradio-radio-label .ui-icon-background {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 1em;
|
||||
overflow: visible;
|
||||
border: none;
|
||||
}
|
||||
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
|
||||
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
|
||||
background-image: none;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-width: 4px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-checkboxradio-disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
.ui-spinner {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.ui-spinner-input {
|
||||
border: none;
|
||||
background: none;
|
||||
color: inherit;
|
||||
padding: .222em 0;
|
||||
margin: .2em 0;
|
||||
vertical-align: middle;
|
||||
margin-left: .4em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
.ui-spinner-button {
|
||||
width: 1.6em;
|
||||
height: 50%;
|
||||
font-size: .5em;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
right: 0;
|
||||
}
|
||||
/* more specificity required here to override default borders */
|
||||
.ui-spinner a.ui-spinner-button {
|
||||
border-top-style: none;
|
||||
border-bottom-style: none;
|
||||
border-right-style: none;
|
||||
}
|
||||
.ui-spinner-up {
|
||||
top: 0;
|
||||
}
|
||||
.ui-spinner-down {
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget .ui-widget {
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget input,
|
||||
.ui-widget select,
|
||||
.ui-widget textarea,
|
||||
.ui-widget button {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget.ui-widget-content {
|
||||
border: 1px solid #c5c5c5;
|
||||
}
|
||||
.ui-widget-content {
|
||||
border: 1px solid #dddddd;
|
||||
background: #ffffff;
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-content a {
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-header {
|
||||
border: 1px solid #dddddd;
|
||||
background: #e9e9e9;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-widget-header a {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default,
|
||||
.ui-widget-content .ui-state-default,
|
||||
.ui-widget-header .ui-state-default,
|
||||
.ui-button,
|
||||
|
||||
/* We use html here because we need a greater specificity to make sure disabled
|
||||
works properly when clicked or hovered */
|
||||
html .ui-button.ui-state-disabled:hover,
|
||||
html .ui-button.ui-state-disabled:active {
|
||||
border: 1px solid #c5c5c5;
|
||||
background: #f6f6f6;
|
||||
font-weight: normal;
|
||||
color: #454545;
|
||||
}
|
||||
.ui-state-default a,
|
||||
.ui-state-default a:link,
|
||||
.ui-state-default a:visited,
|
||||
a.ui-button,
|
||||
a:link.ui-button,
|
||||
a:visited.ui-button,
|
||||
.ui-button {
|
||||
color: #454545;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-state-hover,
|
||||
.ui-widget-content .ui-state-hover,
|
||||
.ui-widget-header .ui-state-hover,
|
||||
.ui-state-focus,
|
||||
.ui-widget-content .ui-state-focus,
|
||||
.ui-widget-header .ui-state-focus,
|
||||
.ui-button:hover,
|
||||
.ui-button:focus {
|
||||
border: 1px solid #cccccc;
|
||||
background: #ededed;
|
||||
font-weight: normal;
|
||||
color: #2b2b2b;
|
||||
}
|
||||
.ui-state-hover a,
|
||||
.ui-state-hover a:hover,
|
||||
.ui-state-hover a:link,
|
||||
.ui-state-hover a:visited,
|
||||
.ui-state-focus a,
|
||||
.ui-state-focus a:hover,
|
||||
.ui-state-focus a:link,
|
||||
.ui-state-focus a:visited,
|
||||
a.ui-button:hover,
|
||||
a.ui-button:focus {
|
||||
color: #2b2b2b;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ui-visual-focus {
|
||||
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
||||
}
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active,
|
||||
a.ui-button:active,
|
||||
.ui-button:active,
|
||||
.ui-button.ui-state-active:hover {
|
||||
border: 1px solid #003eff;
|
||||
background: #007fff;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
}
|
||||
.ui-icon-background,
|
||||
.ui-state-active .ui-icon-background {
|
||||
border: #003eff;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight,
|
||||
.ui-widget-content .ui-state-highlight,
|
||||
.ui-widget-header .ui-state-highlight {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-checked {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
}
|
||||
.ui-state-highlight a,
|
||||
.ui-widget-content .ui-state-highlight a,
|
||||
.ui-widget-header .ui-state-highlight a {
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-error,
|
||||
.ui-widget-content .ui-state-error,
|
||||
.ui-widget-header .ui-state-error {
|
||||
border: 1px solid #f1a899;
|
||||
background: #fddfdf;
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error a,
|
||||
.ui-widget-content .ui-state-error a,
|
||||
.ui-widget-header .ui-state-error a {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error-text,
|
||||
.ui-widget-content .ui-state-error-text,
|
||||
.ui-widget-header .ui-state-error-text {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-priority-primary,
|
||||
.ui-widget-content .ui-priority-primary,
|
||||
.ui-widget-header .ui-priority-primary {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-priority-secondary,
|
||||
.ui-widget-content .ui-priority-secondary,
|
||||
.ui-widget-header .ui-priority-secondary {
|
||||
opacity: .7;
|
||||
filter:Alpha(Opacity=70); /* support: IE8 */
|
||||
font-weight: normal;
|
||||
}
|
||||
.ui-state-disabled,
|
||||
.ui-widget-content .ui-state-disabled,
|
||||
.ui-widget-header .ui-state-disabled {
|
||||
opacity: .35;
|
||||
filter:Alpha(Opacity=35); /* support: IE8 */
|
||||
background-image: none;
|
||||
}
|
||||
.ui-state-disabled .ui-icon {
|
||||
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
|
||||
}
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.ui-icon,
|
||||
.ui-widget-content .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-widget-header .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-state-hover .ui-icon,
|
||||
.ui-state-focus .ui-icon,
|
||||
.ui-button:hover .ui-icon,
|
||||
.ui-button:focus .ui-icon {
|
||||
background-image: url("images/ui-icons_555555_256x240.png");
|
||||
}
|
||||
.ui-state-active .ui-icon,
|
||||
.ui-button:active .ui-icon {
|
||||
background-image: url("images/ui-icons_ffffff_256x240.png");
|
||||
}
|
||||
.ui-state-highlight .ui-icon,
|
||||
.ui-button .ui-state-highlight.ui-icon {
|
||||
background-image: url("images/ui-icons_777620_256x240.png");
|
||||
}
|
||||
.ui-state-error .ui-icon,
|
||||
.ui-state-error-text .ui-icon {
|
||||
background-image: url("images/ui-icons_cc0000_256x240.png");
|
||||
}
|
||||
.ui-button .ui-icon {
|
||||
background-image: url("images/ui-icons_777777_256x240.png");
|
||||
}
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-blank { background-position: 16px 16px; }
|
||||
.ui-icon-caret-1-n { background-position: 0 0; }
|
||||
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-caret-1-e { background-position: -32px 0; }
|
||||
.ui-icon-caret-1-se { background-position: -48px 0; }
|
||||
.ui-icon-caret-1-s { background-position: -65px 0; }
|
||||
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-caret-1-w { background-position: -96px 0; }
|
||||
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-left,
|
||||
.ui-corner-tl {
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-right,
|
||||
.ui-corner-tr {
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-left,
|
||||
.ui-corner-bl {
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-right,
|
||||
.ui-corner-br {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
background: #aaaaaa;
|
||||
opacity: .3;
|
||||
filter: Alpha(Opacity=30); /* support: IE8 */
|
||||
}
|
||||
.ui-widget-shadow {
|
||||
-webkit-box-shadow: 0px 0px 5px #666666;
|
||||
box-shadow: 0px 0px 5px #666666;
|
||||
}
|
7
css/ui/jquery-ui.min.css
vendored
7
css/ui/jquery-ui.min.css
vendored
File diff suppressed because one or more lines are too long
287
css/ui/jquery-ui.structure.css
vendored
287
css/ui/jquery-ui.structure.css
vendored
@ -1,287 +0,0 @@
|
||||
/*!
|
||||
* jQuery UI CSS Framework 1.12.1
|
||||
* http://jqueryui.com
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://api.jqueryui.com/category/theming/
|
||||
*/
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden {
|
||||
display: none;
|
||||
}
|
||||
.ui-helper-hidden-accessible {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
.ui-helper-reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
line-height: 1.3;
|
||||
text-decoration: none;
|
||||
font-size: 100%;
|
||||
list-style: none;
|
||||
}
|
||||
.ui-helper-clearfix:before,
|
||||
.ui-helper-clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.ui-helper-clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.ui-helper-zfix {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
filter:Alpha(Opacity=0); /* support: IE8 */
|
||||
}
|
||||
|
||||
.ui-front {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled {
|
||||
cursor: default !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
.ui-icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-top: -.25em;
|
||||
position: relative;
|
||||
text-indent: -99999px;
|
||||
overflow: hidden;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.ui-widget-icon-block {
|
||||
left: 50%;
|
||||
margin-left: -8px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-button {
|
||||
padding: .4em 1em;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
line-height: normal;
|
||||
margin-right: .1em;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
/* Support: IE <= 11 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.ui-button,
|
||||
.ui-button:link,
|
||||
.ui-button:visited,
|
||||
.ui-button:hover,
|
||||
.ui-button:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* to make room for the icon, a width needs to be set here */
|
||||
.ui-button-icon-only {
|
||||
width: 2em;
|
||||
box-sizing: border-box;
|
||||
text-indent: -9999px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* no icon support for input elements */
|
||||
input.ui-button.ui-button-icon-only {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
/* button icon element(s) */
|
||||
.ui-button-icon-only .ui-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -8px;
|
||||
margin-left: -8px;
|
||||
}
|
||||
|
||||
.ui-button.ui-icon-notext .ui-icon {
|
||||
padding: 0;
|
||||
width: 2.1em;
|
||||
height: 2.1em;
|
||||
text-indent: -9999px;
|
||||
white-space: nowrap;
|
||||
|
||||
}
|
||||
|
||||
input.ui-button.ui-icon-notext .ui-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
text-indent: 0;
|
||||
white-space: normal;
|
||||
padding: .4em 1em;
|
||||
}
|
||||
|
||||
/* workarounds */
|
||||
/* Support: Firefox 5 - 40 */
|
||||
input.ui-button::-moz-focus-inner,
|
||||
button.ui-button::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ui-controlgroup {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
.ui-controlgroup > .ui-controlgroup-item {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
.ui-controlgroup > .ui-controlgroup-item:focus,
|
||||
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ui-controlgroup-vertical > .ui-controlgroup-item {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
text-align: left;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-item {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.ui-controlgroup .ui-controlgroup-label {
|
||||
padding: .4em 1em;
|
||||
}
|
||||
.ui-controlgroup .ui-controlgroup-label span {
|
||||
font-size: 80%;
|
||||
}
|
||||
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
|
||||
border-left: none;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
|
||||
border-top: none;
|
||||
}
|
||||
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
|
||||
border-right: none;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* Spinner specific style fixes */
|
||||
.ui-controlgroup-vertical .ui-spinner-input {
|
||||
|
||||
/* Support: IE8 only, Android < 4.4 only */
|
||||
width: 75%;
|
||||
width: calc( 100% - 2.4em );
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
|
||||
border-top-style: solid;
|
||||
}
|
||||
|
||||
.ui-checkboxradio-label .ui-icon-background {
|
||||
box-shadow: inset 1px 1px 1px #ccc;
|
||||
border-radius: .12em;
|
||||
border: none;
|
||||
}
|
||||
.ui-checkboxradio-radio-label .ui-icon-background {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 1em;
|
||||
overflow: visible;
|
||||
border: none;
|
||||
}
|
||||
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
|
||||
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
|
||||
background-image: none;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-width: 4px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-checkboxradio-disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
.ui-spinner {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.ui-spinner-input {
|
||||
border: none;
|
||||
background: none;
|
||||
color: inherit;
|
||||
padding: .222em 0;
|
||||
margin: .2em 0;
|
||||
vertical-align: middle;
|
||||
margin-left: .4em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
.ui-spinner-button {
|
||||
width: 1.6em;
|
||||
height: 50%;
|
||||
font-size: .5em;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
right: 0;
|
||||
}
|
||||
/* more specificity required here to override default borders */
|
||||
.ui-spinner a.ui-spinner-button {
|
||||
border-top-style: none;
|
||||
border-bottom-style: none;
|
||||
border-right-style: none;
|
||||
}
|
||||
.ui-spinner-up {
|
||||
top: 0;
|
||||
}
|
||||
.ui-spinner-down {
|
||||
bottom: 0;
|
||||
}
|
5
css/ui/jquery-ui.structure.min.css
vendored
5
css/ui/jquery-ui.structure.min.css
vendored
@ -1,5 +0,0 @@
|
||||
/*! jQuery UI - v1.12.1 - 2017-07-27
|
||||
* http://jqueryui.com
|
||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||||
|
||||
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}
|
443
css/ui/jquery-ui.theme.css
vendored
443
css/ui/jquery-ui.theme.css
vendored
@ -1,443 +0,0 @@
|
||||
/*!
|
||||
* jQuery UI CSS Framework 1.12.1
|
||||
* http://jqueryui.com
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://api.jqueryui.com/category/theming/
|
||||
*
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget .ui-widget {
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget input,
|
||||
.ui-widget select,
|
||||
.ui-widget textarea,
|
||||
.ui-widget button {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget.ui-widget-content {
|
||||
border: 1px solid #c5c5c5;
|
||||
}
|
||||
.ui-widget-content {
|
||||
border: 1px solid #dddddd;
|
||||
background: #ffffff;
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-content a {
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-header {
|
||||
border: 1px solid #dddddd;
|
||||
background: #e9e9e9;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-widget-header a {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default,
|
||||
.ui-widget-content .ui-state-default,
|
||||
.ui-widget-header .ui-state-default,
|
||||
.ui-button,
|
||||
|
||||
/* We use html here because we need a greater specificity to make sure disabled
|
||||
works properly when clicked or hovered */
|
||||
html .ui-button.ui-state-disabled:hover,
|
||||
html .ui-button.ui-state-disabled:active {
|
||||
border: 1px solid #c5c5c5;
|
||||
background: #f6f6f6;
|
||||
font-weight: normal;
|
||||
color: #454545;
|
||||
}
|
||||
.ui-state-default a,
|
||||
.ui-state-default a:link,
|
||||
.ui-state-default a:visited,
|
||||
a.ui-button,
|
||||
a:link.ui-button,
|
||||
a:visited.ui-button,
|
||||
.ui-button {
|
||||
color: #454545;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-state-hover,
|
||||
.ui-widget-content .ui-state-hover,
|
||||
.ui-widget-header .ui-state-hover,
|
||||
.ui-state-focus,
|
||||
.ui-widget-content .ui-state-focus,
|
||||
.ui-widget-header .ui-state-focus,
|
||||
.ui-button:hover,
|
||||
.ui-button:focus {
|
||||
border: 1px solid #cccccc;
|
||||
background: #ededed;
|
||||
font-weight: normal;
|
||||
color: #2b2b2b;
|
||||
}
|
||||
.ui-state-hover a,
|
||||
.ui-state-hover a:hover,
|
||||
.ui-state-hover a:link,
|
||||
.ui-state-hover a:visited,
|
||||
.ui-state-focus a,
|
||||
.ui-state-focus a:hover,
|
||||
.ui-state-focus a:link,
|
||||
.ui-state-focus a:visited,
|
||||
a.ui-button:hover,
|
||||
a.ui-button:focus {
|
||||
color: #2b2b2b;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ui-visual-focus {
|
||||
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
||||
}
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active,
|
||||
a.ui-button:active,
|
||||
.ui-button:active,
|
||||
.ui-button.ui-state-active:hover {
|
||||
border: 1px solid #003eff;
|
||||
background: #007fff;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
}
|
||||
.ui-icon-background,
|
||||
.ui-state-active .ui-icon-background {
|
||||
border: #003eff;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight,
|
||||
.ui-widget-content .ui-state-highlight,
|
||||
.ui-widget-header .ui-state-highlight {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-checked {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
}
|
||||
.ui-state-highlight a,
|
||||
.ui-widget-content .ui-state-highlight a,
|
||||
.ui-widget-header .ui-state-highlight a {
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-error,
|
||||
.ui-widget-content .ui-state-error,
|
||||
.ui-widget-header .ui-state-error {
|
||||
border: 1px solid #f1a899;
|
||||
background: #fddfdf;
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error a,
|
||||
.ui-widget-content .ui-state-error a,
|
||||
.ui-widget-header .ui-state-error a {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error-text,
|
||||
.ui-widget-content .ui-state-error-text,
|
||||
.ui-widget-header .ui-state-error-text {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-priority-primary,
|
||||
.ui-widget-content .ui-priority-primary,
|
||||
.ui-widget-header .ui-priority-primary {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-priority-secondary,
|
||||
.ui-widget-content .ui-priority-secondary,
|
||||
.ui-widget-header .ui-priority-secondary {
|
||||
opacity: .7;
|
||||
filter:Alpha(Opacity=70); /* support: IE8 */
|
||||
font-weight: normal;
|
||||
}
|
||||
.ui-state-disabled,
|
||||
.ui-widget-content .ui-state-disabled,
|
||||
.ui-widget-header .ui-state-disabled {
|
||||
opacity: .35;
|
||||
filter:Alpha(Opacity=35); /* support: IE8 */
|
||||
background-image: none;
|
||||
}
|
||||
.ui-state-disabled .ui-icon {
|
||||
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
|
||||
}
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.ui-icon,
|
||||
.ui-widget-content .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-widget-header .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-state-hover .ui-icon,
|
||||
.ui-state-focus .ui-icon,
|
||||
.ui-button:hover .ui-icon,
|
||||
.ui-button:focus .ui-icon {
|
||||
background-image: url("images/ui-icons_555555_256x240.png");
|
||||
}
|
||||
.ui-state-active .ui-icon,
|
||||
.ui-button:active .ui-icon {
|
||||
background-image: url("images/ui-icons_ffffff_256x240.png");
|
||||
}
|
||||
.ui-state-highlight .ui-icon,
|
||||
.ui-button .ui-state-highlight.ui-icon {
|
||||
background-image: url("images/ui-icons_777620_256x240.png");
|
||||
}
|
||||
.ui-state-error .ui-icon,
|
||||
.ui-state-error-text .ui-icon {
|
||||
background-image: url("images/ui-icons_cc0000_256x240.png");
|
||||
}
|
||||
.ui-button .ui-icon {
|
||||
background-image: url("images/ui-icons_777777_256x240.png");
|
||||
}
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-blank { background-position: 16px 16px; }
|
||||
.ui-icon-caret-1-n { background-position: 0 0; }
|
||||
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-caret-1-e { background-position: -32px 0; }
|
||||
.ui-icon-caret-1-se { background-position: -48px 0; }
|
||||
.ui-icon-caret-1-s { background-position: -65px 0; }
|
||||
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-caret-1-w { background-position: -96px 0; }
|
||||
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-left,
|
||||
.ui-corner-tl {
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-right,
|
||||
.ui-corner-tr {
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-left,
|
||||
.ui-corner-bl {
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-right,
|
||||
.ui-corner-br {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
background: #aaaaaa;
|
||||
opacity: .3;
|
||||
filter: Alpha(Opacity=30); /* support: IE8 */
|
||||
}
|
||||
.ui-widget-shadow {
|
||||
-webkit-box-shadow: 0px 0px 5px #666666;
|
||||
box-shadow: 0px 0px 5px #666666;
|
||||
}
|
5
css/ui/jquery-ui.theme.min.css
vendored
5
css/ui/jquery-ui.theme.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1,121 +0,0 @@
|
||||
# Just a document to keep track about what all the included header files do, and why there are so many.
|
||||
|
||||
include_header.html is in:
|
||||
|
||||
contact_add_edit_select.php
|
||||
individual_history_log.php
|
||||
individual_hours_log.php
|
||||
location_add_edit.php
|
||||
location_add_edit.php
|
||||
location_add_edit_select.php
|
||||
shop_welcome.php
|
||||
stats.php
|
||||
transaction_log.php
|
||||
|
||||
[Identical to include_header_shop with the exception of jquery-ui .. no big advantage]
|
||||
|
||||
<link href="css/transactions.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/jquery.nouislider.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/chosen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/ui/jquery-ui.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="js/jquery-2.1.1.js"></script>
|
||||
<script src="js/transaction.js"></script>
|
||||
<script src="js/contact.js"></script>
|
||||
<script src="js/shop.js"></script>
|
||||
<script src="js/jquery.mask.js"></script>
|
||||
<script src="js/jquery.jeditable.js"></script>
|
||||
<script src="js/jquery.nouislider.js"></script>
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
||||
<script src="js/ui/jquery-ui.js"></script>
|
||||
|
||||
include_header_shop.html is in:
|
||||
|
||||
shop_log.php
|
||||
start_shop.php
|
||||
|
||||
[Because it has different body layout, namely the inclusion of About/Help]
|
||||
|
||||
<link href="css/transactions.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/jquery.nouislider.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/chosen.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="js/jquery-2.1.1.js"></script>
|
||||
<script src="js/transaction.js"></script>
|
||||
<script src="js/contact.js"></script>
|
||||
<script src="js/shop.js"></script>
|
||||
<script src="js/jquery.mask.js"></script>
|
||||
<script src="js/jquery.jeditable.js"></script>
|
||||
<script src="js/jquery.nouislider.js"></script>
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
||||
|
||||
|
||||
include_header_contacts.html is in:
|
||||
|
||||
contact_add_edit.php
|
||||
|
||||
[Identical to include_header_shop with the exception of transactions.css, transactions.js and shop.js,
|
||||
if these files are included the slider gets slightly messed up in appearance.]
|
||||
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/jquery.nouislider.contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/chosen.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="js/jquery-2.1.1.js"></script>
|
||||
<script src="js/contact.js"></script>
|
||||
<script src="js/jquery.mask.js"></script>
|
||||
<script src="js/jquery.jeditable.js"></script>
|
||||
<script src="js/jquery.nouislider.js"></script>
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
||||
|
||||
include_header_stats.html is in:
|
||||
|
||||
stats/*
|
||||
|
||||
[important because it defines correct path]
|
||||
|
||||
<link href="../css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../css/pickmeup.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../css/stats.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="../js/jquery-2.1.1.js"></script>
|
||||
<script src="../js/jquery.pickmeup.js"></script>
|
||||
<script src="../js/stats.js"></script>
|
||||
|
||||
|
||||
|
||||
REMOVED:
|
||||
|
||||
include_header_start_shop.html is in:
|
||||
|
||||
start_shop.php
|
||||
|
||||
[identical to include_header_shop.html]
|
||||
|
||||
<link href="css/transactions.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/jquery.nouislider.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/chosen.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="js/jquery-2.1.1.js"></script>
|
||||
<script src="js/transaction.js"></script>
|
||||
<script src="js/contact.js"></script>
|
||||
<script src="js/shop.js"></script>
|
||||
<script src="js/jquery.mask.js"></script>
|
||||
<script src="js/jquery.jeditable.js"></script>
|
||||
<script src="js/jquery.nouislider.js"></script>
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
@ -8,97 +8,28 @@ B. htpasswd -Bc -C 10 htpasswd test (note that bcrypt is used)
|
||||
|
||||
C. chown www-data:www-data /var/htpasswd; chmod 0400 /var/htpasswd; \
|
||||
|
||||
D. In associated virtual host file, e.g. default-ssl.conf:
|
||||
<Directory /var/www/html>
|
||||
D. <Directory /var/www/html>
|
||||
Authtype Basic
|
||||
Authname "Amazing Community Bike Shop Login"
|
||||
Require user someuser
|
||||
AuthUserFile /var/htpasswd
|
||||
</Directory>
|
||||
|
||||
|
||||
SSL (do not settle for anything less)
|
||||
|
||||
- SELF-SIGNED
|
||||
Under Debian (updated for Chrome 58 or greater):
|
||||
|
||||
I.
|
||||
openssl genrsa -out rootCA.key 2048
|
||||
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 36500 -out rootCA.pem
|
||||
|
||||
create this file - v3.ext:
|
||||
authorityKeyIdentifier=keyid,issuer
|
||||
basicConstraints=CA:FALSE
|
||||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||
subjectAltName = @alt_names
|
||||
|
||||
[alt_names]
|
||||
DNS.1 = %%DOMAIN%%
|
||||
|
||||
Run this script in same directory as v3.ext file:
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Please supply a domain to create a certificate for";
|
||||
echo "e.g. mysite.com"
|
||||
exit;
|
||||
fi
|
||||
|
||||
# Create a new private key if one doesnt exist, or use the existing one if it does
|
||||
if [ -f device.key ]; then
|
||||
KEY_OPT="-key"
|
||||
else
|
||||
KEY_OPT="-keyout"
|
||||
fi
|
||||
|
||||
DOMAIN=$1
|
||||
COMMON_NAME=${2:-*.$1}
|
||||
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
|
||||
NUM_OF_DAYS=36500
|
||||
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
|
||||
cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext
|
||||
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext
|
||||
|
||||
# move output files to final filenames
|
||||
mv device.csr $DOMAIN.csr
|
||||
cp device.crt $DOMAIN.crt
|
||||
|
||||
# remove temp file
|
||||
rm -f device.crt;
|
||||
|
||||
echo
|
||||
echo "###########################################################################"
|
||||
echo Done!
|
||||
echo "###########################################################################"
|
||||
echo "To use these files on your server, simply copy both $DOMAIN.csr and"
|
||||
echo "device.key to your webserver, and use like so (if Apache, for example)"
|
||||
echo
|
||||
echo " SSLCertificateFile /path_to_your_files/$DOMAIN.crt"
|
||||
echo " SSLCertificateKeyFile /path_to_your_files/device.key"
|
||||
|
||||
|
||||
II. cp device.key /etc/ssl/private/ssl-cert-snakeoil.key
|
||||
cp mysite.com.csr /etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||
|
||||
III. a2enmod ssl;
|
||||
a2ensite default-ssl.conf; (standard on debian-based distributions)
|
||||
add certs to the SSLCertificateFile and SSLCertificateKeyFile directives in default-ssl.conf
|
||||
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
|
||||
a2dissite 000-default.conf;
|
||||
service apache2 restart
|
||||
|
||||
In the Chromium broswer: chrome://settings/certificates
|
||||
Choose IMPORT in AUTHORITIES
|
||||
Upload the public certificate you created, e.g. rootCA.key
|
||||
check "Trust this certificate for identifying websites"
|
||||
|
||||
- LETSENCRYPT
|
||||
A preferable alternative would be to use letsencrypt. If you are using a reverse proxy, usually nginx-proxy,
|
||||
make certain that HTTP_X_FORWARDED_FOR is used for identifying the originating IP address,
|
||||
because YBDB shops keep track of their unique ip.
|
||||
Under Debian:
|
||||
A. openssl req -new -x509 -nodes -out ssl-cert-snakeoil.pem -days 36500 -keyout ssl-cert-snakeoil.key (100 year certificate)
|
||||
B. cp ssl-cert-snakeoil.key /etc/ssl/private/
|
||||
cp ssl-cert-snakeoil.pem /etc/ssl/certs/
|
||||
C. a2enmod ssl;
|
||||
a2ensite default-ssl.conf; (standard on debian-based distributions .. add <Directory> stanza above)
|
||||
a2dissite 000-default.conf;
|
||||
|
||||
|
||||
TERMINAL AUTOMATION AND SECURITY
|
||||
|
||||
Firefox (IceWeasel); note that Chrome below, provides the most recent instructions:
|
||||
Firefox (IceWeasel):
|
||||
1. Download KeePass v2 zip - http://keepass.info/download.html
|
||||
2. Unzip in ~/KeePass
|
||||
3. sudo chown root:root ~/KeePass; sudo chmod 0755 ~/KeePass;
|
||||
@ -106,8 +37,9 @@ Firefox (IceWeasel); note that Chrome below, provides the most recent instructio
|
||||
5. run .. mono KeePass.exe, create database and a key file in ~/KeePass
|
||||
6. mv KeePass.config.xml KeePass.config.enforced.xml
|
||||
7. sudo chown root:root KeePass.config.enforced.xml (and database/key file)
|
||||
8. sudo chmod 0400 KeePass.config.enforced.xml
|
||||
9. See Chrome for KeePass.config.enforced.xml policy changes.
|
||||
8. sudo chmod 0444 KeePass.config.enforced.xml
|
||||
9. Most importantly in KeePass.config.enforced.xml between <Security> change true to
|
||||
<Policy><UnhidePasswords>false</UnhidePasswords></Policy> so that passwords cannot be seen.
|
||||
10. In Debian/Ubuntu: apt-get install mono-runtime mono-devel
|
||||
11. Install KeeFox extension from https://addons.mozilla.org/en-us/firefox/addon/keefox/
|
||||
12. KeeFox will tell you where to copy KeePassRPC.plgx from into the plugins directory
|
||||
@ -118,218 +50,50 @@ Firefox (IceWeasel); note that Chrome below, provides the most recent instructio
|
||||
the whole process can be completely automated in KeeFox options.
|
||||
16. In Firefox (IceWeasel) Preferences -> General use "When IceWeasel starts: Show my windows and tabs from the last time"
|
||||
17. Afterwards, you can sudo chown -R root:root ~/KeePass/*
|
||||
sudo chmod 0400 ~/KeePass/*
|
||||
You may need to make adjustments for plugins.
|
||||
Then run with sudo, see "Chrome (visudo)" to learn how to do this.
|
||||
|
||||
Chrome:
|
||||
1. Install keepass2: sudo apt-get install keepass2
|
||||
1. Download KeePass zip - http://keepass.info/download.html
|
||||
2. Unzip in ~/KeePass
|
||||
3. sudo chown root:root ~/KeePass; sudo chmod 0755 ~/KeePass;
|
||||
4. run .. mono KeePass.exe, create database and a key file in ~/KeePass
|
||||
5. mv KeePass.config.xml KeePass.config.enforced.xml
|
||||
6. sudo chown root:root KeePass.config.enforced.xml (and database/key file)
|
||||
7. sudo chmod 0444 KeePass.config.enforced.xml
|
||||
8. Most importantly in KeePass.config.enforced.xml between <Security> change true to
|
||||
<Policy><UnhidePasswords>false</UnhidePasswords></Policy> so that passwords cannot be seen.
|
||||
9. When setting up password database for KeePass use only a key file.
|
||||
10. Add the url along with username and password in the database.
|
||||
11. In Debian/Ubuntu: apt-get install mono-runtime mono-devel
|
||||
12. Install extension chromeIPass
|
||||
13. Install keepasshttp as explained at https://github.com/pfn/keepasshttp/ (put KeePassHttp.plgx in ~/KeePass)
|
||||
14. Follow the directions chromeIPass gives you, creating an identifier
|
||||
15. Good idea to restart chrome.
|
||||
16. In Chrome Settings "On Startup Continue where you left off"
|
||||
17. Afterwards, you can sudo chown -R root:root ~/KeePass/*
|
||||
You may need to make adjustments for plugins.
|
||||
|
||||
2. Optional: Install libsecret-tools: sudo apt-get install libsecret-tools
|
||||
secret-tool store --label="PositiveSpin" keepass pos (remember password)
|
||||
(Depending on your distribution) Open Menu -> Control Menu -> Security -> Password and Keys
|
||||
Right-click on the "login" keyring
|
||||
Select "Change password"
|
||||
Enter your old password and leave the new password blank
|
||||
Press ok
|
||||
You may want to remove Password and Keys from the menu,
|
||||
E.g. see https://wiki.lxde.org/en/Main_Menu if using lxde:
|
||||
- sudo mv seahorse.desktop /root; lxpanelctl restart
|
||||
|
||||
3. run keepass2;
|
||||
create new password database in ~/keepass
|
||||
assign password created with secret-tool to Master password
|
||||
create key file in ~/keepass, or even better, in a secret place
|
||||
In the password datatase, add the url for YBDB, username and password (created with htpasswd)
|
||||
close keepass2
|
||||
sudo chown -R root:root ~/keepass
|
||||
sudo chmod -R 0400 ~/keepass (change to 0600 if you want to change password, then back to 0400 when done)
|
||||
|
||||
4. SECURITY - The easiest ways to learn about the name of policies which can be disabled are simply
|
||||
to unclick them in Tools -> Options -> Policy, and then look at the additions to <Security></Security> in
|
||||
/usr/lib/keepass2/KeePass.config.xml after exiting the program; security changes don't apply
|
||||
until restarting the program. Caveat, make sure that the xml is properly formed.
|
||||
These policies can be added between <Policy> in KeePass.config.enforced.xml. Independently of
|
||||
using KeePass.config.enforced.xml, the key database could be looked at, however,
|
||||
the owner (root), 0400 permissions, and KeePass.config.enforced.xml prevent the database
|
||||
from being copied anywhere, and the key file would be required as well to gain access.
|
||||
|
||||
Secret tools only provides a low-level layer of security with a master password passed by stdin,
|
||||
and is optional (and may be a liability on a public computer). Keepass has auditing capability
|
||||
via triggers, see https://keepass.info/help/kb/trigger_examples.html#audit, if your want to monitor events.
|
||||
It should be noted that keepassxc does not provide the rich set of policies that keepass does,
|
||||
which rules out this newer program.
|
||||
|
||||
cd /usr/lib/keepass2; \
|
||||
sudo touch KeePass.config.enforced.xml
|
||||
|
||||
edit file and add between <Configuration></Configuration>
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<Meta>
|
||||
<PreferUserConfiguration>false</PreferUserConfiguration>
|
||||
</Meta>
|
||||
<Security>
|
||||
<Policy>
|
||||
<UnhidePasswords>false</UnhidePasswords>
|
||||
<NewFile>false</NewFile>
|
||||
<SaveFile>false</SaveFile>
|
||||
<Export>false</Export>
|
||||
<Import>false</Import>
|
||||
<Copy>false</Copy>
|
||||
<Print>false</Print>
|
||||
<ChangeMasterKey>false</ChangeMasterKey>
|
||||
<Delete>false</Delete>
|
||||
</Policy>
|
||||
<WorkspaceLocking>
|
||||
<AlwaysExitInsteadOfLocking>true</AlwaysExitInsteadOfLocking>
|
||||
</WorkspaceLocking>
|
||||
</Security>
|
||||
|
||||
</Configuration>
|
||||
|
||||
sudo chmod 0400 KeePass.config.enforced.xml
|
||||
|
||||
[doc: https://keepass.info/help/base/configuration.htm]
|
||||
|
||||
5. Install keepasshttp from https://github.com/pfn/keepasshttp/ by putting KeePassHttp.plgx in /usr/lib/keepass2;
|
||||
sudo chmod 0644 /usr/lib/keepass2/KeePassHttp.plgx
|
||||
sudo apt-get install libmono-system-xml-linq4.0-cil libmono-system-data-datasetextensions4.0-cil \
|
||||
libmono-system-runtime-serialization4.0-cil mono-mcs
|
||||
|
||||
6. Install chrome extension chromeIPass
|
||||
You may have to uncheck:
|
||||
Activate password generator.
|
||||
Automatically fill-in single credentials entry.
|
||||
Activate autocomplete for username fields
|
||||
|
||||
7. Follow the directions chromeIPass gives you, creating an identifier
|
||||
https://github.com/pfn/passifox/blob/master/documentation/chromeIPass.md goes into more detail
|
||||
|
||||
8. sudo su; visudo
|
||||
after: %sudo ALL=(ALL:ALL) ALL
|
||||
add: pos ALL=(ALL) NOPASSWD: /usr/bin/keepass2 (note pos is an example user account being used for X11)
|
||||
|
||||
9. In Chrome Settings "On Startup Continue where you left off" or
|
||||
"Open a specific page or set of pages" and add the YBDB POS url as one of those specific pages
|
||||
|
||||
10. Add to desktop startup (see below). Test changes by logging out, and logging back into the WM.
|
||||
|
||||
DESKTOP STARTUP
|
||||
|
||||
1. LXDE - put a file with this format in ~/.config/autostart with name of *desktop, e.g. keepass.desktop:
|
||||
1. LXDE - put a file with this format in ~/.config/auto with name of *desktop, e.g. keepass.desktop:
|
||||
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Exec=bash -c "secret-tool lookup keepass pos | sudo keepass2 /home/pos/keepass/PositiveSpin.kdbx -pw-stdin -keyfile:/home/pos/keepass/PositiveSpin.key"
|
||||
|
||||
Where keepass2 is a file in /usr/bin (0755 perms)
|
||||
|
||||
#!/bin/sh
|
||||
# e.g. in this case KeePass.exe was intalled in users home, rather than /usr/lib/keepass2
|
||||
exec /usr/bin/cli /home/pos/KeePass/KeePass.exe "$@"
|
||||
Exec=/usr/bin/mono /home/ps/KeePass/KeePass.exe
|
||||
|
||||
2. Gnome based Window manager, e.g. Mate - open gnome-session-properties from commandline,
|
||||
and add startup application.
|
||||
|
||||
SPECIAL NOTES
|
||||
|
||||
With the combination of keepass2 and httpasswd, it is possible to fine tune access. For instance, there could be a
|
||||
sign-in computer allowing access only to shop_log.php, shop_welcome.php, contact_add_edit_select.php, and
|
||||
contact_add_edit.php, and another computer for volunteer staff allowing access to almost everything,
|
||||
including transaction_log.php, perhaps with the exclusion of certain reports that should only be available
|
||||
to the volunteer coordinator.
|
||||
|
||||
https://wiki.apache.org/httpd/BypassAuthenticationOrAuthorizationRequirements provides good details how this is done:
|
||||
|
||||
E.g., we want paid_members.php to be accessible via a completely different password under Apache for our paid members team:
|
||||
|
||||
<FilesMatch "\.(php|paid_members\.php)$">
|
||||
SSLOptions +StdEnvVars
|
||||
</FilesMatch>
|
||||
<Directory /var/www/html/js>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
Satisfy any
|
||||
</Directory>
|
||||
<Directory /var/www/html/css>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
Satisfy any
|
||||
</Directory>
|
||||
<Directory /var/www/html>
|
||||
Authtype Basic
|
||||
Authname "Amazing Community Bike Shop Login"
|
||||
Require user someuser
|
||||
AuthUserFile /var/htpasswd
|
||||
</Directory>
|
||||
<Files "paid_members.php">
|
||||
Authtype Basic
|
||||
Authname "Paid Members Login"
|
||||
Require user paid_members_team
|
||||
AuthUserFile /var/htpasswd
|
||||
</Files>
|
||||
|
||||
How to get that working with keepass2 should be obvious.
|
||||
|
||||
SUSPENDING COMPUTER
|
||||
|
||||
Example commands that bring up the gui setting tool:
|
||||
1. xfce4-power-manager-settings (eg., used by wattos for LXDE)
|
||||
2. mate-power-manager-settings or mate-power-preferences
|
||||
|
||||
BIOS / UEFI (recommended)
|
||||
|
||||
Turn off booting of external devices; disable unnecessary external ports; password protect BIOS setup.
|
||||
Remember the password. There are some ways to reset passwords, if forgotten, but depending on the hardware,
|
||||
it is not always straight-forward, e.g., resetting the CMOS.
|
||||
|
||||
GRUB2 PASSWORD PROTECT (mandatory)
|
||||
|
||||
In order to prevent individuals from casually booting into single mode or a shell,
|
||||
password protecting GRUB with an encrypted password is mandatory.
|
||||
|
||||
https://help.ubuntu.com/community/Grub2/Passwords gives good instructions
|
||||
|
||||
1. In /etc/grub.d/10_linux change
|
||||
|
||||
CLASS="--class gnu-linux --class gnu --class os"
|
||||
|
||||
to
|
||||
|
||||
CLASS="--class gnu-linux --class gnu --class os --unrestricted"
|
||||
|
||||
2. Create an encrypted password with grub-mkpasswd-pbkdf2, producing something like
|
||||
|
||||
grub.pbkdf2.sha512.10000.80E702585F80C8D70D4BC75
|
||||
|
||||
3. In /etc/grub.d/40_custom add:
|
||||
|
||||
set superusers="MyUserName"
|
||||
password_pbkdf2 MyUserName grub.pbkdf2.sha512.10000.80E702585F80C8D70D4BC75
|
||||
# if you are using GRUB 2 1.99 the next line needs to be uncommented
|
||||
# export superusers
|
||||
|
||||
4. sudo chmod 0700 40_custom
|
||||
|
||||
5. update-grub2
|
||||
|
||||
SSD or HD ENCRYPTION (optional)
|
||||
|
||||
If a sign-in computers unencrypted drive goes missing (or is stolen), it should (in most cases)
|
||||
be pretty obvious, and you would want to change YBDB's htpasswd and root password for the computer. However, if you
|
||||
want to "help" prevent a detached drive from being accessed, utilitizing an encrypted partition or file container,
|
||||
for the keepass2 system discussed above, would be one way to go, although, even that can be accessed with a few steps,
|
||||
and some forensics (https://dfir.science/2014/08/how-to-brute-forcing-password-cracking.html). While most modern
|
||||
distributions provide an option to encrypt the whole installation, some good reasons for not wanting to do this
|
||||
include a performance hit, and a more complex recovery. When deciding to go the encryption route, you need to weigh
|
||||
in the advantages and disadvantages for encrypting while factoring into the equation the nature of the environment
|
||||
the computer will be located within.
|
||||
|
||||
SUMMARY
|
||||
|
||||
There are other things that can be done within the terminal to prevent tampering, e.g., kiosk or read-only environment,
|
||||
There are other things that can be done within the terminal to prevent tampering, e.g., read-only environment,
|
||||
an expect or curl script, etc. rather than KeePass, but what is above protects the password from hacking, eavesdropping,
|
||||
and from regular users in the shop, basically, only the sysadmin and bookkeeper should have remote access via the password.
|
||||
So while YBDB is on the internet, it will only be available to the terminal(s) you allow it to be on, and
|
||||
@ -337,3 +101,9 @@ the Point of Sale will be at the proper location which is usually the front of t
|
||||
walk-in/walk-out.
|
||||
|
||||
Word of wisdom: It is always good practice to occasionally change the password.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,11 +1,3 @@
|
||||
<div class="footer">
|
||||
Send feedback about YBDB
|
||||
<span class="footer-line">
|
||||
<a href="https://github.com/fspc/Yellow-Bike-Database/issues" target="_blank">Bugs</a> |
|
||||
<a href="https://github.com/fspc/Yellow-Bike-Database/wiki" target="_blank">Wiki</a> |
|
||||
<a href="https://github.com/fspc/Yellow-Bike-Database/wiki/Development" target="_blank">Contribute</a>
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -23,72 +23,27 @@ function resetTimer()
|
||||
<title>YBDB</title>
|
||||
<link href="css/transactions.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/stats.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/jquery.nouislider.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/chosen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/ui/jquery-ui.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/tabulator/tabulator_site.min.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="js/jquery-2.1.1.js"></script>
|
||||
<script src="js/transaction.js"></script>
|
||||
<script src="js/contact.js"></script>
|
||||
<script src="js/shop.js"></script>
|
||||
<script src="js/reports.js"></script>
|
||||
<script src="js/jquery.mask.js"></script>
|
||||
<script src="js/jquery.jeditable.js"></script>
|
||||
<script src="js/jquery.nouislider.js"></script>
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
||||
<script src="js/ui/jquery-ui.js"></script>
|
||||
<script src="js/moment/moment.js"></script>
|
||||
<script src="js/tabulator/dist/js/tabulator.min.js"></script>
|
||||
<script src="js/etherpad.js"></script>
|
||||
<script src="js/jquery.ns-autogrow/dist/jquery.ns-autogrow.js"></script>
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
|
||||
// prevent a double etherpad if shop_log_iframe is clicked on after a shop closes
|
||||
$("#shop_log_link").on("click keypress", function(e) {
|
||||
$.post("json/transaction.php", {shop_exist: 1}, function(data) {
|
||||
if (data === "no_shop") {
|
||||
window.top.location.href = "./start_shop.php";
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if ( document.location.pathname.match(/shop_welcome\.php$/) ) {
|
||||
$("#shop_log_link").attr("href","/shop_log_iframe.php");
|
||||
} else {
|
||||
$("#shop_log_link").attr("href","/shop_log.php");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="yb_standard">
|
||||
<table align="center" width="1000" border="0" cellpadding="1" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td height="40" align="right"><a id="shop_log_link" href="/shop_log.php">Current Shop</a> | <a href="/start_shop.php" target="_parent"> All Shops</a> | <a href="/contact_add_edit_select.php" target="_parent">Add/Edit Contact</a> | <a href="/stats.php" target="_parent">Reports</a> | <a href="/transaction_log.php" target="_parent">Transaction Log</a> | <a href="http://www.positivespin.org" target="_blank">PS Home</a></td>
|
||||
<td height="40" align="right"><a href="/shop_log.php">Current Shop</a> | <a href="/start_shop.php"> All Shops</a> | <a href="/contact_add_edit_select.php">Add/Edit Contact</a> | <a href="/stats.php">Statistics</a> | <a href="/transaction_log.php">Transaction Log</a> | <a href="http://www.positivespin.org/home2/" target="_blank">PS Home</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<!--
|
||||
<div style="float: left; width: 12.5%; height: 40px; display: inline-block;"></div>
|
||||
<div style="float: left; align-content: center; width: 75%; height: 40px; display: inline-block;">
|
||||
<div align="right"><a id="shop_log_link" href="/shop_log.php">Current Shop</a> |
|
||||
<a href="/start_shop.php" target="_parent"> All Shops</a> |
|
||||
<a href="/contact_add_edit_select.php" target="_parent">Add/Edit Contact</a> |
|
||||
<a href="/stats.php" target="_parent">Reports</a> |
|
||||
<a href="/transaction_log.php" target="_parent">Transaction Log</a> |
|
||||
<a href="http://www.positivespin.org" target="_blank">PS Home</a></div>
|
||||
</div>
|
||||
<div style="float: left; width: 12.5%; height: 40px; display: inline-block;"></div>
|
||||
|
||||
<div style="float: left; width: 12.5%; height: 100%; display: inline-block;"></div>
|
||||
<table style="float: left; width: 75%; display: inline-block;" align="center" border="0" cellpadding="1" cellspacing="0"><tr><td>
|
||||
-->
|
||||
|
@ -40,7 +40,7 @@ function resetTimer()
|
||||
<body class="yb_standard">
|
||||
<table align="center" width="1000" border="0" cellpadding="1" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td height="40" align="right"><a href="/shop_log.php">Current Shop</a> | <a href="/start_shop.php"> All Shops</a> | <a href="/contact_add_edit_select.php">Add/Edit Contact</a> | <a href="/stats.php">Reports</a> | <a href="/transaction_log.php">Transaction Log</a> | <a href="http://www.positivespin.org" target="_blank">PS Home</a></td>
|
||||
<td height="40" align="right"><a href="/shop_log.php">Current Shop</a> | <a href="/start_shop.php"> All Shops</a> | <a href="/contact_add_edit_select.php">Add/Edit Contact</a> | <a href="/stats.php">Statistics</a> | <a href="/transaction_log.php">Transaction Log</a> | <a href="http://www.positivespin.org/home2/" target="_blank">PS Home</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -19,7 +19,7 @@ function resetTimer()
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||
<title>YBDB</title>
|
||||
<link href="css/transactions.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
@ -37,103 +37,14 @@ function resetTimer()
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
||||
<script>
|
||||
|
||||
$(function() {
|
||||
|
||||
// prevent a double etherpad if shop_log_iframe is clicked on after a shop closes
|
||||
$("#shop_log_link").on("click keypress", function(e) {
|
||||
if (window.location.pathname === '/shop_log_iframe.php') {
|
||||
e.preventDefault(); // hack to prevent open shop from reopening in same page
|
||||
}
|
||||
$.post("json/transaction.php", {shop_exist: 1}, function(data) {
|
||||
if (data === "no_shop") {
|
||||
window.top.location.href = "./start_shop.php";
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// scroll back to same location when up, down, or updated are selected
|
||||
$(".down").on("click keypress", function(e) {
|
||||
|
||||
var hash = document.body.scrollTop + 25;
|
||||
var query = window.location.search;
|
||||
query = query.split("&");
|
||||
var visit_id = query[1].split("=")[1] - 1;
|
||||
var new_query = query[0] + "&visit_id=" + visit_id;
|
||||
|
||||
var new_url = window.location.origin + window.location.pathname + new_query + "&#" + hash;
|
||||
window.location = new_url;
|
||||
|
||||
|
||||
});
|
||||
|
||||
$(".up").on("click keypress", function(e) {
|
||||
|
||||
var hash = document.body.scrollTop - 25;
|
||||
var query = window.location.search;
|
||||
query = query.split("&");
|
||||
var visit_id = parseInt(query[1].split("=")[1]) + 1;
|
||||
var new_query = query[0] + "&visit_id=" + visit_id;
|
||||
|
||||
var new_url = window.location.origin + window.location.pathname + new_query + "&#" + hash;
|
||||
window.location = new_url;
|
||||
|
||||
});
|
||||
|
||||
$(".close").on("click keypress", function(e) {
|
||||
|
||||
var hash = document.body.scrollTop;
|
||||
var query = window.location.search;
|
||||
query = query.split("&");
|
||||
var new_query = query[0];
|
||||
|
||||
var new_url = window.location.origin + window.location.pathname + new_query + "&#" + hash;
|
||||
window.location = new_url;
|
||||
|
||||
});
|
||||
|
||||
// have to do this a little differently because it is a submit, not a button
|
||||
$(".update_changes").on("click keypress", function(e) {
|
||||
|
||||
var hash = parseInt(document.body.scrollTop);
|
||||
var query = window.location.search;
|
||||
query = query.split("&");
|
||||
var visit_id = parseInt(query[1].split("=")[1]);
|
||||
var add_hash = "&#" + hash;
|
||||
var action = $("[name=FormUpdate_" + visit_id).attr("action");
|
||||
$("[name=FormUpdate_" + visit_id).attr("action", action + add_hash);
|
||||
|
||||
});
|
||||
// end scroll back to same location when up, down, updated are selected
|
||||
|
||||
});
|
||||
|
||||
$( window ).on( "load", function() {
|
||||
|
||||
if(window.location.hash != "") {
|
||||
|
||||
document.body.scrollTop = window.location.hash.replace("#", "") * 1;
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="yb_standard">
|
||||
|
||||
<div style="float: left; width: 12.5%; height: 40px;"></div>
|
||||
<div style="align-content: center; height: 40px; float: left; width: 75%">
|
||||
<div style="float: left; width: auto;"><a href="/shop_welcome.php">About/Help</a></div>
|
||||
<div style="float: right; width: auto;"><a id="shop_log_link" href="/shop_log.php">Sign In/Sign Out</a> |
|
||||
<a href="/start_shop.php" target="_parent"> All Shops</a> |
|
||||
<a href="/contact_add_edit_select.php" target="_parent">Add/Edit Contact</a> |
|
||||
<a href="/stats.php" target="_parent">Reports</a> |
|
||||
<a href="/transaction_log.php" target="_parent">Transaction Log</a> |
|
||||
<a href="http://www.positivespin.org" target="_blank">PS Home</a></div>
|
||||
</div>
|
||||
<div style="float: left; width: 12.5%; height: 40px;"></div>
|
||||
|
||||
<table align="center" width="1000" border="0" cellpadding="1" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td height="40" align="left"><a href="/shop_welcome.php">About/Help</a></td>
|
||||
<td height="40" align="right"><a href="/shop_log.php">Sign In/Sign Out</a> | <a href="/start_shop.php"> All Shops</a> | <a href="/contact_add_edit_select.php">Add/Edit Contact</a> | <a href="/stats.php">Statistics</a> | <a href="/transaction_log.php">Transaction Log</a> | <a href="http://www.positivespin.org/home2/" target="_blank">PS Home</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
50
include_header_start_shop.html
Normal file
50
include_header_start_shop.html
Normal file
@ -0,0 +1,50 @@
|
||||
<script type="text/javascript">
|
||||
var t;
|
||||
window.onload=resetTimer;
|
||||
document.onmousedown=resetTimer;
|
||||
document.onkeypress=resetTimer;
|
||||
|
||||
function logout()
|
||||
{
|
||||
location.href='shop_welcome.php'
|
||||
}
|
||||
function resetTimer()
|
||||
{
|
||||
clearTimeout(t);
|
||||
t=setTimeout(logout,1000*240) //Shop welcome after 240 seconds of inactivity
|
||||
}
|
||||
</script>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||
<title>YBDB</title>
|
||||
<link href="css/transactions.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/contacts.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/jquery.nouislider.css" rel="stylesheet" type="text/css" />
|
||||
<link href="css/chosen.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="js/jquery-2.1.1.js"></script>
|
||||
<script src="js/transaction.js"></script>
|
||||
<script src="js/contact.js"></script>
|
||||
<script src="js/shop.js"></script>
|
||||
<script src="js/jquery.mask.js"></script>
|
||||
<script src="js/jquery.jeditable.js"></script>
|
||||
<script src="js/jquery.nouislider.js"></script>
|
||||
<script src="js/chosen.jquery.js"></script>
|
||||
<script src="js/jquery.liblink.js"></script>
|
||||
<script src="js/wNumb.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="yb_standard">
|
||||
<table align="center" width="1000" border="0" cellpadding="1" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td height="40" align="left"><a href="/shop_welcome.php">About/Help</a></td>
|
||||
<td height="40" align="right"><a href="/shop_log.php">Current Shop</a> | <a href="/start_shop.php"> All Shops</a> | <a href="/contact_add_edit_select.php">Add/Edit Contact</a> | <a href="/stats.php">Statistics</a> | <a href="/transaction_log.php">Transaction Log</a> | <a href="http://www.positivespin.org/home2/" target="_blank">PS Home</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -1,47 +0,0 @@
|
||||
<script type="text/javascript">
|
||||
var t;
|
||||
window.onload=resetTimer;
|
||||
document.onmousedown=resetTimer;
|
||||
document.onkeypress=resetTimer;
|
||||
|
||||
function logout()
|
||||
{
|
||||
location.href='shop_welcome.php'
|
||||
}
|
||||
function resetTimer()
|
||||
{
|
||||
clearTimeout(t);
|
||||
//t=setTimeout(logout,1000*240) //Shop welcome after 240 seconds of inactivity
|
||||
}
|
||||
</script>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||
<title>YBDB</title>
|
||||
<link href="../css/css_yb_standard.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../css/pickmeup.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../css/stats.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../css/ui/jquery-ui.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../css/tabulator/tabulator_site.min.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="../js/jquery-2.1.1.js"></script>
|
||||
<script src="../js/reports.js"></script>
|
||||
<script src="../js/jquery.pickmeup.js"></script>
|
||||
<script src="../js/stats.js"></script>
|
||||
<script src="../js/ui/jquery-ui.js"></script>
|
||||
<script src="../js/moment/moment.js"></script>
|
||||
<script src="../js/tabulator/dist/js/tabulator.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="yb_standard">
|
||||
<table align="center" width="1000" border="0" cellpadding="1" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td height="40" align="right"><a href="/shop_log.php">Current Shop</a> | <a href="/start_shop.php"> All Shops</a> | <a href="/contact_add_edit_select.php">Add/Edit Contact</a> | <a href="/stats.php">Reports</a> | <a href="/transaction_log.php">Transaction Log</a> | <a href="http://www.positivespin.org" target="_blank">PS Home</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
@ -1,10 +1,23 @@
|
||||
<?php
|
||||
// new logic
|
||||
require_once('Connections/YBDB.php');
|
||||
require_once('Connections/database_functions.php');
|
||||
|
||||
$page_edit_contact = PAGE_EDIT_CONTACT;
|
||||
$page_shop_log = PAGE_SHOP_LOG;
|
||||
$individual_shop_id = 90;
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
|
||||
if($_GET['visit_id']>0){
|
||||
$visit_id = $_GET['visit_id'];
|
||||
} else {
|
||||
$visit_id =-1;}
|
||||
|
||||
if($_GET['new_user_id']>0){
|
||||
$new_user_id = $_GET['new_user_id'];
|
||||
} else {
|
||||
$new_user_id = -1;
|
||||
}
|
||||
|
||||
if($_GET['contact_id']>0){
|
||||
$contact_id = $_GET['contact_id'];
|
||||
@ -12,19 +25,233 @@ if($_GET['contact_id']>0){
|
||||
$contact_id = -1;
|
||||
}
|
||||
|
||||
include("include_header.html");
|
||||
|
||||
//shop_date
|
||||
if(ISSET($_GET['shop_date'])){
|
||||
$shop_date_filter = $_GET['shop_date'];
|
||||
} else {
|
||||
$shop_date_filter = current_date();}
|
||||
|
||||
//dayname
|
||||
if($_GET['shop_dayname']=='alldays'){
|
||||
$shop_dayname = '';
|
||||
} elseif(isset($_GET['shop_dayname'])) {
|
||||
$shop_dayname = "AND DAYNAME(DATE(time_in)) = '" . $_GET['shop_dayname'] . "'";
|
||||
} else {
|
||||
$shop_dayname = '';
|
||||
}
|
||||
|
||||
//record_count
|
||||
if($_GET['record_count']>0){
|
||||
$record_count = $_GET['record_count'];
|
||||
} else {
|
||||
$record_count = 40;}
|
||||
|
||||
$query_Recordset1 = "SELECT shop_id, shop_hours.shop_visit_id, shop_hours.contact_id, shop_hours.shop_user_role,
|
||||
shop_hours.project_id, DATE(shop_hours.time_in)
|
||||
AS date, DAYNAME(shop_hours.time_in)
|
||||
AS dayname, shop_hours.time_in, shop_hours.time_out,
|
||||
TIME_FORMAT(TIMEDIFF(time_out, time_in),'%k:%i')
|
||||
AS et, shop_hours.comment,
|
||||
CONCAT(contacts.last_name, ', ', contacts.first_name, ' ',contacts.middle_initial)
|
||||
AS full_name, contacts.first_name
|
||||
FROM shop_hours
|
||||
LEFT JOIN shop_user_roles ON shop_hours.shop_user_role=shop_user_roles.shop_user_role_id
|
||||
LEFT JOIN contacts ON shop_hours.contact_id=contacts.contact_id
|
||||
WHERE shop_hours.contact_id = {$contact_id}
|
||||
AND DATE(shop_hours.time_in) <= '{$shop_date_filter}' {$shop_dayname}
|
||||
ORDER BY time_in DESC LIMIT 0, {$record_count};";
|
||||
$Recordset1 = mysql_query($query_Recordset1, $YBDB) or die(mysql_error());
|
||||
//$row_Recordset1 = mysql_fetch_assoc($Recordset1);
|
||||
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
$query_Recordset2 = "SELECT * FROM shops WHERE shop_id = $individual_shop_id;";
|
||||
$Recordset2 = mysql_query($query_Recordset2, $YBDB) or die(mysql_error());
|
||||
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
|
||||
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
|
||||
$shop_date = $row_Recordset2['date'];
|
||||
$shop_location = $row_Recordset2['shop_location'];
|
||||
$shop_type = $row_Recordset2['shop_type'];
|
||||
|
||||
//sets the default time for users to sign in
|
||||
$shop_start_time = current_datetime();
|
||||
$current_date = current_date();
|
||||
|
||||
//Action on form update
|
||||
//shop_log2.php?shop_id=2&visit_id=4
|
||||
$editFormAction = $_SERVER['PHP_SELF'] . "?contact_id=$contact_id&visit_id=$visit_id";
|
||||
$editFormAction_novisit = $_SERVER['PHP_SELF'] . "?contact_id=$contact_id";
|
||||
//if (isset($_SERVER['QUERY_STRING'])) {
|
||||
// $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
|
||||
//}
|
||||
|
||||
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form_new") && ($_POST["contact_id"] == "no_selection")){
|
||||
//if no contact is selected
|
||||
$error_message = '<span class="yb_heading3red">Please Select a User</span><br />';
|
||||
} elseif ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form_new")) {
|
||||
|
||||
$insertSQL = sprintf("INSERT INTO shop_hours (contact_id, shop_id, shop_user_role, time_in, comment, project_id)
|
||||
VALUES (%s, %s, %s, %s, %s, %s)",
|
||||
GetSQLValueString($_POST['contact_id'], "int"),
|
||||
GetSQLValueString($individual_shop_id, "int"),
|
||||
GetSQLValueString($_POST['user_role'], "text"),
|
||||
GetSQLValueString(dateandtimein($_POST['date'], $_POST['time_in']), "date"),
|
||||
GetSQLValueString($_POST['comment'], "text"),
|
||||
GetSQLValueString($_POST['project'], "text"));
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
$Result1 = mysql_query($insertSQL, $YBDB) or die(mysql_error());
|
||||
|
||||
$insertGoTo = "shop_log2.php";
|
||||
if (isset($_SERVER['QUERY_STRING'])) {
|
||||
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
|
||||
$insertGoTo .= $_SERVER['QUERY_STRING'];
|
||||
}
|
||||
header(sprintf("Location: %s", $editFormAction_novisit));
|
||||
}
|
||||
|
||||
//$_POST["MM_insert"] is in the form: FormUpdate_$VisitID OR FormUpdate_142. This line seperates the visit id from the
|
||||
//list($is_UpdateForm, $visit_id) = split('[_]', $_POST["MM_insert"]);
|
||||
|
||||
//Update Record isset($_POST["MM_update"])
|
||||
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "FormUpdate")) {
|
||||
$updateSQL = sprintf("UPDATE shop_hours SET time_out=%s WHERE shop_visit_id=%s",
|
||||
GetSQLValueString($_POST['time_out'], "date"),
|
||||
GetSQLValueString($_POST['shop_visit_id'], "int"));
|
||||
//"2006-10-12 18:15:00"
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
$Result1 = mysql_query($updateSQL, $YBDB) or die(mysql_error());
|
||||
|
||||
$gotopage = "index.html";
|
||||
header(sprintf("Location: %s",$editFormAction )); //$editFormAction
|
||||
}
|
||||
|
||||
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "FormEdit")) {
|
||||
$updateSQL = sprintf("UPDATE shop_hours SET contact_id=%s, shop_user_role=%s, project_id=%s, time_in=%s, time_out=%s, comment=%s WHERE shop_visit_id=%s",
|
||||
GetSQLValueString($_POST['contact_id'], "int"),
|
||||
GetSQLValueString($_POST['user_role'], "text"),
|
||||
GetSQLValueString($_POST['project'], "text"),
|
||||
GetSQLValueString(dateandtimein($_POST['date'], $_POST['time_in']), "date"),
|
||||
GetSQLValueString($_POST['time_out'], "date"),
|
||||
GetSQLValueString($_POST['comment'], "text"),
|
||||
GetSQLValueString($_POST['shop_visit_id'], "int"));
|
||||
//"2006-10-12 18:15:00"
|
||||
|
||||
mysql_select_db($database_YBDB, $YBDB);
|
||||
$Result1 = mysql_query($updateSQL, $YBDB) or die(mysql_error());
|
||||
|
||||
header(sprintf("Location: %s",$editFormAction_novisit )); //$editFormAction
|
||||
}
|
||||
|
||||
//Change Date isset($_POST["MM_update"])
|
||||
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "ChangeDate")) {
|
||||
$editFormAction = $_SERVER['PHP_SELF'] . "?contact_id=$contact_id&shop_date={$_POST['shop_date']}&shop_dayname={$_POST['dayname']}&record_count={$_POST['record_count']}";
|
||||
header(sprintf("Location: %s",$editFormAction )); //$editFormAction
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="contact_id" style="display:none;"><?php echo $contact_id; ?></div>
|
||||
<div style="text-align:center;"><div id="name" style="align-content:center; font-size:2em;"></div><div id="membership_status"></div></div>
|
||||
<div id="individual_history"></div>
|
||||
|
||||
<div class="stats-clear nextprev" style="text-align:center; display:block; margin-top:9px;">
|
||||
<a class="stats-left stats-btn" href="#">❮ Previous</a>
|
||||
<a class="stats-right stats-btn" href="#">Next ❯</a>
|
||||
</div>
|
||||
<?php include("include_header.html"); ?>
|
||||
|
||||
<?php include("include_footer.html"); ?>
|
||||
|
||||
<div id="individual_history_pad"></div>
|
||||
<table border="0" cellpadding="1" cellspacing="0">
|
||||
<tr>
|
||||
<td align="left" valign="bottom"><?php echo $error_message;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border="1" cellpadding="1" cellspacing="0" bordercolor="#CCCCCC">
|
||||
<tr bordercolor="#CCCCCC" bgcolor="#99CC33" class="yb_heading3">
|
||||
<td height="35">Shop User </td>
|
||||
<td>Date</td>
|
||||
<td>ShopID</td>
|
||||
<td height="35">Status</td>
|
||||
<td height="35">Time In </td>
|
||||
<td height="35" bgcolor="#99CC33">Time Out </td>
|
||||
<td height="35">Edit Data </td>
|
||||
</tr>
|
||||
<form method="post" name="form_new" action="<?php echo $editFormAction; ?>">
|
||||
<input type="hidden" name="MM_insert" value="form_new">
|
||||
</form>
|
||||
|
||||
<?php while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) { //do {
|
||||
if($visit_id == $row_Recordset1['shop_visit_id']) {?>
|
||||
<form method="post" name="FormUpdate_<?php echo $row_Recordset1['shop_visit_id']; ?>" action="<?php echo $editFormAction; ?>">
|
||||
<tr valign="bottom" bordercolor="#CCCCCC" bgcolor="#CCCC33">
|
||||
<td>Edit Record: <br>
|
||||
<?php list_contacts('contact_id', $row_Recordset1['contact_id']); ?></td>
|
||||
<td><input name="date" type="text" value="<?php echo $row_Recordset1['date']; ?>" size="10" maxlength="10" /></td>
|
||||
<td> </td>
|
||||
<td><?php list_shop_user_roles('user_role', $row_Recordset1['shop_user_role']); ?></td>
|
||||
<td><?php list_time("{$current_date} 08:00:00",'0000-00-00 00:00:00','time_in',-60,0,$row_Recordset1['time_in'],16); ?></td>
|
||||
<td><?php
|
||||
if ($row_Recordset1['time_out'] <> '0000-00-00 00:00:00'){
|
||||
list_time($row_Recordset1['time_in'],$row_Recordset1['time_out'],'time_out',0,1,$row_Recordset1['time_out']);
|
||||
} ?></td>
|
||||
<td><input type="submit" name="Submit" value="Update Changes" /></td>
|
||||
</tr>
|
||||
<tr bordercolor="#CCCCCC" bgcolor="#CCCC33">
|
||||
<td colspan="7"><table border="0" cellspacing="0" cellpadding="1">
|
||||
<tr>
|
||||
<td width="125"><div align="right">Project:</div></td>
|
||||
<td><?php list_projects_collective('project', $row_Recordset1['project_id']); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="right">Comment:</div></td>
|
||||
<td><input name="comment" type="text" value="<?php echo $row_Recordset1['comment']; ?>" size="90" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="right">Delete:</div></td>
|
||||
<td>Click to Delete this Shop User's Visit: <a href="<?php echo PAGE_SHOP_LOG_DELETE_VISIT . "?visit_id={$visit_id}&shop_id={$individual_shop_id}";?>">Delete</a> </td>
|
||||
</tr>
|
||||
</table> </td>
|
||||
</tr>
|
||||
<input type="hidden" name="MM_insert" value="FormEdit">
|
||||
<input type="hidden" name="shop_visit_id" value="<?php echo $row_Recordset1['shop_visit_id']; ?>">
|
||||
</form>
|
||||
<?php } else { //This section executes if it is not the visit_id selected NOT FOR EDIT ?>
|
||||
<form method="post" name="FormUpdate_<?php echo $row_Recordset1['shop_visit_id']; ?>" action="<?php echo $editFormAction; ?>">
|
||||
<tr bordercolor="#CCCCCC">
|
||||
<td><?php echo $row_Recordset1['full_name']; ?></td>
|
||||
<td><?php echo $row_Recordset1['date'] . " (" . $row_Recordset1['dayname'] . ")"; ?></td>
|
||||
<td><?php echo "<a href=\"{$page_shop_log}?shop_id={$row_Recordset1['shop_id']}\">{$row_Recordset1['shop_id']}</a>";?></td>
|
||||
<td><?php echo $row_Recordset1['shop_user_role']; ?></td>
|
||||
<td><?php echo date_to_time($row_Recordset1['time_in']); ?></td>
|
||||
<td><?php echo list_time($row_Recordset1['time_in'],$row_Recordset1['time_out'],'time_out',0,1,'none', 8,$row_Recordset1['et']); ?></td>
|
||||
<td><?php echo "<a href=\"{$_SERVER['PHP_SELF']}?contact_id={$contact_id}&visit_id={$row_Recordset1['shop_visit_id']}\">edit</a>"; ?></td>
|
||||
</tr>
|
||||
<input type="hidden" name="MM_insert" value="FormUpdate">
|
||||
<input type="hidden" name="shop_visit_id" value="<?php echo $row_Recordset1['shop_visit_id']; ?>">
|
||||
</form>
|
||||
<?php } // if
|
||||
} //while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); // while Recordset1 ?>
|
||||
</table> </tr>
|
||||
</table>
|
||||
<form id="form1" name="form1" method="post" action="">
|
||||
<br />
|
||||
Show
|
||||
<input name="record_count" type="text" value="10" size="3" maxlength="3" />
|
||||
shops on or before:
|
||||
<input name="shop_date" type="text" id="shop_date" value="<?php echo current_date(); ?>" size="10" maxlength="10" />
|
||||
Day of week:
|
||||
<select name="dayname">
|
||||
<option value="alldays" selected="selected">All Days</option>
|
||||
<option value="Monday">Monday</option>
|
||||
<option value="Tuesday">Tuesday</option>
|
||||
<option value="Wednesday">Wednesday</option>
|
||||
<option value="Thursday">Thursday</option>
|
||||
<option value="Friday">Friday</option>
|
||||
<option value="Saturday">Saturday</option>
|
||||
<option value="Sunday">Sunday</option>
|
||||
</select>
|
||||
<input type="submit" name="Submit" value="Submit" />
|
||||
(date format YYYY-MM-DD)
|
||||
<input type="hidden" name="MM_insert" value="ChangeDate" />
|
||||
</form>
|
||||
<p> </p>
|
||||
<?php include("../include_footer.html"); ?>
|
||||
<?php
|
||||
mysql_free_result($Recordset1);
|
||||
?>
|
||||
|
BIN
js/2.19.1.tar.gz
BIN
js/2.19.1.tar.gz
Binary file not shown.
@ -8,7 +8,6 @@ $(function(){
|
||||
var birth_date = $("#birth_date");
|
||||
var waiver_checkbox = $("#waiver_checkbox"), waiver_error = $("#waiver_error");
|
||||
var first_name = $("#first_name"), first_name_error = $("#first_name_error");
|
||||
var middle_initial = $("#middle_initial"), middle_initial_error = $("#middle_name_error");
|
||||
var last_name = $("#last_name"), last_name_error = $("#last_name_error");
|
||||
var phone = $("#phone"), phone_error = $("#phone_error");
|
||||
var email = $("#email"), email_error = $("#email_error");
|
||||
@ -59,7 +58,7 @@ $(function(){
|
||||
// check for errors
|
||||
//error_handler(input,error_span,error,error_text,event);
|
||||
|
||||
var err0 = 0, err1 = 0, err2 = 0, err3 = 0, err4 = 0, err5 = 0, err6 = 0;
|
||||
var err0 = 0, err1 = 0, err2 = 0, err3 = 0, err4 = 0, err5 = 0;
|
||||
|
||||
// if it is showing
|
||||
$("#email_list_error").hide();
|
||||
@ -67,18 +66,6 @@ $(function(){
|
||||
// first name & last name input
|
||||
err0 = error_handler(first_name.val(), first_name_error, "","*Required",e);
|
||||
err1 = error_handler(last_name.val(), last_name_error, "","*Required",e);
|
||||
|
||||
// test whether patron's name already exists
|
||||
// and if name matches a different contact_i
|
||||
$.post("json/contact.php", {first_name: first_name.val(), middle_initial: middle_initial.val(),
|
||||
last_name: last_name.val(), contact_id: contact_id, test_name: 1 }, function(data) {
|
||||
|
||||
if(data === "1") {
|
||||
err6 = error_handler(0, last_name_error, "","*Your name already exists, please choose a different middle initial.",e);
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
|
||||
// email and phone input
|
||||
if (email.val() === "" && phone.val() === "") {
|
||||
@ -119,7 +106,7 @@ $(function(){
|
||||
// waiver checkbox
|
||||
err5 = error_handler(waiver_checkbox.prop("checked"),waiver_error,false,"*Required",e);
|
||||
|
||||
if ((err0 + err1 + err2 + err3 + err4 + err5 + err6) > 0 ) {
|
||||
if ((err0 + err1 + err2 + err3 + err4 + err5) > 0 ) {
|
||||
|
||||
} else {
|
||||
//e.preventDefault();
|
||||
|
113
js/etherpad.js
113
js/etherpad.js
@ -1,113 +0,0 @@
|
||||
(function( $ ){
|
||||
|
||||
$.fn.pad = function( options ) {
|
||||
var settings = {
|
||||
'host' : 'http://beta.etherpad.org',
|
||||
'baseUrl' : '/p/',
|
||||
'showControls' : false,
|
||||
'showChat' : false,
|
||||
'showLineNumbers' : false,
|
||||
'userName' : 'unnamed',
|
||||
'lang' : '',
|
||||
'useMonospaceFont' : false,
|
||||
'noColors' : false,
|
||||
'userColor' : false,
|
||||
'hideQRCode' : false,
|
||||
'alwaysShowChat' : false,
|
||||
'width' : 100,
|
||||
'height' : 100,
|
||||
'border' : 0,
|
||||
'borderStyle' : 'solid',
|
||||
'toggleTextOn' : 'Disable Rich-text',
|
||||
'toggleTextOff' : 'Enable Rich-text',
|
||||
'plugins' : {},
|
||||
'rtl' : false
|
||||
};
|
||||
|
||||
var $self = this;
|
||||
if (!$self.length) return;
|
||||
if (!$self.attr('id')) throw new Error('No "id" attribute');
|
||||
|
||||
var useValue = $self[0].tagName.toLowerCase() == 'textarea';
|
||||
var selfId = $self.attr('id');
|
||||
var epframeId = 'epframe'+ selfId;
|
||||
// This writes a new frame if required
|
||||
if ( !options.getContents ) {
|
||||
if ( options ) {
|
||||
$.extend( settings, options );
|
||||
}
|
||||
|
||||
var pluginParams = '';
|
||||
for(var option in settings.plugins) {
|
||||
pluginParams += '&' + option + '=' + settings.plugins[option]
|
||||
}
|
||||
|
||||
var iFrameLink = '<iframe id="'+epframeId;
|
||||
iFrameLink = iFrameLink +'" name="' + epframeId;
|
||||
iFrameLink = iFrameLink +'" src="' + settings.host+settings.baseUrl+settings.padId;
|
||||
iFrameLink = iFrameLink + '?showControls=' + settings.showControls;
|
||||
iFrameLink = iFrameLink + '&showChat=' + settings.showChat;
|
||||
iFrameLink = iFrameLink + '&showLineNumbers=' + settings.showLineNumbers;
|
||||
iFrameLink = iFrameLink + '&useMonospaceFont=' + settings.useMonospaceFont;
|
||||
iFrameLink = iFrameLink + '&userName=' + settings.userName;
|
||||
if (settings.lang) {
|
||||
iFrameLink = iFrameLink + '&lang=' + settings.lang;
|
||||
}
|
||||
iFrameLink = iFrameLink + '&noColors=' + settings.noColors;
|
||||
iFrameLink = iFrameLink + '&userColor=' + settings.userColor;
|
||||
iFrameLink = iFrameLink + '&hideQRCode=' + settings.hideQRCode;
|
||||
iFrameLink = iFrameLink + '&alwaysShowChat=' + settings.alwaysShowChat;
|
||||
iFrameLink = iFrameLink + '&rtl=' + settings.rtl;
|
||||
iFrameLink = iFrameLink + pluginParams;
|
||||
iFrameLink = iFrameLink +'" style="border:' + settings.border;
|
||||
iFrameLink = iFrameLink +'; border-style:' + settings.borderStyle;
|
||||
iFrameLink = iFrameLink +';" width="' + '100%';//settings.width;
|
||||
iFrameLink = iFrameLink +'" height="' + settings.height;
|
||||
iFrameLink = iFrameLink +'"></iframe>';
|
||||
|
||||
|
||||
var $iFrameLink = $(iFrameLink);
|
||||
|
||||
if (useValue) {
|
||||
var $toggleLink = $('<a href="#'+ selfId +'">'+ settings.toggleTextOn +'</a>').click(function(){
|
||||
var $this = $(this);
|
||||
$this.toggleClass('active');
|
||||
if ($this.hasClass('active')) $this.text(settings.toggleTextOff);
|
||||
$self.pad({getContents: true});
|
||||
return false;
|
||||
});
|
||||
$self
|
||||
.hide()
|
||||
.after($toggleLink)
|
||||
.after($iFrameLink)
|
||||
;
|
||||
}
|
||||
else {
|
||||
$self.html(iFrameLink);
|
||||
}
|
||||
}
|
||||
|
||||
// This reads the etherpad contents if required
|
||||
else {
|
||||
var frameUrl = $('#'+ epframeId).attr('src').split('?')[0];
|
||||
var contentsUrl = frameUrl + "/export/html";
|
||||
var target = $('#'+ options.getContents);
|
||||
|
||||
// perform an ajax call on contentsUrl and write it to the parent
|
||||
$.get(contentsUrl, function(data) {
|
||||
|
||||
if (target.is(':input')) {
|
||||
target.val(data).show();
|
||||
}
|
||||
else {
|
||||
target.html(data);
|
||||
}
|
||||
|
||||
$('#'+ epframeId).remove();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return $self;
|
||||
};
|
||||
})( jQuery );
|
1
js/jquery.ns-autogrow/.gitignore
vendored
1
js/jquery.ns-autogrow/.gitignore
vendored
@ -1 +0,0 @@
|
||||
node_modules
|
@ -1,7 +0,0 @@
|
||||
bower_components/
|
||||
bower.json
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
gulpfile.cofee
|
||||
src/
|
||||
.github
|
@ -1,89 +0,0 @@
|
||||
### Automatically adjust textarea width/height based on user input.
|
||||
#### Non-sucking version, still works great and used by a lot of people with no issues!
|
||||
|
||||
|
||||
The only reason I wrote this jQuery plugin is that other plugins suck. They are wide-spread, but outdated and buggy.
|
||||
|
||||
Advantages of jquery.ns-autogrow:
|
||||
|
||||
* Grows vertically, horizontally or both
|
||||
* Correctly handles 2 or more spaces
|
||||
* Copies more css and font styles to shadow div
|
||||
* Correctly handles long words on one line
|
||||
* Flickering can be disabled on Enter
|
||||
* Doesn't add more than one handler to textarea
|
||||
* Handles textarea scrollbar if any
|
||||
* Improved support of special characters
|
||||
|
||||
## Download
|
||||
Run one of these commands in your bash according to your needs.
|
||||
|
||||
`git clone https://github.com/ro31337/jquery.ns-autogrow.git`
|
||||
|
||||
`bower install jquery.ns-autogrow`
|
||||
|
||||
`npm install jquery.ns-autogrow`
|
||||
|
||||
Or download the latest version from the [releases](https://github.com/ro31337/jquery.ns-autogrow/releases) page.
|
||||
|
||||
### Options
|
||||
|
||||
You can provide multiple options to autogrow like:
|
||||
|
||||
```
|
||||
$('.example2 textarea').autogrow({vertical: true, horizontal: false});
|
||||
```
|
||||
|
||||
List of options:
|
||||
|
||||
Option | Description
|
||||
-------|------------
|
||||
vertical | (true/false) - Enable/Disable vertical autogrow (true by default)
|
||||
horizontal | (true/false) - Enable/Disable horizontal autogrow (true by default)
|
||||
postGrowCallback | Post grow callback. Executes after dimensions of textarea have been adjusted.
|
||||
flickering | (true/false) - Enable/Disable flickering. If flickering is disabled, extra line will be added to textarea. Flickering is _enabled_ by default.
|
||||
|
||||
There are few more options reserved for debugging purposes. All debugging options start with `debug` prefix:
|
||||
|
||||
Option | Description
|
||||
-------|------------
|
||||
debugx | X position of shadow element (-10000 by default)
|
||||
debugy | Y position of shadow element (-10000 by default)
|
||||
debugcolor | Color of shadow element (yellow by default)
|
||||
|
||||
|
||||
### Demo
|
||||
|
||||
[Click here](http://htmlpreview.github.io/?https://raw.githubusercontent.com/ro31337/jquery.ns-autogrow/master/demo/index.html)
|
||||
|
||||
### Plans:
|
||||
|
||||
* Test and support arabic languages
|
||||
|
||||
### :heart: Like it? :heart:
|
||||
|
||||
:star: Star it! :star:
|
||||
|
||||
### The MIT License (MIT)
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Roman Pushkin
|
||||
|
||||
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.
|
@ -1,29 +0,0 @@
|
||||
{
|
||||
"name": "jquery.ns-autogrow",
|
||||
"description": "Automatically adjust textarea height based on user input. Non-sucking version.",
|
||||
"main": "dist/jquery.ns-autogrow.js",
|
||||
"keywords": [
|
||||
"autogrow",
|
||||
"textarea",
|
||||
"form",
|
||||
"autosize",
|
||||
"ui",
|
||||
"jquery-plugin",
|
||||
"ecosystem:jquery"
|
||||
],
|
||||
"author": "Roman Pushkin <roman.pushkin@gmail.com>",
|
||||
"homepage": "https://github.com/ro31337/jquery.ns-autogrow",
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"bower_components",
|
||||
"node_modules",
|
||||
"npm-debug.log",
|
||||
"gulpfile.coffee",
|
||||
"package.json",
|
||||
"src"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": "1"
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<script data-require="jquery@2.1.4" data-semver="2.1.4" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
|
||||
<script src="../dist/jquery.ns-autogrow.min.js"></script>
|
||||
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css" />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<script src="script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="example1">
|
||||
<textarea placeholder="horizontal and vertical"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="example2">
|
||||
<textarea placeholder="vertical only"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="example3">
|
||||
<textarea placeholder="horizontal only"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="example4">
|
||||
<textarea placeholder="horizontal and vertical, no flickering"></textarea>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,6 +0,0 @@
|
||||
$(function(){
|
||||
$('.example1 textarea').autogrow();
|
||||
$('.example2 textarea').autogrow({vertical: true, horizontal: false});
|
||||
$('.example3 textarea').autogrow({vertical: false, horizontal: true});
|
||||
$('.example4 textarea').autogrow({flickering: false});
|
||||
});
|
@ -1,3 +0,0 @@
|
||||
body { padding: 20px; }
|
||||
textarea { min-width: 240px; font-size: 18px; }
|
||||
.example3 textarea { min-height: 50px; }
|
139
js/jquery.ns-autogrow/dist/jquery.ns-autogrow.js
vendored
139
js/jquery.ns-autogrow/dist/jquery.ns-autogrow.js
vendored
@ -1,139 +0,0 @@
|
||||
/*!
|
||||
Non-Sucking Autogrow 1.1.6
|
||||
license: MIT
|
||||
author: Roman Pushkin
|
||||
https://github.com/ro31337/jquery.ns-autogrow
|
||||
*/
|
||||
(function() {
|
||||
var getVerticalScrollbarWidth;
|
||||
|
||||
(function($, window) {
|
||||
return $.fn.autogrow = function(options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
if (options.horizontal == null) {
|
||||
options.horizontal = true;
|
||||
}
|
||||
if (options.vertical == null) {
|
||||
options.vertical = true;
|
||||
}
|
||||
if (options.debugx == null) {
|
||||
options.debugx = -10000;
|
||||
}
|
||||
if (options.debugy == null) {
|
||||
options.debugy = -10000;
|
||||
}
|
||||
if (options.debugcolor == null) {
|
||||
options.debugcolor = 'yellow';
|
||||
}
|
||||
if (options.flickering == null) {
|
||||
options.flickering = true;
|
||||
}
|
||||
if (options.postGrowCallback == null) {
|
||||
options.postGrowCallback = function() {};
|
||||
}
|
||||
if (options.verticalScrollbarWidth == null) {
|
||||
options.verticalScrollbarWidth = getVerticalScrollbarWidth();
|
||||
}
|
||||
if (options.horizontal === false && options.vertical === false) {
|
||||
return;
|
||||
}
|
||||
return this.filter('textarea').each(function() {
|
||||
var $e, $shadow, fontSize, heightPadding, minHeight, minWidth, update;
|
||||
$e = $(this);
|
||||
if ($e.data('autogrow-enabled')) {
|
||||
return;
|
||||
}
|
||||
$e.data('autogrow-enabled');
|
||||
minHeight = $e.height();
|
||||
minWidth = $e.width();
|
||||
heightPadding = $e.css('lineHeight') * 1 || 0;
|
||||
$e.hasVerticalScrollBar = function() {
|
||||
return $e[0].clientHeight < $e[0].scrollHeight;
|
||||
};
|
||||
$shadow = $('<div class="autogrow-shadow"></div>').css({
|
||||
position: 'absolute',
|
||||
display: 'inline-block',
|
||||
'background-color': options.debugcolor,
|
||||
top: options.debugy,
|
||||
left: options.debugx,
|
||||
'max-width': $e.css('max-width'),
|
||||
'padding': $e.css('padding'),
|
||||
fontSize: $e.css('fontSize'),
|
||||
fontFamily: $e.css('fontFamily'),
|
||||
fontWeight: $e.css('fontWeight'),
|
||||
lineHeight: $e.css('lineHeight'),
|
||||
resize: 'none',
|
||||
'word-wrap': 'break-word'
|
||||
}).appendTo(document.body);
|
||||
if (options.horizontal === false) {
|
||||
$shadow.css({
|
||||
'width': $e.width()
|
||||
});
|
||||
} else {
|
||||
fontSize = $e.css('font-size');
|
||||
$shadow.css('padding-right', '+=' + fontSize);
|
||||
$shadow.normalPaddingRight = $shadow.css('padding-right');
|
||||
}
|
||||
update = (function(_this) {
|
||||
return function(event) {
|
||||
var height, val, width;
|
||||
val = _this.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n /g, '<br/> ').replace(/"/g, '"').replace(/'/g, ''').replace(/\n$/, '<br/> ').replace(/\n/g, '<br/>').replace(/ {2,}/g, function(space) {
|
||||
return Array(space.length - 1).join(' ') + ' ';
|
||||
});
|
||||
if (/(\n|\r)/.test(_this.value)) {
|
||||
val += '<br />';
|
||||
if (options.flickering === false) {
|
||||
val += '<br />';
|
||||
}
|
||||
}
|
||||
$shadow.html(val);
|
||||
if (options.vertical === true) {
|
||||
height = Math.max($shadow.height() + heightPadding, minHeight);
|
||||
$e.height(height);
|
||||
}
|
||||
if (options.horizontal === true) {
|
||||
$shadow.css('padding-right', $shadow.normalPaddingRight);
|
||||
if (options.vertical === false && $e.hasVerticalScrollBar()) {
|
||||
$shadow.css('padding-right', "+=" + options.verticalScrollbarWidth + "px");
|
||||
}
|
||||
width = Math.max($shadow.outerWidth(), minWidth);
|
||||
$e.width(width);
|
||||
}
|
||||
return options.postGrowCallback($e);
|
||||
};
|
||||
})(this);
|
||||
$e.change(update).keyup(update).keydown(update);
|
||||
$(window).resize(update);
|
||||
return update();
|
||||
});
|
||||
};
|
||||
})(window.jQuery, window);
|
||||
|
||||
getVerticalScrollbarWidth = function() {
|
||||
var inner, outer, w1, w2;
|
||||
inner = document.createElement('p');
|
||||
inner.style.width = "100%";
|
||||
inner.style.height = "200px";
|
||||
outer = document.createElement('div');
|
||||
outer.style.position = "absolute";
|
||||
outer.style.top = "0px";
|
||||
outer.style.left = "0px";
|
||||
outer.style.visibility = "hidden";
|
||||
outer.style.width = "200px";
|
||||
outer.style.height = "150px";
|
||||
outer.style.overflow = "hidden";
|
||||
outer.appendChild(inner);
|
||||
document.body.appendChild(outer);
|
||||
w1 = inner.offsetWidth;
|
||||
outer.style.overflow = 'scroll';
|
||||
w2 = inner.offsetWidth;
|
||||
if (w1 === w2) {
|
||||
w2 = outer.clientWidth;
|
||||
}
|
||||
document.body.removeChild(outer);
|
||||
return w1 - w2;
|
||||
};
|
||||
|
||||
}).call(this);
|
@ -1,7 +0,0 @@
|
||||
/*!
|
||||
Non-Sucking Autogrow 1.1.6
|
||||
license: MIT
|
||||
author: Roman Pushkin
|
||||
https://github.com/ro31337/jquery.ns-autogrow
|
||||
*/
|
||||
(function(){var e;!function(t,l){return t.fn.autogrow=function(i){if(null==i&&(i={}),null==i.horizontal&&(i.horizontal=!0),null==i.vertical&&(i.vertical=!0),null==i.debugx&&(i.debugx=-1e4),null==i.debugy&&(i.debugy=-1e4),null==i.debugcolor&&(i.debugcolor="yellow"),null==i.flickering&&(i.flickering=!0),null==i.postGrowCallback&&(i.postGrowCallback=function(){}),null==i.verticalScrollbarWidth&&(i.verticalScrollbarWidth=e()),i.horizontal!==!1||i.vertical!==!1)return this.filter("textarea").each(function(){var e,n,r,o,a,c,d;if(e=t(this),!e.data("autogrow-enabled"))return e.data("autogrow-enabled"),a=e.height(),c=e.width(),o=1*e.css("lineHeight")||0,e.hasVerticalScrollBar=function(){return e[0].clientHeight<e[0].scrollHeight},n=t('<div class="autogrow-shadow"></div>').css({position:"absolute",display:"inline-block","background-color":i.debugcolor,top:i.debugy,left:i.debugx,"max-width":e.css("max-width"),padding:e.css("padding"),fontSize:e.css("fontSize"),fontFamily:e.css("fontFamily"),fontWeight:e.css("fontWeight"),lineHeight:e.css("lineHeight"),resize:"none","word-wrap":"break-word"}).appendTo(document.body),i.horizontal===!1?n.css({width:e.width()}):(r=e.css("font-size"),n.css("padding-right","+="+r),n.normalPaddingRight=n.css("padding-right")),d=function(t){return function(l){var r,d,s;return d=t.value.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\n /g,"<br/> ").replace(/"/g,""").replace(/'/g,"'").replace(/\n$/,"<br/> ").replace(/\n/g,"<br/>").replace(/ {2,}/g,function(e){return Array(e.length-1).join(" ")+" "}),/(\n|\r)/.test(t.value)&&(d+="<br />",i.flickering===!1&&(d+="<br />")),n.html(d),i.vertical===!0&&(r=Math.max(n.height()+o,a),e.height(r)),i.horizontal===!0&&(n.css("padding-right",n.normalPaddingRight),i.vertical===!1&&e.hasVerticalScrollBar()&&n.css("padding-right","+="+i.verticalScrollbarWidth+"px"),s=Math.max(n.outerWidth(),c),e.width(s)),i.postGrowCallback(e)}}(this),e.change(d).keyup(d).keydown(d),t(l).resize(d),d()})}}(window.jQuery,window),e=function(){var e,t,l,i;return e=document.createElement("p"),e.style.width="100%",e.style.height="200px",t=document.createElement("div"),t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t),l=e.offsetWidth,t.style.overflow="scroll",i=e.offsetWidth,l===i&&(i=t.clientWidth),document.body.removeChild(t),l-i}}).call(this);
|
@ -1,54 +0,0 @@
|
||||
gulp = require 'gulp'
|
||||
del = require 'del'
|
||||
coffee = require 'gulp-coffee'
|
||||
coffeelint = require 'gulp-coffeelint'
|
||||
header = require 'gulp-header'
|
||||
uglify = require 'gulp-uglify'
|
||||
rename = require 'gulp-rename'
|
||||
pjson = require './package.json'
|
||||
copyright = """
|
||||
/*!
|
||||
Non-Sucking Autogrow #{pjson.version}
|
||||
license: #{pjson.license}
|
||||
author: Roman Pushkin
|
||||
#{pjson.homepage}
|
||||
*/
|
||||
|
||||
"""
|
||||
|
||||
dest = 'dist/'
|
||||
source = 'src/'
|
||||
code =
|
||||
in: "#{source}*.coffee"
|
||||
out: "#{dest}"
|
||||
|
||||
gulp.task 'clean', ->
|
||||
del [dest + '*']
|
||||
|
||||
gulp.task 'build', ->
|
||||
gulp
|
||||
.src code.in
|
||||
.pipe coffeelint()
|
||||
.pipe coffeelint.reporter() # Show coffeelint errors
|
||||
.pipe coffeelint.reporter('fail') # Make sure it fails in case of error
|
||||
.pipe coffee()
|
||||
.pipe header copyright
|
||||
.pipe gulp.dest(code.out)
|
||||
|
||||
gulp
|
||||
.src code.in
|
||||
.pipe coffeelint()
|
||||
.pipe coffeelint.reporter() # Show coffeelint errors
|
||||
.pipe coffeelint.reporter('fail') # Make sure it fails in case of error
|
||||
.pipe coffee()
|
||||
.pipe uglify()
|
||||
.pipe rename({ suffix: '.min' })
|
||||
.pipe header copyright
|
||||
.pipe gulp.dest(code.out)
|
||||
|
||||
gulp.task 'watch', ->
|
||||
gulp
|
||||
.watch code.in, ['build']
|
||||
|
||||
gulp.task 'default', ['clean', 'build', 'watch'], ->
|
||||
|
@ -1,45 +0,0 @@
|
||||
{
|
||||
"name": "jquery.ns-autogrow",
|
||||
"version": "1.1.6",
|
||||
"description": "Automatically adjust textarea height based on user input. Non-sucking version.",
|
||||
"main": "dist/jquery.ns-autogrow.js",
|
||||
"keywords": [
|
||||
"autogrow",
|
||||
"textarea",
|
||||
"form",
|
||||
"autosize",
|
||||
"ui",
|
||||
"jquery-plugin",
|
||||
"ecosystem:jquery"
|
||||
],
|
||||
"author": "Roman Pushkin <roman.pushkin@gmail.com>",
|
||||
"homepage": "https://github.com/ro31337/jquery.ns-autogrow",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ro31337/jquery.ns-autogrow.git"
|
||||
},
|
||||
"files": [
|
||||
"demo",
|
||||
"dist"
|
||||
],
|
||||
"directories": {
|
||||
"example": "demo"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/ro31337/jquery.ns-autogrow/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery": "^1.12.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"coffee-script": "^1.10.0",
|
||||
"del": "^2.0.2",
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-coffee": "^2.3.1",
|
||||
"gulp-coffeelint": "^0.5.0",
|
||||
"gulp-header": "^1.7.1",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"gulp-uglify": "^1.4.1"
|
||||
}
|
||||
}
|
@ -1,131 +0,0 @@
|
||||
(($, window) ->
|
||||
|
||||
$.fn.autogrow = (options) ->
|
||||
options ?= {}
|
||||
options.horizontal ?= true
|
||||
options.vertical ?= true
|
||||
options.debugx ?= -10000
|
||||
options.debugy ?= -10000
|
||||
options.debugcolor ?= 'yellow'
|
||||
options.flickering ?= true
|
||||
options.postGrowCallback ?= ->
|
||||
options.verticalScrollbarWidth ?= getVerticalScrollbarWidth()
|
||||
|
||||
if options.horizontal is false and options.vertical is false
|
||||
return
|
||||
|
||||
@.filter('textarea').each ->
|
||||
|
||||
$e = $(@)
|
||||
|
||||
return if $e.data 'autogrow-enabled'
|
||||
$e.data 'autogrow-enabled'
|
||||
|
||||
minHeight = $e.height()
|
||||
minWidth = $e.width()
|
||||
heightPadding = $e.css('lineHeight') * 1 || 0
|
||||
$e.hasVerticalScrollBar = ->
|
||||
$e[0].clientHeight < $e[0].scrollHeight
|
||||
|
||||
$shadow = $('<div class="autogrow-shadow"></div>')
|
||||
.css (
|
||||
position: 'absolute'
|
||||
display: 'inline-block'
|
||||
'background-color': options.debugcolor
|
||||
top: options.debugy
|
||||
left: options.debugx
|
||||
'max-width': $e.css 'max-width'
|
||||
'padding': $e.css 'padding'
|
||||
fontSize: $e.css 'fontSize'
|
||||
fontFamily: $e.css 'fontFamily'
|
||||
fontWeight: $e.css 'fontWeight'
|
||||
lineHeight: $e.css 'lineHeight'
|
||||
resize: 'none'
|
||||
'word-wrap': 'break-word' )
|
||||
.appendTo document.body
|
||||
|
||||
if options.horizontal is false
|
||||
# fix width of shadow div, so it will remain unchanged
|
||||
$shadow.css({'width': $e.width()})
|
||||
else
|
||||
# make sure we have right padding to avoid flickering
|
||||
fontSize = $e.css 'font-size' # => 20px
|
||||
$shadow.css('padding-right', '+=' + fontSize)
|
||||
$shadow.normalPaddingRight = $shadow.css 'padding-right'
|
||||
|
||||
update = (event) =>
|
||||
val = @
|
||||
.value
|
||||
.replace /&/g, '&'
|
||||
.replace /</g, '<'
|
||||
.replace />/g, '>'
|
||||
.replace /\n /g, '<br/> '
|
||||
.replace /"/g, '"'
|
||||
.replace /'/g, '''
|
||||
.replace /\n$/, '<br/> '
|
||||
.replace /\n/g, '<br/>'
|
||||
.replace(
|
||||
/ {2,}/g
|
||||
(space) -> Array(space.length - 1).join(' ') + ' '
|
||||
)
|
||||
|
||||
if /(\n|\r)/.test @.value
|
||||
val += '<br />'
|
||||
|
||||
# no flickering, but one extra line will be added
|
||||
if options.flickering is false
|
||||
val += '<br />'
|
||||
|
||||
$shadow.html val
|
||||
|
||||
if options.vertical is true
|
||||
height = Math.max($shadow.height() + heightPadding, minHeight)
|
||||
$e.height height
|
||||
|
||||
if options.horizontal is true
|
||||
$shadow.css 'padding-right', $shadow.normalPaddingRight
|
||||
|
||||
# if it should not grow vertically and if we have scrollbar,
|
||||
# add additional padding to shadow div to emulate the scrollbar
|
||||
if options.vertical is false and $e.hasVerticalScrollBar()
|
||||
$shadow.css 'padding-right', "+=#{options.verticalScrollbarWidth}px"
|
||||
|
||||
# outerWidth is width with padding
|
||||
width = Math.max $shadow.outerWidth(), minWidth
|
||||
$e.width width
|
||||
|
||||
options.postGrowCallback $e
|
||||
|
||||
$e.change update
|
||||
.keyup update
|
||||
.keydown update
|
||||
|
||||
$(window).resize update
|
||||
update()
|
||||
|
||||
) window.jQuery, window
|
||||
|
||||
getVerticalScrollbarWidth = ->
|
||||
inner = document.createElement('p')
|
||||
inner.style.width = "100%"
|
||||
inner.style.height = "200px"
|
||||
|
||||
outer = document.createElement('div')
|
||||
outer.style.position = "absolute"
|
||||
outer.style.top = "0px"
|
||||
outer.style.left = "0px"
|
||||
outer.style.visibility = "hidden"
|
||||
outer.style.width = "200px"
|
||||
outer.style.height = "150px"
|
||||
outer.style.overflow = "hidden"
|
||||
outer.appendChild (inner)
|
||||
|
||||
document.body.appendChild (outer)
|
||||
w1 = inner.offsetWidth
|
||||
outer.style.overflow = 'scroll'
|
||||
w2 = inner.offsetWidth
|
||||
if w1 is w2
|
||||
w2 = outer.clientWidth
|
||||
|
||||
document.body.removeChild (outer)
|
||||
w1 - w2
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +0,0 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
|
||||
[*.{js,json}]
|
||||
indent_size = 4
|
||||
|
||||
[*.{yml}]
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
4
js/moment/.gitattributes
vendored
4
js/moment/.gitattributes
vendored
@ -1,4 +0,0 @@
|
||||
# we don't have non-text files, don't take chances with git's text=auto
|
||||
* text
|
||||
# this file is read by nuget (Windows) tooling, lets keep it happy
|
||||
Moment.js.nuspec eol=crlf
|
15
js/moment/.gitignore
vendored
15
js/moment/.gitignore
vendored
@ -1,15 +0,0 @@
|
||||
node_modules/
|
||||
.DS_Store
|
||||
min/moment+customlangs.js
|
||||
min/moment+customlangs.min.js
|
||||
sauce_connect.log
|
||||
.sauce-labs.creds
|
||||
npm-debug.log
|
||||
.build*
|
||||
build
|
||||
coverage
|
||||
nyc_output
|
||||
.nyc_output
|
||||
.coveralls.yml
|
||||
.vscode/
|
||||
.idea
|
@ -1,65 +0,0 @@
|
||||
{
|
||||
"requireCurlyBraces": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"try",
|
||||
"catch"
|
||||
],
|
||||
"requireSpaceAfterKeywords": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"switch",
|
||||
"return",
|
||||
"try",
|
||||
"catch"
|
||||
],
|
||||
"requireSpaceBeforeBlockStatements": true,
|
||||
"requireParenthesesAroundIIFE": true,
|
||||
"requireSpacesInConditionalExpression": true,
|
||||
"requireSpacesInAnonymousFunctionExpression": {
|
||||
"beforeOpeningRoundBrace": true,
|
||||
"beforeOpeningCurlyBrace": true
|
||||
},
|
||||
"requireSpacesInNamedFunctionExpression": {
|
||||
"beforeOpeningCurlyBrace": true
|
||||
},
|
||||
"disallowSpacesInNamedFunctionExpression": {
|
||||
"beforeOpeningRoundBrace": true
|
||||
},
|
||||
"requireBlocksOnNewline": true,
|
||||
"disallowPaddingNewlinesInBlocks": true,
|
||||
"disallowEmptyBlocks": true,
|
||||
"disallowSpacesInsideObjectBrackets": true,
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||
"requireSpaceBeforeBinaryOperators": [
|
||||
"=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=",
|
||||
"&=", "|=", "^=",
|
||||
|
||||
"+", "-", "*", "/", "%", "<<", ">>", ">>>", "&",
|
||||
"|", "^", "&&", "||", "===", "==", ">=",
|
||||
"<=", "<", ">", "!=", "!=="
|
||||
],
|
||||
"requireSpaceAfterBinaryOperators": true,
|
||||
"requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties",
|
||||
"disallowKeywords": ["with"],
|
||||
"disallowMultipleLineStrings": true,
|
||||
"validateIndentation": 4,
|
||||
"disallowTrailingWhitespace": true,
|
||||
"disallowTrailingComma": true,
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
"requireCapitalizedConstructors": true,
|
||||
"validateQuoteMarks": {
|
||||
"mark": "'",
|
||||
"escape": true
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
"node" : true,
|
||||
"browser" : true,
|
||||
"boss" : false,
|
||||
"curly" : true,
|
||||
"debug" : false,
|
||||
"devel" : false,
|
||||
"eqeqeq" : true,
|
||||
"eqnull" : true,
|
||||
"esnext" : true,
|
||||
"evil" : false,
|
||||
"forin" : false,
|
||||
"immed" : false,
|
||||
"laxbreak" : false,
|
||||
"newcap" : true,
|
||||
"noarg" : true,
|
||||
"noempty" : false,
|
||||
"nonew" : false,
|
||||
"onevar" : true,
|
||||
"plusplus" : false,
|
||||
"regexp" : false,
|
||||
"undef" : true,
|
||||
"sub" : true,
|
||||
"strict" : false,
|
||||
"white" : true,
|
||||
"es3" : false,
|
||||
"camelcase" : true,
|
||||
"globals": {
|
||||
"define": false
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
test
|
||||
min/tests.js
|
||||
.npmignore
|
@ -1,8 +0,0 @@
|
||||
benchmarks
|
||||
bower_components
|
||||
meteor
|
||||
min
|
||||
node_modules
|
||||
scripts
|
||||
tasks
|
||||
test
|
@ -1,25 +0,0 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "node"
|
||||
- "7"
|
||||
- "6"
|
||||
- "5"
|
||||
- "4"
|
||||
sudo: false
|
||||
|
||||
env:
|
||||
global:
|
||||
- secure: "M4STT2TOZxjzv3cZOgSVi0J4j6enrGjgE+p5YTNUw+S6Dg6FS5pTIPeafu1kGhfm7F0uk7xPVwGKYb+3uWNO9IhkKXz8jySMMQ2iKISHwECGNNuFNjSMD1vIjbIkLwV8TyPO/PurQg2s+WtYz+DoAZsDFKpdaRUtif64OjdQ3vQ="
|
||||
- secure: "V+i7kHoGe7VXWGplPNqJz+aDtgDF9Dh9/guoaf2BPyXLvkFW6VgMjJyoNUW7JVsakrWzAz2ubb734vAPDt7BCcFQ2BqfatOmabdFogviCaXC6IqVaEkYS2eSP7MIUPIeWJgnTrDGzkFMDk4K7y5SiVJ8UmYwZxe+tJV7kbb0Yig="
|
||||
|
||||
install:
|
||||
- npm install
|
||||
- npm install -g grunt-cli
|
||||
|
||||
script: grunt build:travis
|
||||
|
||||
git:
|
||||
depth: 10
|
||||
|
||||
# TODO: Fix problem with coveralls.io not displaying autogenerated files
|
||||
# after_success: npm run coveralls
|
@ -1,799 +0,0 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
### 2.19.1
|
||||
|
||||
* Release Oct 11, 2017
|
||||
|
||||
Make react native and webpack both work
|
||||
* #4225 #4226 #4232
|
||||
|
||||
### 2.19.0 [See full changelog](https://gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603)
|
||||
|
||||
* Release Oct 10, 2017
|
||||
|
||||
## Fix React Native 0.49+ crash
|
||||
* [#4213](https://github.com/moment/moment/pull/4213) [critical] Rename dynamic
|
||||
require to avoid React Native crash
|
||||
* [#4214](https://github.com/moment/moment/pull/4214) [fixup] Move require
|
||||
rename inside try/catch, fixes
|
||||
[#4213](https://github.com/moment/moment/issues/4213)
|
||||
|
||||
## Features
|
||||
|
||||
* [#3735](https://github.com/moment/moment/pull/3735) [feature] Ignore NaN values in setters
|
||||
* [#4106](https://github.com/moment/moment/pull/4106) [fixup] Drop isNumeric utility fn, fixes [#3735](https://github.com/moment/moment/issues/3735)
|
||||
* [#4080](https://github.com/moment/moment/pull/4080) [feature] Implement a clone method for durations, fixes [#4078](https://github.com/moment/moment/issues/4078)
|
||||
* [#4215](https://github.com/moment/moment/pull/4215) [misc] TS: Add duration.clone(), for [#4080](https://github.com/moment/moment/issues/4080)
|
||||
|
||||
## Packaging
|
||||
|
||||
* [#4003](https://github.com/moment/moment/pull/4003) [pkg] bower: Remove tests from package
|
||||
* [#3904](https://github.com/moment/moment/pull/3904) [pkg] jsnext:main -> module in package.json
|
||||
* [#4060](https://github.com/moment/moment/pull/4060) [pkg] Account for new rollup interface
|
||||
|
||||
Bugfixes, new locales, locale fixes etc...
|
||||
|
||||
### 2.18.1
|
||||
|
||||
* Release Mar 22, 2017
|
||||
|
||||
* [#3853](https://github.com/moment/moment/pull/3853) [misc] Fix invalid whitespace character causing inability to parse
|
||||
moment.js
|
||||
|
||||
### 2.18.0 [See full changelog](https://gist.github.com/ichernev/78920c5a1e419fb28c6e4546d1b7235c)
|
||||
|
||||
* Release Mar 18, 2017
|
||||
|
||||
## Features
|
||||
|
||||
* [#3708](https://github.com/moment/moment/pull/3708) [feature] RFC2822 parsing
|
||||
* [#3611](https://github.com/moment/moment/pull/3611) [feature] Durations gain validity
|
||||
* [#3738](https://github.com/moment/moment/pull/3738) [feature] Enable relative time for multiple seconds, request [#2558](https://github.com/moment/moment/issues/2558)
|
||||
* [#3766](https://github.com/moment/moment/pull/3766) [feature] Add support for k and kk format parsing
|
||||
|
||||
## Bugfixes
|
||||
|
||||
* [#3643](https://github.com/moment/moment/pull/3643) [bugfix] Fixes [#3520](https://github.com/moment/moment/issues/3520), parseZone incorrectly handled minutes under 16
|
||||
* [#3710](https://github.com/moment/moment/pull/3710) [bugfix] Fixes [#3632](https://github.com/moment/moment/issues/3632), toISOString returns null for invalid date
|
||||
* [#3787](https://github.com/moment/moment/pull/3787) [bugfix] Fixes [#3717](https://github.com/moment/moment/issues/3717), ensure day-of-year is non-zero
|
||||
* [#3780](https://github.com/moment/moment/pull/3780) [bugfix] Fixes [#3765](https://github.com/moment/moment/issues/3765): Ensure year 0 is formatted with YYYY
|
||||
* [#3806](https://github.com/moment/moment/pull/3806) [bugfix] Fixes [#3805](https://github.com/moment/moment/issues/3805), fix locale month getters for standalone/format cases
|
||||
|
||||
7 new locales, many locale improvements and some misc changes
|
||||
|
||||
### 2.17.1 [Also available here](https://gist.github.com/ichernev/f38280b2b29c4932914a6d3a4e50bfb2)
|
||||
* Release Dec 03, 2016
|
||||
|
||||
* [#3638](https://github.com/moment/moment/pull/3638) [misc] TS: Make typescript definitions work with 1.x
|
||||
* [#3628](https://github.com/moment/moment/pull/3628) [misc] Adds "sign CLA" link to `CONTRIBUTING.md`
|
||||
* [#3640](https://github.com/moment/moment/pull/3640) [misc] Fix locale issues
|
||||
|
||||
### 2.17.0 [Also available here](https://gist.github.com/ichernev/ed58f76fb95205eeac653d719972b90c)
|
||||
* Release Nov 22, 2016
|
||||
|
||||
* [#3435](https://github.com/moment/moment/pull/3435) [new locale] yo: Yoruba (Nigeria) locale
|
||||
* [#3595](https://github.com/moment/moment/pull/3595) [bugfix] Fix accidental reference to global "value" variable
|
||||
* [#3506](https://github.com/moment/moment/pull/3506) [bugfix] Fix invalid moments returning valid dates to method calls
|
||||
* [#3563](https://github.com/moment/moment/pull/3563) [locale] ca: Change future relative time
|
||||
* [#3504](https://github.com/moment/moment/pull/3504) [tests] Fixes [#3463](https://github.com/moment/moment/issues/3463), parseZone not handling Z correctly (tests only)
|
||||
* [#3591](https://github.com/moment/moment/pull/3591) [misc] typescript: update typescript to 2.0.8, add strictNullChecks=true
|
||||
* [#3597](https://github.com/moment/moment/pull/3597) [misc] Fixed capitalization in nuget spec
|
||||
|
||||
### 2.16.0 [See full changelog](https://gist.github.com/ichernev/17bffc1005a032cb1a8ac4c1558b4994)
|
||||
* Release Nov 9, 2016
|
||||
|
||||
## Features
|
||||
* [#3530](https://github.com/moment/moment/pull/3530) [feature] Check whether input is date before checking if format is array
|
||||
* [#3515](https://github.com/moment/moment/pull/3515) [feature] Fix [#2300](https://github.com/moment/moment/issues/2300): Default to current week.
|
||||
|
||||
## Bugfixes
|
||||
* [#3546](https://github.com/moment/moment/pull/3546) [bugfix] Implement lazy-loading of child locales with missing prents
|
||||
* [#3523](https://github.com/moment/moment/pull/3523) [bugfix] parseZone should handle UTC
|
||||
* [#3502](https://github.com/moment/moment/pull/3502) [bugfix] Fix [#3500](https://github.com/moment/moment/issues/3500): ISO 8601 parsing should match the full string, not the beginning of the string.
|
||||
* [#3581](https://github.com/moment/moment/pull/3581) [bugfix] Fix parseZone, redo [#3504](https://github.com/moment/moment/issues/3504), fix [#3463](https://github.com/moment/moment/issues/3463)
|
||||
|
||||
## New Locales
|
||||
* [#3416](https://github.com/moment/moment/pull/3416) [new locale] nl-be: Dutch (Belgium) locale
|
||||
* [#3393](https://github.com/moment/moment/pull/3393) [new locale] ar-dz: Arabic (Algeria) locale
|
||||
* [#3342](https://github.com/moment/moment/pull/3342) [new locale] tet: Tetun Dili (East Timor) locale
|
||||
|
||||
And more locale, build and typescript improvements
|
||||
|
||||
### 2.15.2
|
||||
* Release Oct 23, 2016
|
||||
* [#3525](https://github.com/moment/moment/pull/3525) Speedup month standalone/format regexes **(IMPORTANT)**
|
||||
* [#3466](https://github.com/moment/moment/pull/3466) Fix typo of Javanese
|
||||
|
||||
### 2.15.1
|
||||
* Release Sept 20, 2016
|
||||
* [#3438](https://github.com/moment/moment/pull/3438) Fix locale autoload, revert [#3344](https://github.com/moment/moment/pull/3344)
|
||||
|
||||
### 2.15.0 [See full changelog](https://gist.github.com/ichernev/10e1c5bf647545c72ca30e9628a09ed3)
|
||||
- Release Sept 12, 2016
|
||||
|
||||
## New Locales
|
||||
* [#3255](https://github.com/moment/moment/pull/3255) [new locale] mi: Maori language
|
||||
* [#3267](https://github.com/moment/moment/pull/3267) [new locale] ar-ly: Arabic (Libya) locale
|
||||
* [#3333](https://github.com/moment/moment/pull/3333) [new locale] zh-hk: Chinese (Hong Kong) locale
|
||||
|
||||
## Bugfixes
|
||||
* [#3276](https://github.com/moment/moment/pull/3276) [bugfix] duration: parser: Support ms durations in .NET syntax
|
||||
* [#3312](https://github.com/moment/moment/pull/3312) [bugfix] locales: Enable locale-data getters without moment (fixes [#3284](https://github.com/moment/moment/issues/3284))
|
||||
* [#3381](https://github.com/moment/moment/pull/3381) [bugfix] parsing: Fix parseZone without timezone in string, fixes [#3083](https://github.com/moment/moment/issues/3083)
|
||||
* [#3383](https://github.com/moment/moment/pull/3383) [bugfix] toJSON: Fix isValid so that toJSON works after a moment is frozen
|
||||
* [#3427](https://github.com/moment/moment/pull/3427) [bugfix] ie8: Fix IE8 (regression in 2.14.x)
|
||||
|
||||
## Packaging
|
||||
* [#3299](https://github.com/moment/moment/pull/3299) [pkg] npm: Do not include .npmignore in npm package
|
||||
* [#3273](https://github.com/moment/moment/pull/3273) [pkg] jspm: Include moment.d.ts file in package
|
||||
* [#3344](https://github.com/moment/moment/pull/3344) [pkg] exports: use module.require for nodejs
|
||||
|
||||
Also some locale and typescript improvements
|
||||
|
||||
### 2.14.1
|
||||
- Release July 20, 2016
|
||||
* [#3280](https://github.com/moment/moment/pull/3280) Fix typescript definitions
|
||||
|
||||
|
||||
### 2.14.0 [See full changelog](https://gist.github.com/ichernev/812e79ac36a7829a22598fe964bfc18a)
|
||||
|
||||
- Release July 20, 2016
|
||||
|
||||
## New Features
|
||||
* [#3233](https://github.com/moment/moment/pull/3233) Introduce month.isFormat for format/standalone discovery
|
||||
* [#2848](https://github.com/moment/moment/pull/2848) Allow user to get/set the rounding method used when calculating relative time
|
||||
* [#3112](https://github.com/moment/moment/pull/3112) optimize configFromStringAndFormat
|
||||
* [#3147](https://github.com/moment/moment/pull/3147) Call calendar format function with moment context
|
||||
* [#3160](https://github.com/moment/moment/pull/3160) deprecate isDSTShifted
|
||||
* [#3175](https://github.com/moment/moment/pull/3175) make moment calendar extensible with ad-hoc options
|
||||
* [#3191](https://github.com/moment/moment/pull/3191) toDate returns a copy of the internal date object
|
||||
* [#3192](https://github.com/moment/moment/pull/3192) Adding support for rollup import.
|
||||
* [#3238](https://github.com/moment/moment/pull/3238) Handle empty object and empty array for creation as now
|
||||
* [#3082](https://github.com/moment/moment/pull/3082) Use relative AMD moment dependency
|
||||
|
||||
## Bugfixes
|
||||
* [#3241](https://github.com/moment/moment/pull/3241) Escape all 24 mixed pieces, not only first 12 in computeMonthsParse
|
||||
* [#3008](https://github.com/moment/moment/pull/3008) Object setter orders sets based on size of unit
|
||||
* [#3177](https://github.com/moment/moment/pull/3177) Bug Fix [#2704](https://github.com/moment/moment/pull/2704) - isoWeekday(String) inconsistent with isoWeekday(Number)
|
||||
* [#3230](https://github.com/moment/moment/pull/3230) fix passing date with format string to ignore format string
|
||||
* [#3232](https://github.com/moment/moment/pull/3232) Fix negative 0 in certain diff cases
|
||||
* [#3235](https://github.com/moment/moment/pull/3235) Use proper locale inheritance for the base locale, fixes [#3137](https://github.com/moment/moment/pull/3137)
|
||||
|
||||
Plus es-do locale and locale bugfixes
|
||||
|
||||
### 2.13.0 [See full changelog](https://gist.github.com/ichernev/0132fcf5b61f7fc140b0bb0090480d49)
|
||||
- Release April 18, 2016
|
||||
|
||||
## Enhancements:
|
||||
* [#2982](https://github.com/moment/moment/pull/2982) Add 'date' as alias to 'day' for startOf() and endOf().
|
||||
* [#2955](https://github.com/moment/moment/pull/2955) Add parsing negative components in durations when ISO 8601
|
||||
* [#2991](https://github.com/moment/moment/pull/2991) isBetween support for both open and closed intervals
|
||||
* [#3105](https://github.com/moment/moment/pull/3105) Add localeSorted argument to weekday listers
|
||||
* [#3102](https://github.com/moment/moment/pull/3102) Add k and kk formatting tokens
|
||||
|
||||
## Bugfixes
|
||||
* [#3109](https://github.com/moment/moment/pull/3109) Fix [#1756](https://github.com/moment/moment/issues/1756) Resolved thread-safe issue on server side.
|
||||
* [#3078](https://github.com/moment/moment/pull/3078) Fix parsing for months/weekdays with weird characters
|
||||
* [#3098](https://github.com/moment/moment/pull/3098) Use Z suffix when in UTC mode ([#3020](https://github.com/moment/moment/issues/3020))
|
||||
* [#2995](https://github.com/moment/moment/pull/2995) Fix floating point rounding errors in durations
|
||||
* [#3059](https://github.com/moment/moment/pull/3059) fix bug where diff returns -0 in month-related diffs
|
||||
* [#3045](https://github.com/moment/moment/pull/3045) Fix mistaking any input for 'a' token
|
||||
* [#2877](https://github.com/moment/moment/pull/2877) Use explicit .valueOf() calls instead of coercion
|
||||
* [#3036](https://github.com/moment/moment/pull/3036) Year setter should keep time when DST changes
|
||||
|
||||
Plus 3 new locales and locale fixes.
|
||||
|
||||
### 2.12.0 [See full changelog](https://gist.github.com/ichernev/6e5bfdf8d6522fc4ac73)
|
||||
|
||||
- Release March 7, 2016
|
||||
|
||||
## Enhancements:
|
||||
* [#2932](https://github.com/moment/moment/pull/2932) List loaded locales
|
||||
* [#2818](https://github.com/moment/moment/pull/2818) Parse ISO-8061 duration containing both day and week values
|
||||
* [#2774](https://github.com/moment/moment/pull/2774) Implement locale inheritance and locale updating
|
||||
|
||||
## Bugfixes:
|
||||
* [#2970](https://github.com/moment/moment/pull/2970) change add subtract to handle decimal values by rounding
|
||||
* [#2887](https://github.com/moment/moment/pull/2887) Fix toJSON casting of invalid moment
|
||||
* [#2897](https://github.com/moment/moment/pull/2897) parse string arguments for month() correctly, closes #2884
|
||||
* [#2946](https://github.com/moment/moment/pull/2946) Fix usage suggestions for min and max
|
||||
|
||||
## New locales:
|
||||
* [#2917](https://github.com/moment/moment/pull/2917) Locale Punjabi(Gurmukhi) India format conversion
|
||||
|
||||
And more
|
||||
|
||||
### 2.11.2 (Fix ReDoS attack vector)
|
||||
|
||||
- Release February 7, 2016
|
||||
|
||||
* [#2939](https://github.com/moment/moment/pull/2939) use full-string match to speed up aspnet regex match
|
||||
|
||||
### 2.11.1 [See full changelog](https://gist.github.com/ichernev/8ec3ee25b749b4cff3c2)
|
||||
|
||||
- Release January 9, 2016
|
||||
|
||||
## Bugfixes:
|
||||
* [#2881](https://github.com/moment/moment/pull/2881) Revert "Merge pull request #2746 from mbad0la:develop" Sep->Sept
|
||||
* [#2868](https://github.com/moment/moment/pull/2868) Add format and parse token Y, so it actually works
|
||||
* [#2865](https://github.com/moment/moment/pull/2865) Use typeof checks for undefined for global variables
|
||||
* [#2858](https://github.com/moment/moment/pull/2858) Fix Date mocking regression introduced in 2.11.0
|
||||
* [#2864](https://github.com/moment/moment/pull/2864) Include changelog in npm release
|
||||
* [#2830](https://github.com/moment/moment/pull/2830) dep: add grunt-cli
|
||||
* [#2869](https://github.com/moment/moment/pull/2869) Fix months parsing for some locales
|
||||
|
||||
### 2.11.0 [See full changelog](https://gist.github.com/ichernev/6594bc29719dde6b2f66)
|
||||
|
||||
- Release January 4, 2016
|
||||
|
||||
* [#2624](https://github.com/moment/moment/pull/2624) Proper handling of invalid moments
|
||||
* [#2634](https://github.com/moment/moment/pull/2634) Fix strict month parsing issue in cs,ru,sk
|
||||
* [#2735](https://github.com/moment/moment/pull/2735) Reset the locale back to 'en' after defining all locales in min/locales.js
|
||||
* [#2702](https://github.com/moment/moment/pull/2702) Week rework
|
||||
* [#2746](https://github.com/moment/moment/pull/2746) Changed September Abbreviation to "Sept" in locale-specific english
|
||||
files and default locale file
|
||||
* [#2646](https://github.com/moment/moment/pull/2646) Fix [#2645](https://github.com/moment/moment/pull/2645) - invalid dates pre-1970
|
||||
|
||||
* [#2641](https://github.com/moment/moment/pull/2641) Implement basic format and comma as ms separator in ISO 8601
|
||||
* [#2665](https://github.com/moment/moment/pull/2665) Implement stricter weekday parsing
|
||||
* [#2700](https://github.com/moment/moment/pull/2700) Add [Hh]mm and [Hh]mmss formatting tokens, so you can parse 123 with
|
||||
hmm for example
|
||||
* [#2565](https://github.com/moment/moment/pull/2565) [#2835](https://github.com/moment/moment/pull/2835) Expose arguments used for moment creation with creationData
|
||||
(fix [#2443](https://github.com/moment/moment/pull/2443))
|
||||
* [#2648](https://github.com/moment/moment/pull/2648) fix issue [#2640](https://github.com/moment/moment/pull/2640): support instanceof operator
|
||||
* [#2709](https://github.com/moment/moment/pull/2709) Add isSameOrAfter and isSameOrBefore comparison methods
|
||||
* [#2721](https://github.com/moment/moment/pull/2721) Fix moment creation from object with strings values
|
||||
* [#2740](https://github.com/moment/moment/pull/2740) Enable 'd hh:mm:ss.sss' format for durations
|
||||
* [#2766](https://github.com/moment/moment/pull/2766) [#2833](https://github.com/moment/moment/pull/2833) Alternate Clock Source Support
|
||||
|
||||
### 2.10.6
|
||||
|
||||
- Release July 28, 2015
|
||||
|
||||
[#2515](https://github.com/moment/moment/pull/2515) Fix regression introduced
|
||||
in `2.10.5` related to `moment.ISO_8601` parsing.
|
||||
|
||||
### 2.10.5 [See full changelog](https://gist.github.com/ichernev/6ec13ac7efc396da44b2)
|
||||
|
||||
- Release July 26, 2015
|
||||
|
||||
Important changes:
|
||||
* [#2357](https://github.com/moment/moment/pull/2357) Improve unit bubbling for ISO dates
|
||||
this fixes day to year conversions to work around end-of-year (~365 days). As
|
||||
a side effect 365 days is 11 months and 30 days, and 366 days is one year.
|
||||
* [#2438](https://github.com/moment/moment/pull/2438) Fix inconsistent moment.min and moment.max results
|
||||
Return invalid result if any of the inputs is invalid
|
||||
* [#2494](https://github.com/moment/moment/pull/2494) Fix two digit year parsing with YYYY format
|
||||
This brings the benefits of YY to YYYY
|
||||
* [#2368](https://github.com/moment/moment/pull/2368) perf: use faster form of copying dates, across the board improvement
|
||||
|
||||
|
||||
### 2.10.3 [See full changelog](https://gist.github.com/ichernev/f264b9bed5b00f8b1b7f)
|
||||
|
||||
- Release May 13, 2015
|
||||
|
||||
* add `moment.fn.to` and `moment.fn.toNow` (similar to `from` and `fromNow`)
|
||||
* new locales (Sinhalese (si), Montenegrin (me), Javanese (ja))
|
||||
* performance improvements
|
||||
|
||||
### 2.10.2
|
||||
|
||||
- Release April 9, 2015
|
||||
|
||||
* fixed moment-with-locales in browser env caused by esperanto change
|
||||
|
||||
### 2.10.1
|
||||
|
||||
* regression: Add moment.duration.fn back
|
||||
|
||||
### 2.10.0
|
||||
|
||||
Ported code to es6 modules.
|
||||
|
||||
### 2.9.0 [See full changelog](https://gist.github.com/ichernev/0c9a9b49951111a27ce7)
|
||||
|
||||
- Release January 8, 2015
|
||||
|
||||
languages:
|
||||
* [2104](https://github.com/moment/moment/issues/2104) Frisian (fy) language file with unit test
|
||||
* [2097](https://github.com/moment/moment/issues/2097) add ar-tn locale
|
||||
|
||||
deprecations:
|
||||
* [2074](https://github.com/moment/moment/issues/2074) Implement `moment.fn.utcOffset`, deprecate `moment.fn.zone`
|
||||
|
||||
features:
|
||||
* [2088](https://github.com/moment/moment/issues/2088) add moment.fn.isBetween
|
||||
* [2054](https://github.com/moment/moment/issues/2054) Call updateOffset when creating moment (needed for default timezone in
|
||||
moment-timezone)
|
||||
* [1893](https://github.com/moment/moment/issues/1893) Add moment.isDate method
|
||||
* [1825](https://github.com/moment/moment/issues/1825) Implement toJSON function on Duration
|
||||
* [1809](https://github.com/moment/moment/issues/1809) Allowing moment.set() to accept a hash of units
|
||||
* [2128](https://github.com/moment/moment/issues/2128) Add firstDayOfWeek, firstDayOfYear locale getters
|
||||
* [2131](https://github.com/moment/moment/issues/2131) Add quarter diff support
|
||||
|
||||
Some bugfixes and language improvements -- [full changelog](https://gist.github.com/ichernev/0c9a9b49951111a27ce7)
|
||||
|
||||
### 2.8.4 [See full changelog](https://gist.github.com/ichernev/a4fcb0a46d74e4b9b996)
|
||||
|
||||
- Release November 19, 2014
|
||||
|
||||
Features:
|
||||
|
||||
* [#2000](https://github.com/moment/moment/issues/2000) Add LTS localised format that includes seconds
|
||||
* [#1960](https://github.com/moment/moment/issues/1960) added formatToken 'x' for unix offset in milliseconds #1938
|
||||
* [#1965](https://github.com/moment/moment/issues/1965) Support 24:00:00.000 to mean next day, at midnight.
|
||||
* [#2002](https://github.com/moment/moment/issues/2002) Accept 'date' key when creating moment with object
|
||||
* [#2009](https://github.com/moment/moment/issues/2009) Use native toISOString when we can
|
||||
|
||||
Some bugfixes and language improvements -- [full changelog](https://gist.github.com/ichernev/a4fcb0a46d74e4b9b996)
|
||||
|
||||
### 2.8.3
|
||||
|
||||
- Release September 5, 2014
|
||||
|
||||
Bugfixes:
|
||||
|
||||
* [#1801](https://github.com/moment/moment/issues/1801) proper pluralization for Arabic
|
||||
* [#1833](https://github.com/moment/moment/issues/1833) improve spm integration
|
||||
* [#1871](https://github.com/moment/moment/issues/1871) fix zone bug caused by Firefox 24
|
||||
* [#1882](https://github.com/moment/moment/issues/1882) Use hh:mm in Czech
|
||||
* [#1883](https://github.com/moment/moment/issues/1883) Fix 2.8.0 regression in duration as conversions
|
||||
* [#1890](https://github.com/moment/moment/issues/1890) Faster travis builds
|
||||
* [#1892](https://github.com/moment/moment/issues/1892) Faster isBefore/After/Same
|
||||
* [#1848](https://github.com/moment/moment/issues/1848) Fix flaky month diffs
|
||||
* [#1895](https://github.com/moment/moment/issues/1895) Fix 2.8.0 regression in moment.utc with format array
|
||||
* [#1896](https://github.com/moment/moment/issues/1896) Support setting invalid instance locale (noop)
|
||||
* [#1897](https://github.com/moment/moment/issues/1897) Support moment([str]) in addition to moment([int])
|
||||
|
||||
### 2.8.2
|
||||
|
||||
- Release August 22, 2014
|
||||
|
||||
Minor bugfixes:
|
||||
|
||||
* [#1874](https://github.com/moment/moment/issues/1874) use `Object.prototype.hasOwnProperty`
|
||||
instead of `obj.hasOwnProperty` (ie8 bug)
|
||||
* [#1873](https://github.com/moment/moment/issues/1873) add `duration#toString()`
|
||||
* [#1859](https://github.com/moment/moment/issues/1859) better month/weekday names in norwegian
|
||||
* [#1812](https://github.com/moment/moment/issues/1812) meridiem parsing for greek
|
||||
* [#1804](https://github.com/moment/moment/issues/1804) spanish del -> de
|
||||
* [#1800](https://github.com/moment/moment/issues/1800) korean LT improvement
|
||||
|
||||
### 2.8.1
|
||||
|
||||
- Release August 1, 2014
|
||||
|
||||
* bugfix [#1813](https://github.com/moment/moment/issues/1813): fix moment().lang([key]) incompatibility
|
||||
|
||||
### 2.8.0 [See changelog](https://gist.github.com/ichernev/ac3899324a5fa6c8c9b4)
|
||||
|
||||
- Release July 31, 2014
|
||||
|
||||
* incompatible changes
|
||||
* [#1761](https://github.com/moment/moment/issues/1761): moments created without a language are no longer following the global language, in case it changes. Only newly created moments take the global language by default. In case you're affected by this, wait, comment on [#1797](https://github.com/moment/moment/issues/1797) and wait for a proper reimplementation
|
||||
* [#1642](https://github.com/moment/moment/issues/1642): 45 days is no longer "a month" according to humanize, cutoffs for month, and year have changed. Hopefully your code does not depend on a particular answer from humanize (which it shouldn't anyway)
|
||||
* [#1784](https://github.com/moment/moment/issues/1784): if you use the human readable English datetime format in a weird way (like storing them in a database) that would break when the format changes you're at risk.
|
||||
|
||||
* deprecations (old behavior will be dropped in 3.0)
|
||||
* [#1761](https://github.com/moment/moment/issues/1761) `lang` is renamed to `locale`, `langData` -> `localeData`. Also there is now `defineLocale` that should be used when creating new locales
|
||||
* [#1763](https://github.com/moment/moment/issues/1763) `add(unit, value)` and `subtract(unit, value)` are now deprecated. Use `add(value, unit)` and `subtract(value, unit)` instead.
|
||||
* [#1759](https://github.com/moment/moment/issues/1759) rename `duration.toIsoString` to `duration.toISOString`. The js standard library and moment's `toISOString` follow that convention.
|
||||
|
||||
* new locales
|
||||
* [#1789](https://github.com/moment/moment/issues/1789) Tibetan (bo)
|
||||
* [#1786](https://github.com/moment/moment/issues/1786) Africaans (af)
|
||||
* [#1778](https://github.com/moment/moment/issues/1778) Burmese (my)
|
||||
* [#1727](https://github.com/moment/moment/issues/1727) Belarusian (be)
|
||||
|
||||
* bugfixes, locale bugfixes, performance improvements, features
|
||||
|
||||
### 2.7.0 [See changelog](https://gist.github.com/ichernev/b0a3d456d5a84c9901d7)
|
||||
|
||||
- Release June 12, 2014
|
||||
|
||||
* new languages
|
||||
|
||||
* [#1678](https://github.com/moment/moment/issues/1678) Bengali (bn)
|
||||
* [#1628](https://github.com/moment/moment/issues/1628) Azerbaijani (az)
|
||||
* [#1633](https://github.com/moment/moment/issues/1633) Arabic, Saudi Arabia (ar-sa)
|
||||
* [#1648](https://github.com/moment/moment/issues/1648) Austrian German (de-at)
|
||||
|
||||
* features
|
||||
|
||||
* [#1663](https://github.com/moment/moment/issues/1663) configurable relative time thresholds
|
||||
* [#1554](https://github.com/moment/moment/issues/1554) support anchor time in moment.calendar
|
||||
* [#1693](https://github.com/moment/moment/issues/1693) support moment.ISO_8601 as parsing format
|
||||
* [#1637](https://github.com/moment/moment/issues/1637) add moment.min and moment.max and deprecate min/max instance methods
|
||||
* [#1704](https://github.com/moment/moment/issues/1704) support string value in add/subtract
|
||||
* [#1647](https://github.com/moment/moment/issues/1647) add spm support (package manager)
|
||||
|
||||
* bugfixes
|
||||
|
||||
### 2.6.0 [See changelog](https://gist.github.com/ichernev/10544682)
|
||||
|
||||
- Release April 12 , 2014
|
||||
|
||||
* languages
|
||||
* [#1529](https://github.com/moment/moment/issues/1529) Serbian-Cyrillic (sr-cyr)
|
||||
* [#1544](https://github.com/moment/moment/issues/1544), [#1546](https://github.com/moment/moment/issues/1546) Khmer Cambodia (km)
|
||||
|
||||
* features
|
||||
* [#1419](https://github.com/moment/moment/issues/1419), [#1468](https://github.com/moment/moment/issues/1468), [#1467](https://github.com/moment/moment/issues/1467), [#1546](https://github.com/moment/moment/issues/1546) better handling of timezone-d moments around DST
|
||||
* [#1462](https://github.com/moment/moment/issues/1462) add weeksInYear and isoWeeksInYear
|
||||
* [#1475](https://github.com/moment/moment/issues/1475) support ordinal parsing
|
||||
* [#1499](https://github.com/moment/moment/issues/1499) composer support
|
||||
* [#1577](https://github.com/moment/moment/issues/1577), [#1604](https://github.com/moment/moment/issues/1604) put Date parsing in moment.createFromInputFallback so it can be properly deprecated and controlled in the future
|
||||
* [#1545](https://github.com/moment/moment/issues/1545) extract two-digit year parsing in moment.parseTwoDigitYear, so it can be overwritten
|
||||
* [#1590](https://github.com/moment/moment/issues/1590) (see [#1574](https://github.com/moment/moment/issues/1574)) set AMD global before module definition to better support non AMD module dependencies used in AMD environment
|
||||
* [#1589](https://github.com/moment/moment/issues/1589) remove global in Node.JS environment (was not working before, nobody complained, was scheduled for removal anyway)
|
||||
* [#1586](https://github.com/moment/moment/issues/1586) support quarter setting and parsing
|
||||
|
||||
* 18 bugs fixed
|
||||
|
||||
### 2.5.1
|
||||
|
||||
- Release January 22, 2014
|
||||
|
||||
* languages
|
||||
* [#1392](https://github.com/moment/moment/issues/1392) Armenian (hy-am)
|
||||
|
||||
* bugfixes
|
||||
* [#1429](https://github.com/moment/moment/issues/1429) fixes [#1423](https://github.com/moment/moment/issues/1423) weird chrome-32 bug with js object creation
|
||||
* [#1421](https://github.com/moment/moment/issues/1421) remove html entities from Welsh
|
||||
* [#1418](https://github.com/moment/moment/issues/1418) fixes [#1401](https://github.com/moment/moment/issues/1401) improved non-padded tokens in strict matching
|
||||
* [#1417](https://github.com/moment/moment/issues/1417) fixes [#1404](https://github.com/moment/moment/issues/1404) handle buggy moment object created by property cloning
|
||||
* [#1398](https://github.com/moment/moment/issues/1398) fixes [#1397](https://github.com/moment/moment/issues/1397) fix Arabic-like week number parsing
|
||||
* [#1396](https://github.com/moment/moment/issues/1396) add leftZeroFill(4) to GGGG and gggg formats
|
||||
* [#1373](https://github.com/moment/moment/issues/1373) use lowercase for months and days in Catalan
|
||||
|
||||
* testing
|
||||
* [#1374](https://github.com/moment/moment/issues/1374) run tests on multiple browser/os combos via SauceLabs and Travis
|
||||
|
||||
### 2.5.0 [See changelog](https://gist.github.com/ichernev/8104451)
|
||||
|
||||
- Release Dec 24, 2013
|
||||
|
||||
* New languages
|
||||
* Luxemburish (lb) [1247](https://github.com/moment/moment/issues/1247)
|
||||
* Serbian (rs) [1319](https://github.com/moment/moment/issues/1319)
|
||||
* Tamil (ta) [1324](https://github.com/moment/moment/issues/1324)
|
||||
* Macedonian (mk) [1337](https://github.com/moment/moment/issues/1337)
|
||||
|
||||
* Features
|
||||
* [1311](https://github.com/moment/moment/issues/1311) Add quarter getter and format token `Q`
|
||||
* [1303](https://github.com/moment/moment/issues/1303) strict parsing now respects number of digits per token (fix [1196](https://github.com/moment/moment/issues/1196))
|
||||
* 0d30bb7 add jspm support
|
||||
* [1347](https://github.com/moment/moment/issues/1347) improve zone parsing
|
||||
* [1362](https://github.com/moment/moment/issues/1362) support merideam parsing in Korean
|
||||
|
||||
* 22 bugfixes
|
||||
|
||||
### 2.4.0
|
||||
|
||||
- Release Oct 27, 2013
|
||||
|
||||
* **Deprecate** globally exported moment, will be removed in next major
|
||||
* New languages
|
||||
* Farose (fo) [#1206](https://github.com/moment/moment/issues/1206)
|
||||
* Tagalog/Filipino (tl-ph) [#1197](https://github.com/moment/moment/issues/1197)
|
||||
* Welsh (cy) [#1215](https://github.com/moment/moment/issues/1215)
|
||||
* Bugfixes
|
||||
* properly handle Z at the end of iso RegExp [#1187](https://github.com/moment/moment/issues/1187)
|
||||
* chinese meridian time improvements [#1076](https://github.com/moment/moment/issues/1076)
|
||||
* fix language tests [#1177](https://github.com/moment/moment/issues/1177)
|
||||
* remove some failing tests (that should have never existed :))
|
||||
[#1185](https://github.com/moment/moment/issues/1185)
|
||||
[#1183](https://github.com/moment/moment/issues/1183)
|
||||
* handle russian noun cases in weird cases [#1195](https://github.com/moment/moment/issues/1195)
|
||||
|
||||
### 2.3.1
|
||||
|
||||
- Release Oct 9, 2013
|
||||
|
||||
Removed a trailing comma [1169] and fixed a bug with `months`, `weekdays` getters [#1171](https://github.com/moment/moment/issues/1171).
|
||||
|
||||
### 2.3.0 [See changelog](https://gist.github.com/ichernev/6864354)
|
||||
|
||||
- Release Oct 7, 2013
|
||||
|
||||
Changed isValid, added strict parsing.
|
||||
Week tokens parsing.
|
||||
|
||||
### 2.2.1
|
||||
|
||||
- Release Sep 12, 2013
|
||||
|
||||
Fixed bug in string prototype test.
|
||||
Updated authors and contributors.
|
||||
|
||||
### 2.2.0 [See changelog](https://gist.github.com/ichernev/00f837a9baf46a3565e4)
|
||||
|
||||
- Release Sep 11, 2013
|
||||
|
||||
Added bower support.
|
||||
|
||||
Language files now use UMD.
|
||||
|
||||
Creating moment defaults to current date/month/year.
|
||||
|
||||
Added a bundle of moment and all language files.
|
||||
|
||||
### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5)
|
||||
|
||||
- Release Jul 8, 2013
|
||||
|
||||
Added better week support.
|
||||
|
||||
Added ability to set offset with `moment#zone`.
|
||||
|
||||
Added ability to set month or weekday from a string.
|
||||
|
||||
Added `moment#min` and `moment#max`
|
||||
|
||||
### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51)
|
||||
|
||||
- Release Feb 9, 2013
|
||||
|
||||
Added short form localized tokens.
|
||||
|
||||
Added ability to define language a string should be parsed in.
|
||||
|
||||
Added support for reversed add/subtract arguments.
|
||||
|
||||
Added support for `endOf('week')` and `startOf('week')`.
|
||||
|
||||
Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')`
|
||||
|
||||
`moment#diff` now floors instead of rounds.
|
||||
|
||||
Normalized `moment#toString`.
|
||||
|
||||
Added `isSame`, `isAfter`, and `isBefore` methods.
|
||||
|
||||
Added better week support.
|
||||
|
||||
Added `moment#toJSON`
|
||||
|
||||
Bugfix: Fixed parsing of first century dates
|
||||
|
||||
Bugfix: Parsing 10Sep2001 should work as expected
|
||||
|
||||
Bugfix: Fixed weirdness with `moment.utc()` parsing.
|
||||
|
||||
Changed language ordinal method to return the number + ordinal instead of just the ordinal.
|
||||
|
||||
Changed two digit year parsing cutoff to match strptime.
|
||||
|
||||
Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
|
||||
|
||||
Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
|
||||
|
||||
Removed the lang data objects from the top level namespace.
|
||||
|
||||
Duplicate `Date` passed to `moment()` instead of referencing it.
|
||||
|
||||
### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456)
|
||||
|
||||
- Release Oct 2, 2012
|
||||
|
||||
Bugfixes
|
||||
|
||||
### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384)
|
||||
|
||||
- Release Oct 1, 2012
|
||||
|
||||
Bugfixes
|
||||
|
||||
### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288)
|
||||
|
||||
- Release Jul 26, 2012
|
||||
|
||||
Added `moment.fn.endOf()` and `moment.fn.startOf()`.
|
||||
|
||||
Added validation via `moment.fn.isValid()`.
|
||||
|
||||
Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions
|
||||
|
||||
Add support for month/weekday callbacks in `moment.fn.format()`
|
||||
|
||||
Added instance specific languages.
|
||||
|
||||
Added two letter weekday abbreviations with the formatting token `dd`.
|
||||
|
||||
Various language updates.
|
||||
|
||||
Various bugfixes.
|
||||
|
||||
### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268)
|
||||
|
||||
- Release Apr 26, 2012
|
||||
|
||||
Added Durations.
|
||||
|
||||
Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD).
|
||||
|
||||
Added support for millisecond parsing and formatting tokens (S SS SSS)
|
||||
|
||||
Added a getter for `moment.lang()`
|
||||
|
||||
Various bugfixes.
|
||||
|
||||
There are a few things deprecated in the 1.6.0 release.
|
||||
|
||||
1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background.
|
||||
|
||||
2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances.
|
||||
|
||||
3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222).
|
||||
|
||||
### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed)
|
||||
|
||||
- Release Mar 20, 2012
|
||||
|
||||
Added UTC mode.
|
||||
|
||||
Added automatic ISO8601 parsing.
|
||||
|
||||
Various bugfixes.
|
||||
|
||||
### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed)
|
||||
|
||||
- Release Feb 4, 2012
|
||||
|
||||
Added `moment.fn.toDate` as a replacement for `moment.fn.native`.
|
||||
|
||||
Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day.
|
||||
|
||||
Various bugfixes.
|
||||
|
||||
### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed)
|
||||
|
||||
- Release Jan 5, 2012
|
||||
|
||||
Added support for parsing month names in the current language.
|
||||
|
||||
Added escape blocks for parsing tokens.
|
||||
|
||||
Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'.
|
||||
|
||||
Added `moment.fn.day` as a setter.
|
||||
|
||||
Various bugfixes
|
||||
|
||||
### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed)
|
||||
|
||||
- Release Dec 7, 2011
|
||||
|
||||
Added timezones to parser and formatter.
|
||||
|
||||
Added `moment.fn.isDST`.
|
||||
|
||||
Added `moment.fn.zone` to get the timezone offset in minutes.
|
||||
|
||||
### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed)
|
||||
|
||||
- Release Nov 18, 2011
|
||||
|
||||
Various bugfixes
|
||||
|
||||
### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed)
|
||||
|
||||
- Release Nov 12, 2011
|
||||
|
||||
Added time specific diffs (months, days, hours, etc)
|
||||
|
||||
### 1.1.0
|
||||
|
||||
- Release Oct 28, 2011
|
||||
|
||||
Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29)
|
||||
|
||||
Fixed [issue 31](https://github.com/timrwood/moment/pull/31).
|
||||
|
||||
### 1.0.1
|
||||
|
||||
- Release Oct 18, 2011
|
||||
|
||||
Added `moment.version` to get the current version.
|
||||
|
||||
Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25)
|
||||
|
||||
### 1.0.0
|
||||
|
||||
- Release
|
||||
|
||||
Added convenience methods for getting and setting date parts.
|
||||
|
||||
Added better support for `moment.add()`.
|
||||
|
||||
Added better lang support in NodeJS.
|
||||
|
||||
Renamed library from underscore.date to Moment.js
|
||||
|
||||
### 0.6.1
|
||||
|
||||
- Release Oct 12, 2011
|
||||
|
||||
Added Portuguese, Italian, and French language support
|
||||
|
||||
### 0.6.0
|
||||
|
||||
- Release Sep 21, 2011
|
||||
|
||||
Added _date.lang() support.
|
||||
Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]);
|
||||
Made parse from string and single format 25% faster.
|
||||
|
||||
### 0.5.2
|
||||
|
||||
- Release Jul 11, 2011
|
||||
|
||||
Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9).
|
||||
|
||||
### 0.5.1
|
||||
|
||||
- Release Jun 17, 2011
|
||||
|
||||
Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5).
|
||||
|
||||
### 0.5.0
|
||||
|
||||
- Release Jun 13, 2011
|
||||
|
||||
Dropped the redundant `_date.date()` in favor of `_date()`.
|
||||
Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters.
|
||||
Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead.
|
||||
Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function.
|
||||
|
||||
### 0.4.1
|
||||
|
||||
- Release May 9, 2011
|
||||
|
||||
Added date input formats for input strings.
|
||||
|
||||
### 0.4.0
|
||||
|
||||
- Release May 9, 2011
|
||||
|
||||
Added underscore.date to npm. Removed dependencies on underscore.
|
||||
|
||||
### 0.3.2
|
||||
|
||||
- Release Apr 9, 2011
|
||||
|
||||
Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes.
|
||||
|
||||
### 0.3.1
|
||||
|
||||
- Release Mar 25, 2011
|
||||
|
||||
Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object.
|
||||
|
||||
### 0.3.0
|
||||
|
||||
- Release Mar 25, 2011
|
||||
|
||||
Switched to the Underscore methodology of not mucking with the native objects' prototypes.
|
||||
Made chaining possible.
|
||||
|
||||
### 0.2.1
|
||||
|
||||
- Release
|
||||
|
||||
Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'.
|
||||
Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`.
|
||||
|
||||
### 0.2.0
|
||||
|
||||
- Release
|
||||
|
||||
Changed function names to be more concise.
|
||||
Changed date format from php date format to custom format.
|
||||
|
||||
### 0.1.0
|
||||
|
||||
- Release
|
||||
|
||||
Initial release
|
||||
|
@ -1,100 +0,0 @@
|
||||
Submitting Issues
|
||||
=================
|
||||
|
||||
If you are submitting a bug, please create a [jsfiddle](http://jsfiddle.net/) demonstrating the issue.
|
||||
|
||||
Read before submitting Pull Requests
|
||||
====================================
|
||||
|
||||
* **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `develop` branch.
|
||||
* **You will be required to sign a JS Foundation CLA before your pull request can be merged.** [Sign it right now](https://cla.js.foundation/moment/moment).
|
||||
* **Locale translations will not be merged without unit tests.** See [the British English unit tests](https://github.com/moment/moment/blob/develop/src/test/locale/en-gb.js) for an example.
|
||||
* **Do not include the minified files in your pull request.** These are
|
||||
`moment.js`, `locale/*.js`, `min/*.js`. Don't worry, we'll build them when
|
||||
we cut a release.
|
||||
|
||||
Code organization
|
||||
=================
|
||||
|
||||
Starting from version 2.10.0 the code is placed under `src/`.
|
||||
`moment.js`, `locale/*.js`, `min/*.js` are generated only on release.
|
||||
|
||||
**DO NOT** submit changes to the generated files. Instead only change
|
||||
`src/**/*.js` and run the tests.
|
||||
|
||||
* `src/lib/**/*.js` moment core files
|
||||
* `src/locale/*.js` locale files
|
||||
* `src/test/moment/*.js` moment core tests
|
||||
* `src/test/locale/*.js` locale tests
|
||||
|
||||
We're using ES6 module system, but nothing else ES6, because of performance
|
||||
considerations (added code by the transpiler, less than optimal translation to
|
||||
ES5). So please do not use that fancy new ES6 feature in your patch, it won't
|
||||
be accepted.
|
||||
|
||||
Setting up development environment
|
||||
==================================
|
||||
|
||||
To contribute, fork the library and install grunt and dependencies. You need
|
||||
[git](http://git-scm.com/) and
|
||||
[node](http://nodejs.org/); you might use
|
||||
[nvm](https://github.com/creationix/nvm) or
|
||||
[nenv](https://github.com/ryuone/nenv) to install node.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/moment/moment.git
|
||||
cd moment
|
||||
npm install -g grunt-cli
|
||||
npm install
|
||||
git checkout develop # all patches against develop branch, please!
|
||||
grunt # this runs tests and jshint
|
||||
```
|
||||
|
||||
Changing locale files
|
||||
=====================
|
||||
|
||||
If you have any changes to existing locale files, `@mention` the original
|
||||
author in the pull request (check the top of the language file), and ask if
|
||||
he/she approves of your changes. Because I don't know any languages I can't
|
||||
judge your locale changes, only the original author can :)
|
||||
|
||||
In order for your pull request to get merged it must have approval of original
|
||||
author, or at least one other native speaker has to approve of the change
|
||||
(happens rarely).
|
||||
|
||||
Grunt tasks
|
||||
===========
|
||||
|
||||
We use Grunt for managing the build. Here are some useful Grunt tasks:
|
||||
|
||||
* `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR.
|
||||
* `grunt test` run the tests.
|
||||
* `grunt release` Build everything, including minified files (do not include
|
||||
those in Pull Requests)
|
||||
* `grunt transpile:fr,ru` Build custom locale bundles `moment-with-locales.custom.js` and `locales.custom.js` inside `build/umd/min` containing just French and Russian.
|
||||
* `grunt size` Print size statistics.
|
||||
|
||||
Becoming a moment team member
|
||||
=============================
|
||||
|
||||
Moment's team members have extra powers and responsibilities. If you want to
|
||||
become one -- be active in our repositories by answering issues, reviewing PRs,
|
||||
discussing changes, submitting PRs for open bugs. Any help on
|
||||
[moment/moment](https://github.com/moment/moment),
|
||||
[moment/momentjs.com](https://github.com/moment/momentjs.com),
|
||||
[moment/moment-timezone](https://github.com/moment/moment-timezone) will be
|
||||
noticed.
|
||||
|
||||
Once you've proven to be trustworthy, submit your request to the
|
||||
[gitter chat](https://gitter.im/moment/moment), and it will be reviewed by the
|
||||
existing team.
|
||||
|
||||
Once you become a member:
|
||||
* you can tell your friends
|
||||
* you can close issues submitted by others
|
||||
|
||||
But also:
|
||||
* be active in the repositories
|
||||
* pick up work nobody else wants to
|
||||
* attend a monthly meeting
|
||||
* participate in the internal slack group
|
@ -1,212 +0,0 @@
|
||||
module.exports = function (grunt) {
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
env : {
|
||||
sauceLabs : (grunt.file.exists('.sauce-labs.creds') ?
|
||||
grunt.file.readJSON('.sauce-labs.creds') : {})
|
||||
},
|
||||
karma : {
|
||||
options: {
|
||||
browserNoActivityTimeout: 60000,
|
||||
browserDisconnectTimeout: 10000,
|
||||
browserDisconnectTolerance: 2,
|
||||
frameworks: ['qunit'],
|
||||
files: [
|
||||
'min/moment-with-locales.js',
|
||||
'min/tests.js'
|
||||
],
|
||||
sauceLabs: {
|
||||
startConnect: true,
|
||||
testName: 'MomentJS'
|
||||
},
|
||||
customLaunchers: {
|
||||
slChromeWinXp: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'chrome',
|
||||
platform: 'Windows XP'
|
||||
},
|
||||
slIe10Win7: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'internet explorer',
|
||||
platform: 'Windows 7',
|
||||
version: '10'
|
||||
},
|
||||
slIe9Win7: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'internet explorer',
|
||||
platform: 'Windows 7',
|
||||
version: '9'
|
||||
},
|
||||
slIe8Win7: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'internet explorer',
|
||||
platform: 'Windows 7',
|
||||
version: '8'
|
||||
},
|
||||
slIe11Win10: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'internet explorer',
|
||||
platform: 'Windows 10',
|
||||
version: '11'
|
||||
},
|
||||
slME25Win10: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'MicrosoftEdge',
|
||||
platform: 'Windows 10',
|
||||
version: '20.10240'
|
||||
},
|
||||
slFfLinux: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'firefox',
|
||||
platform: 'Linux'
|
||||
},
|
||||
slSafariOsx: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'safari',
|
||||
platform: 'OS X 10.8'
|
||||
},
|
||||
slSafariOsx11: {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'safari',
|
||||
platform: 'OS X 10.11'
|
||||
}
|
||||
}
|
||||
},
|
||||
server: {
|
||||
browsers: []
|
||||
},
|
||||
chrome: {
|
||||
singleRun: true,
|
||||
browsers: ['Chrome']
|
||||
},
|
||||
firefox: {
|
||||
singleRun: true,
|
||||
browsers: ['Firefox']
|
||||
},
|
||||
sauce: {
|
||||
options: {
|
||||
reporters: ['dots']
|
||||
},
|
||||
singleRun: true,
|
||||
browsers: [
|
||||
'slChromeWinXp',
|
||||
'slIe10Win7',
|
||||
'slIe9Win7',
|
||||
'slIe8Win7',
|
||||
'slIe11Win10',
|
||||
'slME25Win10',
|
||||
'slFfLinux',
|
||||
'slSafariOsx'
|
||||
]
|
||||
}
|
||||
},
|
||||
uglify : {
|
||||
main: {
|
||||
files: {
|
||||
'min/moment-with-locales.min.js' : 'min/moment-with-locales.js',
|
||||
'min/locales.min.js' : 'min/locales.js',
|
||||
'min/moment.min.js' : 'moment.js'
|
||||
}
|
||||
},
|
||||
options: {
|
||||
mangle: true,
|
||||
compress: {
|
||||
dead_code: false // jshint ignore:line
|
||||
},
|
||||
output: {
|
||||
ascii_only: true // jshint ignore:line
|
||||
},
|
||||
report: 'min',
|
||||
preserveComments: /^!|@preserve|@license|@cc_on/i
|
||||
}
|
||||
},
|
||||
jshint: {
|
||||
all: [
|
||||
'Gruntfile.js',
|
||||
'tasks/**.js',
|
||||
'src/**/*.js'
|
||||
],
|
||||
options: {
|
||||
jshintrc: true
|
||||
}
|
||||
},
|
||||
jscs: {
|
||||
all: [
|
||||
'Gruntfile.js',
|
||||
'tasks/**.js',
|
||||
'src/**/*.js'
|
||||
],
|
||||
options: {
|
||||
config: '.jscs.json'
|
||||
}
|
||||
},
|
||||
watch : {
|
||||
test : {
|
||||
files : [
|
||||
'src/**/*.js'
|
||||
],
|
||||
tasks: ['test']
|
||||
},
|
||||
jshint : {
|
||||
files : '<%= jshint.all %>',
|
||||
tasks: ['jshint']
|
||||
}
|
||||
},
|
||||
benchmark: {
|
||||
all: {
|
||||
src: ['benchmarks/*.js']
|
||||
}
|
||||
},
|
||||
exec: {
|
||||
'meteor-init': {
|
||||
// Make sure Meteor is installed, per https://meteor.com/install.
|
||||
// The curl'ed script is safe; takes 2 minutes to read source & check.
|
||||
command: 'type meteor >/dev/null 2>&1 || { curl https://install.meteor.com/ | sh; }'
|
||||
},
|
||||
'meteor-test': {
|
||||
command: 'spacejam --mongo-url mongodb:// test-packages ./meteor'
|
||||
},
|
||||
'meteor-publish': {
|
||||
command: 'cd meteor && meteor publish'
|
||||
},
|
||||
'typescript-test': {
|
||||
command: 'npm run typescript-test'
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
grunt.loadTasks('tasks');
|
||||
|
||||
// These plugins provide necessary tasks.
|
||||
require('load-grunt-tasks')(grunt);
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', ['lint', 'test']);
|
||||
|
||||
// linting
|
||||
grunt.registerTask('lint', ['jshint', 'jscs']);
|
||||
|
||||
// test tasks
|
||||
grunt.registerTask('test', ['test:node', 'test:typescript']);
|
||||
grunt.registerTask('test:node', ['transpile', 'qtest']);
|
||||
grunt.registerTask('test:typescript', ['exec:typescript-test']);
|
||||
// TODO: For some weird reason karma doesn't like the files in
|
||||
// build/umd/min/* but works with min/*, so update-index, then git checkout
|
||||
grunt.registerTask('test:server', ['transpile', 'update-index', 'karma:server']);
|
||||
grunt.registerTask('test:browser', ['transpile', 'update-index', 'karma:chrome', 'karma:firefox']);
|
||||
grunt.registerTask('test:sauce-browser', ['transpile', 'update-index', 'env:sauceLabs', 'karma:sauce']);
|
||||
grunt.registerTask('test:meteor', ['exec:meteor-init', 'exec:meteor-test', 'exec:meteor-cleanup']);
|
||||
|
||||
// travis build task
|
||||
grunt.registerTask('build:travis', ['default']);
|
||||
grunt.registerTask('meteor-publish', ['exec:meteor-init', 'exec:meteor-publish', 'exec:meteor-cleanup']);
|
||||
|
||||
// Task to be run when releasing a new version
|
||||
grunt.registerTask('release', [
|
||||
'default',
|
||||
'update-index',
|
||||
'component',
|
||||
'uglify:main'
|
||||
]);
|
||||
};
|
@ -1,25 +0,0 @@
|
||||
**Description of the Issue and Steps to Reproduce:**
|
||||
|
||||
*Please include the values of all variables used.*
|
||||
|
||||
**Environment:**
|
||||
|
||||
*Examples: Chrome 49 on OSX, Internet Explorer 10 on Windows 7, Node.JS 4.4.4 on Ubuntu 16.0.4*
|
||||
|
||||
*Both the browser and the OS are important to us, particularly if you have an unsual environment like an IOT application.*
|
||||
|
||||
**Other information that may be helpful:**
|
||||
* The time zone setting of the machine the code is running on
|
||||
* The time and date at which the code was run
|
||||
* Other libraries in use (TypeScript, Immutable.js, etc)
|
||||
|
||||
If you are reporting an issue, please run the following code in the environment you are using and include the output:
|
||||
```js
|
||||
console.log( (new Date()).toString())
|
||||
console.log((new Date()).toLocaleString())
|
||||
console.log( (new Date()).getTimezoneOffset())
|
||||
console.log( navigator.userAgent)
|
||||
console.log(moment.version)
|
||||
```
|
||||
|
||||
*Ensure your issue is isolated to moment. Issues involving third party tools will be closed unless submitted by the tool's author/maintainer.*
|
@ -1,22 +0,0 @@
|
||||
Copyright (c) JS Foundation and other 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.
|
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Moment.js</id>
|
||||
<version>2.19.1</version>
|
||||
<authors>Tim Wood, Iskren Chernev, Moment.js contributors</authors>
|
||||
<owners>Cory Deppen, Iskren Chernev</owners>
|
||||
<description>A lightweight JavaScript date library for parsing, manipulating, and formatting dates.</description>
|
||||
<releaseNotes>
|
||||
* Release Oct 11, 2017
|
||||
|
||||
Make react native and webpack both work
|
||||
* #4225 #4226 #4232
|
||||
</releaseNotes>
|
||||
<projectUrl>http://momentjs.com/</projectUrl>
|
||||
<iconUrl>http://pbs.twimg.com/profile_images/482670411402858496/Xrtdc94q_normal.png</iconUrl>
|
||||
<licenseUrl>https://raw.github.com/timrwood/moment/master/LICENSE</licenseUrl>
|
||||
<tags>JavaScript date time browser node.js</tags>
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="moment.js" target="Content\Scripts" />
|
||||
<file src="min/moment.min.js" target="Content\Scripts" />
|
||||
<file src="min/moment-with-locales.js" target="Content\Scripts" />
|
||||
<file src="min/moment-with-locales.min.js" target="Content\Scripts" />
|
||||
</files>
|
||||
</package>
|
@ -1,61 +0,0 @@
|
||||
[](https://gitter.im/moment/moment?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
[![NPM version][npm-version-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url]
|
||||
[](https://coveralls.io/r/moment/moment?branch=develop)
|
||||
[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_shield)
|
||||
|
||||
A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates.
|
||||
|
||||
**[Documentation](http://momentjs.com/docs/)**
|
||||
|
||||
## Port to ECMAScript 6 (version 2.10.0)
|
||||
|
||||
Moment 2.10.0 does not bring any new features, but the code is now written in
|
||||
ECMAScript 6 modules and placed inside `src/`. Previously `moment.js`, `locale/*.js` and
|
||||
`test/moment/*.js`, `test/locale/*.js` contained the source of the project. Now
|
||||
the source is in `src/`, temporary build (ECMAScript 5) files are placed under
|
||||
`build/umd/` (for running tests during development), and the `moment.js` and
|
||||
`locale/*.js` files are updated only on release.
|
||||
|
||||
If you want to use a particular revision of the code, make sure to run
|
||||
`grunt transpile update-index`, so `moment.js` and `locales/*.js` are synced
|
||||
with `src/*`. We might place that in a commit hook in the future.
|
||||
|
||||
## Upgrading to 2.0.0
|
||||
|
||||
There are a number of small backwards incompatible changes with version 2.0.0. [See the full descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes)
|
||||
|
||||
* Changed language ordinal method to return the number + ordinal instead of just the ordinal.
|
||||
|
||||
* Changed two digit year parsing cutoff to match strptime.
|
||||
|
||||
* Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
|
||||
|
||||
* Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
|
||||
|
||||
* Removed the lang data objects from the top level namespace.
|
||||
|
||||
* Duplicate `Date` passed to `moment()` instead of referencing it.
|
||||
|
||||
## [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
|
||||
|
||||
## [Contributing](https://github.com/moment/moment/blob/develop/CONTRIBUTING.md)
|
||||
|
||||
We're looking for co-maintainers! If you want to become a master of time please
|
||||
write to [ichernev](https://github.com/ichernev).
|
||||
|
||||
## License
|
||||
|
||||
Moment.js is freely distributable under the terms of the [MIT license](https://github.com/moment/moment/blob/develop/LICENSE).
|
||||
|
||||
[](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_large)
|
||||
|
||||
[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat
|
||||
[license-url]: LICENSE
|
||||
|
||||
[npm-url]: https://npmjs.org/package/moment
|
||||
[npm-version-image]: http://img.shields.io/npm/v/moment.svg?style=flat
|
||||
[npm-downloads-image]: http://img.shields.io/npm/dm/moment.svg?style=flat
|
||||
|
||||
[travis-url]: http://travis-ci.org/moment/moment
|
||||
[travis-image]: http://img.shields.io/travis/moment/moment/develop.svg?style=flat
|
@ -1,22 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js"),
|
||||
base = moment('2013-05-25');
|
||||
|
||||
var unitsUnderTest = ["milliseconds", "seconds", "minutes", "hours", "days", "weeks", "months", "quarters", "years"];
|
||||
var tests = unitsUnderTest.reduce(function (testsSoFar, unit) {
|
||||
testsSoFar["add " + unit] = generateTestForUnit(unit);
|
||||
return testsSoFar;
|
||||
}, {});
|
||||
|
||||
function generateTestForUnit(unit) {
|
||||
return {
|
||||
setup: function(){var base = base; var unit = unit;},
|
||||
fn: function(){base.add(8, unit);},
|
||||
async: true
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'add',
|
||||
tests: tests
|
||||
};
|
@ -1,10 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js"),
|
||||
base = moment('2013-05-25');
|
||||
|
||||
module.exports = {
|
||||
name: 'clone',
|
||||
onComplete: function(){},
|
||||
fn: function(){base.clone();},
|
||||
async: true
|
||||
};
|
@ -1,22 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js"),
|
||||
base = moment('2013-05-25');
|
||||
|
||||
var unitsUnderTest = ["second", "minute", "hour", "date", "day", "isoWeek", "week", "month", "quarter", "year"];
|
||||
var tests = unitsUnderTest.reduce(function (testsSoFar, unit) {
|
||||
testsSoFar["endOf " + unit] = generateTestForUnit(unit);
|
||||
return testsSoFar;
|
||||
}, {});
|
||||
|
||||
function generateTestForUnit(unit) {
|
||||
return {
|
||||
setup: function(){var base = base; var unit = unit;},
|
||||
fn: function(){base.endOf(unit);},
|
||||
async: true
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'endOf',
|
||||
tests: tests
|
||||
};
|
@ -1,12 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require('./../moment.js'),
|
||||
base = new Date();
|
||||
|
||||
module.exports = {
|
||||
name: 'fromDate',
|
||||
onComplete: function(){},
|
||||
fn: function(){
|
||||
moment(base);
|
||||
},
|
||||
async: true
|
||||
};
|
@ -1,12 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require('./../moment.js'),
|
||||
base = new Date();
|
||||
|
||||
module.exports = {
|
||||
name: 'fromDateUtc',
|
||||
onComplete: function(){},
|
||||
fn: function(){
|
||||
moment.utc(base);
|
||||
},
|
||||
async: true
|
||||
};
|
@ -1,67 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js");
|
||||
|
||||
var isObjectEmpty_getOwnPropertyNames = function(obj) {
|
||||
if (Object.getOwnPropertyNames) {
|
||||
return (Object.getOwnPropertyNames(obj).length === 0);
|
||||
} else {
|
||||
var k;
|
||||
for (k in obj) {
|
||||
if (obj.hasOwnProperty(k)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
var isObjectEmpty_keys = function(obj) {
|
||||
if (Object.keys) {
|
||||
return (Object.keys(obj).length === 0);
|
||||
} else {
|
||||
var k;
|
||||
for (k in obj) {
|
||||
if (obj.hasOwnProperty(k)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
var isObjectEmpty_forIn = function(obj) {
|
||||
var k;
|
||||
for (k in obj) {
|
||||
if (obj.hasOwnProperty(k)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: 'isObjectEmpty',
|
||||
tests: {
|
||||
"isObjectEmpty -> for..in": {
|
||||
onComplete: function(){},
|
||||
fn: function(){
|
||||
isObjectEmpty_forIn(moment());
|
||||
},
|
||||
async: false
|
||||
},
|
||||
"isObjectEmpty -> Object.keys": {
|
||||
onComplete: function(){},
|
||||
fn: function(){
|
||||
isObjectEmpty_keys(moment());
|
||||
},
|
||||
async: false
|
||||
},
|
||||
"isObjectEmpty -> Object.getOwnPropertyNames": {
|
||||
onComplete: function(){},
|
||||
fn: function(){
|
||||
isObjectEmpty_getOwnPropertyNames(moment());
|
||||
},
|
||||
async: false
|
||||
}
|
||||
}
|
||||
};
|
@ -1,11 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require('./../moment.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'makeDuration',
|
||||
onComplete: function(){},
|
||||
fn: function(){
|
||||
moment.duration(5, 'years');
|
||||
},
|
||||
async: true
|
||||
};
|
@ -1,40 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js"),
|
||||
base = moment('2013-05-25');
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'clone',
|
||||
tests: {
|
||||
isBefore_true: {
|
||||
onComplete: function(){},
|
||||
fn: function(){base.isBefore('2013-06-25');},
|
||||
async: true
|
||||
},
|
||||
isBefore_self: {
|
||||
onComplete: function(){},
|
||||
fn: function(){base.isBefore('2013-05-25');},
|
||||
async: true
|
||||
},
|
||||
isBefore_false: {
|
||||
onComplete: function(){},
|
||||
fn: function(){base.isBefore('2013-04-25');},
|
||||
async: true
|
||||
},
|
||||
isAfter_true: {
|
||||
onComplete: function(){},
|
||||
fn: function(){base.isAfter('2013-04-25');},
|
||||
async: true
|
||||
},
|
||||
isAfter_self: {
|
||||
onComplete: function(){},
|
||||
fn: function(){base.isAfter('2013-05-25');},
|
||||
async: true
|
||||
},
|
||||
isAfter_false: {
|
||||
onComplete: function(){},
|
||||
fn: function(){base.isAfter('2013-06-25');},
|
||||
async: true
|
||||
}
|
||||
}
|
||||
};
|
@ -1,22 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js"),
|
||||
base = moment('2013-05-25');
|
||||
|
||||
var unitsUnderTest = ["second", "minute", "hour", "date", "day", "isoWeek", "week", "month", "quarter", "year"];
|
||||
var tests = unitsUnderTest.reduce(function (testsSoFar, unit) {
|
||||
testsSoFar["startOf " + unit] = generateTestForUnit(unit);
|
||||
return testsSoFar;
|
||||
}, {});
|
||||
|
||||
function generateTestForUnit(unit) {
|
||||
return {
|
||||
setup: function(){var base = base; var unit = unit;},
|
||||
fn: function(){base.startOf(unit);},
|
||||
async: true
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'startOf',
|
||||
tests: tests
|
||||
};
|
@ -1,22 +0,0 @@
|
||||
var Benchmark = require('benchmark'),
|
||||
moment = require("./../moment.js"),
|
||||
base = moment('2013-05-25');
|
||||
|
||||
var unitsUnderTest = ["milliseconds", "seconds", "minutes", "hours", "days", "weeks", "months", "quarters", "years"];
|
||||
var tests = unitsUnderTest.reduce(function (testsSoFar, unit) {
|
||||
testsSoFar["subtract " + unit] = generateTestForUnit(unit);
|
||||
return testsSoFar;
|
||||
}, {});
|
||||
|
||||
function generateTestForUnit(unit) {
|
||||
return {
|
||||
setup: function(){var base = base; var unit = unit;},
|
||||
fn: function(){base.subtract(8, unit);},
|
||||
async: true
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'subtract',
|
||||
tests: tests
|
||||
};
|
@ -1,43 +0,0 @@
|
||||
var Benchmark = require('benchmark');
|
||||
|
||||
module.exports = {
|
||||
name: 'zeroFill',
|
||||
tests: {
|
||||
zeroFillMath: {
|
||||
setup: function() {
|
||||
var zeroFillMath = function(number, targetLength, forceSign) {
|
||||
var absNumber = '' + Math.abs(number),
|
||||
zerosToFill = targetLength - absNumber.length,
|
||||
sign = number >= 0;
|
||||
return (sign ? (forceSign ? '+' : '') : '-') +
|
||||
Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
|
||||
}
|
||||
},
|
||||
fn: function() {
|
||||
zeroFillMath(Math.random() * 1e5 | 0, 5);
|
||||
zeroFillMath(Math.random() * 1e5 | 0, 10);
|
||||
zeroFillMath(Math.random() * 1e10 | 0, 20);
|
||||
},
|
||||
async: true
|
||||
},
|
||||
zeroFillWhile: {
|
||||
setup: function() {
|
||||
var zeroFillWhile = function(number, targetLength, forceSign) {
|
||||
var output = '' + Math.abs(number),
|
||||
sign = number >= 0;
|
||||
|
||||
while (output.length < targetLength) {
|
||||
output = '0' + output;
|
||||
}
|
||||
return (sign ? (forceSign ? '+' : '') : '-') + output;
|
||||
}
|
||||
},
|
||||
fn: function() {
|
||||
zeroFillWhile(Math.random() * 1e5 | 0, 5);
|
||||
zeroFillWhile(Math.random() * 1e5 | 0, 10);
|
||||
zeroFillWhile(Math.random() * 1e10 | 0, 20);
|
||||
},
|
||||
async: true
|
||||
}
|
||||
}
|
||||
};
|
@ -1,26 +0,0 @@
|
||||
{
|
||||
"name": "moment",
|
||||
"license": "MIT",
|
||||
"main": "moment.js",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"benchmarks",
|
||||
"bower_components",
|
||||
"meteor",
|
||||
"node_modules",
|
||||
"scripts",
|
||||
"tasks",
|
||||
"test",
|
||||
"component.json",
|
||||
"composer.json",
|
||||
"CONTRIBUTING.md",
|
||||
"ender.js",
|
||||
"Gruntfile.js",
|
||||
"Moment.js.nuspec",
|
||||
"package.js",
|
||||
"package.json",
|
||||
"ISSUE_TEMPLATE.md",
|
||||
"typing-tests",
|
||||
"min/tests.js"
|
||||
]
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
{
|
||||
"name": "moment",
|
||||
"version": "2.19.1",
|
||||
"main": "moment.js",
|
||||
"description": "Parse, validate, manipulate, and display dates in JavaScript.",
|
||||
"files": [
|
||||
"moment.js",
|
||||
"locale/af.js",
|
||||
"locale/ar-dz.js",
|
||||
"locale/ar-kw.js",
|
||||
"locale/ar-ly.js",
|
||||
"locale/ar-ma.js",
|
||||
"locale/ar-sa.js",
|
||||
"locale/ar-tn.js",
|
||||
"locale/ar.js",
|
||||
"locale/az.js",
|
||||
"locale/be.js",
|
||||
"locale/bg.js",
|
||||
"locale/bm.js",
|
||||
"locale/bn.js",
|
||||
"locale/bo.js",
|
||||
"locale/br.js",
|
||||
"locale/bs.js",
|
||||
"locale/ca.js",
|
||||
"locale/cs.js",
|
||||
"locale/cv.js",
|
||||
"locale/cy.js",
|
||||
"locale/da.js",
|
||||
"locale/de-at.js",
|
||||
"locale/de-ch.js",
|
||||
"locale/de.js",
|
||||
"locale/dv.js",
|
||||
"locale/el.js",
|
||||
"locale/en-au.js",
|
||||
"locale/en-ca.js",
|
||||
"locale/en-gb.js",
|
||||
"locale/en-ie.js",
|
||||
"locale/en-nz.js",
|
||||
"locale/eo.js",
|
||||
"locale/es-do.js",
|
||||
"locale/es-us.js",
|
||||
"locale/es.js",
|
||||
"locale/et.js",
|
||||
"locale/eu.js",
|
||||
"locale/fa.js",
|
||||
"locale/fi.js",
|
||||
"locale/fo.js",
|
||||
"locale/fr-ca.js",
|
||||
"locale/fr-ch.js",
|
||||
"locale/fr.js",
|
||||
"locale/fy.js",
|
||||
"locale/gd.js",
|
||||
"locale/gl.js",
|
||||
"locale/gom-latn.js",
|
||||
"locale/gu.js",
|
||||
"locale/he.js",
|
||||
"locale/hi.js",
|
||||
"locale/hr.js",
|
||||
"locale/hu.js",
|
||||
"locale/hy-am.js",
|
||||
"locale/id.js",
|
||||
"locale/is.js",
|
||||
"locale/it.js",
|
||||
"locale/ja.js",
|
||||
"locale/jv.js",
|
||||
"locale/ka.js",
|
||||
"locale/kk.js",
|
||||
"locale/km.js",
|
||||
"locale/kn.js",
|
||||
"locale/ko.js",
|
||||
"locale/ky.js",
|
||||
"locale/lb.js",
|
||||
"locale/lo.js",
|
||||
"locale/lt.js",
|
||||
"locale/lv.js",
|
||||
"locale/me.js",
|
||||
"locale/mi.js",
|
||||
"locale/mk.js",
|
||||
"locale/ml.js",
|
||||
"locale/mr.js",
|
||||
"locale/ms-my.js",
|
||||
"locale/ms.js",
|
||||
"locale/my.js",
|
||||
"locale/nb.js",
|
||||
"locale/ne.js",
|
||||
"locale/nl-be.js",
|
||||
"locale/nl.js",
|
||||
"locale/nn.js",
|
||||
"locale/pa-in.js",
|
||||
"locale/pl.js",
|
||||
"locale/pt-br.js",
|
||||
"locale/pt.js",
|
||||
"locale/ro.js",
|
||||
"locale/ru.js",
|
||||
"locale/sd.js",
|
||||
"locale/se.js",
|
||||
"locale/si.js",
|
||||
"locale/sk.js",
|
||||
"locale/sl.js",
|
||||
"locale/sq.js",
|
||||
"locale/sr-cyrl.js",
|
||||
"locale/sr.js",
|
||||
"locale/ss.js",
|
||||
"locale/sv.js",
|
||||
"locale/sw.js",
|
||||
"locale/ta.js",
|
||||
"locale/te.js",
|
||||
"locale/tet.js",
|
||||
"locale/th.js",
|
||||
"locale/tl-ph.js",
|
||||
"locale/tlh.js",
|
||||
"locale/tr.js",
|
||||
"locale/tzl.js",
|
||||
"locale/tzm-latn.js",
|
||||
"locale/tzm.js",
|
||||
"locale/uk.js",
|
||||
"locale/ur.js",
|
||||
"locale/uz-latn.js",
|
||||
"locale/uz.js",
|
||||
"locale/vi.js",
|
||||
"locale/x-pseudo.js",
|
||||
"locale/yo.js",
|
||||
"locale/zh-cn.js",
|
||||
"locale/zh-hk.js",
|
||||
"locale/zh-tw.js"
|
||||
],
|
||||
"scripts": [
|
||||
"moment.js"
|
||||
]
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
{
|
||||
"name": "moment/moment",
|
||||
"description": "Parse, validate, manipulate, and display dates in JavaScript.",
|
||||
"keywords": [
|
||||
"moment",
|
||||
"date",
|
||||
"time",
|
||||
"parse",
|
||||
"format",
|
||||
"validate",
|
||||
"i18n",
|
||||
"l10n",
|
||||
"ender"
|
||||
],
|
||||
"homepage": "https://github.com/moment/moment",
|
||||
"authors": [{"name": "Tim Wood", "email": "washwithcare@gmail.com"}],
|
||||
"license": "MIT",
|
||||
"type": "component",
|
||||
"require": {
|
||||
"robloach/component-installer": "*"
|
||||
},
|
||||
"extra": {
|
||||
"component": {
|
||||
"scripts": [
|
||||
"moment.js"
|
||||
],
|
||||
"files": [
|
||||
"min/*.js",
|
||||
"locale/*.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
$.ender({ moment: require('moment') })
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user