commit
This commit is contained in:
parent
54ea9d7aef
commit
15bbd3d15b
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,771 @@
|
|||
body {
|
||||
padding-top: 0px !important;
|
||||
}
|
||||
/* Header */
|
||||
.header {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-size: 15px;
|
||||
}
|
||||
.header .topbar {
|
||||
width: 100%;
|
||||
height: 82px;
|
||||
line-height: 60px;
|
||||
background-color: #896a40;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
.header .topbar .container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.header .topbar .container .tagline {
|
||||
font-weight: 600;
|
||||
}
|
||||
.header .topbar .container .social-media {
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
.header .topbar .container .social-media li {
|
||||
float: left;
|
||||
margin: 0 8px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.header .topbar .container .social-media li a {
|
||||
color: #fff;
|
||||
float: left;
|
||||
font-size: 12px;
|
||||
}
|
||||
.header .topbar .container .social-media li a:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
.header .topbar .container .phone {
|
||||
margin-left: auto;
|
||||
}
|
||||
.header .topbar .container .phone img {
|
||||
height: 30px;
|
||||
margin-top: -1px;
|
||||
margin-right: 7px;
|
||||
}
|
||||
.header .topbar .container .phone b {
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.header .topbar .container .phone span {
|
||||
font-weight: 600;
|
||||
}
|
||||
.header .navbar {
|
||||
width: 100%;
|
||||
max-width: 1380px;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
margin-top: -24px;
|
||||
background: #fff;
|
||||
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.10), 0 8px 30px rgba(0, 0, 0, 0.10);
|
||||
height: auto;
|
||||
}
|
||||
.navbar>.container {
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
-ms-flex-pack: justify;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.header .navbar .container {
|
||||
position: relative;
|
||||
}
|
||||
.header .navbar .container .logo {
|
||||
margin-right: auto;
|
||||
}
|
||||
.header .navbar .container .logo a {
|
||||
float: left;
|
||||
}
|
||||
.header .navbar .container .logo a img {
|
||||
height: 110px;
|
||||
}
|
||||
.header .navbar .container .nav-menu {
|
||||
margin: 0 auto;
|
||||
}
|
||||
.header .navbar .container .nav-menu li {
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
}
|
||||
.header .navbar .container .nav-menu li a {
|
||||
float: left;
|
||||
padding: 0 15px;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
color: #663333;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
}
|
||||
.header .navbar .container .nav-menu li a:hover {
|
||||
textcolor: #f65935;
|
||||
text-decoration: none;
|
||||
color: #f65935;
|
||||
}
|
||||
.header .navbar .container .nav-menu li a:hover:before {
|
||||
width: 100%;
|
||||
background: #f65935;
|
||||
transition: width 0.25s ease;
|
||||
}
|
||||
.header .navbar .container .nav-menu li a:hover:after {
|
||||
width: 100%;
|
||||
background: transparent;
|
||||
transition: all 0s ease;
|
||||
}
|
||||
.header .navbar .container .nav-menu li a:before {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: -5px;
|
||||
height: 5px;
|
||||
width: 0;
|
||||
transition: width 0s ease, background 0.25s ease;
|
||||
}
|
||||
.header .navbar .container .nav-menu li a:after {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: -5px;
|
||||
height: 5px;
|
||||
width: 0;
|
||||
background: #f65935;
|
||||
transition: width 0.25s ease;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown {
|
||||
min-width: 190px;
|
||||
position: absolute;
|
||||
left: -10px;
|
||||
top: 100%;
|
||||
margin: 0;
|
||||
padding: 10px 0;
|
||||
margin-top: 5px;
|
||||
background: #fff;
|
||||
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.10), 0 8px 30px rgba(0, 0, 0, 0.10);
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
-webkit-transition: 0.25s ease-in-out;
|
||||
-moz-transition: 0.25s ease-in-out;
|
||||
-ms-transition: 0.25s ease-in-out;
|
||||
-o-transition: 0.25s ease-in-out;
|
||||
transition: 0.25s ease-in-out;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li {
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li .dropdown {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
top: 0;
|
||||
left: 100%;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li .dropdown li {
|
||||
position: relative;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li .dropdown li .dropdown {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li .dropdown li:hover .dropdown {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li a {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
line-height: 48px;
|
||||
float: left;
|
||||
padding: 0 25px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li a:before {
|
||||
display: none;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li a:after {
|
||||
display: none;
|
||||
}
|
||||
.header .navbar .container .nav-menu li .dropdown li:hover .dropdown {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
.header .navbar .container .nav-menu li:hover .dropdown {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
.header .navbar .container .search-btn {
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
margin-left: 10px;
|
||||
padding-left: 20px;
|
||||
border-left: 1px solid #eaebee;
|
||||
order: 3;
|
||||
cursor: pointer;
|
||||
font-size: 17px;
|
||||
color: #663333;
|
||||
}
|
||||
.header .navbar .container .search-btn a {
|
||||
color: #663333;
|
||||
}
|
||||
.header .navbar .container .search-btn a:hover {
|
||||
color: #f65935;
|
||||
}
|
||||
.header .navbar .container .search-btn:hover {
|
||||
color: #f65935;
|
||||
}
|
||||
.header .navbar .container .sandwich-btn {
|
||||
margin-right: 0;
|
||||
margin-left: auto;
|
||||
order: 2;
|
||||
}
|
||||
.header .navbar .container .language {
|
||||
margin-left: auto;
|
||||
order: 1;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.header .navbar .container .language li {
|
||||
float: left;
|
||||
margin: 0 5px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.header .navbar .container .language li a {
|
||||
float: left;
|
||||
color: #663333;
|
||||
font-weight: 600;
|
||||
}
|
||||
.header .navbar .container .language li a:hover {
|
||||
color: #f65935;
|
||||
text-decoration: none;
|
||||
}
|
||||
.header .navbar .container .language li a.active {
|
||||
color: #f65935;
|
||||
}
|
||||
.header .navbar .container .bottom-bar {
|
||||
width: 100%;
|
||||
height: 5px;
|
||||
background: #aaaec1;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: -5px;
|
||||
}
|
||||
@media only screen and (max-width: 1199px), only screen and (max-device-width: 1199px) {
|
||||
.header .container {
|
||||
max-width: 100%;
|
||||
}
|
||||
.header .navbar {
|
||||
max-width: 100%;
|
||||
}
|
||||
.header .navbar .container {
|
||||
overflow: hidden;
|
||||
}
|
||||
.header .topbar .tagline {
|
||||
display: none;
|
||||
}
|
||||
.header .topbar .container .social-media {
|
||||
margin-left: 0;
|
||||
}
|
||||
.header .navbar .container .nav-menu {
|
||||
display: none;
|
||||
}
|
||||
.header .navbar {
|
||||
padding: 20px 0;
|
||||
}
|
||||
.header .navbar .container .sandwich-btn {
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
/* RESPONSIVE MOBILE FIXES */
|
||||
@media only screen and (max-width: 767px), only screen and (max-device-width: 767px) {
|
||||
.header .navbar .container .search-btn {
|
||||
padding-right: 10px;
|
||||
}
|
||||
.header .navbar .container .language {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
/* SANDWICH BUTTON */
|
||||
.sandwich-btn {
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
float: right;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
-webkit-transition: 0.25s ease-in-out;
|
||||
-moz-transition: 0.25s ease-in-out;
|
||||
-ms-transition: 0.25s ease-in-out;
|
||||
-o-transition: 0.25s ease-in-out;
|
||||
transition: 0.25s ease-in-out;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.sandwich-btn span {
|
||||
display: block;
|
||||
height: 2px;
|
||||
width: 22px;
|
||||
background: #405089;
|
||||
opacity: 1;
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
-webkit-transition: 0.25s ease-in-out;
|
||||
-moz-transition: 0.25s ease-in-out;
|
||||
-o-transition: 0.25s ease-in-out;
|
||||
transition: 0.25s ease-in-out;
|
||||
}
|
||||
.sandwich-btn span:nth-child(1) {
|
||||
top: 18px;
|
||||
}
|
||||
.sandwich-btn span:nth-child(2) {
|
||||
top: 22px;
|
||||
opacity: 0;
|
||||
}
|
||||
.sandwich-btn span:nth-child(3) {
|
||||
top: 26px;
|
||||
}
|
||||
.sandwich-btn:hover span {
|
||||
width: 22px;
|
||||
right: 12px;
|
||||
background: #f65935;
|
||||
}
|
||||
.sandwich-btn.open span:nth-child(1) {
|
||||
top: 22px;
|
||||
-webkit-transform: rotate(135deg);
|
||||
-moz-transform: rotate(135deg);
|
||||
-o-transform: rotate(135deg);
|
||||
transform: rotate(135deg);
|
||||
}
|
||||
.sandwich-btn.open span:nth-child(2) {
|
||||
opacity: 0;
|
||||
right: -10px;
|
||||
}
|
||||
.sandwich-btn.open span:nth-child(3) {
|
||||
top: 22px;
|
||||
-webkit-transform: rotate(-135deg);
|
||||
-moz-transform: rotate(-135deg);
|
||||
-o-transform: rotate(-135deg);
|
||||
transform: rotate(-135deg);
|
||||
}
|
||||
/* SANDWICH MENU */
|
||||
.sandwich-menu {
|
||||
width: 400px;
|
||||
height: 100%;
|
||||
min-height: 700px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
position: fixed;
|
||||
left: -100%;
|
||||
top: 0;
|
||||
background: #896A40;
|
||||
z-index: 1001;
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
transition-duration: 500ms;
|
||||
-webkit-transition-duration: 500ms;
|
||||
transition-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
|
||||
padding: 30px 40px;
|
||||
font-family: "Poppins", sans-serif;
|
||||
}
|
||||
.sandwich-menu .logo {
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.sandwich-menu .logo img {
|
||||
height: 110px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.sandwich-menu .nav-menu {
|
||||
display: none;
|
||||
}
|
||||
.sandwich-menu p {
|
||||
display: block;
|
||||
margin-bottom: 30px;
|
||||
color: #fff;
|
||||
}
|
||||
.sandwich-menu address {
|
||||
display: block;
|
||||
}
|
||||
.sandwich-menu address a {
|
||||
color: #fff;
|
||||
opacity: 0.7;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.sandwich-menu .photo-gallery {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 20px;
|
||||
padding: 0;
|
||||
}
|
||||
.sandwich-menu .photo-gallery li {
|
||||
flex: 1;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-right: 4px;
|
||||
list-style: none;
|
||||
}
|
||||
.sandwich-menu .photo-gallery li:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
.sandwich-menu .photo-gallery li a {
|
||||
float: left;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
.sandwich-menu .social-media {
|
||||
display: inline-block;
|
||||
margin-bottom: 40px;
|
||||
padding: 0;
|
||||
}
|
||||
.sandwich-menu .social-media li {
|
||||
float: left;
|
||||
margin-right: 16px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.sandwich-menu .social-media li a {
|
||||
color: #fff;
|
||||
float: left;
|
||||
font-size: 12px;
|
||||
}
|
||||
.sandwich-menu .social-media li a:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
.sandwich-menu .copyright {
|
||||
display: block;
|
||||
color: #fff;
|
||||
opacity: 0.7;
|
||||
font-size: 11px;
|
||||
}
|
||||
.sandwich-menu.open {
|
||||
left: 0;
|
||||
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.10), 0 8px 30px rgba(0, 0, 0, 0.10);
|
||||
}
|
||||
.sandwich-menu .nav-menu {
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.sandwich-menu .nav-menu li {
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 4px 0;
|
||||
list-style: none;
|
||||
}
|
||||
.sandwich-menu .nav-menu li a {
|
||||
width: 100%;
|
||||
float: left;
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
}
|
||||
.sandwich-menu .nav-menu li a:hover {
|
||||
text-decoration: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.sandwich-menu .nav-menu li .dropdown {
|
||||
display: none;
|
||||
margin: 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
@media only screen and (max-width: 991px), only screen and (max-device-width: 991px) {
|
||||
.sandwich-menu .nav-menu {
|
||||
display: block;
|
||||
margin-bottom: 40px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.sandwich-menu p {
|
||||
display: none;
|
||||
}
|
||||
.sandwich-menu address {
|
||||
display: none;
|
||||
}
|
||||
.sandwich-menu .photo-gallery {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 767px), only screen and (max-device-width: 767px) {
|
||||
.sandwich-menu {
|
||||
width: 70vw;
|
||||
padding: 30px;
|
||||
}
|
||||
}
|
||||
/* FOOTER */
|
||||
.footer {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
background: #262d57;
|
||||
margin-top: 54px;
|
||||
font-family: "Poppins", sans-serif;
|
||||
font-size: 15px;
|
||||
}
|
||||
.footer .contact-wrapper {
|
||||
width: 100%;
|
||||
max-width: 1380px;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
margin-top: -54px;
|
||||
background: #fff;
|
||||
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.10), 0 8px 30px rgba(0, 0, 0, 0.10);
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
.footer .contact-wrapper .container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.footer .contact-wrapper .container .content-box {
|
||||
flex: 1;
|
||||
padding: 40px 0;
|
||||
padding-right: 30px;
|
||||
margin-right: 30px;
|
||||
border-right: 1px solid #eaebee;
|
||||
}
|
||||
.footer .contact-wrapper .container .content-box:last-child {
|
||||
padding-right: 0;
|
||||
margin-right: 0;
|
||||
border-right: none;
|
||||
}
|
||||
.footer .contact-wrapper .container img {
|
||||
height: 40px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.footer .contact-wrapper .container h3 {
|
||||
display: block;
|
||||
font-family: 'Playfair Display', serif;
|
||||
font-weight: 700;
|
||||
color: #896a40;
|
||||
font-size: 25px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.footer .contact-wrapper .container p {
|
||||
display: block;
|
||||
color: #9aa0ae;
|
||||
margin: 0;
|
||||
}
|
||||
.footer .contact-wrapper .container p a {
|
||||
color: #405089;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.footer .content-wrapper {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
margin-bottom: 50px;
|
||||
padding-top: 30px;
|
||||
}
|
||||
.footer .content-wrapper p {
|
||||
color: #fff;
|
||||
}
|
||||
.footer .content-wrapper .logo {
|
||||
height: 41px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.footer .content-wrapper .footer-menu {
|
||||
display: block;
|
||||
margin: 0;
|
||||
}
|
||||
.footer .content-wrapper .footer-menu li {
|
||||
width: 100%;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 4px 0;
|
||||
list-style: none;
|
||||
}
|
||||
.footer .content-wrapper .footer-menu li a {
|
||||
float: left;
|
||||
color: #fff;
|
||||
}
|
||||
.footer .content-wrapper .contact-box {
|
||||
float: right;
|
||||
color: #fff;
|
||||
text-align: right;
|
||||
}
|
||||
.footer .content-wrapper .contact-box h5 {
|
||||
margin: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
.footer .content-wrapper .contact-box h3 {
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
}
|
||||
.footer .content-wrapper .contact-box p {
|
||||
margin-bottom: 10px;
|
||||
color: #9aa0ae;
|
||||
}
|
||||
.footer .content-wrapper .contact-box p a {
|
||||
color: #fff;
|
||||
}
|
||||
.footer .content-wrapper .contact-box ul {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.footer .content-wrapper .contact-box ul li {
|
||||
float: left;
|
||||
margin-left: 15px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.footer .content-wrapper .contact-box ul li a {
|
||||
float: left;
|
||||
font-size: 13px;
|
||||
color: #fff;
|
||||
}
|
||||
.footer .content-wrapper .contact-box ul li a:hover {
|
||||
color: #896a40;
|
||||
}
|
||||
.footer .sub-footer {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
color: #fff;
|
||||
padding: 30px 0;
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.footer .sub-footer .copyright {
|
||||
font-size: 11px;
|
||||
float: left;
|
||||
}
|
||||
.footer .sub-footer .creation {
|
||||
font-size: 11px;
|
||||
float: right;
|
||||
}
|
||||
.footer .sub-footer .creation a {
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
}
|
||||
@media only screen and (max-width: 991px), only screen and (max-device-width: 991px) {
|
||||
.footer .content-wrapper .footer-menu {
|
||||
padding: 0;
|
||||
}
|
||||
.footer .content-wrapper .contact-box {
|
||||
float: left;
|
||||
text-align: left;
|
||||
margin-top: 40px;
|
||||
}
|
||||
.footer .content-wrapper .contact-box ul {
|
||||
float: left;
|
||||
}
|
||||
.footer .content-wrapper .contact-box ul li {
|
||||
margin-left: 0;
|
||||
margin-right: 15px;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 767px), only screen and (max-device-width: 767px) {
|
||||
.footer .content-wrapper p {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.footer .content-wrapper .footer-menu li a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.footer .contact-wrapper .container {
|
||||
flex-wrap: wrap;
|
||||
flex-direction: column;
|
||||
}
|
||||
.footer .contact-wrapper .container .content-box {
|
||||
padding-right: 0;
|
||||
margin-right: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #eaebee;
|
||||
text-align: center;
|
||||
}
|
||||
.footer .sub-footer .creation {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
/* PAGE HEADER */
|
||||
.page-header {
|
||||
font-family: "Poppins", sans-serif;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
margin-top: -76px;
|
||||
padding-top: 130px;
|
||||
padding-bottom: 50px;
|
||||
background: #663333;
|
||||
}
|
||||
.page-header .print {
|
||||
float: right;
|
||||
line-height: 26px;
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin-top: 35px;
|
||||
}
|
||||
.page-header .print img {
|
||||
height: 26px;
|
||||
float: right;
|
||||
margin-left: 6px;
|
||||
}
|
||||
.page-header .print:hover {
|
||||
text-decoration: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.page-header .breadcrumb {
|
||||
display: flex;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
background: none;
|
||||
}
|
||||
.page-header .breadcrumb li {
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
padding-left: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.page-header .breadcrumb li:first-child {
|
||||
padding: 0;
|
||||
}
|
||||
.page-header .breadcrumb li:first-child:before {
|
||||
display: none;
|
||||
padding: 0;
|
||||
}
|
||||
.page-header .breadcrumb li:before {
|
||||
content: "";
|
||||
color: #fff;
|
||||
font-family: fontAwesome;
|
||||
font-size: 8px;
|
||||
padding-right: 10px;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
.page-header .breadcrumb li a {
|
||||
color: #fff;
|
||||
}
|
||||
.page-header h2 {
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
font-size: 54px;
|
||||
}
|
||||
.page-header p {
|
||||
color: #fff;
|
||||
opacity: 0.7;
|
||||
margin: 0;
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
var table_tmpl;
|
||||
var column_sc_tmpl;
|
||||
|
||||
jQuery(document).ready(function () {
|
||||
|
||||
|
||||
table_tmpl = document.getElementById('table-tmpl').innerHTML;
|
||||
Mustache.parse(table_tmpl);
|
||||
|
||||
column_sc_tmpl = document.getElementById('column-selection-tmpl').innerHTML;
|
||||
Mustache.parse(column_sc_tmpl);
|
||||
|
||||
single_column_sc_tmpl = document.getElementById('single-column-selection-tmpl').innerHTML;
|
||||
Mustache.parse(single_column_sc_tmpl);
|
||||
|
||||
jQuery('#save-options').change(function () {
|
||||
var s = jQuery(this).val();
|
||||
jQuery("[id^=w12_]").hide();
|
||||
jQuery('#w12_' + s).show();
|
||||
jQuery('#connection_id_' + s).val('');
|
||||
openMappingBox(s);
|
||||
});
|
||||
|
||||
jQuery('#create_table_1, #create_table_2').click(function () {
|
||||
|
||||
var settingsData = jQuery('#w0').serialize();
|
||||
|
||||
ajaxRequest('developer/formbuilder/form/create/table', 'post' ,'json', settingsData, function (html) {
|
||||
if (html['status'] == 200) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
jQuery('#db_notify').html(html.msg);
|
||||
})
|
||||
});
|
||||
|
||||
jQuery('#connection_id_3').change(function () {
|
||||
var value = jQuery(this).val();
|
||||
//Metronic.startPageLoading();
|
||||
ajaxRequest('db/just/table/' + value + '/true', 'get', 'json', {}, function (data) {
|
||||
|
||||
if (data['status'] == 200) {
|
||||
|
||||
jQuery('#table_name_3').html('');
|
||||
jQuery('#table_name_3').append(Mustache.render(table_tmpl, data));
|
||||
|
||||
|
||||
} else {
|
||||
alert(data['error']);
|
||||
}
|
||||
//Metronic.stopPageLoading();
|
||||
})
|
||||
})
|
||||
|
||||
jQuery('#table_name_3').change(function () {
|
||||
var value = jQuery(this).val();
|
||||
var connection_id = jQuery('#connection_id_3').val();
|
||||
|
||||
var postdata = {
|
||||
tables: value,
|
||||
"data-source": connection_id
|
||||
}
|
||||
//Metronic.startPageLoading();
|
||||
ajaxRequest('db/table/column', 'get', 'json', postdata, function (data) {
|
||||
|
||||
if (data['status'] == 200) {
|
||||
jQuery('#column-sc').html(Mustache.render(column_sc_tmpl, {columns: data['columns'], fields: fields}));
|
||||
|
||||
if (save == 3) {
|
||||
|
||||
jQuery.each(mapping, function (key, data) {
|
||||
jQuery('#col_' + key).val(data.COLUMN_NAME);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
alert(data['error']);
|
||||
}
|
||||
|
||||
//Metronic.stopPageLoading();
|
||||
})
|
||||
})
|
||||
|
||||
var s = jQuery('#save-options').val();
|
||||
if ( s == 3) {
|
||||
jQuery('#table_name_3').trigger("change");
|
||||
}else if (s == 1 || s == 2){
|
||||
openMappingBox(s);
|
||||
}
|
||||
|
||||
jQuery('#create_table_3').click(function () {
|
||||
|
||||
var settingsData = jQuery('#w0').serialize();
|
||||
ajaxRequest('developer/formbuilder/form/existing/table','post' ,'json', settingsData, function (html) {
|
||||
console.log(html);
|
||||
if (html['status'] == 200) {
|
||||
} else {
|
||||
}
|
||||
jQuery('#db_notify').html(html.msg);
|
||||
});
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
function openMappingBox(s) {
|
||||
if (s == 1 || s == 2) {
|
||||
jQuery('#w_12_' + s + '_column-sc').html(Mustache.render(single_column_sc_tmpl, {fields: fields, mapping: mapping}));
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,158 @@
|
|||
L.TileLayer.BetterWMS = L.TileLayer.WMS.extend({
|
||||
|
||||
onAdd: function (map) {
|
||||
// Triggered when the layer is added to a map.
|
||||
// Register a click listener, then do all the upstream WMS things
|
||||
L.TileLayer.WMS.prototype.onAdd.call(this, map);
|
||||
map.on('click', this.getFeatureInfo, this);
|
||||
},
|
||||
|
||||
onRemove: function (map) {
|
||||
// Triggered when the layer is removed from a map.
|
||||
// Unregister a click listener, then do all the upstream WMS things
|
||||
L.TileLayer.WMS.prototype.onRemove.call(this, map);
|
||||
map.off('click', this.getFeatureInfo, this);
|
||||
},
|
||||
|
||||
getFeatureInfo: function (evt) {
|
||||
// Make an AJAX request to the server and hope for the best
|
||||
var url = this.getFeatureInfoUrl(evt.latlng),
|
||||
showResults = L.Util.bind(this.showGetFeatureInfo, this);
|
||||
$.ajax({
|
||||
url: url,
|
||||
success: function (data, status, xhr) {
|
||||
var err = typeof data === 'string' ? null : data;
|
||||
showResults(err, evt.latlng, data);
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
showResults(error);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getFeatureInfoUrl: function (latlng) {
|
||||
// Construct a GetFeatureInfo request URL given a point
|
||||
var point = this._map.latLngToContainerPoint(latlng, this._map.getZoom()),
|
||||
size = this._map.getSize(),
|
||||
params = {
|
||||
request: 'GetFeatureInfo',
|
||||
service: 'WMS',
|
||||
srs: 'EPSG:4326',
|
||||
styles: this.wmsParams.styles,
|
||||
transparent: this.wmsParams.transparent,
|
||||
version: this.wmsParams.version,
|
||||
format: this.wmsParams.format,
|
||||
bbox: this._map.getBounds().toBBoxString(),
|
||||
height: size.y,
|
||||
width: size.x,
|
||||
layers: this.wmsParams.layers,
|
||||
query_layers: this.wmsParams.layers,
|
||||
info_format: 'text/html'
|
||||
};
|
||||
|
||||
params[params.version === '1.3.0' ? 'i' : 'x'] = point.x;
|
||||
params[params.version === '1.3.0' ? 'j' : 'y'] = point.y;
|
||||
|
||||
return this._url + L.Util.getParamString(params, this._url, true);
|
||||
},
|
||||
|
||||
showGetFeatureInfo: function (err, latlng, content) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
} // do nothing if there's an error
|
||||
|
||||
|
||||
if (jQuery(content).find("tr").length < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
content = content.toLowerCase();
|
||||
|
||||
//var content = content.replace('/g', "<table");
|
||||
|
||||
jQuery(content).filter("table").addClass("table");
|
||||
|
||||
// Otherwise show the content in a popup, or something.
|
||||
L.popup({maxWidth: 'auto'})
|
||||
.setLatLng(latlng)
|
||||
.setContent(content)
|
||||
.openOn(this._map);
|
||||
|
||||
// $('.leaflet-popup-content-wrapper').find('table').each(function(){
|
||||
// jQuery(this).replaceWith( jQuery(this).html()
|
||||
// .replace(/<tbody/gi, "<div id='table'")
|
||||
// .replace(/<tr/gi, "<div")
|
||||
// .replace(/<\/tr>/gi, "</div>")
|
||||
// .replace(/<td/gi, "<span")
|
||||
// .replace(/<\/td>/gi, "</span>")
|
||||
// .replace(/<\/tbody/gi, "<\/div")
|
||||
//);
|
||||
// });
|
||||
|
||||
|
||||
//$('.leaflet-popup-content-wrapper').find('table').addClass("table");
|
||||
|
||||
// each(function (){
|
||||
// $(this).replaceWith( $(this).html()
|
||||
// .replace(/<tbody/gi, "<div class='table'")
|
||||
// .replace(/<tr/gi, "<div class='ccbnOutline'")
|
||||
// .replace(/<\/tr>/gi, "</div>")
|
||||
// .replace(/<td/gi, "<span")
|
||||
// .replace(/<\/td>/gi, "</span>")
|
||||
// .replace(/<\/tbody/gi, "<\/div")
|
||||
// );
|
||||
// });
|
||||
}
|
||||
});
|
||||
|
||||
L.tileLayer.myWms = function (url, options) {
|
||||
return new L.TileLayer.BetterWMS(url, options);
|
||||
};
|
||||
|
||||
|
||||
jQuery(document).ready(function () {
|
||||
|
||||
var mymap = L.map('mapid', {
|
||||
zoom: 8,
|
||||
crs: L.CRS.EPSG4326
|
||||
});
|
||||
|
||||
mymap.setView([parseFloat(lat1), parseFloat(lng1)], 8);
|
||||
|
||||
if (isGoogle()){
|
||||
|
||||
currentBaseMap = L.tileLayer('https://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', {
|
||||
maxZoom: 20,
|
||||
subdomains: ['mt0', 'mt1', 'mt2', 'mt3']
|
||||
}).addTo(mymap);
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
currentBaseMap = L.tileLayer(baseLayers['mymap'][layername]._url, {
|
||||
maxZoom: 18,
|
||||
attribution: baseLayers['mymap'][layername].options.attribution,
|
||||
id: baseLayers['mymap'][layername].options.id
|
||||
}).addTo(mymap);
|
||||
}
|
||||
|
||||
var states = L.tileLayer.myWms(url, {
|
||||
format: 'image/png',
|
||||
layers: layerName,
|
||||
format: 'image/png',
|
||||
transparent: true,
|
||||
//crs: L.CRS.EPSG4326
|
||||
});
|
||||
states.addTo(mymap);
|
||||
|
||||
var bounds = new L.LatLngBounds([parseFloat(lat1), parseFloat(lng1)], [parseFloat(lat2), parseFloat(lng2)]);
|
||||
mymap.fitBounds(bounds);
|
||||
mymap.options.minZoom = mymap.getZoom();
|
||||
|
||||
mymap.setMaxBounds(bounds);
|
||||
//var l = L.latLng(lat, lng);
|
||||
//console.log(states.getFeatureInfoUrl(l));
|
||||
})
|
||||
|
||||
//# sourceMappingURL=map-preview.js.map
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,13 @@
|
|||
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
|
||||
require('../../js/transition.js')
|
||||
require('../../js/alert.js')
|
||||
require('../../js/button.js')
|
||||
require('../../js/carousel.js')
|
||||
require('../../js/collapse.js')
|
||||
require('../../js/dropdown.js')
|
||||
require('../../js/modal.js')
|
||||
require('../../js/tooltip.js')
|
||||
require('../../js/popover.js')
|
||||
require('../../js/scrollspy.js')
|
||||
require('../../js/tab.js')
|
||||
require('../../js/affix.js')
|
|
@ -0,0 +1,630 @@
|
|||
/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
|
||||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
||||
*
|
||||
* Version: 1.3.8
|
||||
*
|
||||
*/
|
||||
(function(e){e.fn.extend({slimScroll:function(f){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},f);this.each(function(){function v(d){if(r){d=d||window.event;
|
||||
var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,g,e){k=!1;var f=b.outerHeight()-c.outerHeight();g&&(g=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),g=Math.min(Math.max(g,0),f),g=0<d?Math.ceil(g):Math.floor(g),c.css({top:g+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());g=
|
||||
l*(b[0].scrollHeight-b.outerHeight());e&&(g=d,d=g/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),f),c.css({top:d+"px"}));b.scrollTop(g);b.trigger("slimscrolling",~~g);w();p()}function x(){u=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),30);c.css({height:u+"px"});var a=u==b.outerHeight()?"none":"block";c.css({display:a})}function w(){x();clearTimeout(B);l==~~l?(k=a.allowPageScroll,C!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;C=l;u>=b.outerHeight()?k=!0:(c.stop(!0,
|
||||
!0).fadeIn("fast"),a.railVisible&&m.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&r||y||z||(c.fadeOut("slow"),m.fadeOut("slow"))},1E3))}var r,y,z,B,A,u,l,C,k=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var q=b.scrollTop(),c=b.siblings("."+a.barClass),m=b.siblings("."+a.railClass);x();if(e.isPlainObject(f)){if("height"in f&&"auto"==f.height){b.parent().css("height","auto");b.css("height","auto");var h=b.parent().parent().height();b.parent().css("height",
|
||||
h);b.css("height",h)}else"height"in f&&(h=f.height,b.parent().css("height",h),b.css("height",h));if("scrollTo"in f)q=parseInt(a.scrollTo);else if("scrollBy"in f)q+=parseInt(a.scrollBy);else if("destroy"in f){c.remove();m.remove();b.unwrap();return}n(q,!1,!0)}}else if(!(e.isPlainObject(f)&&"destroy"in f)){a.height="auto"==a.height?b.parent().height():a.height;q=e("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",
|
||||
width:a.width,height:a.height});var m=e("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,
|
||||
WebkitBorderRadius:a.borderRadius,zIndex:99}),h="right"==a.position?{right:a.distance}:{left:a.distance};m.css(h);c.css(h);b.wrap(q);b.parent().append(c);b.parent().append(m);a.railDraggable&&c.bind("mousedown",function(a){var b=e(document);z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",
|
||||
function(a){a.stopPropagation();a.preventDefault();return!1});m.hover(function(){w()},function(){p()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){r=!0;w();p()},function(){r=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)});
|
||||
x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)}});return this}});e.fn.extend({slimscroll:e.fn.slimScroll})})(jQuery);
|
||||
// json2.js
|
||||
// 2016-10-28
|
||||
// Public Domain.
|
||||
// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
||||
// See http://www.JSON.org/js.html
|
||||
// This code should be minified before deployment.
|
||||
// See http://javascript.crockford.com/jsmin.html
|
||||
|
||||
// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
|
||||
// NOT CONTROL.
|
||||
|
||||
// This file creates a global JSON object containing two methods: stringify
|
||||
// and parse. This file provides the ES5 JSON capability to ES3 systems.
|
||||
// If a project might run on IE8 or earlier, then this file should be included.
|
||||
// This file does nothing on ES5 systems.
|
||||
|
||||
// JSON.stringify(value, replacer, space)
|
||||
// value any JavaScript value, usually an object or array.
|
||||
// replacer an optional parameter that determines how object
|
||||
// values are stringified for objects. It can be a
|
||||
// function or an array of strings.
|
||||
// space an optional parameter that specifies the indentation
|
||||
// of nested structures. If it is omitted, the text will
|
||||
// be packed without extra whitespace. If it is a number,
|
||||
// it will specify the number of spaces to indent at each
|
||||
// level. If it is a string (such as "\t" or " "),
|
||||
// it contains the characters used to indent at each level.
|
||||
// This method produces a JSON text from a JavaScript value.
|
||||
// When an object value is found, if the object contains a toJSON
|
||||
// method, its toJSON method will be called and the result will be
|
||||
// stringified. A toJSON method does not serialize: it returns the
|
||||
// value represented by the name/value pair that should be serialized,
|
||||
// or undefined if nothing should be serialized. The toJSON method
|
||||
// will be passed the key associated with the value, and this will be
|
||||
// bound to the value.
|
||||
|
||||
// For example, this would serialize Dates as ISO strings.
|
||||
|
||||
// Date.prototype.toJSON = function (key) {
|
||||
// function f(n) {
|
||||
// // Format integers to have at least two digits.
|
||||
// return (n < 10)
|
||||
// ? "0" + n
|
||||
// : n;
|
||||
// }
|
||||
// return this.getUTCFullYear() + "-" +
|
||||
// f(this.getUTCMonth() + 1) + "-" +
|
||||
// f(this.getUTCDate()) + "T" +
|
||||
// f(this.getUTCHours()) + ":" +
|
||||
// f(this.getUTCMinutes()) + ":" +
|
||||
// f(this.getUTCSeconds()) + "Z";
|
||||
// };
|
||||
|
||||
// You can provide an optional replacer method. It will be passed the
|
||||
// key and value of each member, with this bound to the containing
|
||||
// object. The value that is returned from your method will be
|
||||
// serialized. If your method returns undefined, then the member will
|
||||
// be excluded from the serialization.
|
||||
|
||||
// If the replacer parameter is an array of strings, then it will be
|
||||
// used to select the members to be serialized. It filters the results
|
||||
// such that only members with keys listed in the replacer array are
|
||||
// stringified.
|
||||
|
||||
// Values that do not have JSON representations, such as undefined or
|
||||
// functions, will not be serialized. Such values in objects will be
|
||||
// dropped; in arrays they will be replaced with null. You can use
|
||||
// a replacer function to replace those with JSON values.
|
||||
|
||||
// JSON.stringify(undefined) returns undefined.
|
||||
|
||||
// The optional space parameter produces a stringification of the
|
||||
// value that is filled with line breaks and indentation to make it
|
||||
// easier to read.
|
||||
|
||||
// If the space parameter is a non-empty string, then that string will
|
||||
// be used for indentation. If the space parameter is a number, then
|
||||
// the indentation will be that many spaces.
|
||||
|
||||
// Example:
|
||||
|
||||
// text = JSON.stringify(["e", {pluribus: "unum"}]);
|
||||
// // text is '["e",{"pluribus":"unum"}]'
|
||||
|
||||
// text = JSON.stringify(["e", {pluribus: "unum"}], null, "\t");
|
||||
// // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
|
||||
|
||||
// text = JSON.stringify([new Date()], function (key, value) {
|
||||
// return this[key] instanceof Date
|
||||
// ? "Date(" + this[key] + ")"
|
||||
// : value;
|
||||
// });
|
||||
// // text is '["Date(---current time---)"]'
|
||||
|
||||
// JSON.parse(text, reviver)
|
||||
// This method parses a JSON text to produce an object or array.
|
||||
// It can throw a SyntaxError exception.
|
||||
|
||||
// The optional reviver parameter is a function that can filter and
|
||||
// transform the results. It receives each of the keys and values,
|
||||
// and its return value is used instead of the original value.
|
||||
// If it returns what it received, then the structure is not modified.
|
||||
// If it returns undefined then the member is deleted.
|
||||
|
||||
// Example:
|
||||
|
||||
// // Parse the text. Values that look like ISO date strings will
|
||||
// // be converted to Date objects.
|
||||
|
||||
// myData = JSON.parse(text, function (key, value) {
|
||||
// var a;
|
||||
// if (typeof value === "string") {
|
||||
// a =
|
||||
// /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
||||
// if (a) {
|
||||
// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
|
||||
// +a[5], +a[6]));
|
||||
// }
|
||||
// }
|
||||
// return value;
|
||||
// });
|
||||
|
||||
// myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
|
||||
// var d;
|
||||
// if (typeof value === "string" &&
|
||||
// value.slice(0, 5) === "Date(" &&
|
||||
// value.slice(-1) === ")") {
|
||||
// d = new Date(value.slice(5, -1));
|
||||
// if (d) {
|
||||
// return d;
|
||||
// }
|
||||
// }
|
||||
// return value;
|
||||
// });
|
||||
|
||||
// This is a reference implementation. You are free to copy, modify, or
|
||||
// redistribute.
|
||||
|
||||
/*jslint
|
||||
eval, for, this
|
||||
*/
|
||||
|
||||
/*property
|
||||
JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
|
||||
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
|
||||
lastIndex, length, parse, prototype, push, replace, slice, stringify,
|
||||
test, toJSON, toString, valueOf
|
||||
*/
|
||||
|
||||
|
||||
// Create a JSON object only if one does not already exist. We create the
|
||||
// methods in a closure to avoid creating global variables.
|
||||
|
||||
if (typeof JSON !== "object") {
|
||||
JSON = {};
|
||||
}
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
var rx_one = /^[\],:{}\s]*$/;
|
||||
var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
|
||||
var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
|
||||
var rx_four = /(?:^|:|,)(?:\s*\[)+/g;
|
||||
var rx_escapable = /[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||
var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||
|
||||
function f(n) {
|
||||
// Format integers to have at least two digits.
|
||||
return n < 10
|
||||
? "0" + n
|
||||
: n;
|
||||
}
|
||||
|
||||
function this_value() {
|
||||
return this.valueOf();
|
||||
}
|
||||
|
||||
if (typeof Date.prototype.toJSON !== "function") {
|
||||
|
||||
Date.prototype.toJSON = function () {
|
||||
|
||||
return isFinite(this.valueOf())
|
||||
? this.getUTCFullYear() + "-" +
|
||||
f(this.getUTCMonth() + 1) + "-" +
|
||||
f(this.getUTCDate()) + "T" +
|
||||
f(this.getUTCHours()) + ":" +
|
||||
f(this.getUTCMinutes()) + ":" +
|
||||
f(this.getUTCSeconds()) + "Z"
|
||||
: null;
|
||||
};
|
||||
|
||||
Boolean.prototype.toJSON = this_value;
|
||||
Number.prototype.toJSON = this_value;
|
||||
String.prototype.toJSON = this_value;
|
||||
}
|
||||
|
||||
var gap;
|
||||
var indent;
|
||||
var meta;
|
||||
var rep;
|
||||
|
||||
|
||||
function quote(string) {
|
||||
|
||||
// If the string contains no control characters, no quote characters, and no
|
||||
// backslash characters, then we can safely slap some quotes around it.
|
||||
// Otherwise we must also replace the offending characters with safe escape
|
||||
// sequences.
|
||||
|
||||
rx_escapable.lastIndex = 0;
|
||||
return rx_escapable.test(string)
|
||||
? "\"" + string.replace(rx_escapable, function (a) {
|
||||
var c = meta[a];
|
||||
return typeof c === "string"
|
||||
? c
|
||||
: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
|
||||
}) + "\""
|
||||
: "\"" + string + "\"";
|
||||
}
|
||||
|
||||
|
||||
function str(key, holder) {
|
||||
|
||||
// Produce a string from holder[key].
|
||||
|
||||
var i; // The loop counter.
|
||||
var k; // The member key.
|
||||
var v; // The member value.
|
||||
var length;
|
||||
var mind = gap;
|
||||
var partial;
|
||||
var value = holder[key];
|
||||
|
||||
// If the value has a toJSON method, call it to obtain a replacement value.
|
||||
|
||||
if (value && typeof value === "object" &&
|
||||
typeof value.toJSON === "function") {
|
||||
value = value.toJSON(key);
|
||||
}
|
||||
|
||||
// If we were called with a replacer function, then call the replacer to
|
||||
// obtain a replacement value.
|
||||
|
||||
if (typeof rep === "function") {
|
||||
value = rep.call(holder, key, value);
|
||||
}
|
||||
|
||||
// What happens next depends on the value's type.
|
||||
|
||||
switch (typeof value) {
|
||||
case "string":
|
||||
return quote(value);
|
||||
|
||||
case "number":
|
||||
|
||||
// JSON numbers must be finite. Encode non-finite numbers as null.
|
||||
|
||||
return isFinite(value)
|
||||
? String(value)
|
||||
: "null";
|
||||
|
||||
case "boolean":
|
||||
case "null":
|
||||
|
||||
// If the value is a boolean or null, convert it to a string. Note:
|
||||
// typeof null does not produce "null". The case is included here in
|
||||
// the remote chance that this gets fixed someday.
|
||||
|
||||
return String(value);
|
||||
|
||||
// If the type is "object", we might be dealing with an object or an array or
|
||||
// null.
|
||||
|
||||
case "object":
|
||||
|
||||
// Due to a specification blunder in ECMAScript, typeof null is "object",
|
||||
// so watch out for that case.
|
||||
|
||||
if (!value) {
|
||||
return "null";
|
||||
}
|
||||
|
||||
// Make an array to hold the partial results of stringifying this object value.
|
||||
|
||||
gap += indent;
|
||||
partial = [];
|
||||
|
||||
// Is the value an array?
|
||||
|
||||
if (Object.prototype.toString.apply(value) === "[object Array]") {
|
||||
|
||||
// The value is an array. Stringify every element. Use null as a placeholder
|
||||
// for non-JSON values.
|
||||
|
||||
length = value.length;
|
||||
for (i = 0; i < length; i += 1) {
|
||||
partial[i] = str(i, value) || "null";
|
||||
}
|
||||
|
||||
// Join all of the elements together, separated with commas, and wrap them in
|
||||
// brackets.
|
||||
|
||||
v = partial.length === 0
|
||||
? "[]"
|
||||
: gap
|
||||
? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]"
|
||||
: "[" + partial.join(",") + "]";
|
||||
gap = mind;
|
||||
return v;
|
||||
}
|
||||
|
||||
// If the replacer is an array, use it to select the members to be stringified.
|
||||
|
||||
if (rep && typeof rep === "object") {
|
||||
length = rep.length;
|
||||
for (i = 0; i < length; i += 1) {
|
||||
if (typeof rep[i] === "string") {
|
||||
k = rep[i];
|
||||
v = str(k, value);
|
||||
if (v) {
|
||||
partial.push(quote(k) + (
|
||||
gap
|
||||
? ": "
|
||||
: ":"
|
||||
) + v);
|
||||
}
|
||||
}
|
||||