Version Description
- 2017-12-19
Download this release
Release Info
Developer | codeinwp |
Plugin | Orbit Fox by ThemeIsle |
Version | 2.2.6 |
Comparing to | |
See all releases |
Code changes from version 2.2.5 to 2.2.6
- CHANGELOG.md +10 -0
- core/app/class-orbit-fox-global-settings.php +1 -1
- core/assets/css/orbit-fox-admin.css +1 -1
- core/includes/class-orbit-fox.php +1 -1
- obfx_modules/beaver-widgets/custom-fields/number-field/number.js +9 -0
- obfx_modules/beaver-widgets/custom-fields/number-field/number_field.php +30 -0
- obfx_modules/beaver-widgets/custom-fields/toggle-field/toggle.css +84 -0
- obfx_modules/beaver-widgets/custom-fields/toggle-field/toggle.js +9 -0
- obfx_modules/beaver-widgets/custom-fields/toggle-field/toggle_field.php +44 -0
- obfx_modules/beaver-widgets/inc/common-functions.php +117 -0
- obfx_modules/beaver-widgets/init.php +107 -0
- obfx_modules/beaver-widgets/modules/post-grid/css/frontend.css +64 -0
- obfx_modules/beaver-widgets/modules/post-grid/includes/frontend.css.php +173 -0
- obfx_modules/beaver-widgets/modules/post-grid/includes/frontend.php +283 -0
- obfx_modules/beaver-widgets/modules/post-grid/includes/loop-settings.php +287 -0
- obfx_modules/beaver-widgets/modules/post-grid/post-grid.php +348 -0
- obfx_modules/beaver-widgets/modules/pricing-table/css/frontend.css +66 -0
- obfx_modules/beaver-widgets/modules/pricing-table/includes/frontend.css.php +271 -0
- obfx_modules/beaver-widgets/modules/pricing-table/includes/frontend.php +61 -0
- obfx_modules/beaver-widgets/modules/pricing-table/pricing-table.php +587 -0
- obfx_modules/beaver-widgets/modules/services/css/frontend.css +40 -0
- obfx_modules/beaver-widgets/modules/services/includes/frontend.css.php +124 -0
- obfx_modules/beaver-widgets/modules/services/includes/frontend.php +48 -0
- obfx_modules/beaver-widgets/modules/services/services.php +255 -0
- obfx_modules/elementor-widgets/widgets/class-obfx-elementor-widget-posts-grid.php +19 -13
- obfx_modules/elementor-widgets/widgets/class-obfx-elementor-widget-pricing-table.php +6 -3
- obfx_modules/stats/css/stats.css +0 -8
- obfx_modules/stats/init.php +0 -314
- obfx_modules/stats/js/stats.js +0 -71
- obfx_modules/stats/js/vendor/chart.min.js +0 -14
- obfx_modules/stats/views/dashboard-widget-tpl.php +0 -37
- obfx_modules/template-directory/css/admin.css +130 -40
- obfx_modules/template-directory/inc/class-obfx-template-directory-customizer-section.php +0 -122
- obfx_modules/template-directory/init.php +71 -124
- obfx_modules/template-directory/js/customizer.js +0 -71
- obfx_modules/template-directory/js/plugin-install-helper.js +0 -55
- obfx_modules/template-directory/js/script.js +181 -25
- obfx_modules/template-directory/views/template-directory-page-tpl.php +90 -19
- obfx_modules/template-directory/views/template-plugin-install-tpl.php +0 -23
- readme.md +43 -1
- readme.txt +43 -1
- themeisle-companion.php +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +5 -5
CHANGELOG.md
CHANGED
@@ -1,4 +1,14 @@
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
### v2.2.5 - 2017-12-11
|
3 |
**Changes:**
|
4 |
* Better UX for CC0 images import module.
|
1 |
|
2 |
+
### v2.2.6 - 2017-12-19
|
3 |
+
**Changes:**
|
4 |
+
* Added new Beaver Builder Widgets Module - Pricing table widget, Services widget, Posts Grid widget.
|
5 |
+
* Better user experience for the template directory.
|
6 |
+
* More native design for the template directory.
|
7 |
+
* Added three free new templates to the template directory - Path, Mocha and Ascend.
|
8 |
+
* Fixed bug with the Elementor Pricing Table widget button link.
|
9 |
+
* Fixed php notice given by the Elementor Posts Grid widget.
|
10 |
+
* Removed the useless Stats module.
|
11 |
+
|
12 |
### v2.2.5 - 2017-12-11
|
13 |
**Changes:**
|
14 |
* Better UX for CC0 images import module.
|
core/app/class-orbit-fox-global-settings.php
CHANGED
@@ -61,13 +61,13 @@ class Orbit_Fox_Global_Settings {
|
|
61 |
self::$instance->modules = apply_filters(
|
62 |
'obfx_modules',
|
63 |
array(
|
64 |
-
'stats',
|
65 |
'social-sharing',
|
66 |
'companion-legacy',
|
67 |
'elementor-widgets',
|
68 |
'template-directory',
|
69 |
'menu-icons',
|
70 |
'mystock-import',
|
|
|
71 |
)
|
72 |
);
|
73 |
}// End if().
|
61 |
self::$instance->modules = apply_filters(
|
62 |
'obfx_modules',
|
63 |
array(
|
|
|
64 |
'social-sharing',
|
65 |
'companion-legacy',
|
66 |
'elementor-widgets',
|
67 |
'template-directory',
|
68 |
'menu-icons',
|
69 |
'mystock-import',
|
70 |
+
'beaver-widgets',
|
71 |
)
|
72 |
);
|
73 |
}// End if().
|
core/assets/css/orbit-fox-admin.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Extends Spectre.css Library
|
9 |
*/
|
10 |
/*
|
11 |
-
Version: 2.2.
|
12 |
*/
|
13 |
|
14 |
/* Document
|
8 |
* Extends Spectre.css Library
|
9 |
*/
|
10 |
/*
|
11 |
+
Version: 2.2.6
|
12 |
*/
|
13 |
|
14 |
/* Document
|
core/includes/class-orbit-fox.php
CHANGED
@@ -69,7 +69,7 @@ class Orbit_Fox {
|
|
69 |
|
70 |
$this->plugin_name = 'orbit-fox';
|
71 |
|
72 |
-
$this->version = '2.2.
|
73 |
|
74 |
$this->load_dependencies();
|
75 |
$this->set_locale();
|
69 |
|
70 |
$this->plugin_name = 'orbit-fox';
|
71 |
|
72 |
+
$this->version = '2.2.6';
|
73 |
|
74 |
$this->load_dependencies();
|
75 |
$this->set_locale();
|
obfx_modules/beaver-widgets/custom-fields/number-field/number.js
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global FLBuilder */
|
2 |
+
|
3 |
+
( function ( $ ) {
|
4 |
+
$( 'body' ).delegate(
|
5 |
+
'.obfx-number-field', 'change', function ( e ) {
|
6 |
+
$.proxy( FLBuilder.preview.delayPreview( e ), FLBuilder.preview );
|
7 |
+
}
|
8 |
+
);
|
9 |
+
} )( jQuery );
|
obfx_modules/beaver-widgets/custom-fields/number-field/number_field.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Beaver builder number custom field
|
4 |
+
*
|
5 |
+
* @package themeisle-companion
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Render the Number Field to the browser
|
10 |
+
*/
|
11 |
+
function obfx_number_field( $name, $value, $field ) {
|
12 |
+
$min = ! empty( $field['min'] ) ? 'min="' . esc_attr( $field['min'] ) . '"' : '';
|
13 |
+
$max = ! empty( $field['max'] ) ? 'max="' . esc_attr( $field['max'] ) . '"' : ''; ?>
|
14 |
+
<input type="number" value="<?php echo esc_attr( $value ); ?>" name="<?php echo esc_attr( $name ); ?>" class="obfx-number-field" <?php echo $min; ?> <?php echo $max; ?> />
|
15 |
+
<?php
|
16 |
+
}
|
17 |
+
|
18 |
+
add_action( 'fl_builder_control_obfx_number', 'obfx_number_field', 1, 3 );
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Enqueue number field stylesheet
|
22 |
+
*
|
23 |
+
* @return void
|
24 |
+
*/
|
25 |
+
function obfx_enqueue_field() {
|
26 |
+
if ( class_exists( 'FLBuilderModel' ) && FLBuilderModel::is_builder_active() ) {
|
27 |
+
wp_enqueue_script( 'obfx-number-js', BEAVER_WIDGETS_URL . 'custom-fields/number-field/number.js', array(), THEMEISLE_COMPANION_VERSION, true );
|
28 |
+
}
|
29 |
+
}
|
30 |
+
add_action( 'wp_enqueue_scripts', 'obfx_enqueue_field' );
|
obfx_modules/beaver-widgets/custom-fields/toggle-field/toggle.css
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.fl-lightbox .btn-switch {
|
2 |
+
font-size: 0.5em;
|
3 |
+
position: relative;
|
4 |
+
display: inline-block;
|
5 |
+
-webkit-user-select: none;
|
6 |
+
-moz-user-select: none;
|
7 |
+
-ms-user-select: none;
|
8 |
+
user-select: none;
|
9 |
+
}
|
10 |
+
.fl-lightbox .btn-switch__radio {
|
11 |
+
display: none;
|
12 |
+
}
|
13 |
+
.fl-lightbox .btn-switch__label {
|
14 |
+
display: inline-block;
|
15 |
+
vertical-align: top;
|
16 |
+
font-size: 10px;
|
17 |
+
font-weight: 700;
|
18 |
+
line-height: 30px;
|
19 |
+
margin: 0;
|
20 |
+
color: #666;
|
21 |
+
cursor: pointer;
|
22 |
+
transition: color .2s ease-in-out;
|
23 |
+
}
|
24 |
+
|
25 |
+
.fl-lightbox .btn-switch__txt {
|
26 |
+
position: relative;
|
27 |
+
z-index: 2;
|
28 |
+
display: inline-block;
|
29 |
+
min-width: 1.5em;
|
30 |
+
opacity: 1;
|
31 |
+
pointer-events: none;
|
32 |
+
transition: opacity .2s ease-in-out;
|
33 |
+
color: inherit;
|
34 |
+
}
|
35 |
+
.fl-lightbox .btn-switch__radio_no:checked ~ .btn-switch__label_yes .btn-switch__txt,
|
36 |
+
.fl-lightbox .btn-switch__radio_yes:checked ~ .btn-switch__label_no .btn-switch__txt {
|
37 |
+
opacity: 0;
|
38 |
+
}
|
39 |
+
.fl-lightbox .btn-switch__label:before {
|
40 |
+
content: "";
|
41 |
+
position: absolute;
|
42 |
+
z-index: -1;
|
43 |
+
top: 0;
|
44 |
+
right: 0;
|
45 |
+
bottom: 0;
|
46 |
+
left: 0;
|
47 |
+
background: #f0f0f0;
|
48 |
+
border-radius: 1.5em;
|
49 |
+
box-shadow: inset 0 .0715em .3572em rgba(43,43,43,.05);
|
50 |
+
transition: background .2s ease-in-out;
|
51 |
+
}
|
52 |
+
.fl-lightbox .btn-switch__radio_yes:checked ~ .btn-switch__label:before {
|
53 |
+
background: #6ad500;
|
54 |
+
}
|
55 |
+
.fl-lightbox .btn-switch__label_no:after {
|
56 |
+
content: "";
|
57 |
+
position: absolute;
|
58 |
+
z-index: 2;
|
59 |
+
top: .5em;
|
60 |
+
bottom: .5em;
|
61 |
+
left: .5em;
|
62 |
+
width: 2em;
|
63 |
+
background: #fff;
|
64 |
+
border-radius: 1em;
|
65 |
+
pointer-events: none;
|
66 |
+
box-shadow: 0 .1429em .2143em rgba(43,43,43,.2), 0 .3572em .3572em rgba(43,43,43,.1);
|
67 |
+
transition: left .2s ease-in-out, background .2s ease-in-out;
|
68 |
+
}
|
69 |
+
.fl-lightbox .btn-switch__radio_yes:checked ~ .btn-switch__label_no:after {
|
70 |
+
left: calc(100% - 2.5em);
|
71 |
+
background: #fff;
|
72 |
+
}
|
73 |
+
.fl-lightbox .btn-switch__radio_no:checked ~ .btn-switch__label_yes:before,
|
74 |
+
.fl-lightbox .btn-switch__radio_yes:checked ~ .btn-switch__label_no:before {
|
75 |
+
z-index: 1;
|
76 |
+
}
|
77 |
+
.fl-lightbox .btn-switch__radio_yes:checked ~ .btn-switch__label_yes {
|
78 |
+
color: #fff;
|
79 |
+
padding: 0 10px;
|
80 |
+
}
|
81 |
+
|
82 |
+
.fl-lightbox .btn-switch__radio_no:checked ~ .btn-switch__label_no {
|
83 |
+
padding: 0 10px;
|
84 |
+
}
|
obfx_modules/beaver-widgets/custom-fields/toggle-field/toggle.js
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global FLBuilder */
|
2 |
+
|
3 |
+
( function ( $ ) {
|
4 |
+
$( 'body' ).delegate(
|
5 |
+
'.btn-switch__label', 'click', function ( e ) {
|
6 |
+
$.proxy( FLBuilder.preview.delayPreview( e ), FLBuilder.preview );
|
7 |
+
}
|
8 |
+
);
|
9 |
+
} )( jQuery );
|
obfx_modules/beaver-widgets/custom-fields/toggle-field/toggle_field.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Beaver builder toggle custom field
|
4 |
+
*
|
5 |
+
* @package themeisle-companion
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Render the Toggle Field to the browser
|
10 |
+
*/
|
11 |
+
function obfx_toggle_field( $name, $value, $field ) {
|
12 |
+
?>
|
13 |
+
<p class="btn-switch">
|
14 |
+
<input type="radio"
|
15 |
+
<?php
|
16 |
+
if ( $value === 'yes' ) {
|
17 |
+
echo 'checked';}
|
18 |
+
?>
|
19 |
+
value="yes" id="<?php echo esc_attr( $name ); ?>_yes" name="<?php echo esc_attr( $name ); ?>" class="btn-switch__radio btn-switch__radio_yes" />
|
20 |
+
<input type="radio"
|
21 |
+
<?php
|
22 |
+
if ( $value !== 'yes' ) {
|
23 |
+
echo 'checked';}
|
24 |
+
?>
|
25 |
+
value="no" id="<?php echo esc_attr( $name ); ?>_no" name="<?php echo esc_attr( $name ); ?>" class="btn-switch__radio btn-switch__radio_no" />
|
26 |
+
<label for="<?php echo esc_attr( $name ); ?>_yes" class="btn-switch__label btn-switch__label_yes"><span class="btn-switch__txt"><?php echo esc_html__( 'Yes', 'themeisle-companion' ); ?></span></label>
|
27 |
+
<label for="<?php echo esc_attr( $name ); ?>_no" class="btn-switch__label btn-switch__label_no"><span class="btn-switch__txt"><?php echo esc_html__( 'No', 'themeisle-companion' ); ?></span></label>
|
28 |
+
</p>
|
29 |
+
<?php
|
30 |
+
}
|
31 |
+
add_action( 'fl_builder_control_obfx_toggle', 'obfx_toggle_field', 1, 3 );
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Enqueue toggle field stylesheet
|
35 |
+
*
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
function obfx_enqueue_toggle_field() {
|
39 |
+
if ( class_exists( 'FLBuilderModel' ) && FLBuilderModel::is_builder_active() ) {
|
40 |
+
wp_enqueue_style( 'obfx-toggle-css', BEAVER_WIDGETS_URL . 'custom-fields/toggle-field/toggle.css', null, THEMEISLE_COMPANION_VERSION, 'all' );
|
41 |
+
wp_enqueue_script( 'obfx-toggle-js', BEAVER_WIDGETS_URL . 'custom-fields/toggle-field/toggle.js', array(), THEMEISLE_COMPANION_VERSION, true );
|
42 |
+
}
|
43 |
+
}
|
44 |
+
add_action( 'wp_enqueue_scripts', 'obfx_enqueue_toggle_field' );
|
obfx_modules/beaver-widgets/inc/common-functions.php
ADDED
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file contains common functions that can be used in every Beaver module
|
4 |
+
*
|
5 |
+
* @package themeisle-companion
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Get the module directory.
|
9 |
+
$module_directory = $this->get_dir();
|
10 |
+
|
11 |
+
// Require custom field.
|
12 |
+
require_once( $module_directory . '/custom-fields/number-field/number_field.php' );
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Function to return padding controls.
|
16 |
+
*
|
17 |
+
* @param array $settings Fields settings.
|
18 |
+
*
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
function themeisle_four_fields_control( $settings ) {
|
22 |
+
$default = $settings['default'];
|
23 |
+
$prefix = $settings['field_name_prefix'];
|
24 |
+
$type = ! empty( $settings['type'] ) ? $settings['type'] : 'padding';
|
25 |
+
return array(
|
26 |
+
'title' => $type === 'margin' ? esc_html__( 'Margins', 'themeisle-companion' ) : esc_html__( 'Padding', 'themeisle-companion' ),
|
27 |
+
'fields' => array(
|
28 |
+
$prefix . 'top' => array(
|
29 |
+
'type' => 'obfx_number',
|
30 |
+
'label' => esc_html__( 'Top', 'themeisle-companion' ),
|
31 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
32 |
+
'default' => $default['top'],
|
33 |
+
),
|
34 |
+
$prefix . 'bottom' => array(
|
35 |
+
'type' => 'obfx_number',
|
36 |
+
'label' => esc_html__( 'Bottom', 'themeisle-companion' ),
|
37 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
38 |
+
'default' => $default['bottom'],
|
39 |
+
),
|
40 |
+
$prefix . 'left' => array(
|
41 |
+
'type' => 'obfx_number',
|
42 |
+
'label' => esc_html__( 'Left', 'themeisle-companion' ),
|
43 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
44 |
+
'default' => $default['left'],
|
45 |
+
),
|
46 |
+
$prefix . 'right' => array(
|
47 |
+
'type' => 'obfx_number',
|
48 |
+
'label' => esc_html__( 'Right', 'themeisle-companion' ),
|
49 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
50 |
+
'default' => $default['right'],
|
51 |
+
),
|
52 |
+
),
|
53 |
+
);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Typography controls.
|
58 |
+
*
|
59 |
+
* @param array $settings Typography settings.
|
60 |
+
*
|
61 |
+
* @return array
|
62 |
+
*/
|
63 |
+
function themeisle_typography_settings( $settings ) {
|
64 |
+
$title = ! empty( $settings['title'] ) ? $settings['title'] : esc_html__( 'Typography', 'themeisle-companion' );
|
65 |
+
$prefix = $settings['prefix'];
|
66 |
+
$font_default = ! empty( $settings['font_size_default'] ) ? $settings['font_size_default'] : '';
|
67 |
+
return array(
|
68 |
+
'title' => $title,
|
69 |
+
'fields' => array(
|
70 |
+
$prefix . 'font_size' => array(
|
71 |
+
'type' => 'obfx_number',
|
72 |
+
'label' => esc_html__( 'Font size', 'themeisle-companion' ),
|
73 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
74 |
+
'default' => $font_default,
|
75 |
+
),
|
76 |
+
$prefix . 'font_family' => array(
|
77 |
+
'type' => 'font',
|
78 |
+
'label' => esc_html__( 'Font family', 'themeisle-companion' ),
|
79 |
+
'default' => array(
|
80 |
+
'family' => 'Roboto',
|
81 |
+
'weight' => 300,
|
82 |
+
),
|
83 |
+
),
|
84 |
+
$prefix . 'transform' => array(
|
85 |
+
'type' => 'select',
|
86 |
+
'label' => esc_html__( 'Transform', 'themeisle-companion' ),
|
87 |
+
'default' => 'none',
|
88 |
+
'options' => array(
|
89 |
+
'none' => esc_html__( 'None', 'themeisle-companion' ),
|
90 |
+
'capitalize' => esc_html__( 'Capitalize', 'themeisle-companion' ),
|
91 |
+
'uppercase' => esc_html__( 'Uppercase', 'themeisle-companion' ),
|
92 |
+
'lowercase' => esc_html__( 'Lowercase', 'themeisle-companion' ),
|
93 |
+
),
|
94 |
+
),
|
95 |
+
$prefix . 'font_style' => array(
|
96 |
+
'type' => 'select',
|
97 |
+
'label' => esc_html__( 'Font style', 'themeisle-companion' ),
|
98 |
+
'default' => 'normal',
|
99 |
+
'options' => array(
|
100 |
+
'normal' => esc_html__( 'Normal', 'themeisle-companion' ),
|
101 |
+
'italic' => esc_html__( 'Italic', 'themeisle-companion' ),
|
102 |
+
'oblique' => esc_html__( 'Oblique', 'themeisle-companion' ),
|
103 |
+
),
|
104 |
+
),
|
105 |
+
$prefix . 'line_height' => array(
|
106 |
+
'type' => 'obfx_number',
|
107 |
+
'label' => esc_html__( 'Line height', 'themeisle-companion' ),
|
108 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
109 |
+
),
|
110 |
+
$prefix . 'letter_spacing' => array(
|
111 |
+
'type' => 'obfx_number',
|
112 |
+
'label' => esc_html__( 'Letter spacing', 'themeisle-companion' ),
|
113 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
114 |
+
),
|
115 |
+
),
|
116 |
+
);
|
117 |
+
}
|
obfx_modules/beaver-widgets/init.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Beaver Builder modules Orbit Fox Module.
|
4 |
+
*
|
5 |
+
* @link https://themeisle.com
|
6 |
+
* @since 2.2.5
|
7 |
+
*/
|
8 |
+
|
9 |
+
define( 'BEAVER_WIDGETS_PATH', plugin_dir_path( __FILE__ ) );
|
10 |
+
define( 'BEAVER_WIDGETS_URL', plugins_url( '/', __FILE__ ) );
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Beaver_Widgets_OBFX_Module
|
14 |
+
*/
|
15 |
+
class Beaver_Widgets_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Beaver_Widgets_OBFX_Module constructor.
|
19 |
+
*
|
20 |
+
* @since 2.2.5
|
21 |
+
* @access public
|
22 |
+
*/
|
23 |
+
public function __construct() {
|
24 |
+
parent::__construct();
|
25 |
+
$this->name = __( 'Beaver Builder Widgets', 'themeisle-companion' );
|
26 |
+
$this->description = __( 'Custom Beaver Builder Widgets.', 'themeisle-companion' );
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Determine if module should be loaded.
|
31 |
+
*
|
32 |
+
* @since 2.2.5
|
33 |
+
* @access public
|
34 |
+
* @return bool
|
35 |
+
*/
|
36 |
+
public function enable_module() {
|
37 |
+
return true;
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* The loading logic for the module.
|
42 |
+
*
|
43 |
+
* @since 2.2.5
|
44 |
+
* @access public
|
45 |
+
*/
|
46 |
+
public function load() {
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Method to define hooks needed.
|
51 |
+
*
|
52 |
+
* @since 2.2.5
|
53 |
+
* @access public
|
54 |
+
*/
|
55 |
+
public function hooks() {
|
56 |
+
$this->loader->add_action( 'init', $this, 'load_widgets_modules' );
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Method that returns an array of scripts and styles to be loaded
|
61 |
+
* for the front end part.
|
62 |
+
*
|
63 |
+
* @since 2.2.5
|
64 |
+
* @access public
|
65 |
+
* @return array
|
66 |
+
*/
|
67 |
+
public function public_enqueue() {
|
68 |
+
return array();
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Method that returns an array of scripts and styles to be loaded
|
73 |
+
* for the admin part.
|
74 |
+
*
|
75 |
+
* @since 2.2.5
|
76 |
+
* @access public
|
77 |
+
* @return array
|
78 |
+
*/
|
79 |
+
public function admin_enqueue() {
|
80 |
+
return array();
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Method to define the options fields for the module
|
85 |
+
*
|
86 |
+
* @since 2.2.5
|
87 |
+
* @access public
|
88 |
+
* @return array
|
89 |
+
*/
|
90 |
+
public function options() {
|
91 |
+
return array();
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Require Beaver Builder modules
|
96 |
+
*
|
97 |
+
* @since 2.2.5
|
98 |
+
* @access public
|
99 |
+
*/
|
100 |
+
public function load_widgets_modules(){
|
101 |
+
if ( class_exists( 'FLBuilder' ) ) {
|
102 |
+
require_once 'modules/pricing-table/pricing-table.php';
|
103 |
+
require_once 'modules/services/services.php';
|
104 |
+
require_once 'modules/post-grid/post-grid.php';
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
obfx_modules/beaver-widgets/modules/post-grid/css/frontend.css
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.obfx-card{
|
2 |
+
display: inline-block;
|
3 |
+
position: relative;
|
4 |
+
width: 100%;
|
5 |
+
margin-bottom: 30px;
|
6 |
+
border-radius: 6px;
|
7 |
+
color: rgba(0, 0, 0, 0.87);
|
8 |
+
background: #fff;
|
9 |
+
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
|
10 |
+
}
|
11 |
+
.obfx-post-grid-thumbnail.obfx-card{
|
12 |
+
width: auto;
|
13 |
+
-webkit-box-shadow: 4px 8px 59px -15px rgba(0,0,0,1);
|
14 |
+
-moz-box-shadow: 4px 8px 59px -15px rgba(0,0,0,1);
|
15 |
+
box-shadow: 4px 8px 59px -15px rgba(0,0,0,1);
|
16 |
+
margin: 10px;
|
17 |
+
}
|
18 |
+
|
19 |
+
.obfx-post-grid-wrapper{
|
20 |
+
padding: 0 10px;
|
21 |
+
display: inline-block;
|
22 |
+
vertical-align: top;
|
23 |
+
}
|
24 |
+
|
25 |
+
.obfx-post-grid-meta i {
|
26 |
+
padding-right: 5px;
|
27 |
+
}
|
28 |
+
|
29 |
+
.obfx-post-grid-meta > div{
|
30 |
+
display: inline;
|
31 |
+
word-wrap: initial;
|
32 |
+
}
|
33 |
+
|
34 |
+
.obfx-post-grid-meta > div:not(:last-child),
|
35 |
+
.obfx-category a:not(:last-child),
|
36 |
+
.obfx-tags a:not(:last-child){
|
37 |
+
padding-right: 5px;
|
38 |
+
}
|
39 |
+
.obfx-post-grid-meta > div:not(:last-child):after,
|
40 |
+
.obfx-category a:not(:last-child):after,
|
41 |
+
.obfx-tags a:not(:last-child):after{
|
42 |
+
content: ',';
|
43 |
+
}
|
44 |
+
.obfx-category a:not(:last-child):after{
|
45 |
+
content: ',';
|
46 |
+
}
|
47 |
+
|
48 |
+
.obfx-post-grid-pagination li{
|
49 |
+
vertical-align: bottom;
|
50 |
+
padding: 5px;
|
51 |
+
|
52 |
+
}
|
53 |
+
|
54 |
+
.obfx-post-grid-pagination li a{
|
55 |
+
padding: 0;
|
56 |
+
background: none;
|
57 |
+
}
|
58 |
+
.page-numbers{
|
59 |
+
list-style: none;
|
60 |
+
padding: 0;
|
61 |
+
}
|
62 |
+
.page-numbers li{
|
63 |
+
display: inline-block;
|
64 |
+
}
|
obfx_modules/beaver-widgets/modules/post-grid/includes/frontend.css.php
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$post_width = $settings->display_type === 'list' ? 100 : ( ! empty( $settings->columns ) ? 100 / (int) $settings->columns : 33.3333 );
|
4 |
+
$card_vertical_align = ! empty( $settings->card_vertical_align ) ? $settings->card_vertical_align : 'top';
|
5 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid-wrapper{
|
6 |
+
width: ' . $post_width . '%;
|
7 |
+
vertical-align: ' . $card_vertical_align . ';
|
8 |
+
}';
|
9 |
+
|
10 |
+
|
11 |
+
$post_bg_color = ! empty( $settings->post_bg_color ) ? $settings->post_bg_color : '';
|
12 |
+
if ( ! empty( $post_bg_color ) ) {
|
13 |
+
$post_bg_color = strpos( $post_bg_color, 'rgba' ) !== false ? 'background-color:' . $post_bg_color : 'background-color:#' . $post_bg_color;
|
14 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid{
|
15 |
+
' . $post_bg_color . ';
|
16 |
+
}';
|
17 |
+
}
|
18 |
+
|
19 |
+
$post_link_color = ! empty( $settings->post_link_color ) ? $settings->post_link_color : '';
|
20 |
+
if ( ! empty( $post_link_color ) ) {
|
21 |
+
$post_link_color = strpos( $post_link_color, 'rgba' ) !== false ? 'color:' . $post_link_color : 'color:#' . $post_link_color;
|
22 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid a, .fl-node-' . $id . ' .obfx-post-grid-pagination a {
|
23 |
+
' . $post_link_color . ';
|
24 |
+
}';
|
25 |
+
}
|
26 |
+
|
27 |
+
$post_text_color = ! empty( $settings->post_text_color ) ? $settings->post_text_color : '';
|
28 |
+
if ( ! empty( $post_text_color ) ) {
|
29 |
+
$post_text_color = strpos( $post_text_color, 'rgba' ) !== false ? 'color:' . $post_text_color : 'color:#' . $post_text_color;
|
30 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid, .fl-node-' . $id . ' .obfx-post-grid-pagination{
|
31 |
+
' . $post_text_color . ';
|
32 |
+
}';
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
$card_margin_top = ! empty( $settings->card_margin_top ) ? $settings->card_margin_top : '0';
|
37 |
+
$card_margin_bottom = ! empty( $settings->card_margin_bottom ) ? $settings->card_margin_bottom : '0';
|
38 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid{
|
39 |
+
margin-top: ' . $card_margin_top . 'px;
|
40 |
+
margin-bottom: ' . $card_margin_bottom . 'px;
|
41 |
+
}
|
42 |
+
';
|
43 |
+
|
44 |
+
$thumbnail_margin_top = ! empty( $settings->thumbnail_margin_top ) ? $settings->thumbnail_margin_top : '0';
|
45 |
+
$thumbnail_margin_bottom = ! empty( $settings->thumbnail_margin_bottom ) ? $settings->thumbnail_margin_bottom : '0';
|
46 |
+
$thumbnail_margin_left = ! empty( $settings->thumbnail_margin_left ) ? $settings->thumbnail_margin_left : '0';
|
47 |
+
$thumbnail_margin_right = ! empty( $settings->thumbnail_margin_right ) ? $settings->thumbnail_margin_right : '0';
|
48 |
+
$image_alignment = ! empty( $settings->image_alignment ) ? $settings->image_alignment : 'center';
|
49 |
+
|
50 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid-thumbnail{
|
51 |
+
margin-top: ' . $thumbnail_margin_top . 'px;
|
52 |
+
margin-bottom: ' . $thumbnail_margin_bottom . 'px;
|
53 |
+
margin-left: ' . $thumbnail_margin_left . 'px;
|
54 |
+
margin-right: ' . $thumbnail_margin_right . 'px;';
|
55 |
+
|
56 |
+
switch ( $image_alignment ) {
|
57 |
+
case 'center':
|
58 |
+
echo 'text-align:center; width:100%;';
|
59 |
+
break;
|
60 |
+
case 'left':
|
61 |
+
echo 'float:left';
|
62 |
+
break;
|
63 |
+
case 'right':
|
64 |
+
echo 'float:right';
|
65 |
+
break;
|
66 |
+
}
|
67 |
+
echo '}';
|
68 |
+
|
69 |
+
|
70 |
+
$title_padding_top = ! empty( $settings->title_padding_top ) ? $settings->title_padding_top : '0';
|
71 |
+
$title_padding_bottom = ! empty( $settings->title_padding_bottom ) ? $settings->title_padding_bottom : '0';
|
72 |
+
$title_padding_left = ! empty( $settings->title_padding_left ) ? $settings->title_padding_left : '0';
|
73 |
+
$title_padding_right = ! empty( $settings->title_padding_right ) ? $settings->title_padding_right : '0';
|
74 |
+
$title_alignment = ! empty( $settings->title_alignment ) ? $settings->title_alignment : 'center';
|
75 |
+
$title_font_size = ! empty( $settings->title_font_size ) ? $settings->title_font_size : '0';
|
76 |
+
$title_font_family = ! empty( $settings->title_font_family['family'] ) ? $settings->title_font_family['family'] : 'Roboto';
|
77 |
+
$title_font_weight = ! empty( $settings->title_font_family['weight'] ) ? $settings->title_font_family['weight'] : '400';
|
78 |
+
$title_transform = ! empty( $settings->title_transform ) ? $settings->title_transform : 'none';
|
79 |
+
$title_font_style = ! empty( $settings->title_font_style ) ? $settings->title_font_style : 'none';
|
80 |
+
$title_line_height = ! empty( $settings->title_line_height ) ? $settings->title_line_height : 'inherit';
|
81 |
+
$title_letter_spacing = ! empty( $settings->title_letter_spacing ) ? $settings->title_letter_spacing : '0';
|
82 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid-title{
|
83 |
+
padding-top: ' . $title_padding_top . 'px;
|
84 |
+
padding-bottom: ' . $title_padding_bottom . 'px;
|
85 |
+
padding-left: ' . $title_padding_left . 'px;
|
86 |
+
padding-right: ' . $title_padding_right . 'px;
|
87 |
+
text-align: ' . $title_alignment . ';
|
88 |
+
font-size:' . $title_font_size . 'px;
|
89 |
+
font-family:' . $title_font_family . ';
|
90 |
+
font-weight:' . $title_font_weight . ';
|
91 |
+
text-transform:' . $title_transform . ';
|
92 |
+
font-style:' . $title_font_style . ';
|
93 |
+
line-height:' . $title_line_height . 'px;
|
94 |
+
letter-spacing:' . $title_letter_spacing . 'px;
|
95 |
+
} ';
|
96 |
+
|
97 |
+
$meta_padding_top = ! empty( $settings->meta_padding_top ) ? $settings->meta_padding_top : '0';
|
98 |
+
$meta_padding_bottom = ! empty( $settings->meta_padding_bottom ) ? $settings->meta_padding_bottom : '0';
|
99 |
+
$meta_padding_left = ! empty( $settings->meta_padding_left ) ? $settings->meta_padding_left : '0';
|
100 |
+
$meta_padding_right = ! empty( $settings->meta_padding_right ) ? $settings->meta_padding_right : '0';
|
101 |
+
$meta_alignment = ! empty( $settings->meta_alignment ) ? $settings->meta_alignment : 'center';
|
102 |
+
$meta_font_size = ! empty( $settings->meta_font_size ) ? $settings->meta_font_size : '0';
|
103 |
+
$meta_font_family = ! empty( $settings->meta_font_family['family'] ) ? $settings->meta_font_family['family'] : 'Roboto';
|
104 |
+
$meta_font_weight = ! empty( $settings->meta_font_family['weight'] ) ? $settings->meta_font_family['weight'] : '400';
|
105 |
+
$meta_transform = ! empty( $settings->meta_transform ) ? $settings->meta_transform : 'none';
|
106 |
+
$meta_font_style = ! empty( $settings->meta_font_style ) ? $settings->meta_font_style : 'none';
|
107 |
+
$meta_line_height = ! empty( $settings->meta_line_height ) ? $settings->meta_line_height : 'inherit';
|
108 |
+
$meta_letter_spacing = ! empty( $settings->meta_letter_spacing ) ? $settings->meta_letter_spacing : '0';
|
109 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid-meta{
|
110 |
+
padding-top: ' . $meta_padding_top . 'px;
|
111 |
+
padding-bottom: ' . $meta_padding_bottom . 'px;
|
112 |
+
padding-left: ' . $meta_padding_left . 'px;
|
113 |
+
padding-right: ' . $meta_padding_right . 'px;
|
114 |
+
font-size:' . $meta_font_size . 'px;
|
115 |
+
font-family:' . $meta_font_family . ';
|
116 |
+
font-weight:' . $meta_font_weight . ';
|
117 |
+
text-transform:' . $meta_transform . ';
|
118 |
+
font-style:' . $meta_font_style . ';
|
119 |
+
line-height:' . $meta_line_height . 'px;
|
120 |
+
letter-spacing:' . $meta_letter_spacing . 'px;
|
121 |
+
text-align: ' . $meta_alignment . ';
|
122 |
+
} ';
|
123 |
+
|
124 |
+
|
125 |
+
$content_padding_top = ! empty( $settings->content_padding_top ) ? $settings->content_padding_top : '0';
|
126 |
+
$content_padding_bottom = ! empty( $settings->content_padding_bottom ) ? $settings->content_padding_bottom : '0';
|
127 |
+
$content_padding_left = ! empty( $settings->content_padding_left ) ? $settings->content_padding_left : '0';
|
128 |
+
$content_padding_right = ! empty( $settings->content_padding_right ) ? $settings->content_padding_right : '0';
|
129 |
+
$content_alignment = ! empty( $settings->content_alignment ) ? $settings->content_alignment : 'center';
|
130 |
+
$content_font_size = ! empty( $settings->content_font_size ) ? $settings->content_font_size : '0';
|
131 |
+
$content_font_family = ! empty( $settings->content_font_family['family'] ) ? $settings->content_font_family['family'] : 'Roboto';
|
132 |
+
$content_font_weight = ! empty( $settings->content_font_family['weight'] ) ? $settings->content_font_family['weight'] : '400';
|
133 |
+
$content_transform = ! empty( $settings->content_transform ) ? $settings->content_transform : 'none';
|
134 |
+
$content_font_style = ! empty( $settings->content_font_style ) ? $settings->content_font_style : 'none';
|
135 |
+
$content_line_height = ! empty( $settings->content_line_height ) ? $settings->content_line_height : 'inherit';
|
136 |
+
$content_letter_spacing = ! empty( $settings->content_letter_spacing ) ? $settings->content_letter_spacing : '0';
|
137 |
+
|
138 |
+
echo '.fl-node-' . $id . ' .obfx-post-content{
|
139 |
+
padding-top: ' . $content_padding_top . 'px;
|
140 |
+
padding-bottom: ' . $content_padding_bottom . 'px;
|
141 |
+
padding-left: ' . $content_padding_left . 'px;
|
142 |
+
padding-right: ' . $content_padding_right . 'px;
|
143 |
+
text-align: ' . $content_alignment . ';
|
144 |
+
font-size:' . $content_font_size . 'px;
|
145 |
+
font-family:' . $content_font_family . ';
|
146 |
+
font-weight:' . $content_font_weight . ';
|
147 |
+
text-transform:' . $content_transform . ';
|
148 |
+
font-style:' . $content_font_style . ';
|
149 |
+
line-height:' . $content_line_height . 'px;
|
150 |
+
letter-spacing:' . $content_letter_spacing . 'px;
|
151 |
+
} ';
|
152 |
+
|
153 |
+
$pagination_font_size = ! empty( $settings->pagination_font_size ) ? $settings->pagination_font_size : '0';
|
154 |
+
$pagination_font_family = ! empty( $settings->pagination_font_family['family'] ) ? $settings->pagination_font_family['family'] : 'Roboto';
|
155 |
+
$pagination_font_weight = ! empty( $settings->pagination_font_family['weight'] ) ? $settings->pagination_font_family['weight'] : '400';
|
156 |
+
$pagination_transform = ! empty( $settings->pagination_transform ) ? $settings->pagination_transform : 'none';
|
157 |
+
$pagination_font_style = ! empty( $settings->pagination_font_style ) ? $settings->pagination_font_style : 'none';
|
158 |
+
$pagination_line_height = ! empty( $settings->pagination_line_height ) ? $settings->pagination_line_height : 'inherit';
|
159 |
+
$pagination_letter_spacing = ! empty( $settings->pagination_letter_spacing ) ? $settings->pagination_letter_spacing : '0';
|
160 |
+
$pagination_alignment = ! empty( $settings->pagination_alignment ) ? $settings->pagination_alignment : 'center';
|
161 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid-pagination li a, .fl-node-' . $id . ' .obfx-post-grid-pagination li {
|
162 |
+
font-size:' . $pagination_font_size . 'px;
|
163 |
+
font-family:' . $pagination_font_family . ';
|
164 |
+
font-weight:' . $pagination_font_weight . ';
|
165 |
+
text-transform:' . $pagination_transform . ';
|
166 |
+
font-style:' . $pagination_font_style . ';
|
167 |
+
line-height:' . $pagination_line_height . 'px;
|
168 |
+
letter-spacing:' . $pagination_letter_spacing . 'px;
|
169 |
+
}';
|
170 |
+
|
171 |
+
echo '.fl-node-' . $id . ' .obfx-post-grid-pagination{
|
172 |
+
text-align: ' . $pagination_alignment . ';
|
173 |
+
}';
|
obfx_modules/beaver-widgets/modules/post-grid/includes/frontend.php
ADDED
@@ -0,0 +1,283 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file is used to render each pricing module instance.
|
4 |
+
* You have access to two variables in this file:
|
5 |
+
*
|
6 |
+
* $module An instance of your module class.
|
7 |
+
* $settings The module's settings.
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
if ( ! function_exists( 'obfx_show_post_grid_thumbnail' ) ) {
|
12 |
+
/**
|
13 |
+
* Display post grid image.
|
14 |
+
*
|
15 |
+
* @param array $settings Post grid settings.
|
16 |
+
*/
|
17 |
+
function obfx_show_post_grid_thumbnail( $settings ) {
|
18 |
+
if ( empty( $settings ) ) {
|
19 |
+
return;
|
20 |
+
}
|
21 |
+
|
22 |
+
$show_post_thumbnail = ! empty( $settings->show_post_thumbnail ) ? $settings->show_post_thumbnail : '';
|
23 |
+
if ( $show_post_thumbnail === 'no' ) {
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
|
27 |
+
$size = ! empty( $settings->image_size ) ? $settings->image_size : 'post-thumbnail';
|
28 |
+
$pid = get_the_ID();
|
29 |
+
$img = get_the_post_thumbnail_url( $pid, $size );
|
30 |
+
if ( ! empty( $img ) ) {
|
31 |
+
$thumbnail_shadow = ! empty( $settings->thumbnail_shadow ) && $settings->thumbnail_shadow === 'yes' ? 'obfx-card' : '';
|
32 |
+
echo '<div class="obfx-post-grid-thumbnail ' . esc_attr( $thumbnail_shadow ) . '">';
|
33 |
+
if ( ! empty( $settings->show_thumbnail_link ) && $settings->show_thumbnail_link === 'yes' ) {
|
34 |
+
echo '<a href="' . get_permalink() . '">';
|
35 |
+
}
|
36 |
+
echo '<img src="' . esc_url( $img ) . '"/></div>';
|
37 |
+
if ( ! empty( $settings->show_thumbnail_link ) && $settings->show_thumbnail_link === 'yes' ) {
|
38 |
+
echo '</a>';
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
if ( ! function_exists( 'obfx_show_post_grid_title' ) ) {
|
45 |
+
/**
|
46 |
+
* Display post grid title.
|
47 |
+
*
|
48 |
+
* @param array $settings Post grid settings.
|
49 |
+
*/
|
50 |
+
function obfx_show_post_grid_title( $settings ) {
|
51 |
+
if ( empty( $settings ) ) {
|
52 |
+
return;
|
53 |
+
}
|
54 |
+
|
55 |
+
$show_post_title = ! empty( $settings->show_post_title ) ? $settings->show_post_title : '';
|
56 |
+
if ( $show_post_title === 'no' ) {
|
57 |
+
return;
|
58 |
+
}
|
59 |
+
|
60 |
+
if ( ! empty( $settings->show_title_link ) && $settings->show_title_link === 'yes' ) {
|
61 |
+
echo '<a href="' . get_permalink() . '">';
|
62 |
+
}
|
63 |
+
$tag = ! empty( $settings->title_tag ) ? $settings->title_tag : 'h4';
|
64 |
+
the_title( '<' . $tag . ' class="obfx-post-grid-title">', '</' . $tag . '>' );
|
65 |
+
if ( ! empty( $settings->show_title_link ) && $settings->show_title_link === 'yes' ) {
|
66 |
+
echo '</a>';
|
67 |
+
}
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
if ( ! function_exists( 'obfx_show_post_grid_meta' ) ) {
|
72 |
+
/**
|
73 |
+
* Display post grid meta.
|
74 |
+
*
|
75 |
+
* @param array $settings Post grid settings.
|
76 |
+
*/
|
77 |
+
function obfx_show_post_grid_meta( $settings ) {
|
78 |
+
if ( empty( $settings ) ) {
|
79 |
+
return;
|
80 |
+
}
|
81 |
+
|
82 |
+
$show_post_meta = ! empty( $settings->show_post_meta ) ? $settings->show_post_meta : '';
|
83 |
+
if ( $show_post_meta === 'no' ) {
|
84 |
+
return;
|
85 |
+
}
|
86 |
+
|
87 |
+
$pid = get_the_ID();
|
88 |
+
$meta_data = ! empty( $settings->meta_data ) ? ( is_array( $settings->meta_data ) ? $settings->meta_data : array( $settings->meta_data ) ) : array();
|
89 |
+
$show_icons = ! empty( $settings->show_icons ) ? $settings->show_icons : '';
|
90 |
+
echo '<div class="obfx-post-grid-meta">';
|
91 |
+
if ( in_array( 'author', $meta_data ) ) {
|
92 |
+
$author = get_the_author( $pid );
|
93 |
+
if ( ! empty( $author ) ) {
|
94 |
+
echo '<div class="obfx-author">';
|
95 |
+
if ( $show_icons === 'yes' ) {
|
96 |
+
echo '<i class="fa fa-user"></i>';
|
97 |
+
}
|
98 |
+
printf(
|
99 |
+
/* translators: %1$s is Author name wrapped, %2$s is Time */
|
100 |
+
esc_html__( 'By %1$s', 'themeisle-companion' ),
|
101 |
+
sprintf(
|
102 |
+
/* translators: %1$s is Author name, %2$s is author link */
|
103 |
+
'<a href="%2$s" title="%1$s"><b>%1$s</b></a>',
|
104 |
+
esc_html( get_the_author() ),
|
105 |
+
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) )
|
106 |
+
)
|
107 |
+
);
|
108 |
+
echo '</div>';
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
if ( in_array( 'date', $meta_data ) ) {
|
113 |
+
echo '<div class="obfx-date">';
|
114 |
+
if ( $show_icons === 'yes' ) {
|
115 |
+
echo '<i class="fa fa-calendar"></i>';
|
116 |
+
}
|
117 |
+
echo get_the_date();
|
118 |
+
echo '</div>';
|
119 |
+
}
|
120 |
+
|
121 |
+
if ( in_array( 'category', $meta_data ) ) {
|
122 |
+
$cat = get_the_category();
|
123 |
+
if ( ! empty( $cat ) ) {
|
124 |
+
echo '<div class="obfx-category">';
|
125 |
+
if ( $show_icons === 'yes' ) {
|
126 |
+
echo '<i class="fa fa-list"></i>';
|
127 |
+
}
|
128 |
+
foreach ( $cat as $category ) {
|
129 |
+
$cat_id = $category->term_id;
|
130 |
+
$link = get_category_link( $cat_id );
|
131 |
+
$name = $category->name;
|
132 |
+
if ( ! empty( $name ) ) {
|
133 |
+
if ( ! empty( $link ) ) {
|
134 |
+
echo '<a href="' . esc_url( $link ) . '">';
|
135 |
+
}
|
136 |
+
echo $name;
|
137 |
+
if ( ! empty( $link ) ) {
|
138 |
+
echo '</a>';
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
echo '</div>';
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
if ( in_array( 'tags', $meta_data ) ) {
|
147 |
+
$tags = wp_get_post_tags( $pid );
|
148 |
+
if ( ! empty( $tags ) ) {
|
149 |
+
echo '<div class="obfx-tags">';
|
150 |
+
if ( $show_icons === 'yes' ) {
|
151 |
+
echo '<i class="fa fa-tag"></i>';
|
152 |
+
}
|
153 |
+
foreach ( $tags as $tag ) {
|
154 |
+
$tag_id = $tag->term_id;
|
155 |
+
$link = get_tag_link( $tag_id );
|
156 |
+
$name = $tag->name;
|
157 |
+
if ( ! empty( $name ) ) {
|
158 |
+
if ( ! empty( $link ) ) {
|
159 |
+
echo '<a href="' . esc_url( $link ) . '">';
|
160 |
+
}
|
161 |
+
echo $name;
|
162 |
+
if ( ! empty( $link ) ) {
|
163 |
+
echo '</a>';
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
echo '</div>';
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
if ( in_array( 'comments', $meta_data ) ) {
|
172 |
+
echo '<div class=obfx-comments">';
|
173 |
+
if ( $show_icons === 'yes' ) {
|
174 |
+
echo '<i class="fa fa-comment"></i>';
|
175 |
+
}
|
176 |
+
$comments_number = get_comments_number();
|
177 |
+
if ( 0 == ! $comments_number ) {
|
178 |
+
if ( 1 === $comments_number ) {
|
179 |
+
/* translators: %s: post title */
|
180 |
+
_x( 'One comment', 'comments title', 'themeisle-companion' );
|
181 |
+
} else {
|
182 |
+
printf(
|
183 |
+
/* translators: 1: number of comments, 2: post title */
|
184 |
+
_nx(
|
185 |
+
'%1$s Comment',
|
186 |
+
'%1$s Comments',
|
187 |
+
$comments_number,
|
188 |
+
'comments title',
|
189 |
+
'themeisle-companion'
|
190 |
+
),
|
191 |
+
number_format_i18n( $comments_number )
|
192 |
+
);
|
193 |
+
}
|
194 |
+
}
|
195 |
+
echo '</div>';
|
196 |
+
}
|
197 |
+
echo '</div>';
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
if ( ! function_exists( 'obfx_show_post_grid_content' ) ) {
|
202 |
+
/**
|
203 |
+
* Display post grid content.
|
204 |
+
*
|
205 |
+
* @param array $settings Post grid settings.
|
206 |
+
*/
|
207 |
+
function obfx_show_post_grid_content( $settings ) {
|
208 |
+
if ( empty( $settings ) ) {
|
209 |
+
return;
|
210 |
+
}
|
211 |
+
|
212 |
+
$show_post_content = ! empty( $settings->show_post_content ) ? $settings->show_post_content : '';
|
213 |
+
if ( $show_post_content === 'no' ) {
|
214 |
+
return;
|
215 |
+
}
|
216 |
+
|
217 |
+
$number_of_words = ! empty( $settings->content_length ) ? $settings->content_length : '';
|
218 |
+
echo '<div class="obfx-post-content">';
|
219 |
+
if ( ! empty( $number_of_words ) ) {
|
220 |
+
$content = obfx_get_limited_content( $number_of_words, $settings );
|
221 |
+
echo '<p>' . wp_kses_post( $content ) . '</p>';
|
222 |
+
}
|
223 |
+
echo '</div>';
|
224 |
+
}
|
225 |
+
}
|
226 |
+
|
227 |
+
if ( ! function_exists( 'obfx_get_limited_content' ) ) {
|
228 |
+
/**
|
229 |
+
* Get content with limited number of words.
|
230 |
+
*
|
231 |
+
* @param int $limit Words limit.
|
232 |
+
*
|
233 |
+
* @return string
|
234 |
+
*/
|
235 |
+
function obfx_get_limited_content( $limit, $settings ) {
|
236 |
+
$content = explode( ' ', get_the_content(), $limit );
|
237 |
+
|
238 |
+
$show_read_more = ! empty( $settings->show_read_more ) ? $settings->show_read_more : '';
|
239 |
+
$read_more = $show_read_more === 'yes' ? ( ! empty( $settings->read_more_text ) ? '<a class="obfx-post-grid-read-more" href="' . get_the_permalink() . '">' . $settings->read_more_text . '</a>' : '' ) : '';
|
240 |
+
if ( count( $content ) >= $limit ) {
|
241 |
+
array_pop( $content );
|
242 |
+
$content = implode( ' ', $content );
|
243 |
+
$content = strip_tags( $content );
|
244 |
+
$content = $content . '...' . wp_kses_post( $read_more );
|
245 |
+
} else {
|
246 |
+
$content = implode( ' ', $content );
|
247 |
+
}
|
248 |
+
|
249 |
+
$content = preg_replace( '/\[.+\]/', '', $content );
|
250 |
+
$content = apply_filters( 'the_content', $content );
|
251 |
+
$content = str_replace( ']]>', ']]>', $content );
|
252 |
+
|
253 |
+
return $content;
|
254 |
+
}
|
255 |
+
}
|
256 |
+
|
257 |
+
|
258 |
+
|
259 |
+
$query = FLBuilderLoop::query( $settings );
|
260 |
+
if ( $query->have_posts() ) {
|
261 |
+
|
262 |
+
$class_to_add = ! empty( $settings->card_layout ) && $settings->card_layout === 'yes' ? 'obfx-card' : '';
|
263 |
+
while ( $query->have_posts() ) {
|
264 |
+
$query->the_post();
|
265 |
+
|
266 |
+
echo '<div class="obfx-post-grid-wrapper">';
|
267 |
+
echo '<div class="obfx-post-grid ' . esc_attr( $class_to_add ) . '">';
|
268 |
+
obfx_show_post_grid_thumbnail( $settings );
|
269 |
+
obfx_show_post_grid_title( $settings );
|
270 |
+
obfx_show_post_grid_meta( $settings );
|
271 |
+
obfx_show_post_grid_content( $settings );
|
272 |
+
echo '</div>';
|
273 |
+
echo '</div>';
|
274 |
+
}
|
275 |
+
|
276 |
+
if ( $settings->show_pagination === 'yes' ) {
|
277 |
+
echo '<div class="obfx-post-grid-pagination">';
|
278 |
+
FLBuilderLoop::pagination( $query );
|
279 |
+
echo '</div>';
|
280 |
+
}
|
281 |
+
}
|
282 |
+
|
283 |
+
wp_reset_postdata();
|
obfx_modules/beaver-widgets/modules/post-grid/includes/loop-settings.php
ADDED
@@ -0,0 +1,287 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Default Settings
|
4 |
+
$default_posts_per_page = get_option( 'posts_per_page' );
|
5 |
+
$defaults = array(
|
6 |
+
'data_source' => 'custom_query',
|
7 |
+
'post_type' => 'post',
|
8 |
+
'order_by' => 'date',
|
9 |
+
'order' => 'DESC',
|
10 |
+
'offset' => 0,
|
11 |
+
'users' => '',
|
12 |
+
'posts_per_page' => $default_posts_per_page,
|
13 |
+
);
|
14 |
+
|
15 |
+
$tab_defaults = isset( $tab['defaults'] ) ? $tab['defaults'] : array();
|
16 |
+
$settings = (object) array_merge( $defaults, $tab_defaults, (array) $settings );
|
17 |
+
$settings = apply_filters( 'fl_builder_loop_settings', $settings ); // Allow extension of default Values
|
18 |
+
|
19 |
+
do_action( 'fl_builder_loop_settings_before_form', $settings ); // e.g Add custom FLBuilder::render_settings_field()
|
20 |
+
|
21 |
+
?>
|
22 |
+
<div class="fl-custom-query fl-loop-data-source" data-source="custom_query">
|
23 |
+
<div id="fl-builder-settings-section-general" class="fl-builder-settings-section">
|
24 |
+
<h3 class="fl-builder-settings-title"><?php _e( 'Custom Query', 'themeisle-companion' ); ?></h3>
|
25 |
+
<table class="fl-form-table">
|
26 |
+
<?php
|
27 |
+
|
28 |
+
// Post type
|
29 |
+
FLBuilder::render_settings_field(
|
30 |
+
'post_type', array(
|
31 |
+
'type' => 'post-type',
|
32 |
+
'label' => esc_html__( 'Post Type', 'themeisle-companion' ),
|
33 |
+
), $settings
|
34 |
+
);
|
35 |
+
|
36 |
+
// Order
|
37 |
+
FLBuilder::render_settings_field(
|
38 |
+
'order', array(
|
39 |
+
'type' => 'select',
|
40 |
+
'label' => esc_html__( 'Order', 'themeisle-companion' ),
|
41 |
+
'options' => array(
|
42 |
+
'DESC' => esc_html__( 'Descending', 'themeisle-companion' ),
|
43 |
+
'ASC' => esc_html__( 'Ascending', 'themeisle-companion' ),
|
44 |
+
),
|
45 |
+
), $settings
|
46 |
+
);
|
47 |
+
|
48 |
+
// Order by
|
49 |
+
FLBuilder::render_settings_field(
|
50 |
+
'order_by', array(
|
51 |
+
'type' => 'select',
|
52 |
+
'label' => esc_html__( 'Order By', 'themeisle-companion' ),
|
53 |
+
'options' => array(
|
54 |
+
'author' => esc_html__( 'Author', 'themeisle-companion' ),
|
55 |
+
'comment_count' => esc_html__( 'Comment Count', 'themeisle-companion' ),
|
56 |
+
'date' => esc_html__( 'Date', 'themeisle-companion' ),
|
57 |
+
'modified' => esc_html__( 'Date Last Modified', 'themeisle-companion' ),
|
58 |
+
'ID' => esc_html__( 'ID', 'themeisle-companion' ),
|
59 |
+
'menu_order' => esc_html__( 'Menu Order', 'themeisle-companion' ),
|
60 |
+
'meta_value' => esc_html__( 'Meta Value (Alphabetical)', 'themeisle-companion' ),
|
61 |
+
'meta_value_num' => esc_html__( 'Meta Value (Numeric)', 'themeisle-companion' ),
|
62 |
+
'rand' => esc_html__( 'Random', 'themeisle-companion' ),
|
63 |
+
'title' => esc_html__( 'Title', 'themeisle-companion' ),
|
64 |
+
),
|
65 |
+
'toggle' => array(
|
66 |
+
'meta_value' => array(
|
67 |
+
'fields' => array( 'order_by_meta_key' ),
|
68 |
+
),
|
69 |
+
'meta_value_num' => array(
|
70 |
+
'fields' => array( 'order_by_meta_key' ),
|
71 |
+
),
|
72 |
+
),
|
73 |
+
), $settings
|
74 |
+
);
|
75 |
+
|
76 |
+
// Meta Key
|
77 |
+
FLBuilder::render_settings_field(
|
78 |
+
'order_by_meta_key', array(
|
79 |
+
'type' => 'text',
|
80 |
+
'label' => esc_html__( 'Meta Key', 'themeisle-companion' ),
|
81 |
+
), $settings
|
82 |
+
);
|
83 |
+
|
84 |
+
// Offset
|
85 |
+
FLBuilder::render_settings_field(
|
86 |
+
'offset', array(
|
87 |
+
'type' => 'text',
|
88 |
+
'label' => _x( 'Offset', 'How many posts to skip.', 'themeisle-companion' ),
|
89 |
+
'default' => '0',
|
90 |
+
'size' => '4',
|
91 |
+
'help' => esc_html__( 'Skip this many posts that match the specified criteria.', 'themeisle-companion' ),
|
92 |
+
), $settings
|
93 |
+
);
|
94 |
+
|
95 |
+
// Posts per page
|
96 |
+
FLBuilder::render_settings_field(
|
97 |
+
'posts_per_page', array(
|
98 |
+
'type' => 'obfx_number',
|
99 |
+
'label' => esc_html__( 'Posts per page', 'themeisle-companion' ),
|
100 |
+
'default' => $default_posts_per_page,
|
101 |
+
'min' => '-1',
|
102 |
+
'help' => esc_html__( '-1 means all posts', 'themeisle-companion' ),
|
103 |
+
), $settings
|
104 |
+
);
|
105 |
+
|
106 |
+
// Columns
|
107 |
+
FLBuilder::render_settings_field(
|
108 |
+
'columns', array(
|
109 |
+
'type' => 'obfx_number',
|
110 |
+
'label' => esc_html__( 'Number of columns', 'themeisle-companion' ),
|
111 |
+
'default' => '3',
|
112 |
+
'min' => '1',
|
113 |
+
'max' => '5',
|
114 |
+
), $settings
|
115 |
+
);
|
116 |
+
?>
|
117 |
+
</table>
|
118 |
+
</div>
|
119 |
+
<div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
|
120 |
+
<h3 class="fl-builder-settings-title"><?php _e( 'Filter', 'themeisle-companion' ); ?></h3>
|
121 |
+
<?php foreach ( FLBuilderLoop::post_types() as $slug => $type ) : ?>
|
122 |
+
<table class="fl-form-table fl-custom-query-filter fl-custom-query-<?php echo $slug; ?>-filter"
|
123 |
+
<?php
|
124 |
+
if ( $slug == $settings->post_type ) {
|
125 |
+
echo 'style="display:table;"';}
|
126 |
+
?>
|
127 |
+
>
|
128 |
+
<?php
|
129 |
+
|
130 |
+
// Posts
|
131 |
+
FLBuilder::render_settings_field(
|
132 |
+
'posts_' . $slug, array(
|
133 |
+
'type' => 'suggest',
|
134 |
+
'action' => 'fl_as_posts',
|
135 |
+
'data' => $slug,
|
136 |
+
'label' => $type->label,
|
137 |
+
'help' => sprintf( esc_html__( 'Enter a list of %1$s.', 'themeisle-companion' ), $type->label ),
|
138 |
+
'matching' => true,
|
139 |
+
), $settings
|
140 |
+
);
|
141 |
+
|
142 |
+
// Taxonomies
|
143 |
+
$taxonomies = FLBuilderLoop::taxonomies( $slug );
|
144 |
+
|
145 |
+
foreach ( $taxonomies as $tax_slug => $tax ) {
|
146 |
+
|
147 |
+
FLBuilder::render_settings_field(
|
148 |
+
'tax_' . $slug . '_' . $tax_slug, array(
|
149 |
+
'type' => 'suggest',
|
150 |
+
'action' => 'fl_as_terms',
|
151 |
+
'data' => $tax_slug,
|
152 |
+
'label' => $tax->label,
|
153 |
+
'help' => sprintf( esc_html__( 'Enter a list of %1$s.', 'themeisle-companion' ), $tax->label ),
|
154 |
+
'matching' => true,
|
155 |
+
), $settings
|
156 |
+
);
|
157 |
+
}
|
158 |
+
|
159 |
+
?>
|
160 |
+
</table>
|
161 |
+
<?php endforeach; ?>
|
162 |
+
<table class="fl-form-table">
|
163 |
+
<?php
|
164 |
+
|
165 |
+
// Author
|
166 |
+
FLBuilder::render_settings_field(
|
167 |
+
'users', array(
|
168 |
+
'type' => 'suggest',
|
169 |
+
'action' => 'fl_as_users',
|
170 |
+
'label' => esc_html__( 'Authors', 'themeisle-companion' ),
|
171 |
+
'help' => esc_html__( 'Enter a list of authors usernames.', 'themeisle-companion' ),
|
172 |
+
'matching' => true,
|
173 |
+
), $settings
|
174 |
+
);
|
175 |
+
|
176 |
+
?>
|
177 |
+
</table>
|
178 |
+
</div>
|
179 |
+
<div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
|
180 |
+
<h3 class="fl-builder-settings-title"><?php _e( 'Appearance', 'themeisle-companion' ); ?></h3>
|
181 |
+
<table class="fl-form-table">
|
182 |
+
|
183 |
+
<?php
|
184 |
+
// Vertical align
|
185 |
+
FLBuilder::render_settings_field(
|
186 |
+
'card_vertical_align', array(
|
187 |
+
'type' => 'select',
|
188 |
+
'label' => esc_html__( 'Vertical align', 'themeisle-companion' ),
|
189 |
+
'default' => 'grid',
|
190 |
+
'options' => array(
|
191 |
+
'top' => esc_html__( 'Top', 'themeisle-companion' ),
|
192 |
+
'middle' => esc_html__( 'Middle', 'themeisle-companion' ),
|
193 |
+
'bottom' => esc_html__( 'Bottom', 'themeisle-companion' ),
|
194 |
+
),
|
195 |
+
), $settings
|
196 |
+
);
|
197 |
+
|
198 |
+
// Display type
|
199 |
+
FLBuilder::render_settings_field(
|
200 |
+
'display_type', array(
|
201 |
+
'type' => 'select',
|
202 |
+
'label' => esc_html__( 'Display type', 'themeisle-companion' ),
|
203 |
+
'default' => 'grid',
|
204 |
+
'options' => array(
|
205 |
+
'grid' => esc_html__( 'Grid', 'themeisle-companion' ),
|
206 |
+
'list' => esc_html__( 'List', 'themeisle-companion' ),
|
207 |
+
),
|
208 |
+
), $settings
|
209 |
+
);
|
210 |
+
|
211 |
+
// Card layout
|
212 |
+
FLBuilder::render_settings_field(
|
213 |
+
'card_layout', array(
|
214 |
+
'type' => 'obfx_toggle',
|
215 |
+
'label' => esc_html__( 'Card layout', 'themeisle-companion' ),
|
216 |
+
), $settings
|
217 |
+
);
|
218 |
+
|
219 |
+
// Padding top
|
220 |
+
FLBuilder::render_settings_field(
|
221 |
+
'card_margin_top', array(
|
222 |
+
'type' => 'obfx_number',
|
223 |
+
'label' => esc_html__( 'Margin top', 'themeisle-companion' ),
|
224 |
+
'default' => '0',
|
225 |
+
'min' => '0',
|
226 |
+
), $settings
|
227 |
+
);
|
228 |
+
|
229 |
+
// Padding bottom
|
230 |
+
FLBuilder::render_settings_field(
|
231 |
+
'card_margin_bottom', array(
|
232 |
+
'type' => 'obfx_number',
|
233 |
+
'label' => esc_html__( 'Margin bottom', 'themeisle-companion' ),
|
234 |
+
'default' => '30',
|
235 |
+
'min' => '0',
|
236 |
+
), $settings
|
237 |
+
);
|
238 |
+
|
239 |
+
// Background color
|
240 |
+
FLBuilder::render_settings_field(
|
241 |
+
'post_bg_color', array(
|
242 |
+
'type' => 'color',
|
243 |
+
'label' => __( 'Background color', 'themeisle-companion' ),
|
244 |
+
'show_reset' => true,
|
245 |
+
'show_alpha' => true,
|
246 |
+
'preview' => array(
|
247 |
+
'type' => 'css',
|
248 |
+
'selector' => '.obfx-post-grid',
|
249 |
+
'property' => 'background-color',
|
250 |
+
),
|
251 |
+
|
252 |
+
), $settings
|
253 |
+
);
|
254 |
+
|
255 |
+
// Link color
|
256 |
+
FLBuilder::render_settings_field(
|
257 |
+
'post_link_color', array(
|
258 |
+
'type' => 'color',
|
259 |
+
'label' => __( 'Link color', 'themeisle-companion' ),
|
260 |
+
'show_reset' => true,
|
261 |
+
'preview' => array(
|
262 |
+
'type' => 'css',
|
263 |
+
'selector' => '.obfx-post-grid a, .obfx-post-grid-pagination a',
|
264 |
+
'property' => 'color',
|
265 |
+
),
|
266 |
+
), $settings
|
267 |
+
);
|
268 |
+
|
269 |
+
// Link color
|
270 |
+
FLBuilder::render_settings_field(
|
271 |
+
'post_text_color', array(
|
272 |
+
'type' => 'color',
|
273 |
+
'label' => __( 'Text color', 'themeisle-companion' ),
|
274 |
+
'show_reset' => true,
|
275 |
+
'preview' => array(
|
276 |
+
'type' => 'css',
|
277 |
+
'selector' => '.obfx-post-grid, .obfx-post-grid-pagination',
|
278 |
+
'property' => 'color',
|
279 |
+
),
|
280 |
+
), $settings
|
281 |
+
);
|
282 |
+
?>
|
283 |
+
</table>
|
284 |
+
</div>
|
285 |
+
</div>
|
286 |
+
<?php
|
287 |
+
do_action( 'fl_builder_loop_settings_after_form', $settings ); // e.g Add custom FLBuilder::render_settings_field()
|
obfx_modules/beaver-widgets/modules/post-grid/post-grid.php
ADDED
@@ -0,0 +1,348 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Get the module directory.
|
4 |
+
$module_directory = $this->get_dir();
|
5 |
+
|
6 |
+
// Include custom fields
|
7 |
+
require_once( $module_directory . '/custom-fields/toggle-field/toggle_field.php' );
|
8 |
+
|
9 |
+
// Include common functions file.
|
10 |
+
require_once( $module_directory . '/inc/common-functions.php' );
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class PostGridModule
|
14 |
+
*/
|
15 |
+
class PostGridModule extends FLBuilderModule {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Constructor function for the module. You must pass the
|
19 |
+
* name, description, dir and url in an array to the parent class.
|
20 |
+
*
|
21 |
+
* @method __construct
|
22 |
+
*/
|
23 |
+
public function __construct() {
|
24 |
+
parent::__construct(
|
25 |
+
array(
|
26 |
+
'name' => esc_html__( 'Post Grid', 'themeisle-companion' ),
|
27 |
+
'description' => esc_html__( 'A method to display your posts.', 'themeisle-companion' ),
|
28 |
+
'category' => esc_html__( 'Orbit Fox Modules', 'themeisle-companion' ),
|
29 |
+
'dir' => BEAVER_WIDGETS_PATH . 'modules/post-grid/',
|
30 |
+
'url' => BEAVER_WIDGETS_URL . 'modules/post-grid/',
|
31 |
+
)
|
32 |
+
);
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Register the module and its form settings.
|
38 |
+
*/
|
39 |
+
$image_sizes = get_intermediate_image_sizes();
|
40 |
+
$choices = array();
|
41 |
+
if ( ! empty( $image_sizes ) ) {
|
42 |
+
foreach ( $image_sizes as $size ) {
|
43 |
+
$name = str_replace( '_', ' ', $size );
|
44 |
+
$name = str_replace( '-', ' ', $name );
|
45 |
+
$choices[ $size ] = ucfirst( $name );
|
46 |
+
}
|
47 |
+
}
|
48 |
+
FLBuilder::register_module(
|
49 |
+
'PostGridModule', array(
|
50 |
+
'loop_settings' => array(
|
51 |
+
'title' => esc_html__( 'Loop Settings', 'themeisle-companion' ),
|
52 |
+
'file' => BEAVER_WIDGETS_PATH . 'modules/post-grid/includes/loop-settings.php',
|
53 |
+
),
|
54 |
+
'image_options' => array(
|
55 |
+
'title' => esc_html__( 'Image options', 'themeisle-companion' ), // Tab title
|
56 |
+
'sections' => array(
|
57 |
+
'general' => array(
|
58 |
+
'title' => '',
|
59 |
+
'fields' => array(
|
60 |
+
'show_post_thumbnail' => array(
|
61 |
+
'type' => 'obfx_toggle',
|
62 |
+
'label' => esc_html__( 'Show post thumbnail', 'themeisle-companion' ),
|
63 |
+
'default' => 'yes',
|
64 |
+
),
|
65 |
+
'show_thumbnail_link' => array(
|
66 |
+
'type' => 'obfx_toggle',
|
67 |
+
'label' => esc_html__( 'Link in thumbnail', 'themeisle-companion' ),
|
68 |
+
'default' => 'no',
|
69 |
+
),
|
70 |
+
'thumbnail_shadow' => array(
|
71 |
+
'type' => 'obfx_toggle',
|
72 |
+
'label' => esc_html__( 'Enable thumbnail shadow', 'themeisle-companion' ),
|
73 |
+
'default' => 'no',
|
74 |
+
),
|
75 |
+
'image_size' => array(
|
76 |
+
'type' => 'select',
|
77 |
+
'label' => esc_html__( 'Image size', 'themeisle-companion' ),
|
78 |
+
'default' => 'medium_large',
|
79 |
+
'options' => $choices,
|
80 |
+
|
81 |
+
),
|
82 |
+
'image_alignment' => array(
|
83 |
+
'type' => 'select',
|
84 |
+
'label' => esc_html__( 'Image alignment', 'themeisle-companion' ),
|
85 |
+
'default' => 'center',
|
86 |
+
'options' => array(
|
87 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
88 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
89 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
90 |
+
),
|
91 |
+
'toggle' => array(
|
92 |
+
'left' => array(
|
93 |
+
'fields' => array('thumbnail_margin_left', 'thumbnail_margin_right'),
|
94 |
+
),
|
95 |
+
'right' => array(
|
96 |
+
'fields' => array('thumbnail_margin_left', 'thumbnail_margin_right'),
|
97 |
+
),
|
98 |
+
),
|
99 |
+
),
|
100 |
+
),
|
101 |
+
),
|
102 |
+
'thumbnail_margins' => themeisle_four_fields_control(
|
103 |
+
array(
|
104 |
+
'default' => array(
|
105 |
+
'top' => 0,
|
106 |
+
'bottom' => 30,
|
107 |
+
'left' => 0,
|
108 |
+
'right' => 0,
|
109 |
+
),
|
110 |
+
'selector' => '.obfx-post-grid-thumbnail',
|
111 |
+
'field_name_prefix' => 'thumbnail_margin_',
|
112 |
+
'type' => 'margin',
|
113 |
+
)
|
114 |
+
),
|
115 |
+
),
|
116 |
+
),
|
117 |
+
'title_options' => array(
|
118 |
+
'title' => esc_html__( 'Title options', 'themeisle-companion' ), // Tab title
|
119 |
+
'sections' => array(
|
120 |
+
'general' => array(
|
121 |
+
'title' => '',
|
122 |
+
'fields' => array(
|
123 |
+
'show_post_title' => array(
|
124 |
+
'type' => 'obfx_toggle',
|
125 |
+
'label' => esc_html__( 'Show post title', 'themeisle-companion' ),
|
126 |
+
'default' => 'yes',
|
127 |
+
),
|
128 |
+
'show_title_link' => array(
|
129 |
+
'type' => 'obfx_toggle',
|
130 |
+
'label' => esc_html__( 'Link on title', 'themeisle-companion' ),
|
131 |
+
'default' => 'yes',
|
132 |
+
),
|
133 |
+
'title_alignment' => array(
|
134 |
+
'type' => 'select',
|
135 |
+
'label' => esc_html__( 'Title alignment', 'themeisle-companion' ),
|
136 |
+
'default' => 'center',
|
137 |
+
'options' => array(
|
138 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
139 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
140 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
141 |
+
),
|
142 |
+
|
143 |
+
),
|
144 |
+
'title_tag' => array(
|
145 |
+
'type' => 'select',
|
146 |
+
'label' => esc_html__( 'Title tag', 'themeisle-companion' ),
|
147 |
+
'default' => 'h5',
|
148 |
+
'options' => array(
|
149 |
+
'h1' => esc_html__( 'H1', 'themeisle-companion' ),
|
150 |
+
'h2' => esc_html__( 'H2', 'themeisle-companion' ),
|
151 |
+
'h3' => esc_html__( 'H3', 'themeisle-companion' ),
|
152 |
+
'h4' => esc_html__( 'H4', 'themeisle-companion' ),
|
153 |
+
'h5' => esc_html__( 'H5', 'themeisle-companion' ),
|
154 |
+
'h6' => esc_html__( 'H6', 'themeisle-companion' ),
|
155 |
+
'span' => esc_html__( 'span', 'themeisle-companion' ),
|
156 |
+
'p' => esc_html__( 'p', 'themeisle-companion' ),
|
157 |
+
'div' => esc_html__( 'div', 'themeisle-companion' ),
|
158 |
+
),
|
159 |
+
),
|
160 |
+
),
|
161 |
+
),
|
162 |
+
'title_margins' => themeisle_four_fields_control(
|
163 |
+
array(
|
164 |
+
'default' => array(
|
165 |
+
'top' => 0,
|
166 |
+
'bottom' => 0,
|
167 |
+
'left' => 0,
|
168 |
+
'right' => 0,
|
169 |
+
),
|
170 |
+
'selector' => '.obfx-post-grid-title',
|
171 |
+
'field_name_prefix' => 'title_padding_',
|
172 |
+
'type' => 'padding',
|
173 |
+
)
|
174 |
+
),
|
175 |
+
'title_typography' => themeisle_typography_settings(
|
176 |
+
array(
|
177 |
+
'prefix' => 'title_',
|
178 |
+
'selector' => '.obfx-post-grid-title',
|
179 |
+
'font_size_default' => 25,
|
180 |
+
)
|
181 |
+
),
|
182 |
+
),
|
183 |
+
),
|
184 |
+
'meta_options' => array(
|
185 |
+
'title' => esc_html__( 'Meta options', 'themeisle-companion' ), // Tab title
|
186 |
+
'sections' => array(
|
187 |
+
'general' => array(
|
188 |
+
'title' => '',
|
189 |
+
'fields' => array(
|
190 |
+
'show_post_meta' => array(
|
191 |
+
'type' => 'obfx_toggle',
|
192 |
+
'label' => esc_html__( 'Show post meta', 'themeisle-companion' ),
|
193 |
+
'default' => 'yes',
|
194 |
+
),
|
195 |
+
'show_icons' => array(
|
196 |
+
'type' => 'obfx_toggle',
|
197 |
+
'label' => esc_html__( 'Show icons', 'themeisle-companion' ),
|
198 |
+
'default' => 'yes',
|
199 |
+
'help' => esc_html__( 'If icons doesn\'t show you have to enqueue FontAwesome in your theme.', 'themeisle-companion' ),
|
200 |
+
),
|
201 |
+
'meta_data' => array(
|
202 |
+
'type' => 'select',
|
203 |
+
'label' => esc_html__( 'Display', 'themeisle-companion' ),
|
204 |
+
'default' => array('author', 'date'),
|
205 |
+
'options' => array(
|
206 |
+
'author' => esc_html__( 'Author', 'themeisle-companion' ),
|
207 |
+
'date' => esc_html__( 'Date', 'themeisle-companion' ),
|
208 |
+
'category' => esc_html__( 'Category', 'themeisle-companion' ),
|
209 |
+
'tags' => esc_html__( 'Tags', 'themeisle-companion' ),
|
210 |
+
'comments' => esc_html__( 'Comments', 'themeisle-companion' ),
|
211 |
+
),
|
212 |
+
'multi-select' => true,
|
213 |
+
),
|
214 |
+
'meta_alignment' => array(
|
215 |
+
'type' => 'select',
|
216 |
+
'label' => esc_html__( 'Meta alignment', 'themeisle-companion' ),
|
217 |
+
'default' => 'center',
|
218 |
+
'options' => array(
|
219 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
220 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
221 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
222 |
+
),
|
223 |
+
),
|
224 |
+
),
|
225 |
+
),
|
226 |
+
'meta_margins' => themeisle_four_fields_control(
|
227 |
+
array(
|
228 |
+
'default' => array(
|
229 |
+
'top' => 0,
|
230 |
+
'bottom' => 0,
|
231 |
+
'left' => 0,
|
232 |
+
'right' => 0,
|
233 |
+
),
|
234 |
+
'selector' => '.obfx-post-grid-meta',
|
235 |
+
'field_name_prefix' => 'meta_padding_',
|
236 |
+
'type' => 'padding',
|
237 |
+
)
|
238 |
+
),
|
239 |
+
'meta_typography' => themeisle_typography_settings(
|
240 |
+
array(
|
241 |
+
'prefix' => 'meta_',
|
242 |
+
'selector' => '.obfx-post-grid-meta',
|
243 |
+
'font_size_default' => 15,
|
244 |
+
)
|
245 |
+
),
|
246 |
+
),
|
247 |
+
),
|
248 |
+
'content_options' => array(
|
249 |
+
'title' => esc_html__( 'Content options', 'themeisle-companion' ), // Tab title
|
250 |
+
'sections' => array(
|
251 |
+
'general' => array(
|
252 |
+
'title' => '',
|
253 |
+
'fields' => array(
|
254 |
+
'show_post_content' => array(
|
255 |
+
'type' => 'obfx_toggle',
|
256 |
+
'label' => esc_html__( 'Show post content', 'themeisle-companion' ),
|
257 |
+
'default' => 'yes',
|
258 |
+
),
|
259 |
+
'show_read_more' => array(
|
260 |
+
'type' => 'obfx_toggle',
|
261 |
+
'label' => esc_html__( 'Show read more', 'themeisle-companion' ),
|
262 |
+
'default' => 'yes',
|
263 |
+
),
|
264 |
+
'content_length' => array(
|
265 |
+
'type' => 'obfx_number',
|
266 |
+
'label' => esc_html__( 'Number of words', 'themeisle-companion' ),
|
267 |
+
'default' => '30',
|
268 |
+
'min' => '1',
|
269 |
+
),
|
270 |
+
'read_more_text' => array(
|
271 |
+
'type' => 'text',
|
272 |
+
'label' => esc_html__( 'Read more text', 'themeisle-companion' ),
|
273 |
+
'default' => esc_html__( 'Read more', 'themeisle-companion' ),
|
274 |
+
'maxlength' => '70',
|
275 |
+
'size' => '30',
|
276 |
+
'preview' => array(
|
277 |
+
'type' => 'text',
|
278 |
+
'selector' => '.obfx-post-grid-read-more',
|
279 |
+
),
|
280 |
+
),
|
281 |
+
'content_alignment' => array(
|
282 |
+
'type' => 'select',
|
283 |
+
'label' => esc_html__( 'Text alignment', 'themeisle-companion' ),
|
284 |
+
'default' => 'left',
|
285 |
+
'options' => array(
|
286 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
287 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
288 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
289 |
+
),
|
290 |
+
|
291 |
+
),
|
292 |
+
),
|
293 |
+
),
|
294 |
+
'content_margins' => themeisle_four_fields_control(
|
295 |
+
array(
|
296 |
+
'default' => array(
|
297 |
+
'top' => 0,
|
298 |
+
'bottom' => 0,
|
299 |
+
'left' => 15,
|
300 |
+
'right' => 15,
|
301 |
+
),
|
302 |
+
'selector' => '.obfx-post-content',
|
303 |
+
'field_name_prefix' => 'content_padding_',
|
304 |
+
'type' => 'padding',
|
305 |
+
)
|
306 |
+
),
|
307 |
+
'content_typography' => themeisle_typography_settings(
|
308 |
+
array(
|
309 |
+
'prefix' => 'content_',
|
310 |
+
'selector' => '.obfx-post-content',
|
311 |
+
'font_size_default' => 20,
|
312 |
+
)
|
313 |
+
),
|
314 |
+
),
|
315 |
+
),
|
316 |
+
'pagination_options' => array(
|
317 |
+
'title' => esc_html__( 'Pagination options', 'themeisle-companion' ),
|
318 |
+
'sections' => array(
|
319 |
+
'general' => array(
|
320 |
+
'title' => '',
|
321 |
+
'fields' => array(
|
322 |
+
'show_pagination' => array(
|
323 |
+
'type' => 'obfx_toggle',
|
324 |
+
'label' => esc_html__( 'Enable pagination', 'themeisle-companion' ),
|
325 |
+
),
|
326 |
+
'pagination_alignment' => array(
|
327 |
+
'type' => 'select',
|
328 |
+
'label' => esc_html__( 'Pagination alignment', 'themeisle-companion' ),
|
329 |
+
'default' => 'center',
|
330 |
+
'options' => array(
|
331 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
332 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
333 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
334 |
+
),
|
335 |
+
),
|
336 |
+
),
|
337 |
+
),
|
338 |
+
'pagination_typography' => themeisle_typography_settings(
|
339 |
+
array(
|
340 |
+
'prefix' => 'pagination_',
|
341 |
+
'selector' => '.obfx-post-grid-pagination',
|
342 |
+
'font_size_default' => 20,
|
343 |
+
)
|
344 |
+
),
|
345 |
+
),
|
346 |
+
),
|
347 |
+
)
|
348 |
+
);
|
obfx_modules/beaver-widgets/modules/pricing-table/css/frontend.css
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* This file should contain frontend styles that
|
3 |
+
* will be applied to all module instances.
|
4 |
+
*/
|
5 |
+
|
6 |
+
.obfx-card{
|
7 |
+
display: inline-block;
|
8 |
+
position: relative;
|
9 |
+
width: 100%;
|
10 |
+
margin-bottom: 30px;
|
11 |
+
border-radius: 6px;
|
12 |
+
color: rgba(0, 0, 0, 0.87);
|
13 |
+
background: #fff;
|
14 |
+
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
|
15 |
+
}
|
16 |
+
|
17 |
+
.obfx-pricing-header{
|
18 |
+
background-position: center;
|
19 |
+
background-size: cover;
|
20 |
+
}
|
21 |
+
|
22 |
+
.obfx-pricing-header *{
|
23 |
+
padding: 0;
|
24 |
+
margin: 0;
|
25 |
+
}
|
26 |
+
|
27 |
+
.blog-post .section-text .obfx-pricing-header p{
|
28 |
+
margin: 0;
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
.obfx-pricing-features{
|
33 |
+
list-style-type: none;
|
34 |
+
padding: 0;
|
35 |
+
margin: 0;
|
36 |
+
}
|
37 |
+
|
38 |
+
.obfx-pricing-features li{
|
39 |
+
padding: 0;
|
40 |
+
margin: 0;
|
41 |
+
}
|
42 |
+
|
43 |
+
.obfx-pricing-feature-content{
|
44 |
+
float: left;
|
45 |
+
width: 100%;
|
46 |
+
}
|
47 |
+
|
48 |
+
.obfx-pricing-features hr{
|
49 |
+
margin: 0;
|
50 |
+
width: 100%;
|
51 |
+
float: left;
|
52 |
+
}
|
53 |
+
|
54 |
+
.obfx-pricing-features li i{
|
55 |
+
margin-right: 10px;
|
56 |
+
}
|
57 |
+
|
58 |
+
.obfx-plan-bottom{
|
59 |
+
float: left;
|
60 |
+
width: 100%;
|
61 |
+
}
|
62 |
+
|
63 |
+
a.obfx-plan-button{
|
64 |
+
margin: 0;
|
65 |
+
text-transform: none;
|
66 |
+
}
|
obfx_modules/beaver-widgets/modules/pricing-table/includes/frontend.css.php
ADDED
@@ -0,0 +1,271 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$text_position = ! empty( $settings->text_position ) ? $settings->text_position : '';
|
3 |
+
if ( ! empty( $text_position ) ) {
|
4 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-plan > div,.fl-node-' . $id . ' .obfx-pricing-plan li{';
|
5 |
+
echo 'text-align:' . $text_position . ';';
|
6 |
+
echo '}';
|
7 |
+
}
|
8 |
+
|
9 |
+
$padding_top = ! empty( $settings->top ) ? $settings->top : '';
|
10 |
+
$padding_bottom = ! empty( $settings->bottom ) ? $settings->bottom : '';
|
11 |
+
$padding_left = ! empty( $settings->left ) ? $settings->left : '';
|
12 |
+
$padding_right = ! empty( $settings->right ) ? $settings->right : '';
|
13 |
+
echo '.fl-node-' . $id . '.obfx-pricing-header{';
|
14 |
+
echo ! empty( $padding_top ) ? 'padding-top: ' . $padding_top . 'px;' : '';
|
15 |
+
echo ! empty( $padding_bottom ) ? 'padding-bottom: ' . $padding_bottom . 'px;' : '';
|
16 |
+
echo ! empty( $padding_left ) ? 'padding-left: ' . $padding_left . 'px;' : '';
|
17 |
+
echo ! empty( $padding_right ) ? 'padding-right: ' . $padding_right . 'px;' : '';
|
18 |
+
|
19 |
+
$type = $settings->bg_type;
|
20 |
+
switch ( $type ) {
|
21 |
+
case 'color':
|
22 |
+
$bg_color = ! empty( $settings->header_bg_color ) ? $settings->header_bg_color : '';
|
23 |
+
if ( ! empty( $bg_color ) ) {
|
24 |
+
$bg_color = strpos( $bg_color, 'rgba' ) !== false ? 'background-color:' . $bg_color : 'background-color:#' . $bg_color;
|
25 |
+
echo $bg_color . ';';
|
26 |
+
}
|
27 |
+
break;
|
28 |
+
case 'image':
|
29 |
+
$bg_image = ! empty( $settings->header_bg_image ) ? $settings->header_bg_image : '';
|
30 |
+
if ( ! empty( $bg_image ) ) {
|
31 |
+
echo 'background-image:url(' . wp_get_attachment_url( $bg_image ) . ');';
|
32 |
+
}
|
33 |
+
break;
|
34 |
+
case 'gradient':
|
35 |
+
$gradient_color1 = ! empty( $settings->gradient_color1 ) ? $settings->gradient_color1 : '';
|
36 |
+
$gradient_color2 = ! empty( $settings->gradient_color2 ) ? $settings->gradient_color2 : '';
|
37 |
+
$gradient_orientation = ! empty( $settings->gradient_orientation ) ? $settings->gradient_orientation : '';
|
38 |
+
$pos1 = 'left';
|
39 |
+
$pos2 = 'left';
|
40 |
+
$pos3 = 'to right';
|
41 |
+
switch ( $gradient_orientation ) {
|
42 |
+
case 'vertical':
|
43 |
+
$pos1 = 'top';
|
44 |
+
$pos2 = 'to bottom';
|
45 |
+
$type = 'linear-gradient';
|
46 |
+
break;
|
47 |
+
case 'diagonal_bottom':
|
48 |
+
$pos1 = '-45deg';
|
49 |
+
$pos2 = '135deg';
|
50 |
+
$type = 'linear-gradient';
|
51 |
+
break;
|
52 |
+
case 'diagonal_top':
|
53 |
+
$pos1 = '45deg';
|
54 |
+
$pos2 = '45deg';
|
55 |
+
$type = 'linear-gradient';
|
56 |
+
break;
|
57 |
+
case 'radial':
|
58 |
+
$pos1 = 'center, ellipse cover';
|
59 |
+
$pos2 = 'ellipse at center';
|
60 |
+
$type = 'radial-gradient';
|
61 |
+
break;
|
62 |
+
}
|
63 |
+
|
64 |
+
if ( ! empty( $gradient_color1 ) ) {
|
65 |
+
$gradient_color1 = strpos( $gradient_color1, 'rgba' ) !== false ? $gradient_color1 : '#' . $gradient_color1;
|
66 |
+
if ( ! empty( $gradient_color2 ) ) {
|
67 |
+
$gradient_color2 = strpos( $gradient_color2, 'rgba' ) !== false ? $gradient_color2 : '#' . $gradient_color2;
|
68 |
+
echo '
|
69 |
+
background: -moz-' . esc_attr( $type ) . '(' . esc_attr( $pos1 ) . ', ' . esc_attr( $gradient_color1 ) . ' 0%, ' . esc_attr( $gradient_color2 ) . ' 100%);
|
70 |
+
background: -webkit-' . esc_attr( $type ) . '(' . esc_attr( $pos1 ) . ', ' . esc_attr( $gradient_color1 ) . ' 0%, ' . esc_attr( $gradient_color2 ) . ' 100%);
|
71 |
+
background: ' . esc_attr( $type ) . '(' . esc_attr( $pos2 ) . ', ' . esc_attr( $gradient_color1 ) . ' 0%, ' . esc_attr( $gradient_color2 ) . ' 100%);';
|
72 |
+
} else {
|
73 |
+
echo 'background-color:' . esc_attr( $gradient_color1 ) . ';';
|
74 |
+
}
|
75 |
+
}
|
76 |
+
break;
|
77 |
+
}
|
78 |
+
echo '}';
|
79 |
+
|
80 |
+
$title_color = ! empty( $settings->title_color ) ? $settings->title_color : '';
|
81 |
+
if ( ! empty( $title_color ) ) {
|
82 |
+
$title_color = strpos( $title_color, 'rgba' ) !== false ? $title_color : '#' . $title_color;
|
83 |
+
}
|
84 |
+
$title_font_size = ! empty( $settings->title_font_size ) ? $settings->title_font_size : '';
|
85 |
+
$title_font_family = ! empty( $settings->title_font_family['family'] ) ? $settings->title_font_family['family'] : '';
|
86 |
+
$title_font_weight = ! empty( $settings->title_font_family['weight'] ) ? $settings->title_font_family['weight'] : '';
|
87 |
+
$title_transform = ! empty( $settings->title_transform ) ? $settings->title_transform : '';
|
88 |
+
$title_font_style = ! empty( $settings->title_font_style ) ? $settings->title_font_style : '';
|
89 |
+
$title_line_height = ! empty( $settings->title_line_height ) ? $settings->title_line_height : '';
|
90 |
+
$title_letter_spacing = ! empty( $settings->title_letter_spacing ) ? $settings->title_letter_spacing : '';
|
91 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-header *:first-child{';
|
92 |
+
echo ! empty( $title_color ) ? 'color: ' . $title_color . ';' : '';
|
93 |
+
echo ! empty( $title_font_size ) ? 'font-size: ' . $title_font_size . 'px;' : '';
|
94 |
+
echo ! empty( $title_font_family ) ? 'font-family: ' . $title_font_family . ';' : '';
|
95 |
+
echo ! empty( $title_font_weight ) ? 'font-weight: ' . $title_font_weight . ';' : '';
|
96 |
+
echo ! empty( $title_transform ) ? 'text-transform: ' . $title_transform . ';' : '';
|
97 |
+
echo ! empty( $title_font_style ) ? 'font-style: ' . $title_font_style . ';' : '';
|
98 |
+
echo ! empty( $title_line_height ) ? 'line-height: ' . $title_line_height . 'px;' : '';
|
99 |
+
echo ! empty( $title_letter_spacing ) ? 'letter-spacing: ' . $title_letter_spacing . 'px;' : '';
|
100 |
+
echo '}';
|
101 |
+
|
102 |
+
|
103 |
+
$subtitle_color = ! empty( $settings->subtitle_color ) ? $settings->subtitle_color : '';
|
104 |
+
if ( ! empty( $subtitle_color ) ) {
|
105 |
+
$subtitle_color = strpos( $subtitle_color, 'rgba' ) !== false ? $subtitle_color : '#' . $subtitle_color;
|
106 |
+
}
|
107 |
+
$subtitle_font_size = ! empty( $settings->subtitle_font_size ) ? $settings->subtitle_font_size : '';
|
108 |
+
$subtitle_font_family = ! empty( $settings->subtitle_font_family['family'] ) ? $settings->subtitle_font_family : '';
|
109 |
+
$subtitle_font_weight = ! empty( $settings->subtitle_font_family['weight'] ) ? $settings->subtitle_font_family : '';
|
110 |
+
$subtitle_transform = ! empty( $settings->subtitle_transform ) ? $settings->subtitle_transform : '';
|
111 |
+
$subtitle_font_style = ! empty( $settings->subtitle_font_style ) ? $settings->subtitle_font_style : '';
|
112 |
+
$subtitle_line_height = ! empty( $settings->subtitle_line_height ) ? $settings->subtitle_line_height : '';
|
113 |
+
$subtitle_letter_spacing = ! empty( $settings->subtitle_letter_spacing ) ? $settings->subtitle_letter_spacing : '';
|
114 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-header *:last-child{';
|
115 |
+
echo ! empty( $subtitle_color ) ? 'color: ' . $subtitle_color . ';' : '';
|
116 |
+
echo ! empty( $subtitle_font_size ) ? 'font-size: ' . $subtitle_font_size . 'px;' : '';
|
117 |
+
echo ! empty( $subtitle_font_family ) ? 'font-family: ' . $subtitle_font_family . ';' : '';
|
118 |
+
echo ! empty( $subtitle_font_weight ) ? 'font-weight: ' . $subtitle_font_weight . ';' : '';
|
119 |
+
echo ! empty( $subtitle_transform ) ? 'text-transform: ' . $subtitle_transform . ';' : '';
|
120 |
+
echo ! empty( $subtitle_font_style ) ? 'font-style: ' . $subtitle_font_style . ';' : '';
|
121 |
+
echo ! empty( $subtitle_line_height ) ? 'line-height: ' . $subtitle_line_height . 'px;' : '';
|
122 |
+
echo ! empty( $subtitle_letter_spacing ) ? 'letter-spacing: ' . $subtitle_letter_spacing . 'px;' : '';
|
123 |
+
echo '}';
|
124 |
+
|
125 |
+
$price_top = ! empty( $settings->price_top ) ? $settings->price_top : '';
|
126 |
+
$price_bottom = ! empty( $settings->price_bottom ) ? $settings->price_bottom : '';
|
127 |
+
$price_left = ! empty( $settings->price_left ) ? $settings->price_left : '';
|
128 |
+
$price_right = ! empty( $settings->price_right ) ? $settings->price_right : '';
|
129 |
+
$price_font_size = ! empty( $settings->price_font_size ) ? $settings->price_font_size : '';
|
130 |
+
$price_font_family = ! empty( $settings->price_font_family['family'] ) ? $settings->price_font_family['family'] : '';
|
131 |
+
$price_font_weight = ! empty( $settings->price_font_family['weight'] ) ? $settings->price_font_family['weight'] : '';
|
132 |
+
$price_transform = ! empty( $settings->price_transform ) ? $settings->price_transform : '';
|
133 |
+
$price_font_style = ! empty( $settings->price_font_style ) ? $settings->price_font_style : '';
|
134 |
+
$price_line_height = ! empty( $settings->price_line_height ) ? $settings->price_line_height : '';
|
135 |
+
$price_letter_spacing = ! empty( $settings->price_letter_spacing ) ? $settings->price_letter_spacing : '';
|
136 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-price{';
|
137 |
+
echo ! empty( $price_top ) ? 'padding-top: ' . $price_top . 'px;' : '';
|
138 |
+
echo ! empty( $price_bottom ) ? 'padding-bottom: ' . $price_bottom . 'px;' : '';
|
139 |
+
echo ! empty( $price_left ) ? 'padding-left: ' . $price_left . 'px;' : '';
|
140 |
+
echo ! empty( $price_right ) ? 'padding-right: ' . $price_right . 'px;' : '';
|
141 |
+
echo ! empty( $price_font_size ) ? 'font-size: ' . $price_font_size . 'px;' : '';
|
142 |
+
echo ! empty( $price_font_family ) ? 'font-family: ' . $price_font_family . ';' : '';
|
143 |
+
echo ! empty( $price_font_weight ) ? 'font-weight: ' . $price_font_weight . ';' : '';
|
144 |
+
echo ! empty( $price_transform ) ? 'text-transform: ' . $price_transform . ';' : '';
|
145 |
+
echo ! empty( $price_font_style ) ? 'font-style: ' . $price_font_style . ';' : '';
|
146 |
+
echo ! empty( $price_line_height ) ? 'line-height: ' . $price_line_height . 'px;' : '';
|
147 |
+
echo ! empty( $price_letter_spacing ) ? 'letter-spacing: ' . $price_letter_spacing . 'px;' : '';
|
148 |
+
echo '}';
|
149 |
+
|
150 |
+
if ( ! empty( $settings->price_color ) ) {
|
151 |
+
$price_color = strpos( $settings->price_color, 'rgba' ) !== false ? $settings->price_color : '#' . $settings->price_color;
|
152 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-price{';
|
153 |
+
echo 'color: ' . $price_color . ';';
|
154 |
+
echo '}';
|
155 |
+
}
|
156 |
+
|
157 |
+
if ( ! empty( $settings->currency_color ) ) {
|
158 |
+
$currency_color = strpos( $settings->currency_color, 'rgba' ) !== false ? $settings->currency_color : '#' . $settings->currency_color;
|
159 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-price sup{';
|
160 |
+
echo 'color: ' . $currency_color . ';';
|
161 |
+
echo '}';
|
162 |
+
}
|
163 |
+
|
164 |
+
if ( ! empty( $settings->period_color ) ) {
|
165 |
+
$period_color = strpos( $settings->period_color, 'rgba' ) !== false ? $settings->period_color : '#' . $settings->period_color;
|
166 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-price .obfx-period{';
|
167 |
+
echo 'color: ' . $period_color . ';';
|
168 |
+
echo '}';
|
169 |
+
}
|
170 |
+
$features_top = ! empty( $settings->features_right ) ? $settings->features_right : '';
|
171 |
+
$features_bottom = ! empty( $settings->features_right ) ? $settings->features_right : '';
|
172 |
+
$features_left = ! empty( $settings->features_right ) ? $settings->features_right : '';
|
173 |
+
$features_right = ! empty( $settings->features_right ) ? $settings->features_right : '';
|
174 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-features .obfx-pricing-feature-content{';
|
175 |
+
echo ! empty( $features_top ) ? 'padding-top: ' . $features_top . 'px;' : '';
|
176 |
+
echo ! empty( $features_bottom ) ? 'padding-bottom: ' . $features_bottom . 'px;' : '';
|
177 |
+
echo ! empty( $features_left ) ? 'padding-left: ' . $features_left . 'px;' : '';
|
178 |
+
echo ! empty( $features_right ) ? 'padding-right: ' . $features_right . 'px;' : '';
|
179 |
+
echo '}';
|
180 |
+
|
181 |
+
$feature_font_size = ! empty( $settings->feature_font_size ) ? $settings->feature_font_size : '';
|
182 |
+
$feature_transform = ! empty( $settings->feature_transform ) ? $settings->feature_transform : '';
|
183 |
+
$feature_font_style = ! empty( $settings->feature_font_style ) ? $settings->feature_font_style : '';
|
184 |
+
$feature_line_height = ! empty( $settings->feature_line_height ) ? $settings->feature_line_height : '';
|
185 |
+
$feature_letter_spacing = ! empty( $settings->feature_letter_spacing ) ? $settings->feature_letter_spacing : '';
|
186 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-features .obfx-pricing-feature-content * {';
|
187 |
+
echo ! empty( $feature_font_size ) ? 'font-size: ' . $feature_font_size . 'px;' : '';
|
188 |
+
echo ! empty( $feature_transform ) ? 'text-transform: ' . $feature_transform . ';' : '';
|
189 |
+
echo ! empty( $feature_font_style ) ? 'font-style: ' . $feature_font_style . ';' : '';
|
190 |
+
echo ! empty( $feature_line_height ) ? 'line-height: ' . $feature_line_height . 'px;' : '';
|
191 |
+
echo ! empty( $feature_letter_spacing ) ? 'letter-spacing: ' . $feature_letter_spacing . 'px;' : '';
|
192 |
+
echo '}';
|
193 |
+
|
194 |
+
if ( ! empty( $settings->feature_font_family['family'] ) ) {
|
195 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-features .obfx-pricing-feature-content:not(i){';
|
196 |
+
echo 'font-family: ' . $settings->feature_font_family['family'] . ';';
|
197 |
+
echo '}';
|
198 |
+
}
|
199 |
+
if ( ! empty( $settings->feature_font_family['weight'] ) ) {
|
200 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-features .obfx-pricing-feature-content:not(strong){';
|
201 |
+
echo 'font-weight: ' . $settings->feature_font_family['weight'] . ';';
|
202 |
+
echo '}';
|
203 |
+
}
|
204 |
+
|
205 |
+
if ( ! empty( $settings->icon_color ) ) {
|
206 |
+
$icon_color = strpos( $settings->icon_color, 'rgba' ) !== false ? $settings->icon_color : '#' . $settings->icon_color;
|
207 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-feature-content i{';
|
208 |
+
echo 'color: ' . $icon_color . ';';
|
209 |
+
echo '}';
|
210 |
+
}
|
211 |
+
|
212 |
+
if ( ! empty( $settings->bold_color ) ) {
|
213 |
+
$bold_color = strpos( $settings->bold_color, 'rgba' ) !== false ? $settings->bold_color : '#' . $settings->bold_color;
|
214 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-feature-content strong{';
|
215 |
+
echo 'color: ' . $bold_color . ';';
|
216 |
+
echo '}';
|
217 |
+
}
|
218 |
+
|
219 |
+
if ( ! empty( $settings->feature_color ) ) {
|
220 |
+
$feature_color = strpos( $settings->feature_color, 'rgba' ) !== false ? $settings->feature_color : '#' . $settings->feature_color;
|
221 |
+
echo '.fl-node-' . $id . ' .obfx-pricing-feature-content:not(i):not(strong){';
|
222 |
+
echo 'color: ' . $feature_color . ';';
|
223 |
+
echo '}';
|
224 |
+
}
|
225 |
+
|
226 |
+
$button_margin_bottom = ! empty( $settings->button_margin_bottom ) ? $settings->button_margin_bottom : '';
|
227 |
+
$button_margin_left = ! empty( $settings->button_margin_left ) ? $settings->button_margin_left : '';
|
228 |
+
$button_margin_right = ! empty( $settings->button_margin_right ) ? $settings->button_margin_right : '';
|
229 |
+
$button_margin_top = ! empty( $settings->button_margin_top ) ? $settings->button_margin_top : '';
|
230 |
+
echo '.fl-node-' . $id . ' .obfx-plan-bottom{';
|
231 |
+
echo ! empty( $button_margin_bottom ) ? 'margin-bottom: ' . $button_margin_bottom . 'px;' : '';
|
232 |
+
echo ! empty( $button_margin_left ) ? 'margin-left: ' . $button_margin_left . 'px;' : '';
|
233 |
+
echo ! empty( $button_margin_right ) ? 'margin-right: ' . $button_margin_right . 'px;' : '';
|
234 |
+
echo ! empty( $button_margin_top ) ? 'margin-top: ' . $button_margin_top . 'px;' : '';
|
235 |
+
echo '}';
|
236 |
+
|
237 |
+
$button_padding_top = ! empty( $settings->button_padding_top ) ? $settings->button_padding_top : '';
|
238 |
+
$button_padding_bottom = ! empty( $settings->button_padding_bottom ) ? $settings->button_padding_bottom : '';
|
239 |
+
$button_padding_left = ! empty( $settings->button_padding_left ) ? $settings->button_padding_left : '';
|
240 |
+
$button_padding_right = ! empty( $settings->button_padding_right ) ? $settings->button_padding_right : '';
|
241 |
+
$button_font_size = ! empty( $settings->button_font_size ) ? $settings->button_font_size : '';
|
242 |
+
$button_transform = ! empty( $settings->button_transform ) ? $settings->button_transform : '';
|
243 |
+
$button_font_style = ! empty( $settings->button_font_style ) ? $settings->button_font_style : '';
|
244 |
+
$button_line_height = ! empty( $settings->button_line_height ) ? $settings->button_line_height : '';
|
245 |
+
$button_letter_spacing = ! empty( $settings->button_letter_spacing ) ? $settings->button_letter_spacing : '';
|
246 |
+
$button_font_family = ! empty( $settings->button_font_family['family'] ) ? $settings->button_font_family['family'] : '';
|
247 |
+
$button_font_weight = ! empty( $settings->button_font_family['weight'] ) ? $settings->button_font_family['weight'] : '';
|
248 |
+
$button_text_color = ! empty( $settings->button_text_color ) ? ( strpos( $settings->button_text_color, 'rgba' ) !== false ? $settings->button_text_color : '#' . $settings->button_text_color ) : '';
|
249 |
+
$button_bg_color = ! empty( $settings->button_bg_color ) ? ( strpos( $settings->button_bg_color, 'rgba' ) !== false ? $settings->button_bg_color : '#' . $settings->button_bg_color ) : '';
|
250 |
+
echo '.fl-node-' . $id . ' .obfx-plan-button{';
|
251 |
+
echo ! empty( $button_padding_top ) ? 'padding-top: ' . $button_padding_top . 'px;' : '';
|
252 |
+
echo ! empty( $button_padding_bottom ) ? 'padding-bottom: ' . $button_padding_bottom . 'px;' : '';
|
253 |
+
echo ! empty( $button_padding_left ) ? 'padding-left: ' . $button_padding_left . 'px;' : '';
|
254 |
+
echo ! empty( $button_padding_right ) ? 'padding-right: ' . $button_padding_right . 'px;' : '';
|
255 |
+
echo ! empty( $button_text_color ) ? 'color: ' . $button_text_color . ';' : '';
|
256 |
+
echo ! empty( $button_bg_color ) ? 'background-color: ' . $button_bg_color . ';' : '';
|
257 |
+
echo ! empty( $button_font_size ) ? 'font-size: ' . $button_font_size . 'px;' : '';
|
258 |
+
echo ! empty( $button_transform ) ? 'text-transform: ' . $button_transform . ';' : '';
|
259 |
+
echo ! empty( $button_font_style ) ? 'font-style: ' . $button_font_style . ';' : '';
|
260 |
+
echo ! empty( $button_line_height ) ? 'line-height: ' . $button_line_height . 'px;' : '';
|
261 |
+
echo ! empty( $button_letter_spacing ) ? 'letter-spacing: ' . $button_letter_spacing . 'px;' : '';
|
262 |
+
echo ! empty( $button_font_family ) ? 'font-family: ' . $button_font_family . ';' : '';
|
263 |
+
echo ! empty( $button_font_weight ) ? 'font-weight: ' . $button_font_weight . ';' : '';
|
264 |
+
echo '}';
|
265 |
+
|
266 |
+
$button_text_color_hover = ! empty( $settings->button_text_color_hover ) ? ( strpos( $settings->button_text_color_hover, 'rgba' ) !== false ? $settings->button_text_color_hover : '#' . $settings->button_text_color_hover ) : '';
|
267 |
+
$button_bg_color_hover = ! empty( $settings->button_bg_color_hover ) ? ( strpos( $settings->button_bg_color_hover, 'rgba' ) !== false ? $settings->button_bg_color_hover : '#' . $settings->button_bg_color_hover ) : '';
|
268 |
+
echo '.fl-node-' . $id . ' .obfx-plan-button:hover{';
|
269 |
+
echo ! empty( $button_text_color_hover ) ? 'color: ' . $button_text_color_hover . ';' : '';
|
270 |
+
echo ! empty( $button_bg_color_hover ) ? 'background-color: ' . $button_bg_color_hover . ';' : '';
|
271 |
+
echo '}';
|
obfx_modules/beaver-widgets/modules/pricing-table/includes/frontend.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file is used to render each pricing module instance.
|
4 |
+
* You have access to two variables in this file:
|
5 |
+
*
|
6 |
+
* $module An instance of your module class.
|
7 |
+
* $settings The module's settings.
|
8 |
+
*/
|
9 |
+
|
10 |
+
$class_to_add = $settings->card_layout === 'yes' ? 'obfx-card' : '';
|
11 |
+
|
12 |
+
echo '<div class="obfx-pricing-plan ' . esc_attr( $class_to_add ) . '">';
|
13 |
+
echo '<div class="obfx-pricing-header">';
|
14 |
+
echo '<' . $settings->plan_title_tag . ' class="obfx-plan-title text-center">' . wp_kses_post( $settings->plan_title ) . '</' . $settings->plan_title_tag . '>';
|
15 |
+
echo '<' . $settings->plan_subtitle_tag . ' class="obfx-plan-subtitle text-center">' . wp_kses_post( $settings->plan_subtitle ) . '</' . $settings->plan_subtitle_tag . '>';
|
16 |
+
echo '</div>';
|
17 |
+
echo '<div class="obfx-pricing-price text-center">';
|
18 |
+
switch ( $settings->currency_position ) {
|
19 |
+
case 'after':
|
20 |
+
echo '<span class="obfx-price">' . wp_kses_post( $settings->price ) . '</span><sup class="obfx-currency">' . wp_kses_post( $settings->currency ) . '</sup><span class="obfx-period">' . wp_kses_post( $settings->period ) . '</span>';
|
21 |
+
break;
|
22 |
+
case 'before':
|
23 |
+
echo '<sup>' . wp_kses_post( $settings->currency ) . '</sup><span class="obfx-price">' . wp_kses_post( $settings->price ) . '</span><span class="obfx-period">' . wp_kses_post( $settings->period ) . '</span>';
|
24 |
+
break;
|
25 |
+
}
|
26 |
+
echo '</div>';
|
27 |
+
|
28 |
+
$features = $settings->features;
|
29 |
+
if ( ! empty( $features ) ) {
|
30 |
+
echo '<ul class="obfx-pricing-features text-center">';
|
31 |
+
foreach ( $features as $feature ) {
|
32 |
+
$icon = ! empty( $feature->icon ) ? $feature->icon : '';
|
33 |
+
$bold_text = ! empty( $feature->bold_text ) ? $feature->bold_text : '';
|
34 |
+
$text = ! empty( $feature->text ) ? $feature->text : '';
|
35 |
+
$section_is_empty = empty( $icon ) && empty( $bold_text ) && empty( $text );
|
36 |
+
if ( ! $section_is_empty ) {
|
37 |
+
echo '<li><span class="obfx-pricing-feature-content">';
|
38 |
+
if ( ! empty( $icon ) ) {
|
39 |
+
echo '<i class="fa ' . esc_attr( $icon ) . '"></i>';
|
40 |
+
}
|
41 |
+
if ( ! empty( $bold_text ) ) {
|
42 |
+
echo '<strong>' . wp_kses_post( $bold_text ) . ' </strong> ';
|
43 |
+
}
|
44 |
+
if ( ! empty( $text ) ) {
|
45 |
+
echo wp_kses_post( $text );
|
46 |
+
}
|
47 |
+
echo '</span><hr>';
|
48 |
+
echo '</li>';
|
49 |
+
}
|
50 |
+
}
|
51 |
+
echo '</ul>';
|
52 |
+
}
|
53 |
+
|
54 |
+
$button_text = ! empty( $settings->text ) ? $settings->text : '';
|
55 |
+
$button_link = ! empty( $settings->link ) ? $settings->link : '';
|
56 |
+
if ( ! empty( $button_text ) ) {
|
57 |
+
echo '<div class="obfx-plan-bottom text-center">';
|
58 |
+
echo '<a class="btn obfx-plan-button" href="' . esc_url( $button_link ) . '">' . wp_kses_post( $button_text ) . '</a>';
|
59 |
+
echo '</div>';
|
60 |
+
}
|
61 |
+
echo '</div>';
|
obfx_modules/beaver-widgets/modules/pricing-table/pricing-table.php
ADDED
@@ -0,0 +1,587 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Pricing table module.
|
4 |
+
*
|
5 |
+
* @package themeisle-companion
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Get the module directory.
|
9 |
+
$module_directory = $this->get_dir();
|
10 |
+
|
11 |
+
// Include common functions file.
|
12 |
+
require_once( $module_directory . '/inc/common-functions.php' );
|
13 |
+
|
14 |
+
// Include custom fields
|
15 |
+
require_once( $module_directory . '/custom-fields/toggle-field/toggle_field.php' );
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Class PricingTableModule
|
19 |
+
*/
|
20 |
+
class PricingTableModule extends FLBuilderModule {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Constructor function for the module. You must pass the
|
24 |
+
* name, description, dir and url in an array to the parent class.
|
25 |
+
*
|
26 |
+
* @method __construct
|
27 |
+
*/
|
28 |
+
public function __construct() {
|
29 |
+
parent::__construct(
|
30 |
+
array(
|
31 |
+
'name' => esc_html__( 'Pricing table', 'themeisle-companion' ),
|
32 |
+
'description' => esc_html__( 'Pricing Tables are the perfect option when showcasing services you have on offer.', 'themeisle-companion' ),
|
33 |
+
'category' => esc_html__( 'Orbit Fox Modules', 'themeisle-companion' ),
|
34 |
+
'dir' => BEAVER_WIDGETS_PATH . 'modules/pricing-table/',
|
35 |
+
'url' => BEAVER_WIDGETS_URL . 'modules/pricing-table/',
|
36 |
+
'editor_export' => true, // Defaults to true and can be omitted.
|
37 |
+
'enabled' => true, // Defaults to true and can be omitted.
|
38 |
+
)
|
39 |
+
);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Register the module and its form settings.
|
45 |
+
*/
|
46 |
+
FLBuilder::register_module(
|
47 |
+
'PricingTableModule', array(
|
48 |
+
'content' => array(
|
49 |
+
'title' => esc_html__( 'Content', 'themeisle-companion' ), // Tab title
|
50 |
+
'sections' => array(
|
51 |
+
'header' => array(
|
52 |
+
'title' => esc_html__( 'Plan Header', 'themeisle-companion' ),
|
53 |
+
'fields' => array(
|
54 |
+
'plan_title' => array(
|
55 |
+
'type' => 'text',
|
56 |
+
'label' => esc_html__( 'Title', 'themeisle-companion' ),
|
57 |
+
'default' => esc_html__( 'Plan title', 'themeisle-companion' ),
|
58 |
+
'preview' => array(
|
59 |
+
'type' => 'text',
|
60 |
+
'selector' => '.obfx-plan-title',
|
61 |
+
),
|
62 |
+
),
|
63 |
+
'plan_title_tag' => array(
|
64 |
+
'type' => 'select',
|
65 |
+
'label' => esc_html__( 'Title tag', 'themeisle-companion' ),
|
66 |
+
'default' => 'h2',
|
67 |
+
'options' => array(
|
68 |
+
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
|
69 |
+
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
|
70 |
+
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
|
71 |
+
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
|
72 |
+
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
|
73 |
+
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
|
74 |
+
'p' => esc_html__( 'p', 'themeisle-companion' ),
|
75 |
+
),
|
76 |
+
),
|
77 |
+
'plan_subtitle' => array(
|
78 |
+
'type' => 'text',
|
79 |
+
'label' => esc_html__( 'Subtitle', 'themeisle-companion' ),
|
80 |
+
'default' => esc_html__( 'Plan subtitle', 'themeisle-companion' ),
|
81 |
+
'preview' => array(
|
82 |
+
'type' => 'text',
|
83 |
+
'selector' => '.obfx-plan-subtitle',
|
84 |
+
),
|
85 |
+
),
|
86 |
+
'plan_subtitle_tag' => array(
|
87 |
+
'type' => 'select',
|
88 |
+
'label' => esc_html__( 'Subtitle tag', 'themeisle-companion' ),
|
89 |
+
'default' => 'p',
|
90 |
+
'options' => array(
|
91 |
+
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
|
92 |
+
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
|
93 |
+
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
|
94 |
+
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
|
95 |
+
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
|
96 |
+
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
|
97 |
+
'p' => esc_html__( 'p', 'themeisle-companion' ),
|
98 |
+
),
|
99 |
+
),
|
100 |
+
),
|
101 |
+
),
|
102 |
+
'price' => array(
|
103 |
+
'title' => esc_html__( 'Price Tag', 'themeisle-companion' ),
|
104 |
+
'fields' => array(
|
105 |
+
'price' => array(
|
106 |
+
'type' => 'text',
|
107 |
+
'label' => esc_html__( 'Price', 'themeisle-companion' ),
|
108 |
+
'default' => '50',
|
109 |
+
'preview' => array(
|
110 |
+
'type' => 'text',
|
111 |
+
'selector' => '.obfx-price',
|
112 |
+
),
|
113 |
+
),
|
114 |
+
'currency' => array(
|
115 |
+
'type' => 'text',
|
116 |
+
'label' => esc_html__( 'Currency', 'themeisle-companion' ),
|
117 |
+
'default' => '$',
|
118 |
+
'preview' => array(
|
119 |
+
'type' => 'text',
|
120 |
+
'selector' => '.obfx-currency',
|
121 |
+
),
|
122 |
+
),
|
123 |
+
'currency_position' => array(
|
124 |
+
'type' => 'select',
|
125 |
+
'label' => esc_html__( 'Currency position', 'themeisle-companion' ),
|
126 |
+
'default' => 'after',
|
127 |
+
'options' => array(
|
128 |
+
'before' => esc_html__( 'Before', 'themeisle-companion' ),
|
129 |
+
'after' => esc_html__( 'After', 'themeisle-companion' ),
|
130 |
+
),
|
131 |
+
),
|
132 |
+
'period' => array(
|
133 |
+
'type' => 'text',
|
134 |
+
'label' => esc_html__( 'Period', 'themeisle-companion' ),
|
135 |
+
'default' => esc_html__( '/month', 'themeisle-companion' ),
|
136 |
+
'preview' => array(
|
137 |
+
'type' => 'text',
|
138 |
+
'selector' => '.obfx-period',
|
139 |
+
),
|
140 |
+
),
|
141 |
+
),
|
142 |
+
),
|
143 |
+
'features' => array(
|
144 |
+
'title' => esc_html__( 'Features list', 'themeisle-companion' ),
|
145 |
+
'fields' => array(
|
146 |
+
'features' => array(
|
147 |
+
'multiple' => true,
|
148 |
+
'type' => 'form',
|
149 |
+
'label' => esc_html__( 'Feature', 'themeisle-companion' ),
|
150 |
+
'form' => 'feature_field', // ID of a registered form.
|
151 |
+
'preview_text' => 'text', // ID of a field to use for the preview text.
|
152 |
+
),
|
153 |
+
),
|
154 |
+
),
|
155 |
+
'button' => array(
|
156 |
+
'title' => esc_html__( 'Button', 'themeisle-companion' ),
|
157 |
+
'fields' => array(
|
158 |
+
'text' => array(
|
159 |
+
'type' => 'text',
|
160 |
+
'label' => esc_html__( 'Button text', 'themeisle-companion' ),
|
161 |
+
'default' => esc_html__( 'Button', 'themeisle-companion' ),
|
162 |
+
'preview' => array(
|
163 |
+
'type' => 'text',
|
164 |
+
'selector' => '.obfx-plan-button',
|
165 |
+
),
|
166 |
+
),
|
167 |
+
'link' => array(
|
168 |
+
'type' => 'link',
|
169 |
+
'label' => esc_html__( 'Button link', 'themeisle-companion' ),
|
170 |
+
),
|
171 |
+
),
|
172 |
+
),
|
173 |
+
'appearance' => array(
|
174 |
+
'title' => esc_html__( 'Appearance', 'themeisle-companion' ),
|
175 |
+
'fields' => array(
|
176 |
+
'card_layout' => array(
|
177 |
+
'type' => 'obfx_toggle',
|
178 |
+
'label' => esc_html__( 'Card layout', 'themeisle-companion' ),
|
179 |
+
'default' => 'yes',
|
180 |
+
),
|
181 |
+
'text_position' => array(
|
182 |
+
'type' => 'select',
|
183 |
+
'label' => esc_html__( 'Align', 'themeisle-companion' ),
|
184 |
+
'default' => 'center',
|
185 |
+
'options' => array(
|
186 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
187 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
188 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
189 |
+
),
|
190 |
+
),
|
191 |
+
),
|
192 |
+
),
|
193 |
+
),
|
194 |
+
),
|
195 |
+
'header_style' => array(
|
196 |
+
'title' => esc_html__( 'Header Style', 'themeisle-companion' ),
|
197 |
+
'sections' => array(
|
198 |
+
'header_padding' => themeisle_four_fields_control(
|
199 |
+
array(
|
200 |
+
'default' => array(
|
201 |
+
'top' => 15,
|
202 |
+
'bottom' => 15,
|
203 |
+
'left' => 0,
|
204 |
+
'right' => 0,
|
205 |
+
),
|
206 |
+
'selector' => '.obfx-pricing-header',
|
207 |
+
'field_name_prefix' => '',
|
208 |
+
)
|
209 |
+
),
|
210 |
+
'colors' => array(
|
211 |
+
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
|
212 |
+
'fields' => array(
|
213 |
+
'title_color' => array(
|
214 |
+
'type' => 'color',
|
215 |
+
'label' => esc_html__( 'Title color', 'themeisle-companion' ),
|
216 |
+
'preview' => array(
|
217 |
+
'type' => 'css',
|
218 |
+
'rules' => array(
|
219 |
+
array(
|
220 |
+
'selector' => '.obfx-pricing-header *:first-child',
|
221 |
+
'property' => 'color',
|
222 |
+
),
|
223 |
+
),
|
224 |
+
),
|
225 |
+
),
|
226 |
+
'subtitle_color' => array(
|
227 |
+
'type' => 'color',
|
228 |
+
'label' => esc_html__( 'Subtitle color', 'themeisle-companion' ),
|
229 |
+
'preview' => array(
|
230 |
+
'type' => 'css',
|
231 |
+
'rules' => array(
|
232 |
+
array(
|
233 |
+
'selector' => '.obfx-pricing-header *:last-child',
|
234 |
+
'property' => 'color',
|
235 |
+
),
|
236 |
+
),
|
237 |
+
),
|
238 |
+
),
|
239 |
+
),
|
240 |
+
),
|
241 |
+
'title_typography' => themeisle_typography_settings(
|
242 |
+
array(
|
243 |
+
'title' => esc_html__( 'Title typography', 'themeisle-companion' ),
|
244 |
+
'prefix' => 'title_',
|
245 |
+
'selector' => '.obfx-pricing-header *:first-child',
|
246 |
+
)
|
247 |
+
),
|
248 |
+
'subtitle_typography' => themeisle_typography_settings(
|
249 |
+
array(
|
250 |
+
'title' => esc_html__( 'Subtitle typography', 'themeisle-companion' ),
|
251 |
+
'prefix' => 'subtitle_',
|
252 |
+
'selector' => '.obfx-pricing-header *:last-child',
|
253 |
+
)
|
254 |
+
),
|
255 |
+
'header_background' => array(
|
256 |
+
'title' => esc_html__( 'Background', 'themeisle-companion' ),
|
257 |
+
'fields' => array(
|
258 |
+
'bg_type' => array(
|
259 |
+
'type' => 'select',
|
260 |
+
'label' => esc_html__( 'Type', 'themeisle-companion' ),
|
261 |
+
'default' => 'color',
|
262 |
+
'options' => array(
|
263 |
+
'color' => esc_html__( 'Color', 'themeisle-companion' ),
|
264 |
+
'image' => esc_html__( 'Background', 'themeisle-companion' ),
|
265 |
+
'gradient' => esc_html__( 'Gradient', 'themeisle-companion' ),
|
266 |
+
),
|
267 |
+
'toggle' => array(
|
268 |
+
'color' => array(
|
269 |
+
'fields' => array('header_bg_color'),
|
270 |
+
),
|
271 |
+
'image' => array(
|
272 |
+
'fields' => array('header_bg_image'),
|
273 |
+
),
|
274 |
+
'gradient' => array(
|
275 |
+
'fields' => array('gradient_color1', 'gradient_color2', 'gradient_orientation'),
|
276 |
+
),
|
277 |
+
),
|
278 |
+
),
|
279 |
+
'header_bg_color' => array(
|
280 |
+
'type' => 'color',
|
281 |
+
'label' => esc_html__( 'Background color', 'themeisle-companion' ),
|
282 |
+
'show_reset' => true,
|
283 |
+
'preview' => array(
|
284 |
+
'type' => 'css',
|
285 |
+
'rules' => array(
|
286 |
+
array(
|
287 |
+
'selector' => '.obfx-pricing-header',
|
288 |
+
'property' => 'background-color',
|
289 |
+
),
|
290 |
+
),
|
291 |
+
),
|
292 |
+
),
|
293 |
+
'header_bg_image' => array(
|
294 |
+
'type' => 'photo',
|
295 |
+
'label' => esc_html__( 'Photo Field', 'themeisle-companion' ),
|
296 |
+
'show_remove' => true,
|
297 |
+
),
|
298 |
+
'gradient_color1' => array(
|
299 |
+
'type' => 'color',
|
300 |
+
'label' => esc_html__( 'Gradient color 1', 'themeisle-companion' ),
|
301 |
+
'show_reset' => true,
|
302 |
+
),
|
303 |
+
'gradient_color2' => array(
|
304 |
+
'type' => 'color',
|
305 |
+
'label' => esc_html__( 'Gradient color 2', 'themeisle-companion' ),
|
306 |
+
'show_reset' => true,
|
307 |
+
),
|
308 |
+
'gradient_orientation' => array(
|
309 |
+
'type' => 'select',
|
310 |
+
'label' => esc_html__( 'Orientation', 'themeisle-companion' ),
|
311 |
+
'default' => 'horizontal',
|
312 |
+
'options' => array(
|
313 |
+
'horizontal' => esc_html__( 'Horizontal', 'themeisle-companion' ),
|
314 |
+
'vertical' => esc_html__( 'Vertical', 'themeisle-companion' ),
|
315 |
+
'diagonal_bottom' => esc_html__( 'Diagonal bottom', 'themeisle-companion' ),
|
316 |
+
'diagonal_top' => esc_html__( 'Diagonal top', 'themeisle-companion' ),
|
317 |
+
'radial' => esc_html__( 'Radial', 'themeisle-companion' ),
|
318 |
+
),
|
319 |
+
),
|
320 |
+
),
|
321 |
+
),
|
322 |
+
),
|
323 |
+
),
|
324 |
+
'price_style' => array(
|
325 |
+
'title' => esc_html__( 'Price Style', 'themeisle-companion' ),
|
326 |
+
'sections' => array(
|
327 |
+
'price_padding' => themeisle_four_fields_control(
|
328 |
+
array(
|
329 |
+
'default' => array(
|
330 |
+
'top' => 15,
|
331 |
+
'bottom' => 15,
|
332 |
+
'left' => 0,
|
333 |
+
'right' => 0,
|
334 |
+
),
|
335 |
+
'selector' => '.obfx-pricing-price',
|
336 |
+
'field_name_prefix' => 'price_',
|
337 |
+
)
|
338 |
+
),
|
339 |
+
'price_colors' => array(
|
340 |
+
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
|
341 |
+
'fields' => array(
|
342 |
+
'price_color' => array(
|
343 |
+
'type' => 'color',
|
344 |
+
'label' => esc_html__( 'Price color', 'themeisle-companion' ),
|
345 |
+
'preview' => array(
|
346 |
+
'type' => 'css',
|
347 |
+
'rules' => array(
|
348 |
+
array(
|
349 |
+
'selector' => '.obfx-price',
|
350 |
+
'property' => 'color',
|
351 |
+
),
|
352 |
+
),
|
353 |
+
),
|
354 |
+
),
|
355 |
+
'currency_color' => array(
|
356 |
+
'type' => 'color',
|
357 |
+
'label' => esc_html__( 'Currency color', 'themeisle-companion' ),
|
358 |
+
'preview' => array(
|
359 |
+
'type' => 'css',
|
360 |
+
'rules' => array(
|
361 |
+
array(
|
362 |
+
'selector' => '.obfx-pricing-price sup',
|
363 |
+
'property' => 'color',
|
364 |
+
),
|
365 |
+
),
|
366 |
+
),
|
367 |
+
),
|
368 |
+
'period_color' => array(
|
369 |
+
'type' => 'color',
|
370 |
+
'label' => esc_html__( 'Period color', 'themeisle-companion' ),
|
371 |
+
'preview' => array(
|
372 |
+
'type' => 'css',
|
373 |
+
'rules' => array(
|
374 |
+
array(
|
375 |
+
'selector' => '.obfx-period',
|
376 |
+
'property' => 'color',
|
377 |
+
),
|
378 |
+
),
|
379 |
+
),
|
380 |
+
),
|
381 |
+
),
|
382 |
+
),
|
383 |
+
'price_typography' => themeisle_typography_settings(
|
384 |
+
array(
|
385 |
+
'prefix' => 'price_',
|
386 |
+
'selector' => '.obfx-pricing-price',
|
387 |
+
'font_size_default' => 40,
|
388 |
+
)
|
389 |
+
),
|
390 |
+
),
|
391 |
+
),
|
392 |
+
'features_style' => array(
|
393 |
+
'title' => esc_html__( 'Features Style', 'themeisle-companion' ),
|
394 |
+
'sections' => array(
|
395 |
+
'features_padding' => themeisle_four_fields_control(
|
396 |
+
array(
|
397 |
+
'default' => array(
|
398 |
+
'top' => 15,
|
399 |
+
'bottom' => 15,
|
400 |
+
'left' => 0,
|
401 |
+
'right' => 0,
|
402 |
+
),
|
403 |
+
'selector' => '.obfx-pricing-price',
|
404 |
+
'field_name_prefix' => 'features_',
|
405 |
+
)
|
406 |
+
),
|
407 |
+
'features_colors' => array(
|
408 |
+
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
|
409 |
+
'fields' => array(
|
410 |
+
'icon_color' => array(
|
411 |
+
'type' => 'color',
|
412 |
+
'label' => esc_html__( 'Icon color', 'themeisle-companion' ),
|
413 |
+
'preview' => array(
|
414 |
+
'type' => 'css',
|
415 |
+
'rules' => array(
|
416 |
+
array(
|
417 |
+
'selector' => '.obfx-pricing-feature-content i',
|
418 |
+
'property' => 'color',
|
419 |
+
),
|
420 |
+
),
|
421 |
+
),
|
422 |
+
),
|
423 |
+
'bold_color' => array(
|
424 |
+
'type' => 'color',
|
425 |
+
'label' => esc_html__( 'Bold text color', 'themeisle-companion' ),
|
426 |
+
'preview' => array(
|
427 |
+
'type' => 'css',
|
428 |
+
'rules' => array(
|
429 |
+
array(
|
430 |
+
'selector' => '.obfx-pricing-feature-content strong',
|
431 |
+
'property' => 'color',
|
432 |
+
),
|
433 |
+
),
|
434 |
+
),
|
435 |
+
),
|
436 |
+
'feature_color' => array(
|
437 |
+
'type' => 'color',
|
438 |
+
'label' => esc_html__( 'Text color', 'themeisle-companion' ),
|
439 |
+
'preview' => array(
|
440 |
+
'type' => 'css',
|
441 |
+
'rules' => array(
|
442 |
+
array(
|
443 |
+
'selector' => '.obfx-pricing-feature-content:not(i):not(strong)',
|
444 |
+
'property' => 'color',
|
445 |
+
),
|
446 |
+
),
|
447 |
+
),
|
448 |
+
),
|
449 |
+
),
|
450 |
+
),
|
451 |
+
'feature_typography' => themeisle_typography_settings(
|
452 |
+
array(
|
453 |
+
'prefix' => 'feature_',
|
454 |
+
'selector' => '.obfx-pricing-feature-content *',
|
455 |
+
'font_size_default' => 17,
|
456 |
+
)
|
457 |
+
),
|
458 |
+
),
|
459 |
+
),
|
460 |
+
'button_style' => array(
|
461 |
+
'title' => esc_html__( 'Button Style', 'themeisle-companion' ),
|
462 |
+
'sections' => array(
|
463 |
+
'button_margins' => themeisle_four_fields_control(
|
464 |
+
array(
|
465 |
+
'default' => array(
|
466 |
+
'top' => 15,
|
467 |
+
'bottom' => 15,
|
468 |
+
'left' => 0,
|
469 |
+
'right' => 0,
|
470 |
+
),
|
471 |
+
'selector' => '.obfx-plan-bottom',
|
472 |
+
'field_name_prefix' => 'button_margin_',
|
473 |
+
'type' => 'margin',
|
474 |
+
)
|
475 |
+
),
|
476 |
+
'button_padding' => themeisle_four_fields_control(
|
477 |
+
array(
|
478 |
+
'default' => array(
|
479 |
+
'top' => 6,
|
480 |
+
'bottom' => 6,
|
481 |
+
'left' => 12,
|
482 |
+
'right' => 12,
|
483 |
+
),
|
484 |
+
'selector' => '.obfx-plan-button',
|
485 |
+
'field_name_prefix' => 'button_padding_',
|
486 |
+
)
|
487 |
+
),
|
488 |
+
'button_colors' => array(
|
489 |
+
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
|
490 |
+
'fields' => array(
|
491 |
+
'button_text_color' => array(
|
492 |
+
'type' => 'color',
|
493 |
+
'label' => esc_html__( 'Text', 'themeisle-companion' ),
|
494 |
+
'preview' => array(
|
495 |
+
'type' => 'css',
|
496 |
+
'rules' => array(
|
497 |
+
array(
|
498 |
+
'selector' => '.obfx-plan-button',
|
499 |
+
'property' => 'color',
|
500 |
+
),
|
501 |
+
),
|
502 |
+
),
|
503 |
+
),
|
504 |
+
'button_text_color_hover' => array(
|
505 |
+
'type' => 'color',
|
506 |
+
'label' => esc_html__( 'Text on hover', 'themeisle-companion' ),
|
507 |
+
'preview' => array(
|
508 |
+
'type' => 'css',
|
509 |
+
'rules' => array(
|
510 |
+
array(
|
511 |
+
'selector' => '.obfx-plan-button:hover',
|
512 |
+
'property' => 'color',
|
513 |
+
),
|
514 |
+
),
|
515 |
+
),
|
516 |
+
),
|
517 |
+
'button_bg_color' => array(
|
518 |
+
'type' => 'color',
|
519 |
+
'label' => esc_html__( 'Button background', 'themeisle-companion' ),
|
520 |
+
'preview' => array(
|
521 |
+
'type' => 'css',
|
522 |
+
'rules' => array(
|
523 |
+
array(
|
524 |
+
'selector' => '.obfx-plan-button',
|
525 |
+
'property' => 'background-color',
|
526 |
+
),
|
527 |
+
),
|
528 |
+
),
|
529 |
+
),
|
530 |
+
'button_bg_color_hover' => array(
|
531 |
+
'type' => 'color',
|
532 |
+
'label' => esc_html__( 'Button background on hover', 'themeisle-companion' ),
|
533 |
+
'preview' => array(
|
534 |
+
'type' => 'css',
|
535 |
+
'rules' => array(
|
536 |
+
array(
|
537 |
+
'selector' => '.obfx-plan-button:hover',
|
538 |
+
'property' => 'background-color',
|
539 |
+
),
|
540 |
+
),
|
541 |
+
),
|
542 |
+
),
|
543 |
+
),
|
544 |
+
),
|
545 |
+
'button_typography' => themeisle_typography_settings(
|
546 |
+
array(
|
547 |
+
'prefix' => 'button_',
|
548 |
+
'selector' => '.obfx-plan-button',
|
549 |
+
'font_size_default' => 15,
|
550 |
+
)
|
551 |
+
),
|
552 |
+
),
|
553 |
+
),
|
554 |
+
)
|
555 |
+
);
|
556 |
+
|
557 |
+
|
558 |
+
FLBuilder::register_settings_form(
|
559 |
+
'feature_field', array(
|
560 |
+
'title' => __( 'Feature', 'themeisle-companion' ),
|
561 |
+
'tabs' => array(
|
562 |
+
'general' => array(
|
563 |
+
'title' => esc_html__( 'General', 'themeisle-companion' ),
|
564 |
+
'sections' => array(
|
565 |
+
'general' => array(
|
566 |
+
'title' => '',
|
567 |
+
'fields' => array(
|
568 |
+
'bold_text' => array(
|
569 |
+
'type' => 'text',
|
570 |
+
'label' => esc_html__( 'Bold text', 'themeisle-companion' ),
|
571 |
+
),
|
572 |
+
'text' => array(
|
573 |
+
'type' => 'text',
|
574 |
+
'label' => esc_html__( 'Text', 'themeisle-companion' ),
|
575 |
+
),
|
576 |
+
'icon' => array(
|
577 |
+
'type' => 'icon',
|
578 |
+
'label' => esc_html__( 'Icon', 'themeisle-companion' ),
|
579 |
+
'show_remove' => true,
|
580 |
+
),
|
581 |
+
),
|
582 |
+
),
|
583 |
+
),
|
584 |
+
),
|
585 |
+
),
|
586 |
+
)
|
587 |
+
);
|
obfx_modules/beaver-widgets/modules/services/css/frontend.css
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* This file should contain frontend styles that
|
3 |
+
* will be applied to all module instances.
|
4 |
+
*/
|
5 |
+
.obfx-services-section{
|
6 |
+
text-align: center;
|
7 |
+
}
|
8 |
+
|
9 |
+
.obfx-service-title{
|
10 |
+
display: inline-block;
|
11 |
+
}
|
12 |
+
|
13 |
+
.obfx-card{
|
14 |
+
display: inline-block;
|
15 |
+
position: relative;
|
16 |
+
width: 100%;
|
17 |
+
margin-bottom: 30px;
|
18 |
+
border-radius: 6px;
|
19 |
+
color: rgba(0, 0, 0, 0.87);
|
20 |
+
background: #fff;
|
21 |
+
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
|
22 |
+
}
|
23 |
+
|
24 |
+
.obfx-service{
|
25 |
+
padding: 15px;
|
26 |
+
}
|
27 |
+
|
28 |
+
.obfx-service-icon{
|
29 |
+
vertical-align: middle;
|
30 |
+
}
|
31 |
+
|
32 |
+
.obfx-service-icon i{
|
33 |
+
vertical-align: inherit;
|
34 |
+
}
|
35 |
+
.obfx-service-icon .dashicons,.obfx-service-icon .dashicons-before:before{
|
36 |
+
width: inherit;
|
37 |
+
height: inherit;
|
38 |
+
font-size: inherit;
|
39 |
+
vertical-align: inherit;
|
40 |
+
}
|
obfx_modules/beaver-widgets/modules/services/includes/frontend.css.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$columns = $settings->column_number;
|
3 |
+
$column_width = 100 / (int) $columns;
|
4 |
+
|
5 |
+
echo '.fl-node-' . $id . ' .obfx-service-wrapper{';
|
6 |
+
echo 'display:inline-block;';
|
7 |
+
if ( ! empty( $column_width ) ) {
|
8 |
+
echo 'width:' . $column_width . '%;';
|
9 |
+
}
|
10 |
+
echo 'padding: 0 10px;';
|
11 |
+
echo '}';
|
12 |
+
|
13 |
+
$bg_color = $settings->background_color;
|
14 |
+
echo '.fl-node-' . $id . ' .obfx-service{';
|
15 |
+
if ( ! empty( $bg_color ) ) {
|
16 |
+
echo 'background:#' . $bg_color . ';';
|
17 |
+
}
|
18 |
+
echo '}';
|
19 |
+
|
20 |
+
|
21 |
+
$icon_size = $settings->icon_size;
|
22 |
+
$padding_top = $settings->icon_top;
|
23 |
+
$padding_bottom = $settings->icon_bottom;
|
24 |
+
$padding_left = $settings->icon_left;
|
25 |
+
$padding_right = $settings->icon_right;
|
26 |
+
$icon_position = $settings->icon_position;
|
27 |
+
|
28 |
+
echo '.fl-node-' . $id . ' .obfx-service-icon{';
|
29 |
+
if ( ! empty( $icon_size ) ) {
|
30 |
+
echo 'font-size:' . $icon_size . 'px;';
|
31 |
+
}
|
32 |
+
if ( ! empty( $padding_top ) ) {
|
33 |
+
echo 'padding-top:' . $padding_top . 'px;';
|
34 |
+
}
|
35 |
+
if ( ! empty( $padding_bottom ) ) {
|
36 |
+
echo 'padding-bottom:' . $padding_bottom . 'px;';
|
37 |
+
}
|
38 |
+
if ( ! empty( $padding_left ) ) {
|
39 |
+
echo 'padding-left:' . $padding_left . 'px;';
|
40 |
+
}
|
41 |
+
if ( ! empty( $padding_right ) ) {
|
42 |
+
echo 'padding-right:' . $padding_right . 'px;';
|
43 |
+
}
|
44 |
+
if ( ! empty( $icon_position ) && $icon_position !== 'center' ) {
|
45 |
+
echo 'float:' . $icon_position . ';';
|
46 |
+
}
|
47 |
+
|
48 |
+
echo '}';
|
49 |
+
|
50 |
+
|
51 |
+
$title_color = $settings->title_color;
|
52 |
+
$title_size = $settings->title_font_size;
|
53 |
+
$font_family = $settings->title_font_family['family'];
|
54 |
+
$font_weight = $settings->title_font_family['weight'];
|
55 |
+
$font_style = $settings->title_font_style;
|
56 |
+
$transform = $settings->title_transform;
|
57 |
+
$line_height = $settings->title_line_height;
|
58 |
+
$letter_spacing = $settings->title_letter_spacing;
|
59 |
+
echo '.fl-node-' . $id . ' .obfx-service-title{';
|
60 |
+
if ( ! empty( $title_color ) ) {
|
61 |
+
echo 'color: #' . $title_color . ';';
|
62 |
+
}
|
63 |
+
if ( ! empty( $title_size ) ) {
|
64 |
+
echo 'font-size:' . $title_size . 'px;';
|
65 |
+
}
|
66 |
+
if ( ! empty( $font_family ) ) {
|
67 |
+
echo 'font-family:' . $font_family . ';';
|
68 |
+
}
|
69 |
+
if ( ! empty( $font_weight ) ) {
|
70 |
+
echo 'font-weight:' . $font_weight . ';';
|
71 |
+
}
|
72 |
+
if ( ! empty( $font_style ) ) {
|
73 |
+
echo 'font-style:' . $font_style . ';';
|
74 |
+
}
|
75 |
+
if ( ! empty( $transform ) ) {
|
76 |
+
echo 'text-transform:' . $transform . ';';
|
77 |
+
}
|
78 |
+
if ( ! empty( $line_height ) ) {
|
79 |
+
echo 'line-height:' . $line_height . 'px;';
|
80 |
+
}
|
81 |
+
if ( ! empty( $letter_spacing ) ) {
|
82 |
+
echo 'letter-spacing:' . $letter_spacing . 'px;';
|
83 |
+
}
|
84 |
+
echo '}';
|
85 |
+
|
86 |
+
|
87 |
+
$content_color = $settings->content_color;
|
88 |
+
$content_size = $settings->content_font_size;
|
89 |
+
$font_family = $settings->content_font_family['family'];
|
90 |
+
$font_weight = $settings->content_font_family['weight'];
|
91 |
+
$font_style = $settings->content_font_style;
|
92 |
+
$transform = $settings->content_transform;
|
93 |
+
$line_height = $settings->content_line_height;
|
94 |
+
$alignment = $settings->content_alignment;
|
95 |
+
$letter_spacing = $settings->content_letter_spacing;
|
96 |
+
echo '.fl-node-' . $id . ' .obfx-service-content{';
|
97 |
+
if ( ! empty( $content_color ) ) {
|
98 |
+
echo 'color: #' . $content_color . ';';
|
99 |
+
}
|
100 |
+
if ( ! empty( $content_size ) ) {
|
101 |
+
echo 'font-size:' . $content_size . 'px;';
|
102 |
+
}
|
103 |
+
if ( ! empty( $font_family ) ) {
|
104 |
+
echo 'font-family:' . $font_family . ';';
|
105 |
+
}
|
106 |
+
if ( ! empty( $font_weight ) ) {
|
107 |
+
echo 'font-weight:' . $font_weight . ';';
|
108 |
+
}
|
109 |
+
if ( ! empty( $font_style ) ) {
|
110 |
+
echo 'font-style:' . $font_style . ';';
|
111 |
+
}
|
112 |
+
if ( ! empty( $transform ) ) {
|
113 |
+
echo 'text-transform:' . $transform . ';';
|
114 |
+
}
|
115 |
+
if ( ! empty( $line_height ) ) {
|
116 |
+
echo 'line-height:' . $line_height . 'px;';
|
117 |
+
}
|
118 |
+
if ( ! empty( $alignment ) ) {
|
119 |
+
echo 'text-align:' . $alignment . ';';
|
120 |
+
}
|
121 |
+
if ( ! empty( $letter_spacing ) ) {
|
122 |
+
echo 'letter-spacing:' . $letter_spacing . 'px;';
|
123 |
+
}
|
124 |
+
echo '}';
|
obfx_modules/beaver-widgets/modules/services/includes/frontend.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file is used to render services module.
|
4 |
+
* You have access to two variables in this file:
|
5 |
+
*
|
6 |
+
* $module An instance of your module class.
|
7 |
+
* $settings The module's settings.
|
8 |
+
*/
|
9 |
+
|
10 |
+
$columns = $settings->column_number;
|
11 |
+
$services = $settings->services;
|
12 |
+
$services_nb = sizeof( $services );
|
13 |
+
$card_layout = $settings->card_layout;
|
14 |
+
$container_class = $card_layout === 'yes' ? 'obfx-card obfx-service' : 'obfx-service';
|
15 |
+
if ( ! empty( $columns ) ) {
|
16 |
+
echo '<div class="obfx-services-section">';
|
17 |
+
foreach ( $services as $service ) {
|
18 |
+
echo '<div class="obfx-service-wrapper">';
|
19 |
+
echo '<div class="' . esc_attr( $container_class ) . '">';
|
20 |
+
$title = $service->title;
|
21 |
+
$text = $service->text;
|
22 |
+
$icon = $service->icon;
|
23 |
+
$link = $service->link;
|
24 |
+
|
25 |
+
if ( ! empty( $icon ) ) {
|
26 |
+
$icon_color = ! empty( $service->icon_color ) ? '#' . $service->icon_color : '#d6d6d6';
|
27 |
+
echo '<div class="obfx-service-icon" style="color:' . esc_attr( $icon_color ) . '"><i class="' . esc_attr( $icon ) . '"></i></div>';
|
28 |
+
}
|
29 |
+
if ( ! empty( $title ) ) {
|
30 |
+
if ( ! empty( $link ) ) {
|
31 |
+
echo '<a class="obfx-service-title" href="' . esc_url( $link ) . '" target="_blank">';
|
32 |
+
}
|
33 |
+
echo '<h4 class="obfx-service-title">' . wp_kses_post( $title ) . '</h4>';
|
34 |
+
if ( ! empty( $link ) ) {
|
35 |
+
echo '</a>';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
if ( ! empty( $text ) ) {
|
40 |
+
echo '<p class="obfx-service-content">' . wp_kses_post( $text ) . '</p>';
|
41 |
+
}
|
42 |
+
|
43 |
+
echo '</div>';
|
44 |
+
echo '</div>';
|
45 |
+
}
|
46 |
+
echo '</div>';
|
47 |
+
|
48 |
+
}
|
obfx_modules/beaver-widgets/modules/services/services.php
ADDED
@@ -0,0 +1,255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Services module.
|
4 |
+
*
|
5 |
+
* @package themeisle-companion
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Get the module directory.
|
9 |
+
$module_directory = $this->get_dir();
|
10 |
+
|
11 |
+
// Include common functions file.
|
12 |
+
require_once( $module_directory . '/inc/common-functions.php' );
|
13 |
+
|
14 |
+
// Include custom fields
|
15 |
+
require_once( $module_directory . '/custom-fields/toggle-field/toggle_field.php' );
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Class PricingTableModule
|
19 |
+
*/
|
20 |
+
class ServicesModule extends FLBuilderModule {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Constructor function for the module. You must pass the
|
24 |
+
* name, description, dir and url in an array to the parent class.
|
25 |
+
*
|
26 |
+
* @method __construct
|
27 |
+
*/
|
28 |
+
public function __construct() {
|
29 |
+
parent::__construct(
|
30 |
+
array(
|
31 |
+
'name' => esc_html__( 'Services', 'themeisle-companion' ),
|
32 |
+
'description' => esc_html__( 'An overview of the products or services.', 'themeisle-companion' ),
|
33 |
+
'category' => esc_html__( 'Orbit Fox Modules', 'themeisle-companion' ),
|
34 |
+
'dir' => BEAVER_WIDGETS_PATH . 'modules/services/',
|
35 |
+
'url' => BEAVER_WIDGETS_URL . 'modules/services/',
|
36 |
+
)
|
37 |
+
);
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Register the module and its form settings.
|
43 |
+
*/
|
44 |
+
FLBuilder::register_module(
|
45 |
+
'ServicesModule', array(
|
46 |
+
'content' => array(
|
47 |
+
'title' => esc_html__( 'Content', 'themeisle-companion' ), // Tab title
|
48 |
+
'sections' => array(
|
49 |
+
'content' => array(
|
50 |
+
'title' => '',
|
51 |
+
'fields' => array(
|
52 |
+
'services' => array(
|
53 |
+
'multiple' => true,
|
54 |
+
'type' => 'form',
|
55 |
+
'label' => esc_html__( 'Service', 'themeisle-companion' ),
|
56 |
+
'form' => 'service_content', // ID of a registered form.
|
57 |
+
'preview_text' => 'title', // ID of a field to use for the preview text.
|
58 |
+
),
|
59 |
+
'column_number' => array(
|
60 |
+
'type' => 'select',
|
61 |
+
'label' => esc_html__( 'Number of columns', 'themeisle-companion' ),
|
62 |
+
'default' => '3',
|
63 |
+
'options' => array(
|
64 |
+
'1' => esc_html__( '1', 'themeisle-companion' ),
|
65 |
+
'2' => esc_html__( '2', 'themeisle-companion' ),
|
66 |
+
'3' => esc_html__( '3', 'themeisle-companion' ),
|
67 |
+
'4' => esc_html__( '4', 'themeisle-companion' ),
|
68 |
+
'5' => esc_html__( '5', 'themeisle-companion' ),
|
69 |
+
),
|
70 |
+
),
|
71 |
+
'card_layout' => array(
|
72 |
+
'type' => 'obfx_toggle',
|
73 |
+
'label' => esc_html__( 'Card layout', 'themeisle-companion' ),
|
74 |
+
'default' => 'yes',
|
75 |
+
),
|
76 |
+
'background_color' => array(
|
77 |
+
'type' => 'color',
|
78 |
+
'label' => esc_html__( 'Background color', 'themeisle-companion' ),
|
79 |
+
'default' => 'ffffff',
|
80 |
+
'preview' => array(
|
81 |
+
'type' => 'css',
|
82 |
+
'rules' => array(
|
83 |
+
array(
|
84 |
+
'selector' => '.obfx-service',
|
85 |
+
'property' => 'background',
|
86 |
+
),
|
87 |
+
),
|
88 |
+
),
|
89 |
+
),
|
90 |
+
|
91 |
+
),
|
92 |
+
),
|
93 |
+
),
|
94 |
+
),
|
95 |
+
'icon_style' => array(
|
96 |
+
'title' => esc_html__( 'Icon style', 'themeisle-companion' ), // Tab title
|
97 |
+
'sections' => array(
|
98 |
+
'font' => array(
|
99 |
+
'title' => esc_html__( 'General', 'themeisle-companion' ),
|
100 |
+
'fields' => array(
|
101 |
+
'icon_position' => array(
|
102 |
+
'type' => 'select',
|
103 |
+
'label' => esc_html__( 'Position', 'themeisle-companion' ),
|
104 |
+
'default' => 'center',
|
105 |
+
'options' => array(
|
106 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
107 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
108 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
109 |
+
),
|
110 |
+
),
|
111 |
+
'icon_size' => array(
|
112 |
+
'type' => 'text',
|
113 |
+
'label' => esc_html__( 'Size', 'themeisle-companion' ),
|
114 |
+
'description' => esc_html__( 'px', 'themeisle-companion' ),
|
115 |
+
'default' => '45',
|
116 |
+
'maxlength' => '3',
|
117 |
+
'size' => '4',
|
118 |
+
'preview' => array(
|
119 |
+
'type' => 'css',
|
120 |
+
'rules' => array(
|
121 |
+
array(
|
122 |
+
'selector' => '.obfx-service-icon',
|
123 |
+
'property' => 'font-size',
|
124 |
+
'unit' => 'px',
|
125 |
+
),
|
126 |
+
),
|
127 |
+
),
|
128 |
+
),
|
129 |
+
),
|
130 |
+
),
|
131 |
+
'icon_padding' => themeisle_four_fields_control(
|
132 |
+
array(
|
133 |
+
'default' => array(
|
134 |
+
'top' => 30,
|
135 |
+
'bottom' => 15,
|
136 |
+
'left' => 25,
|
137 |
+
'right' => 25,
|
138 |
+
),
|
139 |
+
'selector' => '.obfx-service-icon',
|
140 |
+
'field_name_prefix' => 'icon_',
|
141 |
+
)
|
142 |
+
),
|
143 |
+
),
|
144 |
+
),
|
145 |
+
'title_style' => array(
|
146 |
+
'title' => esc_html__( 'Title style', 'themeisle-companion' ),
|
147 |
+
'sections' => array(
|
148 |
+
'general' => array(
|
149 |
+
'title' => esc_html__( 'General', 'themeisle-companion' ),
|
150 |
+
'fields' => array(
|
151 |
+
'title_color' => array(
|
152 |
+
'type' => 'color',
|
153 |
+
'label' => esc_html__( 'Color', 'themeisle-companion' ),
|
154 |
+
'preview' => array(
|
155 |
+
'type' => 'css',
|
156 |
+
'rules' => array(
|
157 |
+
array(
|
158 |
+
'selector' => '.obfx-service-title',
|
159 |
+
'property' => 'color',
|
160 |
+
),
|
161 |
+
),
|
162 |
+
),
|
163 |
+
),
|
164 |
+
),
|
165 |
+
),
|
166 |
+
'typography' => themeisle_typography_settings(
|
167 |
+
array(
|
168 |
+
'prefix' => 'title_',
|
169 |
+
'selector' => '.obfx-service-title',
|
170 |
+
)
|
171 |
+
),
|
172 |
+
),
|
173 |
+
),
|
174 |
+
'content_style' => array(
|
175 |
+
'title' => esc_html__( 'Content style', 'themeisle-companion' ),
|
176 |
+
'sections' => array(
|
177 |
+
'general' => array(
|
178 |
+
'title' => esc_html__( 'General', 'themeisle-companion' ),
|
179 |
+
'fields' => array(
|
180 |
+
'content_alignment' => array(
|
181 |
+
'type' => 'select',
|
182 |
+
'label' => esc_html__( 'Alignment', 'themeisle-companion' ),
|
183 |
+
'default' => 'center',
|
184 |
+
'options' => array(
|
185 |
+
'left' => esc_html__( 'Left', 'themeisle-companion' ),
|
186 |
+
'center' => esc_html__( 'Center', 'themeisle-companion' ),
|
187 |
+
'right' => esc_html__( 'Right', 'themeisle-companion' ),
|
188 |
+
),
|
189 |
+
),
|
190 |
+
'content_color' => array(
|
191 |
+
'type' => 'color',
|
192 |
+
'label' => esc_html__( 'Color', 'themeisle-companion' ),
|
193 |
+
'preview' => array(
|
194 |
+
'type' => 'css',
|
195 |
+
'rules' => array(
|
196 |
+
array(
|
197 |
+
'selector' => '.obfx-service-content',
|
198 |
+
'property' => 'color',
|
199 |
+
),
|
200 |
+
),
|
201 |
+
),
|
202 |
+
),
|
203 |
+
),
|
204 |
+
),
|
205 |
+
'typography' => themeisle_typography_settings(
|
206 |
+
array(
|
207 |
+
'prefix' => 'content_',
|
208 |
+
'selector' => '.obfx-service-content',
|
209 |
+
)
|
210 |
+
),
|
211 |
+
),
|
212 |
+
),
|
213 |
+
)
|
214 |
+
);
|
215 |
+
|
216 |
+
FLBuilder::register_settings_form(
|
217 |
+
'service_content', array(
|
218 |
+
'title' => __( 'Service', 'themeisle-companion' ),
|
219 |
+
'tabs' => array(
|
220 |
+
'general' => array(
|
221 |
+
'title' => esc_html__( 'General', 'themeisle-companion' ),
|
222 |
+
'sections' => array(
|
223 |
+
'general' => array(
|
224 |
+
'title' => '',
|
225 |
+
'fields' => array(
|
226 |
+
'title' => array(
|
227 |
+
'type' => 'text',
|
228 |
+
'label' => esc_html__( 'Title', 'themeisle-companion' ),
|
229 |
+
),
|
230 |
+
'text' => array(
|
231 |
+
'type' => 'textarea',
|
232 |
+
'label' => esc_html__( 'Text', 'themeisle-companion' ),
|
233 |
+
'rows' => '6',
|
234 |
+
),
|
235 |
+
'icon' => array(
|
236 |
+
'type' => 'icon',
|
237 |
+
'label' => esc_html__( 'Icon', 'themeisle-companion' ),
|
238 |
+
'show_remove' => true,
|
239 |
+
),
|
240 |
+
'icon_color' => array(
|
241 |
+
'type' => 'color',
|
242 |
+
'label' => esc_html__( 'Icon color', 'themeisle-companion' ),
|
243 |
+
'default' => 'd6d6d6',
|
244 |
+
),
|
245 |
+
'link' => array(
|
246 |
+
'type' => 'link',
|
247 |
+
'label' => esc_html__( 'Link to', 'themeisle-companion' ),
|
248 |
+
),
|
249 |
+
),
|
250 |
+
),
|
251 |
+
),
|
252 |
+
),
|
253 |
+
),
|
254 |
+
)
|
255 |
+
);
|
obfx_modules/elementor-widgets/widgets/class-obfx-elementor-widget-posts-grid.php
CHANGED
@@ -98,22 +98,28 @@ class OBFX_Elementor_Widget_Posts_Grid extends Widget_Base {
|
|
98 |
|
99 |
if ( $post_type == 'post' ) {
|
100 |
$taxonomy = 'category';
|
101 |
-
}
|
102 |
$taxonomy = 'product_cat';
|
103 |
}
|
104 |
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
}
|
116 |
-
|
117 |
return $options;
|
118 |
}
|
119 |
|
@@ -349,7 +355,7 @@ class OBFX_Elementor_Widget_Posts_Grid extends Widget_Base {
|
|
349 |
'h3' => 'H3',
|
350 |
'h4' => 'H4',
|
351 |
'h5' => 'H5',
|
352 |
-
'h6' => '
|
353 |
'span' => 'span',
|
354 |
'p' => 'p',
|
355 |
'div' => 'div',
|
98 |
|
99 |
if ( $post_type == 'post' ) {
|
100 |
$taxonomy = 'category';
|
101 |
+
} elseif ( $post_type == 'product' ) {
|
102 |
$taxonomy = 'product_cat';
|
103 |
}
|
104 |
|
105 |
+
if ( ! empty( $taxonomy ) ) {
|
106 |
+
// Get categories for post type.
|
107 |
+
$terms = get_terms(
|
108 |
+
array(
|
109 |
+
'taxonomy' => $taxonomy,
|
110 |
+
'hide_empty' => false,
|
111 |
+
)
|
112 |
+
);
|
113 |
+
if ( ! empty( $terms ) ) {
|
114 |
+
foreach ( $terms as $term ) {
|
115 |
+
if ( isset( $term ) ) {
|
116 |
+
if ( isset( $term->slug ) && isset( $term->name ) ) {
|
117 |
+
$options[ $term->slug ] = $term->name;
|
118 |
+
}
|
119 |
+
}
|
120 |
+
}
|
121 |
+
}
|
122 |
}
|
|
|
123 |
return $options;
|
124 |
}
|
125 |
|
355 |
'h3' => 'H3',
|
356 |
'h4' => 'H4',
|
357 |
'h5' => 'H5',
|
358 |
+
'h6' => 'H6',
|
359 |
'span' => 'span',
|
360 |
'p' => 'p',
|
361 |
'div' => 'div',
|
obfx_modules/elementor-widgets/widgets/class-obfx-elementor-widget-pricing-table.php
CHANGED
@@ -947,12 +947,15 @@ class OBFX_Elementor_Widget_Pricing_Table extends Widget_Base {
|
|
947 |
$this->add_render_attribute( 'button', 'class', 'obfx-pricing-table-button' );
|
948 |
$this->add_render_attribute( 'button_icon', 'class', $settings['button_icon'] );
|
949 |
$this->add_render_attribute( 'button_icon_align', 'class', 'obfx-button-icon-align-' . $settings['button_icon_align'] );
|
950 |
-
if ( ! empty( $settings['
|
951 |
-
$this->add_render_attribute( 'button', 'href', $settings['
|
952 |
|
953 |
-
if ( ! empty( $settings['
|
954 |
$this->add_render_attribute( 'button', 'target', '_blank' );
|
955 |
}
|
|
|
|
|
|
|
956 |
}
|
957 |
|
958 |
$output = '';
|
947 |
$this->add_render_attribute( 'button', 'class', 'obfx-pricing-table-button' );
|
948 |
$this->add_render_attribute( 'button_icon', 'class', $settings['button_icon'] );
|
949 |
$this->add_render_attribute( 'button_icon_align', 'class', 'obfx-button-icon-align-' . $settings['button_icon_align'] );
|
950 |
+
if ( ! empty( $settings['button_link']['url'] ) ) {
|
951 |
+
$this->add_render_attribute( 'button', 'href', $settings['button_link']['url'] );
|
952 |
|
953 |
+
if ( ! empty( $settings['button_link']['is_external'] ) ) {
|
954 |
$this->add_render_attribute( 'button', 'target', '_blank' );
|
955 |
}
|
956 |
+
if ( ! empty( $settings['button_link']['nofollow'] ) ) {
|
957 |
+
$this->add_render_attribute( 'button', 'rel', 'nofollow' );
|
958 |
+
}
|
959 |
}
|
960 |
|
961 |
$output = '';
|
obfx_modules/stats/css/stats.css
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Test Module Admin Style
|
3 |
-
*
|
4 |
-
* @since 1.0.0
|
5 |
-
* @package obfx_modules/test/css
|
6 |
-
*
|
7 |
-
* @author ThemeIsle
|
8 |
-
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/stats/init.php
DELETED
@@ -1,314 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Mock-up to demonstrate and test module use.
|
4 |
-
*
|
5 |
-
* @link https://themeisle.com
|
6 |
-
* @since 1.0.0
|
7 |
-
*
|
8 |
-
* @package Test_OBFX_Module
|
9 |
-
*/
|
10 |
-
|
11 |
-
/**
|
12 |
-
* The class defines a new module to be used by Orbit Fox plugin.
|
13 |
-
*
|
14 |
-
* @package Test_OBFX_Module
|
15 |
-
* @author Themeisle <friends@themeisle.com>
|
16 |
-
*/
|
17 |
-
class Stats_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Test_OBFX_Module constructor.
|
21 |
-
*
|
22 |
-
* @since 1.0.0
|
23 |
-
* @access public
|
24 |
-
*/
|
25 |
-
public function __construct() {
|
26 |
-
parent::__construct();
|
27 |
-
$this->name = __( 'Reports Module', 'themeisle-companion' );
|
28 |
-
$this->description = __( 'A simple module for your WordPress data.', 'themeisle-companion' );
|
29 |
-
|
30 |
-
}
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Determine if module should be loaded.
|
34 |
-
*
|
35 |
-
* @since 1.0.0
|
36 |
-
* @access public
|
37 |
-
* @return bool
|
38 |
-
*/
|
39 |
-
public function enable_module() {
|
40 |
-
return true;
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* The loading logic for the module.
|
45 |
-
*
|
46 |
-
* @since 1.0.0
|
47 |
-
* @access public
|
48 |
-
*/
|
49 |
-
public function load() {
|
50 |
-
|
51 |
-
}
|
52 |
-
|
53 |
-
/**
|
54 |
-
* Method to define hooks needed.
|
55 |
-
*
|
56 |
-
* @since 1.0.0
|
57 |
-
* @access public
|
58 |
-
*/
|
59 |
-
public function hooks() {
|
60 |
-
$this->loader->add_action( 'wp_dashboard_setup', $this, 'add_dashboard_widgets' );
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Module method to add a dashboard widget
|
65 |
-
*
|
66 |
-
* @since 1.0.0
|
67 |
-
* @access public
|
68 |
-
*/
|
69 |
-
public function add_dashboard_widgets() {
|
70 |
-
wp_add_dashboard_widget(
|
71 |
-
'obfx_dashboard_widget', // Widget slug.
|
72 |
-
'Site Reports <small><i>by Orbit Fox</i></small>', // Title.
|
73 |
-
array( $this, 'dashboard_widget_function' ) // Display function.
|
74 |
-
);
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* Display method for the Dashboard widget.
|
79 |
-
*
|
80 |
-
* @since 1.0.0
|
81 |
-
* @access public
|
82 |
-
*/
|
83 |
-
public function dashboard_widget_function() {
|
84 |
-
$display_year = $this->get_option( 'display_year' );
|
85 |
-
$posts_count = $this->get_posts_count( $display_year );
|
86 |
-
$comments_count = $this->get_comments_count( $display_year );
|
87 |
-
|
88 |
-
$data = array(
|
89 |
-
'display_year' => $display_year,
|
90 |
-
'title' => $this->get_option( 'dashboard_title' ),
|
91 |
-
'desc' => $this->get_option( 'dashboard_desc' ),
|
92 |
-
'graph_shows' => $this->get_option( 'graph_shows' ),
|
93 |
-
'posts_count' => $posts_count,
|
94 |
-
'comments_count' => $comments_count,
|
95 |
-
);
|
96 |
-
|
97 |
-
echo $this->render_view( 'dashboard-widget', $data );
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Utility method to return posts count,
|
102 |
-
*
|
103 |
-
* @since 1.0.0
|
104 |
-
* @access public
|
105 |
-
*
|
106 |
-
* @param string $display_year The year to query for.
|
107 |
-
*
|
108 |
-
* @return array
|
109 |
-
*/
|
110 |
-
public function get_posts_count( $display_year ) {
|
111 |
-
$posts_count = array();
|
112 |
-
for ( $cnt = 0; $cnt < 12; $cnt ++ ) {
|
113 |
-
$posts_count[] = rand( 13, 766 );
|
114 |
-
}
|
115 |
-
|
116 |
-
if ( ! $this->get_option( 'mock_data' ) ) {
|
117 |
-
global $wpdb;
|
118 |
-
$results = $wpdb->get_results( $this->build_graph_query( $display_year, $wpdb->posts, true ), ARRAY_A );
|
119 |
-
$posts_count = $this->build_graph_array( $results, true );
|
120 |
-
}
|
121 |
-
|
122 |
-
return $posts_count;
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
* Creates a query for graph data.
|
127 |
-
*
|
128 |
-
* @since 1.0.0
|
129 |
-
* @access private
|
130 |
-
*
|
131 |
-
* @param string $display_year The year to look for.
|
132 |
-
* @param string $table The table name
|
133 |
-
* @param bool $posts_or_comments Counts posts if `true` or comments if `false`.
|
134 |
-
*
|
135 |
-
* @return string
|
136 |
-
*/
|
137 |
-
private function build_graph_query( $display_year, $table, $posts_or_comments ) {
|
138 |
-
$count = "SUM(`comment_count`) as `comment_count`";
|
139 |
-
if ( $posts_or_comments ) {
|
140 |
-
$count = "COUNT( `ID` ) AS `post_count`";
|
141 |
-
}
|
142 |
-
$query = "
|
143 |
-
SELECT
|
144 |
-
MONTH( `post_date` ) AS `post_month`, {$count}
|
145 |
-
FROM {$table}
|
146 |
-
WHERE `post_type` = 'post' AND `post_status` = 'publish' AND YEAR( `post_date` ) = '{$display_year}'
|
147 |
-
GROUP BY `post_month`
|
148 |
-
";
|
149 |
-
|
150 |
-
return $query;
|
151 |
-
}
|
152 |
-
|
153 |
-
/**
|
154 |
-
* Utility method to build result array.
|
155 |
-
*
|
156 |
-
* @since 1.0.0
|
157 |
-
* @access private
|
158 |
-
*
|
159 |
-
* @param array $results Query results as associative array.
|
160 |
-
* @param bool $posts_or_comments Counts posts if `true` or comments if `false`.
|
161 |
-
*
|
162 |
-
* @return array
|
163 |
-
*/
|
164 |
-
private function build_graph_array( $results, $posts_or_comments ) {
|
165 |
-
$data_count = array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
|
166 |
-
foreach ( $results as $posts_published ) {
|
167 |
-
$pos = $posts_published['post_month'] - 1;
|
168 |
-
$key = 'comment_count';
|
169 |
-
if ( $posts_or_comments ) {
|
170 |
-
$key = 'post_count';
|
171 |
-
}
|
172 |
-
$data_count[ $pos ] = (int) $posts_published[ $key ];
|
173 |
-
}
|
174 |
-
|
175 |
-
return $data_count;
|
176 |
-
}
|
177 |
-
|
178 |
-
/**
|
179 |
-
* Utility method to return comments count,
|
180 |
-
*
|
181 |
-
* @since 1.0.0
|
182 |
-
* @access public
|
183 |
-
*
|
184 |
-
* @param string $display_year The year to query for.
|
185 |
-
*
|
186 |
-
* @return array
|
187 |
-
*/
|
188 |
-
public function get_comments_count( $display_year ) {
|
189 |
-
$comments_count = array();
|
190 |
-
for ( $cnt = 0; $cnt < 12; $cnt ++ ) {
|
191 |
-
$comments_count[] = rand( 7, 484 );
|
192 |
-
}
|
193 |
-
|
194 |
-
if ( ! $this->get_option( 'mock_data' ) ) {
|
195 |
-
global $wpdb;
|
196 |
-
$results = $wpdb->get_results( $this->build_graph_query( $display_year, $wpdb->posts, false ), ARRAY_A );
|
197 |
-
$comments_count = $this->build_graph_array( $results, false );
|
198 |
-
}
|
199 |
-
|
200 |
-
return $comments_count;
|
201 |
-
}
|
202 |
-
|
203 |
-
/**
|
204 |
-
* Method that returns an array of scripts and styles to be loaded
|
205 |
-
* for the front end part.
|
206 |
-
*
|
207 |
-
* @since 1.0.0
|
208 |
-
* @access public
|
209 |
-
* @return array
|
210 |
-
*/
|
211 |
-
public function public_enqueue() {
|
212 |
-
return array();
|
213 |
-
}
|
214 |
-
|
215 |
-
/**
|
216 |
-
* Method that returns an array of scripts and styles to be loaded
|
217 |
-
* for the admin part.
|
218 |
-
*
|
219 |
-
* @since 1.0.0
|
220 |
-
* @access public
|
221 |
-
* @return array|boolean
|
222 |
-
*/
|
223 |
-
public function admin_enqueue() {
|
224 |
-
$current_screen = get_current_screen();
|
225 |
-
|
226 |
-
if ( ! isset( $current_screen->id ) ) {
|
227 |
-
return array();
|
228 |
-
}
|
229 |
-
if ( $current_screen->id != 'dashboard' ) {
|
230 |
-
return array();
|
231 |
-
}
|
232 |
-
|
233 |
-
return array(
|
234 |
-
'js' => array(
|
235 |
-
'vendor/chart.min' => array( 'jquery' ),
|
236 |
-
'stats' => array( 'jquery' ),
|
237 |
-
),
|
238 |
-
'css' => array(
|
239 |
-
'stats' => false,
|
240 |
-
),
|
241 |
-
);
|
242 |
-
}
|
243 |
-
|
244 |
-
/**
|
245 |
-
* Method to define the options fields for the module
|
246 |
-
*
|
247 |
-
* @since 1.0.0
|
248 |
-
* @access public
|
249 |
-
* @return array
|
250 |
-
*/
|
251 |
-
public function options() {
|
252 |
-
return array(
|
253 |
-
array(
|
254 |
-
'id' => 'dashboard_title',
|
255 |
-
'name' => 'dashboard_title',
|
256 |
-
'title' => 'Dashboard Title',
|
257 |
-
'description' => 'This title is displayed on the Dasboard widget.',
|
258 |
-
'type' => 'text',
|
259 |
-
'default' => '',
|
260 |
-
'placeholder' => 'Add some text',
|
261 |
-
),
|
262 |
-
array(
|
263 |
-
'id' => 'dashboard_desc',
|
264 |
-
'name' => 'dashboard_desc',
|
265 |
-
'title' => 'Dashboard Graph Description (*optional)',
|
266 |
-
'description' => 'This will be displayed inside the Dashboard widget.',
|
267 |
-
'type' => 'textarea',
|
268 |
-
'default' => '',
|
269 |
-
'placeholder' => 'Add some text here ...',
|
270 |
-
),
|
271 |
-
array(
|
272 |
-
'id' => 'display_year',
|
273 |
-
'name' => 'display_year',
|
274 |
-
'title' => 'The year to use for graph plotting.',
|
275 |
-
'description' => 'Based on the selected year here will update the graph on the Dashboard widget.',
|
276 |
-
'type' => 'select',
|
277 |
-
'default' => '2017',
|
278 |
-
'placeholder' => 'Select an option',
|
279 |
-
'options' => array(
|
280 |
-
'2017' => '2017',
|
281 |
-
'2016' => '2016',
|
282 |
-
'2015' => '2015',
|
283 |
-
'2014' => '2014',
|
284 |
-
'2013' => '2013',
|
285 |
-
'2012' => '2012',
|
286 |
-
'2011' => '2011',
|
287 |
-
'2010' => '2010',
|
288 |
-
),
|
289 |
-
),
|
290 |
-
array(
|
291 |
-
'id' => 'graph_shows',
|
292 |
-
'name' => 'graph_shows',
|
293 |
-
'title' => 'What does the graph display?',
|
294 |
-
'description' => 'Select what is displayed on the graph.',
|
295 |
-
'type' => 'radio',
|
296 |
-
'default' => '2',
|
297 |
-
'options' => array(
|
298 |
-
'0' => 'Posts Count',
|
299 |
-
'1' => 'Comments Count',
|
300 |
-
'2' => 'Posts & Comments Count',
|
301 |
-
),
|
302 |
-
),
|
303 |
-
array(
|
304 |
-
'id' => 'mock_data',
|
305 |
-
'name' => 'mock_data',
|
306 |
-
'label' => 'Disable/Enable',
|
307 |
-
'title' => 'Use mock data for graph?',
|
308 |
-
'description' => 'If enabled this plots mock data on graph.',
|
309 |
-
'type' => 'toggle',
|
310 |
-
'default' => '1',
|
311 |
-
),
|
312 |
-
);
|
313 |
-
}
|
314 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/stats/js/stats.js
DELETED
@@ -1,71 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Test Module Admin Script
|
3 |
-
*
|
4 |
-
* @since 1.0.0
|
5 |
-
* @package obfx_modules/test/js
|
6 |
-
*
|
7 |
-
* @author ThemeIsle
|
8 |
-
*/
|
9 |
-
|
10 |
-
/* jshint unused:vars */
|
11 |
-
/* global console, Chart, jQuery */
|
12 |
-
var stats_module = function( $ ) {
|
13 |
-
'use strict';
|
14 |
-
$(
|
15 |
-
function() {
|
16 |
-
if ( $( '#obfxChart' ).length ) {
|
17 |
-
var myChart;
|
18 |
-
var ctx = document.getElementById( 'obfxChart' ).getContext( '2d' );
|
19 |
-
var posts_data = $( '#obfxChart' ).data( 'posts' );
|
20 |
-
var comments_data = $( '#obfxChart' ).data( 'comments' );
|
21 |
-
|
22 |
-
var dataset = [];
|
23 |
-
if ( typeof posts_data !== 'undefined' ) {
|
24 |
-
dataset.push(
|
25 |
-
{
|
26 |
-
label: '# of Posts',
|
27 |
-
data: posts_data,
|
28 |
-
backgroundColor: 'rgba( 3, 169, 244, 0.5 )',
|
29 |
-
borderColor: 'rgba( 3, 169, 244, 1 )',
|
30 |
-
borderWidth: 1
|
31 |
-
}
|
32 |
-
);
|
33 |
-
}
|
34 |
-
|
35 |
-
if ( typeof comments_data !== 'undefined' ) {
|
36 |
-
dataset.push(
|
37 |
-
{
|
38 |
-
label: '# of Comments',
|
39 |
-
data: comments_data,
|
40 |
-
backgroundColor: 'rgba( 255, 152, 0, 0.5 )',
|
41 |
-
borderColor: 'rgba( 255, 152, 0, 1 )',
|
42 |
-
borderWidth: 1
|
43 |
-
}
|
44 |
-
);
|
45 |
-
}
|
46 |
-
|
47 |
-
console.log( ctx );
|
48 |
-
myChart = new Chart(
|
49 |
-
ctx, {
|
50 |
-
type: 'bar',
|
51 |
-
data: {
|
52 |
-
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
53 |
-
datasets: dataset
|
54 |
-
},
|
55 |
-
options: {
|
56 |
-
scales: {
|
57 |
-
yAxes: [{
|
58 |
-
ticks: {
|
59 |
-
beginAtZero: true
|
60 |
-
}
|
61 |
-
}]
|
62 |
-
}
|
63 |
-
}
|
64 |
-
}
|
65 |
-
);
|
66 |
-
}// End if().
|
67 |
-
}
|
68 |
-
);
|
69 |
-
|
70 |
-
};
|
71 |
-
stats_module( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/stats/js/vendor/chart.min.js
DELETED
@@ -1,14 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Chart.js
|
3 |
-
* http://chartjs.org/
|
4 |
-
* Version: 2.6.0
|
5 |
-
*
|
6 |
-
* Copyright 2017 Nick Downie
|
7 |
-
* Released under the MIT license
|
8 |
-
* https://github.com/chartjs/Chart.js/blob/master/LICENSE.md
|
9 |
-
*/
|
10 |
-
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Chart=t()}}(function(){return function t(e,n,i){function a(r,l){if(!n[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[r]={exports:{}};e[r][0].call(d.exports,function(t){var n=e[r][1][t];return a(n?n:t)},d,d.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;r<i.length;r++)a(i[r]);return a}({1:[function(t,e,n){},{}],2:[function(t,e,n){function i(t){if(t){var e=/^#([a-fA-F0-9]{3})$/,n=/^#([a-fA-F0-9]{6})$/,i=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,a=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,o=/(\w+)/,r=[0,0,0],l=1,s=t.match(e);if(s){s=s[1];for(var u=0;u<r.length;u++)r[u]=parseInt(s[u]+s[u],16)}else if(s=t.match(n)){s=s[1];for(var u=0;u<r.length;u++)r[u]=parseInt(s.slice(2*u,2*u+2),16)}else if(s=t.match(i)){for(var u=0;u<r.length;u++)r[u]=parseInt(s[u+1]);l=parseFloat(s[4])}else if(s=t.match(a)){for(var u=0;u<r.length;u++)r[u]=Math.round(2.55*parseFloat(s[u+1]));l=parseFloat(s[4])}else if(s=t.match(o)){if("transparent"==s[1])return[0,0,0,0];if(r=y[s[1]],!r)return}for(var u=0;u<r.length;u++)r[u]=b(r[u],0,255);return l=l||0==l?b(l,0,1):1,r[3]=l,r}}function a(t){if(t){var e=/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,n=t.match(e);if(n){var i=parseFloat(n[4]),a=b(parseInt(n[1]),0,360),o=b(parseFloat(n[2]),0,100),r=b(parseFloat(n[3]),0,100),l=b(isNaN(i)?1:i,0,1);return[a,o,r,l]}}}function o(t){if(t){var e=/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,n=t.match(e);if(n){var i=parseFloat(n[4]),a=b(parseInt(n[1]),0,360),o=b(parseFloat(n[2]),0,100),r=b(parseFloat(n[3]),0,100),l=b(isNaN(i)?1:i,0,1);return[a,o,r,l]}}}function r(t){var e=i(t);return e&&e.slice(0,3)}function l(t){var e=a(t);return e&&e.slice(0,3)}function s(t){var e=i(t);return e?e[3]:(e=a(t))?e[3]:(e=o(t))?e[3]:void 0}function u(t){return"#"+x(t[0])+x(t[1])+x(t[2])}function d(t,e){return e<1||t[3]&&t[3]<1?c(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function c(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function h(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"}function f(t,e){var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgba("+n+"%, "+i+"%, "+a+"%, "+(e||t[3]||1)+")"}function g(t,e){return e<1||t[3]&&t[3]<1?p(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"}function p(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function m(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"}function v(t){return k[t.slice(0,3)]}function b(t,e,n){return Math.min(Math.max(e,t),n)}function x(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var y=t(6);e.exports={getRgba:i,getHsla:a,getRgb:r,getHsl:l,getHwb:o,getAlpha:s,hexString:u,rgbString:d,rgbaString:c,percentString:h,percentaString:f,hslString:g,hslaString:p,hwbString:m,keyword:v};var k={};for(var w in y)k[y[w]]=w},{6:6}],3:[function(t,e,n){var i=t(5),a=t(2),o=function(t){if(t instanceof o)return t;if(!(this instanceof o))return new o(t);this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;"string"==typeof t?(e=a.getRgba(t),e?this.setValues("rgb",e):(e=a.getHsla(t))?this.setValues("hsl",e):(e=a.getHwb(t))&&this.setValues("hwb",e)):"object"==typeof t&&(e=t,void 0!==e.r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e))};o.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t%=360,t=t<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb,e=(299*t[0]+587*t[1]+114*t[2])/1e3;return e<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,o=2*a-1,r=n.alpha()-i.alpha(),l=((o*r===-1?o:(o+r)/(1+o*r))+1)/2,s=1-l;return this.rgb(l*n.red()+s*i.red(),l*n.green()+s*i.green(),l*n.blue()+s*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new o,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],e={}.toString.call(t),"[object Array]"===e?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},o.prototype.setValues=function(t,e){var n,a=this.values,o=this.spaces,r=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)a[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)a[t][n]=e[t.charAt(n)];l=e.a}else if(void 0!==e[o[t][0]]){var s=o[t];for(n=0;n<t.length;n++)a[t][n]=e[s[n]];l=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===l?a.alpha:l)),"alpha"===t)return!1;var u;for(n=0;n<t.length;n++)u=Math.max(0,Math.min(r[t][n],a[t][n])),a[t][n]=Math.round(u);for(var d in o)d!==t&&(a[d]=i[t][d](a[t]));return!0},o.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},o.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.Color=o),e.exports=o},{2:2,5:5}],4:[function(t,e,n){function i(t){var e,n,i,a=t[0]/255,o=t[1]/255,r=t[2]/255,l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),e=Math.min(60*e,360),e<0&&(e+=360),i=(l+s)/2,n=s==l?0:i<=.5?u/(s+l):u/(2-s-l),[e,100*n,100*i]}function a(t){var e,n,i,a=t[0],o=t[1],r=t[2],l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return n=0==s?0:u/s*1e3/10,s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),e=Math.min(60*e,360),e<0&&(e+=360),i=s/255*1e3/10,[e,n,i]}function o(t){var e=t[0],n=t[1],a=t[2],o=i(t)[0],r=1/255*Math.min(e,Math.min(n,a)),a=1-1/255*Math.max(e,Math.max(n,a));return[o,100*r,100*a]}function l(t){var e,n,i,a,o=t[0]/255,r=t[1]/255,l=t[2]/255;return a=Math.min(1-o,1-r,1-l),e=(1-o-a)/(1-a)||0,n=(1-r-a)/(1-a)||0,i=(1-l-a)/(1-a)||0,[100*e,100*n,100*i,100*a]}function s(t){return Z[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92;var a=.4124*e+.3576*n+.1805*i,o=.2126*e+.7152*n+.0722*i,r=.0193*e+.1192*n+.9505*i;return[100*a,100*o,100*r]}function d(t){var e,n,i,a=u(t),o=a[0],r=a[1],l=a[2];return o/=95.047,r/=100,l/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,e=116*r-16,n=500*(o-r),i=200*(r-l),[e,n,i]}function c(t){return B(d(t))}function h(t){var e,n,i,a,o,r=t[0]/360,l=t[1]/100,s=t[2]/100;if(0==l)return o=255*s,[o,o,o];n=s<.5?s*(1+l):s+l-s*l,e=2*s-n,a=[0,0,0];for(var u=0;u<3;u++)i=r+1/3*-(u-1),i<0&&i++,i>1&&i--,o=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*o;return a}function f(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,a*=o<=1?o:2-o,n=(o+a)/2,e=2*a/(o+a),[i,100*e,100*n])}function p(t){return o(h(t))}function m(t){return l(h(t))}function v(t){return s(h(t))}function x(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-n),l=255*i*(1-n*o),s=255*i*(1-n*(1-o)),i=255*i;switch(a){case 0:return[i,s,r];case 1:return[l,i,r];case 2:return[r,i,s];case 3:return[r,l,i];case 4:return[s,r,i];case 5:return[i,r,l]}}function y(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return n=(2-a)*o,e=a*o,e/=n<=1?n:2-n,e=e||0,n/=2,[i,100*e,100*n]}function k(t){return o(x(t))}function w(t){return l(x(t))}function M(t){return s(x(t))}function S(t){var e,n,i,a,o=t[0]/360,l=t[1]/100,s=t[2]/100,u=l+s;switch(u>1&&(l/=u,s/=u),e=Math.floor(6*o),n=1-s,i=6*o-e,0!=(1&e)&&(i=1-i),a=l+i*(n-l),e){default:case 6:case 0:r=n,g=a,b=l;break;case 1:r=a,g=n,b=l;break;case 2:r=l,g=n,b=a;break;case 3:r=l,g=a,b=n;break;case 4:r=a,g=l,b=n;break;case 5:r=n,g=l,b=a}return[255*r,255*g,255*b]}function C(t){return i(S(t))}function D(t){return a(S(t))}function I(t){return l(S(t))}function A(t){return s(S(t))}function P(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100,l=t[3]/100;return e=1-Math.min(1,a*(1-l)+l),n=1-Math.min(1,o*(1-l)+l),i=1-Math.min(1,r*(1-l)+l),[255*e,255*n,255*i]}function _(t){return i(P(t))}function T(t){return a(P(t))}function F(t){return o(P(t))}function R(t){return s(P(t))}function L(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*a+o*-1.5372+r*-.4986,n=a*-.9689+1.8758*o+.0415*r,i=.0557*a+o*-.204+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),[255*e,255*n,255*i]}function V(t){var e,n,i,a=t[0],o=t[1],r=t[2];return a/=95.047,o/=100,r/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,n=500*(a-o),i=200*(o-r),[e,n,i]}function O(t){return B(V(t))}function z(t){var e,n,i,a,o=t[0],r=t[1],l=t[2];return o<=8?(n=100*o/903.3,a=7.787*(n/100)+16/116):(n=100*Math.pow((o+16)/116,3),a=Math.pow(n/100,1/3)),e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i=i/108.883<=.008859?i=108.883*(a-l/200-16/116)/7.787:108.883*Math.pow(a-l/200,3),[e,n,i]}function B(t){var e,n,i,a=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),n=360*e/2/Math.PI,n<0&&(n+=360),i=Math.sqrt(o*o+r*r),[a,i,n]}function W(t){return L(z(t))}function N(t){var e,n,i,a=t[0],o=t[1],r=t[2];return i=r/360*2*Math.PI,e=o*Math.cos(i),n=o*Math.sin(i),[a,e,n]}function E(t){return z(N(t))}function H(t){return W(N(t))}function q(t){return J[t]}function j(t){return i(q(t))}function Y(t){return a(q(t))}function U(t){return o(q(t))}function X(t){return l(q(t))}function K(t){return d(q(t))}function G(t){return u(q(t))}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:l,rgb2keyword:s,rgb2xyz:u,rgb2lab:d,rgb2lch:c,hsl2rgb:h,hsl2hsv:f,hsl2hwb:p,hsl2cmyk:m,hsl2keyword:v,hsv2rgb:x,hsv2hsl:y,hsv2hwb:k,hsv2cmyk:w,hsv2keyword:M,hwb2rgb:S,hwb2hsl:C,hwb2hsv:D,hwb2cmyk:I,hwb2keyword:A,cmyk2rgb:P,cmyk2hsl:_,cmyk2hsv:T,cmyk2hwb:F,cmyk2keyword:R,keyword2rgb:q,keyword2hsl:j,keyword2hsv:Y,keyword2hwb:U,keyword2cmyk:X,keyword2lab:K,keyword2xyz:G,xyz2rgb:L,xyz2lab:V,xyz2lch:O,lab2xyz:z,lab2rgb:W,lab2lch:B,lch2lab:N,lch2xyz:E,lch2rgb:H};var J={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Z={};for(var Q in J)Z[JSON.stringify(J[Q])]=Q},{}],5:[function(t,e,n){var i=t(4),a=function(){return new u};for(var o in i){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),l=r[1],s=r[2];a[l]=a[l]||{},a[l][s]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(o)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space,i=this.convs[n];e=a[n][t](i),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{4:4}],6:[function(t,e,n){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],7:[function(t,e,n){var i=t(28)();t(26)(i),t(40)(i),t(22)(i),t(25)(i),t(30)(i),t(21)(i),t(23)(i),t(24)(i),t(29)(i),t(32)(i),t(33)(i),t(31)(i),t(27)(i),t(34)(i),t(35)(i),t(36)(i),t(37)(i),t(38)(i),t(46)(i),t(44)(i),t(45)(i),t(47)(i),t(48)(i),t(49)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=[];a.push(t(41)(i),t(42)(i),t(43)(i)),i.plugins.register(a),e.exports=i,"undefined"!=typeof window&&(window.Chart=i)},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){var e={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-1"}],yAxes:[{type:"linear",position:"left",id:"y-axis-1"}]},tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}};t.defaults.scatter=e,t.controllers.scatter=t.controllers.line,t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bar={hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}},t.controllers.bar=t.DatasetController.extend({dataElementType:t.elements.Rectangle,initialize:function(){var e,n=this;t.DatasetController.prototype.initialize.apply(n,arguments),e=n.getMeta(),e.stack=n.getDataset().stack,e.bar=!0},update:function(t){var e,n,i=this,a=i.getMeta().data;for(i._ruler=i.getRuler(),e=0,n=a.length;e<n;++e)i.updateElement(a[e],e,t)},updateElement:function(t,n,i){var a=this,o=a.chart,r=a.getMeta(),l=a.getDataset(),s=t.custom||{},u=o.options.elements.rectangle;t._xScale=a.getScaleForId(r.xAxisID),t._yScale=a.getScaleForId(r.yAxisID),t._datasetIndex=a.index,t._index=n,t._model={datasetLabel:l.label,label:o.data.labels[n],borderSkipped:s.borderSkipped?s.borderSkipped:u.borderSkipped,backgroundColor:s.backgroundColor?s.backgroundColor:e.getValueAtIndexOrDefault(l.backgroundColor,n,u.backgroundColor),borderColor:s.borderColor?s.borderColor:e.getValueAtIndexOrDefault(l.borderColor,n,u.borderColor),borderWidth:s.borderWidth?s.borderWidth:e.getValueAtIndexOrDefault(l.borderWidth,n,u.borderWidth)},a.updateElementGeometry(t,n,i),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,o=i.getValueScale(),r=o.getBasePixel(),l=o.isHorizontal(),s=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,s);a.horizontal=l,a.base=n?r:u.base,a.x=l?n?r:u.head:d.center,a.y=l?d.center:n?r:u.head,a.height=l?d.size:void 0,a.width=l?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},getStackCount:function(t){var e,n,i=this,a=i.chart,o=i.getIndexScale(),r=o.options.stacked,l=void 0===t?a.data.datasets.length:t+1,s=[];for(e=0;e<l;++e)n=a.getDatasetMeta(e),n.bar&&a.isDatasetVisible(e)&&(r===!1||r===!0&&s.indexOf(n.stack)===-1||void 0===r&&(void 0===n.stack||s.indexOf(n.stack)===-1))&&s.push(n.stack);return s.length},getStackIndex:function(t){return this.getStackCount(t)-1},getRuler:function(){var t=this,n=t.getIndexScale(),i=n.options,a=t.getStackCount(),o=n.isHorizontal()?n.width:n.height,r=o/n.ticks.length,l=r*i.categoryPercentage,s=l/a,u=s*i.barPercentage;return u=Math.min(e.getValueOrDefault(i.barThickness,u),e.getValueOrDefault(i.maxBarThickness,1/0)),{stackCount:a,tickSize:r,categorySize:l,categorySpacing:r-l,fullBarSize:s,barSize:u,barSpacing:s-u,scale:n}},calculateBarValuePixels:function(t,e){var n,i,a,o,r,l,s=this,u=s.chart,d=s.getMeta(),c=s.getValueScale(),h=u.data.datasets,f=Number(h[t].data[e]),g=c.options.stacked,p=d.stack,m=0;if(g||void 0===g&&void 0!==p)for(n=0;n<t;++n)i=u.getDatasetMeta(n),i.bar&&i.stack===p&&i.controller.getValueScaleId()===c.id&&u.isDatasetVisible(n)&&(a=Number(h[n].data[e]),(f<0&&a<0||f>=0&&a>0)&&(m+=a));return o=c.getPixelForValue(m),r=c.getPixelForValue(m+f),l=(r-o)/2,{size:l,base:o,head:r,center:r+l/2}},calculateBarIndexPixels:function(t,e,n){var i=this,a=n.scale,o=i.chart.isCombo,r=i.getStackIndex(t),l=a.getPixelForValue(null,e,t,o),s=n.barSize;return l-=o?n.tickSize/2:0,l+=n.fullBarSize*r,l+=n.categorySpacing/2,l+=n.barSpacing/2,{size:s,base:l,head:l+s,center:l+s/2}},draw:function(){var t,n=this,i=n.chart,a=n.getMeta().data,o=n.getDataset(),r=a.length,l=0;for(e.canvas.clipArea(i.ctx,i.chartArea);l<r;++l)t=o.data[l],null===t||void 0===t||isNaN(t)||a[l].draw();e.canvas.unclipArea(i.ctx)},setHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},o=t._model;o.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:e.getValueAtIndexOrDefault(n.hoverBackgroundColor,i,e.getHoverColor(o.backgroundColor)),o.borderColor=a.hoverBorderColor?a.hoverBorderColor:e.getValueAtIndexOrDefault(n.hoverBorderColor,i,e.getHoverColor(o.borderColor)),o.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:e.getValueAtIndexOrDefault(n.hoverBorderWidth,i,o.borderWidth)},removeHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},o=t._model,r=this.chart.options.elements.rectangle;o.backgroundColor=a.backgroundColor?a.backgroundColor:e.getValueAtIndexOrDefault(n.backgroundColor,i,r.backgroundColor),o.borderColor=a.borderColor?a.borderColor:e.getValueAtIndexOrDefault(n.borderColor,i,r.borderColor),o.borderWidth=a.borderWidth?a.borderWidth:e.getValueAtIndexOrDefault(n.borderWidth,i,r.borderWidth)}}),t.defaults.horizontalBar={hover:{mode:"label"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n+": "+t.xLabel}}}},t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{}],16:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bubble={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+i.r+")"}}}},t.controllers.bubble=t.DatasetController.extend({dataElementType:t.elements.Point,update:function(t){var n=this,i=n.getMeta(),a=i.data;e.each(a,function(e,i){n.updateElement(e,i,t)})},updateElement:function(n,i,a){var o=this,r=o.getMeta(),l=o.getScaleForId(r.xAxisID),s=o.getScaleForId(r.yAxisID),u=n.custom||{},d=o.getDataset(),c=d.data[i],h=o.chart.options.elements.point,f=o.index;e.extend(n,{_xScale:l,_yScale:s,_datasetIndex:f,_index:i,_model:{x:a?l.getPixelForDecimal(.5):l.getPixelForValue("object"==typeof c?c:NaN,i,f,o.chart.isCombo),y:a?s.getBasePixel():s.getPixelForValue(c,i,f),radius:a?0:u.radius?u.radius:o.getRadius(c),hitRadius:u.hitRadius?u.hitRadius:e.getValueAtIndexOrDefault(d.hitRadius,i,h.hitRadius)}}),t.DatasetController.prototype.removeHoverStyle.call(o,n,h);var g=n._model;g.skip=u.skip?u.skip:isNaN(g.x)||isNaN(g.y),n.pivot()},getRadius:function(t){return t.r||this.chart.options.elements.point.radius},setHoverStyle:function(n){var i=this;t.DatasetController.prototype.setHoverStyle.call(i,n);var a=i.chart.data.datasets[n._datasetIndex],o=n._index,r=n.custom||{},l=n._model;
|
11 |
-
l.radius=r.hoverRadius?r.hoverRadius:e.getValueAtIndexOrDefault(a.hoverRadius,o,i.chart.options.elements.point.hoverRadius)+i.getRadius(a.data[o])},removeHoverStyle:function(e){var n=this;t.DatasetController.prototype.removeHoverStyle.call(n,e,n.chart.options.elements.point);var i=n.chart.data.datasets[e._datasetIndex].data[e._index],a=e.custom||{},o=e._model;o.radius=a.radius?a.radius:n.getRadius(i)}})}},{}],17:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=t.defaults;n.doughnut={animation:{animateRotate:!0,animateScale:!1},aspectRatio:1,hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var n=t.data;return n.labels.length&&n.datasets.length?n.labels.map(function(i,a){var o=t.getDatasetMeta(0),r=n.datasets[0],l=o.data[a],s=l&&l.custom||{},u=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=s.backgroundColor?s.backgroundColor:u(r.backgroundColor,a,d.backgroundColor),h=s.borderColor?s.borderColor:u(r.borderColor,a,d.borderColor),f=s.borderWidth?s.borderWidth:u(r.borderWidth,a,d.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(r.data[a])||o.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)a=r.getDatasetMeta(n),a.data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:Math.PI*-.5,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,n){var i=n.labels[t.index],a=": "+n.datasets[t.datasetIndex].data[t.index];return e.isArray(i)?(i=i.slice(),i[0]+=a):i+=a,i}}}},n.pie=e.clone(n.doughnut),e.extend(n.pie,{cutoutPercentage:0}),t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var n=this,i=n.chart,a=i.chartArea,o=i.options,r=o.elements.arc,l=a.right-a.left-r.borderWidth,s=a.bottom-a.top-r.borderWidth,u=Math.min(l,s),d={x:0,y:0},c=n.getMeta(),h=o.cutoutPercentage,f=o.circumference;if(f<2*Math.PI){var g=o.rotation%(2*Math.PI);g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0);var p=g+f,m={x:Math.cos(g),y:Math.sin(g)},v={x:Math.cos(p),y:Math.sin(p)},b=g<=0&&0<=p||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,w=h/100,M={x:y?-1:Math.min(m.x*(m.x<0?1:w),v.x*(v.x<0?1:w)),y:k?-1:Math.min(m.y*(m.y<0?1:w),v.y*(v.y<0?1:w))},S={x:b?1:Math.max(m.x*(m.x>0?1:w),v.x*(v.x>0?1:w)),y:x?1:Math.max(m.y*(m.y>0?1:w),v.y*(v.y>0?1:w))},C={width:.5*(S.x-M.x),height:.5*(S.y-M.y)};u=Math.min(l/C.width,s/C.height),d={x:(S.x+M.x)*-.5,y:(S.y+M.y)*-.5}}i.borderWidth=n.getMaxBorderWidth(c.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(h?i.outerRadius/100*h:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,c.total=n.calculateTotal(),n.outerRadius=i.outerRadius-i.radiusLength*n.getRingIndex(n.index),n.innerRadius=Math.max(n.outerRadius-i.radiusLength,0),e.each(c.data,function(e,i){n.updateElement(e,i,t)})},updateElement:function(t,n,i){var a=this,o=a.chart,r=o.chartArea,l=o.options,s=l.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=l.rotation,h=l.rotation,f=a.getDataset(),g=i&&s.animateRotate?0:t.hidden?0:a.calculateCircumference(f.data[n])*(l.circumference/(2*Math.PI)),p=i&&s.animateScale?0:a.innerRadius,m=i&&s.animateScale?0:a.outerRadius,v=e.getValueAtIndexOrDefault;e.extend(t,{_datasetIndex:a.index,_index:n,_model:{x:u+o.offsetX,y:d+o.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:m,innerRadius:p,label:v(f.label,n,o.data.labels[n])}});var b=t._model;this.removeHoverStyle(t),i&&s.animateRotate||(0===n?b.startAngle=l.rotation:b.startAngle=a.getMeta().data[n-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,n=this.getDataset(),i=this.getMeta(),a=0;return e.each(i.data,function(e,i){t=n.data[i],isNaN(t)||e.hidden||(a+=Math.abs(t))}),a},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,o=t.length,r=0;r<o;r++)e=t[r]._model?t[r]._model.borderWidth:0,n=t[r]._chart?t[r]._chart.config.data.datasets[a].hoverBorderWidth:0,i=e>i?e:i,i=n>i?n:i;return i}})}},{}],18:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return n.getValueOrDefault(t.showLine,e.showLines)}var n=t.helpers;t.defaults.line={showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},t.controllers.line=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,update:function(t){var i,a,o,r=this,l=r.getMeta(),s=l.dataset,u=l.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(l.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(o=s.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),s._scale=h,s._datasetIndex=r.index,s._children=u,s._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:o.tension?o.tension:n.getValueOrDefault(f.lineTension,c.tension),backgroundColor:o.backgroundColor?o.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:f.borderWidth||c.borderWidth,borderColor:o.borderColor?o.borderColor:f.borderColor||c.borderColor,borderCapStyle:o.borderCapStyle?o.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:o.borderDash?o.borderDash:f.borderDash||c.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:o.fill?o.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:o.steppedLine?o.steppedLine:n.getValueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:o.cubicInterpolationMode?o.cubicInterpolationMode:n.getValueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},s.pivot()),i=0,a=u.length;i<a;++i)r.updateElement(u[i],i,t);for(g&&0!==s._model.tension&&r.updateBezierControlPoints(),i=0,a=u.length;i<a;++i)u[i].pivot()},getPointBackgroundColor:function(t,e){var i=this.chart.options.elements.point.backgroundColor,a=this.getDataset(),o=t.custom||{};return o.backgroundColor?i=o.backgroundColor:a.pointBackgroundColor?i=n.getValueAtIndexOrDefault(a.pointBackgroundColor,e,i):a.backgroundColor&&(i=a.backgroundColor),i},getPointBorderColor:function(t,e){var i=this.chart.options.elements.point.borderColor,a=this.getDataset(),o=t.custom||{};return o.borderColor?i=o.borderColor:a.pointBorderColor?i=n.getValueAtIndexOrDefault(a.pointBorderColor,e,i):a.borderColor&&(i=a.borderColor),i},getPointBorderWidth:function(t,e){var i=this.chart.options.elements.point.borderWidth,a=this.getDataset(),o=t.custom||{};return isNaN(o.borderWidth)?isNaN(a.pointBorderWidth)?isNaN(a.borderWidth)||(i=a.borderWidth):i=n.getValueAtIndexOrDefault(a.pointBorderWidth,e,i):i=o.borderWidth,i},updateElement:function(t,e,i){var a,o,r=this,l=r.getMeta(),s=t.custom||{},u=r.getDataset(),d=r.index,c=u.data[e],h=r.getScaleForId(l.yAxisID),f=r.getScaleForId(l.xAxisID),g=r.chart.options.elements.point,p=r.chart.data.labels||[],m=1===p.length||1===u.data.length||r.chart.isCombo;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),a=f.getPixelForValue("object"==typeof c?c:NaN,e,d,m),o=i?h.getBasePixel():r.calculatePointY(c,e,d),t._xScale=f,t._yScale=h,t._datasetIndex=d,t._index=e,t._model={x:a,y:o,skip:s.skip||isNaN(a)||isNaN(o),radius:s.radius||n.getValueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:s.pointStyle||n.getValueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:r.getPointBackgroundColor(t,e),borderColor:r.getPointBorderColor(t,e),borderWidth:r.getPointBorderWidth(t,e),tension:l.dataset._model?l.dataset._model.tension:0,steppedLine:!!l.dataset._model&&l.dataset._model.steppedLine,hitRadius:s.hitRadius||n.getValueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,o,r=this,l=r.chart,s=r.getMeta(),u=r.getScaleForId(s.yAxisID),d=0,c=0;if(u.options.stacked){for(i=0;i<n;i++)if(a=l.data.datasets[i],o=l.getDatasetMeta(i),"line"===o.type&&o.yAxisID===u.id&&l.isDatasetVisible(i)){var h=Number(u.getRightValue(a.data[e]));h<0?c+=h||0:d+=h||0}var f=Number(u.getRightValue(t));return f<0?u.getPixelForValue(c+f):u.getPixelForValue(d+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){function t(t,e,n){return Math.max(Math.min(t,n),e)}var e,i,a,o,r,l=this,s=l.getMeta(),u=l.chart.chartArea,d=s.data||[];if(s.dataset._model.spanGaps&&(d=d.filter(function(t){return!t._model.skip})),"monotone"===s.dataset._model.cubicInterpolationMode)n.splineCurveMonotone(d);else for(e=0,i=d.length;e<i;++e)a=d[e],o=a._model,r=n.splineCurve(n.previousItem(d,e)._model,o,n.nextItem(d,e)._model,s.dataset._model.tension),o.controlPointPreviousX=r.previous.x,o.controlPointPreviousY=r.previous.y,o.controlPointNextX=r.next.x,o.controlPointNextY=r.next.y;if(l.chart.options.elements.line.capBezierPoints)for(e=0,i=d.length;e<i;++e)o=d[e]._model,o.controlPointPreviousX=t(o.controlPointPreviousX,u.left,u.right),o.controlPointPreviousY=t(o.controlPointPreviousY,u.top,u.bottom),o.controlPointNextX=t(o.controlPointNextX,u.left,u.right),o.controlPointNextY=t(o.controlPointNextY,u.top,u.bottom)},draw:function(){var n=this,i=n.chart,a=n.getMeta(),o=a.data||[],r=i.chartArea,l=o.length,s=0;for(t.canvasHelpers.clipArea(i.ctx,r),e(n.getDataset(),i.options)&&a.dataset.draw(),t.canvasHelpers.unclipArea(i.ctx);s<l;++s)o[s].draw(r)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},o=t._model;o.radius=a.hoverRadius||n.getValueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),o.backgroundColor=a.hoverBackgroundColor||n.getValueAtIndexOrDefault(e.pointHoverBackgroundColor,i,n.getHoverColor(o.backgroundColor)),o.borderColor=a.hoverBorderColor||n.getValueAtIndexOrDefault(e.pointHoverBorderColor,i,n.getHoverColor(o.borderColor)),o.borderWidth=a.hoverBorderWidth||n.getValueAtIndexOrDefault(e.pointHoverBorderWidth,i,o.borderWidth)},removeHoverStyle:function(t){var e=this,i=e.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},r=t._model;void 0!==i.radius&&void 0===i.pointRadius&&(i.pointRadius=i.radius),r.radius=o.radius||n.getValueAtIndexOrDefault(i.pointRadius,a,e.chart.options.elements.point.radius),r.backgroundColor=e.getPointBackgroundColor(t,a),r.borderColor=e.getPointBorderColor(t,a),r.borderWidth=e.getPointBorderWidth(t,a)}})}},{}],19:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.polarArea={scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,aspectRatio:1,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var n=t.data;return n.labels.length&&n.datasets.length?n.labels.map(function(i,a){var o=t.getDatasetMeta(0),r=n.datasets[0],l=o.data[a],s=l.custom||{},u=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=s.backgroundColor?s.backgroundColor:u(r.backgroundColor,a,d.backgroundColor),h=s.borderColor?s.borderColor:u(r.borderColor,a,d.borderColor),f=s.borderWidth?s.borderWidth:u(r.borderWidth,a,d.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(r.data[a])||o.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)a=r.getDatasetMeta(n),a.data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}},t.controllers.polarArea=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,update:function(t){var n=this,i=n.chart,a=i.chartArea,o=n.getMeta(),r=i.options,l=r.elements.arc,s=Math.min(a.right-a.left,a.bottom-a.top);i.outerRadius=Math.max((s-l.borderWidth/2)/2,0),i.innerRadius=Math.max(r.cutoutPercentage?i.outerRadius/100*r.cutoutPercentage:1,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),n.outerRadius=i.outerRadius-i.radiusLength*n.index,n.innerRadius=n.outerRadius-i.radiusLength,o.count=n.countVisibleElements(),e.each(o.data,function(e,i){n.updateElement(e,i,t)})},updateElement:function(t,n,i){for(var a=this,o=a.chart,r=a.getDataset(),l=o.options,s=l.animation,u=o.scale,d=e.getValueAtIndexOrDefault,c=o.data.labels,h=a.calculateCircumference(r.data[n]),f=u.xCenter,g=u.yCenter,p=0,m=a.getMeta(),v=0;v<n;++v)isNaN(r.data[v])||m.data[v].hidden||++p;var b=l.startAngle,x=t.hidden?0:u.getDistanceFromCenterForValue(r.data[n]),y=b+h*p,k=y+(t.hidden?0:h),w=s.animateScale?0:u.getDistanceFromCenterForValue(r.data[n]);e.extend(t,{_datasetIndex:a.index,_index:n,_scale:u,_model:{x:f,y:g,innerRadius:0,outerRadius:i?w:x,startAngle:i&&s.animateRotate?b:y,endAngle:i&&s.animateRotate?b:k,label:d(c,n,c[n])}}),a.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),n=this.getMeta(),i=0;return e.each(n.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{}],20:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.radar={aspectRatio:1,scale:{type:"radialLinear"},elements:{line:{tension:0}}},t.controllers.radar=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,linkScales:e.noop,update:function(t){var n=this,i=n.getMeta(),a=i.dataset,o=i.data,r=a.custom||{},l=n.getDataset(),s=n.chart.options.elements.line,u=n.chart.scale;void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),e.extend(i.dataset,{_datasetIndex:n.index,_scale:u,_children:o,_loop:!0,_model:{tension:r.tension?r.tension:e.getValueOrDefault(l.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:l.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:l.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:l.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==l.fill?l.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:l.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:l.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:l.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:l.borderJoinStyle||s.borderJoinStyle}}),i.dataset.pivot(),e.each(o,function(e,i){n.updateElement(e,i,t)},n),n.updateBezierControlPoints()},updateElement:function(t,n,i){var a=this,o=t.custom||{},r=a.getDataset(),l=a.chart.scale,s=a.chart.options.elements.point,u=l.getPointPositionForValue(n,r.data[n]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),e.extend(t,{_datasetIndex:a.index,_index:n,_scale:l,_model:{x:i?l.xCenter:u.x,y:i?l.yCenter:u.y,tension:o.tension?o.tension:e.getValueOrDefault(r.lineTension,a.chart.options.elements.line.tension),radius:o.radius?o.radius:e.getValueAtIndexOrDefault(r.pointRadius,n,s.radius),backgroundColor:o.backgroundColor?o.backgroundColor:e.getValueAtIndexOrDefault(r.pointBackgroundColor,n,s.backgroundColor),borderColor:o.borderColor?o.borderColor:e.getValueAtIndexOrDefault(r.pointBorderColor,n,s.borderColor),borderWidth:o.borderWidth?o.borderWidth:e.getValueAtIndexOrDefault(r.pointBorderWidth,n,s.borderWidth),pointStyle:o.pointStyle?o.pointStyle:e.getValueAtIndexOrDefault(r.pointStyle,n,s.pointStyle),hitRadius:o.hitRadius?o.hitRadius:e.getValueAtIndexOrDefault(r.pointHitRadius,n,s.hitRadius)}}),t._model.skip=o.skip?o.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,n=this.getMeta();e.each(n.data,function(i,a){var o=i._model,r=e.splineCurve(e.previousItem(n.data,a,!0)._model,o,e.nextItem(n.data,a,!0)._model,o.tension);o.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),o.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),o.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),o.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),i.pivot()})},setHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},a=t._index,o=t._model;o.radius=i.hoverRadius?i.hoverRadius:e.getValueAtIndexOrDefault(n.pointHoverRadius,a,this.chart.options.elements.point.hoverRadius),o.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:e.getValueAtIndexOrDefault(n.pointHoverBackgroundColor,a,e.getHoverColor(o.backgroundColor)),o.borderColor=i.hoverBorderColor?i.hoverBorderColor:e.getValueAtIndexOrDefault(n.pointHoverBorderColor,a,e.getHoverColor(o.borderColor)),o.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:e.getValueAtIndexOrDefault(n.pointHoverBorderWidth,a,o.borderWidth)},removeHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},a=t._index,o=t._model,r=this.chart.options.elements.point;o.radius=i.radius?i.radius:e.getValueAtIndexOrDefault(n.pointRadius,a,r.radius),o.backgroundColor=i.backgroundColor?i.backgroundColor:e.getValueAtIndexOrDefault(n.pointBackgroundColor,a,r.backgroundColor),o.borderColor=i.borderColor?i.borderColor:e.getValueAtIndexOrDefault(n.pointBorderColor,a,r.borderColor),o.borderWidth=i.borderWidth?i.borderWidth:e.getValueAtIndexOrDefault(n.pointBorderWidth,a,r.borderWidth)}})}},{}],21:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:e.noop,onComplete:e.noop},t.Animation=t.Element.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,o,r=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var n=e.findIndex(this.animations,function(e){return e.chart===t});n!==-1&&(this.animations.splice(n,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=e.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var n,i,a=this.animations,o=0;o<a.length;)n=a[o],i=n.chart,n.currentStep=(n.currentStep||0)+t,n.currentStep=Math.min(n.currentStep,n.numSteps),e.callback(n.render,[i,n],i),e.callback(n.onAnimationProgress,[n],i),n.currentStep>=n.numSteps?(e.callback(n.onAnimationComplete,[n],i),i.animating=!1,a.splice(o,1)):++o}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{}],22:[function(t,e,n){"use strict";e.exports=function(t){var e=t.canvasHelpers={};e.drawPoint=function(e,n,i,a,o){var r,l,s,u,d,c;if("object"==typeof n&&(r=n.toString(),"[object HTMLImageElement]"===r||"[object HTMLCanvasElement]"===r))return void e.drawImage(n,a-n.width/2,o-n.height/2,n.width,n.height);if(!(isNaN(i)||i<=0)){switch(n){default:e.beginPath(),e.arc(a,o,i,0,2*Math.PI),e.closePath(),e.fill();break;case"triangle":e.beginPath(),l=3*i/Math.sqrt(3),d=l*Math.sqrt(3)/2,e.moveTo(a-l/2,o+d/3),e.lineTo(a+l/2,o+d/3),e.lineTo(a,o-2*d/3),e.closePath(),e.fill();break;case"rect":c=1/Math.SQRT2*i,e.beginPath(),e.fillRect(a-c,o-c,2*c,2*c),e.strokeRect(a-c,o-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=a-h,g=o-h,p=Math.SQRT2*i;t.helpers.drawRoundedRectangle(e,f,g,p,p,i/2),e.fill();break;case"rectRot":c=1/Math.SQRT2*i,e.beginPath(),e.moveTo(a-c,o),e.lineTo(a,o+c),e.lineTo(a+c,o),e.lineTo(a,o-c),e.closePath(),e.fill();break;case"cross":e.beginPath(),e.moveTo(a,o+i),e.lineTo(a,o-i),e.moveTo(a-i,o),e.lineTo(a+i,o),e.closePath();break;case"crossRot":e.beginPath(),s=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,e.moveTo(a-s,o-u),e.lineTo(a+s,o+u),e.moveTo(a-s,o+u),e.lineTo(a+s,o-u),e.closePath();break;case"star":e.beginPath(),e.moveTo(a,o+i),e.lineTo(a,o-i),e.moveTo(a-i,o),e.lineTo(a+i,o),s=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,e.moveTo(a-s,o-u),e.lineTo(a+s,o+u),e.moveTo(a-s,o+u),e.lineTo(a+s,o-u),e.closePath();break;case"line":e.beginPath(),e.moveTo(a-i,o),e.lineTo(a+i,o),e.closePath();break;case"dash":e.beginPath(),e.moveTo(a,o),e.lineTo(a+i,o),e.closePath()}e.stroke()}},e.clipArea=function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},e.unclipArea=function(t){t.restore()},e.lineTo=function(t,e,n,i){return n.steppedLine?("after"===n.steppedLine?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y)):n.tension?void t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):void t.lineTo(n.x,n.y)},t.helpers.canvas=e}},{}],23:[function(t,e,n){"use strict";e.exports=function(t){function e(e){e=e||{};var n=e.data=e.data||{};return n.datasets=n.datasets||[],n.labels=n.labels||[],e.options=a.configMerge(t.defaults.global,t.defaults[e.type],e.options||{}),e}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}function i(t){return"top"===t||"bottom"===t}var a=t.helpers,o=t.plugins,r=t.platform;t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(n,i){var o=this;i=e(i);var l=r.acquireContext(n,i),s=l&&l.canvas,u=s&&s.height,d=s&&s.width;return o.id=a.uid(),o.ctx=l,o.canvas=s,o.config=i,o.width=d,o.height=u,o.aspectRatio=u?d/u:null,o.options=i.options,o._bufferedRender=!1,o.chart=o,o.controller=o,t.instances[o.id]=o,Object.defineProperty(o,"data",{get:function(){return o.config.data},set:function(t){o.config.data=t}}),l&&s?(o.initialize(),void o.update()):void console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return o.notify(t,"beforeInit"),a.retinaScale(t),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),o.notify(t,"afterInit"),t},clear:function(){return a.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,r=n.maintainAspectRatio&&e.aspectRatio||null,l=Math.floor(a.getMaximumWidth(i)),s=Math.floor(r?l/r:a.getMaximumHeight(i));if((e.width!==l||e.height!==s)&&(i.width=e.width=l,i.height=e.height=s,i.style.width=l+"px",i.style.height=s+"px",a.retinaScale(e),!t)){var u={width:l,height:s};o.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,o=e.scales={},r=[];n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(r,function(n){var r=n.options,l=a.getValueOrDefault(r.type,n.dtype),s=t.scaleService.getScaleConstructor(l);if(s){i(r.position)!==i(n.dposition)&&(r.position=n.dposition);var u=new s({id:r.id,options:r,ctx:e.ctx,chart:e});o[u.id]=u,n.isDefault&&(e.scale=u)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];if(a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o);if(r.type||(r.type=a.type||e.config.type),n.push(r.type),r.controller)r.controller.updateIndex(o);else{var l=t.controllers[r.type];if(void 0===l)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new l(e,o),i.push(r.controller)}},e),n.length>1)for(var o=1;o<n.length;o++)if(n[o]!==n[o-1]){e.isCombo=!0;break}return i},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t,e){var i=this;if(n(i),o.notify(i,"beforeUpdate")!==!1){i.tooltip._data=i.data;var r=i.buildOrUpdateControllers();a.each(i.data.datasets,function(t,e){i.getDatasetMeta(e).controller.buildOrUpdateElements()},i),i.updateLayout(),a.each(r,function(t){t.reset()}),i.updateDatasets(),o.notify(i,"afterUpdate"),i._bufferedRender?i._bufferedRequest={lazy:e,duration:t}:i.render(t,e)}},updateLayout:function(){var e=this;o.notify(e,"beforeLayout")!==!1&&(t.layoutService.update(this,this.width,this.height),o.notify(e,"afterScaleUpdate"),o.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(o.notify(t,"beforeDatasetsUpdate")!==!1){for(var e=0,n=t.data.datasets.length;e<n;++e)t.updateDataset(e);o.notify(t,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this,n=e.getDatasetMeta(t),i={meta:n,index:t};o.notify(e,"beforeDatasetUpdate",[i])!==!1&&(n.controller.update(),o.notify(e,"afterDatasetUpdate",[i]))},render:function(e,n){var i=this;if(o.notify(i,"beforeRender")!==!1){var r=i.options.animation,l=function(t){o.notify(i,"afterRender"),a.callback(r&&r.onComplete,[t],i)};if(r&&("undefined"!=typeof e&&0!==e||"undefined"==typeof e&&0!==r.duration)){var s=new t.Animation({numSteps:(e||r.duration)/16.66,easing:r.easing,render:function(t,e){var n=a.easingEffects[e.easing],i=e.currentStep,o=i/e.numSteps;t.draw(n(o),o,i)},onAnimationProgress:r.onProgress,onAnimationComplete:l});t.animationService.addAnimation(i,s,e,n)}else i.draw(),l(new t.Animation({numSteps:0,chart:i}));return i}},draw:function(t){var e=this;e.clear(),void 0!==t&&null!==t||(t=1),e.transition(t),o.notify(e,"beforeDraw",[t])!==!1&&(a.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e.tooltip.draw(),o.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=this,n=0,i=(e.data.datasets||[]).length;n<i;++n)e.isDatasetVisible(n)&&e.getDatasetMeta(n).controller.transition(t);e.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(o.notify(e,"beforeDatasetsDraw",[t])!==!1){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);o.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this,i=n.getDatasetMeta(t),a={meta:i,index:t,easingValue:e};o.notify(n,"beforeDatasetDraw",[a])!==!1&&(i.controller.draw(e),o.notify(n,"afterDatasetDraw",[a]))},getElementAtEvent:function(e){return t.Interaction.modes.single(this,e)},getElementsAtEvent:function(e){return t.Interaction.modes.label(this,e,{intersect:!0})},getElementsAtXAxis:function(e){return t.Interaction.modes["x-axis"](this,e,{intersect:!0})},getElementsAtEventForMode:function(e,n,i){var a=t.Interaction.modes[n];return"function"==typeof a?a(this,e,i):[]},getDatasetAtEvent:function(e){return t.Interaction.modes.dataset(this,e,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroy:function(){var e,n,i,l=this,s=l.canvas;for(l.stop(),n=0,i=l.data.datasets.length;n<i;++n)e=l.getDatasetMeta(n),e.controller&&(e.controller.destroy(),e.controller=null);s&&(l.unbindEvents(),a.clear(l),r.releaseContext(l.ctx),l.canvas=null,l.ctx=null),o.notify(l,"destroy"),delete t.instances[l.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e),e.tooltip.initialize()},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};a.each(t.options.events,function(i){r.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},r.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,a.each(e,function(e,n){r.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,o,r=n?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)i=t[a],i&&this.getDatasetMeta(i._datasetIndex).controller[r](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(o.notify(e,"beforeEvent",[t])!==!1){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);i|=n&&n.handleEvent(t),o.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a.duration,a.lazy):i&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e=this,n=e.options||{},i=n.hover,o=!1;return e.lastActive=e.lastActive||[],"mouseout"===t.type?e.active=[]:e.active=e.getElementsAtEventForMode(t,i.mode,i),i.onHover&&i.onHover.call(e,t.native,e.active),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(e,t.native,e.active),e.lastActive.length&&e.updateHoverStyle(e.lastActive,i.mode,!1),e.active.length&&i.mode&&e.updateHoverStyle(e.active,i.mode,!0),o=!a.arrayEquals(e.active,e.lastActive),e.lastActive=e.active,o}}),t.Controller=t}},{}],24:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return t._chartjs?void t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),void a.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),o=a.apply(this,e);return i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),o}})}))}function n(t,e){var n=t._chartjs;if(n){var i=n.listeners,o=i.indexOf(e);
|
12 |
-
o!==-1&&i.splice(o,1),i.length>0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var i=t.helpers,a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],o=i.data;for(t=0,e=a.length;t<e;++t)o[t]=o[t]||n.createMetaData(t);i.dataset=i.dataset||n.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t=this,i=t.getDataset(),a=i.data||(i.data=[]);t._data!==a&&(t._data&&n(t._data,t),e(a,t),t._data=a),t.resyncElements()},update:i.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t,e){var n=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},r=i.getValueAtIndexOrDefault,l=t._model;l.backgroundColor=o.backgroundColor?o.backgroundColor:r(n.backgroundColor,a,e.backgroundColor),l.borderColor=o.borderColor?o.borderColor:r(n.borderColor,a,e.borderColor),l.borderWidth=o.borderWidth?o.borderWidth:r(n.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},o=i.getValueAtIndexOrDefault,r=i.getHoverColor,l=t._model;l.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:o(e.hoverBackgroundColor,n,r(l.backgroundColor)),l.borderColor=a.hoverBorderColor?a.hoverBorderColor:o(e.hoverBorderColor,n,r(l.borderColor)),l.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:o(e.hoverBorderWidth,n,l.borderWidth)},resyncElements:function(){var t=this,e=t.getMeta(),n=t.getDataset().data,i=e.data.length,a=n.length;a<i?e.data.splice(a,i-a):a>i&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=i.inherits}},{}],25:[function(t,e,n){"use strict";var i=t(3);e.exports=function(t){function e(t,e,n,a){var o,r,l,s,u,d,c,h,f,g=Object.keys(n);for(o=0,r=g.length;o<r;++o)if(l=g[o],d=n[l],e.hasOwnProperty(l)||(e[l]=d),s=e[l],s!==d&&"_"!==l[0]){if(t.hasOwnProperty(l)||(t[l]=s),u=t[l],c=typeof d,c===typeof u)if("string"===c){if(h=i(u),h.valid&&(f=i(d),f.valid)){e[l]=f.mix(h,a).rgbString();continue}}else if("number"===c&&isFinite(u)&&isFinite(d)){e[l]=u+(d-u)*a;continue}e[l]=d}}var n=t.helpers;t.elements={},t.Element=function(t){n.extend(this,t),this.initialize.apply(this,arguments)},n.extend(t.Element.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=n.clone(t._model)),t._start={},t},transition:function(t){var n=this,i=n._model,a=n._start,o=n._view;return i&&1!==t?(o||(o=n._view={}),a||(a=n._start={}),e(a,o,i,t),n):(n._view=i,n._start=null,n)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return n.isNumber(this._model.x)&&n.isNumber(this._model.y)}}),t.Element.extend=n.inherits}},{3:3}],26:[function(t,e,n){"use strict";var i=t(3);e.exports=function(t){function e(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),t.indexOf("%")!==-1&&(i=i/100*e.parentNode[n])):i=t,i}function n(t){return void 0!==t&&null!==t&&"none"!==t}function a(t,i,a){var o=document.defaultView,r=t.parentNode,l=o.getComputedStyle(t)[i],s=o.getComputedStyle(r)[i],u=n(l),d=n(s),c=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(l,t,a):c,d?e(s,r,a):c):"none"}var o=t.helpers={};o.each=function(t,e,n,i){var a,r;if(o.isArray(t))if(r=t.length,i)for(a=r-1;a>=0;a--)e.call(n,t[a],a);else for(a=0;a<r;a++)e.call(n,t[a],a);else if("object"==typeof t){var l=Object.keys(t);for(r=l.length,a=0;a<r;a++)e.call(n,t[l[a]],l[a])}},o.clone=function(t){var e={};return o.each(t,function(t,n){o.isArray(t)?e[n]=t.slice(0):"object"==typeof t&&null!==t?e[n]=o.clone(t):e[n]=t}),e},o.extend=function(t){for(var e=function(e,n){t[n]=e},n=1,i=arguments.length;n<i;n++)o.each(arguments[n],e);return t},o.configMerge=function(e){var n=o.clone(e);return o.each(Array.prototype.slice.call(arguments,1),function(e){o.each(e,function(e,i){var a=n.hasOwnProperty(i),r=a?n[i]:{};"scales"===i?n[i]=o.scaleMerge(r,e):"scale"===i?n[i]=o.configMerge(r,t.scaleService.getScaleDefaults(e.type),e):!a||"object"!=typeof r||o.isArray(r)||null===r||"object"!=typeof e||o.isArray(e)?n[i]=e:n[i]=o.configMerge(r,e)})}),n},o.scaleMerge=function(e,n){var i=o.clone(e);return o.each(n,function(e,n){"xAxes"===n||"yAxes"===n?i.hasOwnProperty(n)?o.each(e,function(e,a){var r=o.getValueOrDefault(e.type,"xAxes"===n?"category":"linear"),l=t.scaleService.getScaleDefaults(r);a>=i[n].length||!i[n][a].type?i[n].push(o.configMerge(l,e)):e.type&&e.type!==i[n][a].type?i[n][a]=o.configMerge(i[n][a],l,e):i[n][a]=o.configMerge(i[n][a],e)}):(i[n]=[],o.each(e,function(e){var a=o.getValueOrDefault(e.type,"xAxes"===n?"category":"linear");i[n].push(o.configMerge(t.scaleService.getScaleDefaults(a),e))})):i.hasOwnProperty(n)&&"object"==typeof i[n]&&null!==i[n]&&"object"==typeof e?i[n]=o.configMerge(i[n],e):i[n]=e}),i},o.getValueAtIndexOrDefault=function(t,e,n){return void 0===t||null===t?n:o.isArray(t)?e<t.length?t[e]:n:t},o.getValueOrDefault=function(t,e){return void 0===t?e:t},o.indexOf=Array.prototype.indexOf?function(t,e){return t.indexOf(e)}:function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return o.each(t,function(t){e(t)&&n.push(t)}),n},o.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},o.findNextWhere=function(t,e,n){void 0!==n&&null!==n||(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},o.findPreviousWhere=function(t,e,n){void 0!==n&&null!==n||(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},o.inherits=function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=o.inherits,t&&o.extend(n.prototype,t),n.__super__=e.prototype,n},o.noop=function(){},o.uid=function(){var t=0;return function(){return t++}}(),o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,n){return Math.abs(t-e)<n},o.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return t=+t,0===t||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),o=Math.atan2(i,n);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2===0?0:.5},o.splineCurve=function(t,e,n,i){var a=t.skip?e:t,o=e,r=n.skip?e:n,l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),s=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=l/(l+s),d=s/(l+s);u=isNaN(u)?0:u,d=isNaN(d)?0:d;var c=i*u,h=i*d;return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,n,i,a,r=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),l=r.length;for(e=0;e<l;++e)if(i=r[e],!i.model.skip){if(n=e>0?r[e-1]:null,a=e<l-1?r[e+1]:null,a&&!a.model.skip){var s=a.model.x-i.model.x;i.deltaK=0!==s?(a.model.y-i.model.y)/s:0}!n||n.model.skip?i.mK=i.deltaK:!a||a.model.skip?i.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?i.mK=0:i.mK=(n.deltaK+i.deltaK)/2}var u,d,c,h;for(e=0;e<l-1;++e)i=r[e],a=r[e+1],i.model.skip||a.model.skip||(o.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(u=i.mK/i.deltaK,d=a.mK/i.deltaK,h=Math.pow(u,2)+Math.pow(d,2),h<=9||(c=3/Math.sqrt(h),i.mK=u*c*i.deltaK,a.mK=d*c*i.deltaK)));var f;for(e=0;e<l;++e)i=r[e],i.model.skip||(n=e>0?r[e-1]:null,a=e<l-1?r[e+1]:null,n&&!n.model.skip&&(f=(i.model.x-n.model.x)/3,i.model.controlPointPreviousX=i.model.x-f,i.model.controlPointPreviousY=i.model.y-f*i.mK),a&&!a.model.skip&&(f=(a.model.x-i.model.x)/3,i.model.controlPointNextX=i.model.x+f,i.model.controlPointNextY=i.model.y+f*i.mK))},o.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var n,i=Math.floor(o.log10(t)),a=t/Math.pow(10,i);return n=e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10,n*Math.pow(10,i)};var r=o.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===(t/=1)?1:(n||(n=.3),i<Math.abs(1)?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-(i*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/n)))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===(t/=1)?1:(n||(n=.3),i<Math.abs(1)?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((1*t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2===(t/=.5)?1:(n||(n=1*(.3*1.5)),i<Math.abs(1)?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/n)):i*Math.pow(2,-10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return 1*(t/=1)*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return 1*((t=t/1-1)*t*((e+1)*t+e)+1)},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:function(t){return 1-r.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?1*(7.5625*t*t):t<2/2.75?1*(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return t<.5?.5*r.easeInBounce(2*t):.5*r.easeOutBounce(2*t-1)+.5}};o.requestAnimFrame=function(){return"undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),o.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,l=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=l.right-l.left-u-c,g=l.bottom-l.top-d-h;return n=Math.round((n-l.left-u)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-l.top-d)/g*r.height/e.currentDevicePixelRatio),{x:n,y:i}},o.addEvent=function(t,e,n){t.addEventListener?t.addEventListener(e,n):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n},o.removeEvent=function(t,e,n){t.removeEventListener?t.removeEventListener(e,n,!1):t.detachEvent?t.detachEvent("on"+e,n):t["on"+e]=o.noop},o.getConstraintWidth=function(t){return a(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return a(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode,n=parseInt(o.getStyle(e,"padding-left"),10),i=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode,n=parseInt(o.getStyle(e,"padding-top"),10),i=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t){var e=t.currentDevicePixelRatio=window.devicePixelRatio||1;if(1!==e){var n=t.canvas,i=t.height,a=t.width;n.height=i*e,n.width=a*e,t.ctx.scale(e,e),n.style.height=i+"px",n.style.width=a+"px"}},o.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},o.fontString=function(t,e,n){return e+" "+t+"px "+n},o.longestText=function(t,e,n,i){i=i||{};var a=i.data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var l=0;o.each(n,function(e){void 0!==e&&null!==e&&o.isArray(e)!==!0?l=o.measureText(t,a,r,l,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(l=o.measureText(t,a,r,l,e))})});var s=r.length/2;if(s>n.length){for(var u=0;u<s;u++)delete a[r[u]];r.splice(0,s)}return l},o.measureText=function(t,e,n,i,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,n.push(a)),o>i&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.drawRoundedRectangle=function(t,e,n,i,a,o){t.beginPath(),t.moveTo(e+o,n),t.lineTo(e+i-o,n),t.quadraticCurveTo(e+i,n,e+i,n+o),t.lineTo(e+i,n+a-o),t.quadraticCurveTo(e+i,n+a,e+i-o,n+a),t.lineTo(e+o,n+a),t.quadraticCurveTo(e,n+a,e,n+a-o),t.lineTo(e,n+o),t.quadraticCurveTo(e,n,e+o,n),t.closePath()},o.color=i?function(e){return e instanceof CanvasGradient&&(e=t.defaults.global.defaultColor),i(e)}:function(t){return console.error("Color.js not found!"),t},o.isArray=Array.isArray?function(t){return Array.isArray(t)}:function(t){return"[object Array]"===Object.prototype.toString.call(t)},o.arrayEquals=function(t,e){var n,i,a,r;if(!t||!e||t.length!==e.length)return!1;for(n=0,i=t.length;n<i;++n)if(a=t[n],r=e[n],a instanceof Array&&r instanceof Array){if(!o.arrayEquals(a,r))return!1}else if(a!==r)return!1;return!0},o.callback=function(t,e,n){t&&"function"==typeof t.call&&t.apply(n,e)},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()},o.callCallback=o.callback}},{3:3}],27:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return t.native?{x:t.x,y:t.y}:r.getRelativePosition(t,e)}function n(t,e){var n,i,a,o,r,l=t.data.datasets;for(i=0,o=l.length;i<o;++i)if(t.isDatasetVisible(i))for(n=t.getDatasetMeta(i),a=0,r=n.data.length;a<r;++a){var s=n.data[a];s._view.skip||e(s)}}function i(t,e){var i=[];return n(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function a(t,e,i,a){var o=Number.POSITIVE_INFINITY,l=[];return a||(a=r.distanceBetweenPoints),n(t,function(t){if(!i||t.inRange(e.x,e.y)){var n=t.getCenterPoint(),r=a(e,n);r<o?(l=[t],o=r):r===o&&l.push(t)}}),l}function o(t,n,o){var r=e(n,t),l=function(t,e){return Math.abs(t.x-e.x)},s=o.intersect?i(t,r):a(t,r,!1,l),u=[];return s.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n),a=i.data[s[0]._index];a&&!a._view.skip&&u.push(a)}}),u):[]}var r=t.helpers;t.Interaction={modes:{single:function(t,i){var a=e(i,t),o=[];return n(t,function(t){if(t.inRange(a.x,a.y))return o.push(t),o}),o.slice(0,1)},label:o,index:o,dataset:function(t,n,o){var r=e(n,t),l=o.intersect?i(t,r):a(t,r,!1);return l.length>0&&(l=t.getDatasetMeta(l[0]._datasetIndex).data),l},"x-axis":function(t,e){return o(t,e,!0)},point:function(t,n){var a=e(n,t);return i(t,a)},nearest:function(t,n,i){var o=e(n,t),r=a(t,o,i.intersect);return r.length>1&&r.sort(function(t,e){var n=t.getArea(),i=e.getArea(),a=n-i;return 0===a&&(a=t._datasetIndex-e._datasetIndex),a}),r.slice(0,1)},x:function(t,i,a){var o=e(i,t),r=[],l=!1;return n(t,function(t){t.inXRange(o.x)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),a.intersect&&!l&&(r=[]),r},y:function(t,i,a){var o=e(i,t),r=[],l=!1;return n(t,function(t){t.inYRange(o.y)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),a.intersect&&!l&&(r=[]),r}}}}},{}],28:[function(t,e,n){"use strict";e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.defaults={global:{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}}},t.Chart=t,t}},{}],29:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return i.where(t,function(t){return t.position===e})}function n(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}var i=t.helpers;t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;n!==-1&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)i=a[r],n.hasOwnProperty(i)&&(e[i]=n[i])},update:function(t,a,o){function r(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?k:I,D),A-=e.height):(e=t.update(C,S),I-=e.width),P.push({horizontal:n,minSize:e,box:t})}function l(t){var e=i.findNextWhere(P,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(L,_),right:Math.max(V,T),top:0,bottom:0};t.update(t.fullWidth?k:I,w/2,n)}else t.update(e.minSize.width,A)}function s(t){var e=i.findNextWhere(P,function(e){return e.box===t}),n={left:0,right:0,top:O,bottom:z};e&&t.update(e.minSize.width,A,n)}function u(t){t.isHorizontal()?(t.left=t.fullWidth?h:L,t.right=t.fullWidth?a-f:L+I,t.top=q,t.bottom=q+t.height,q=t.bottom):(t.left=H,t.right=H+t.width,t.top=O,t.bottom=O+A,H=t.right)}if(t){var d=t.options.layout,c=d?d.padding:null,h=0,f=0,g=0,p=0;isNaN(c)?(h=c.left||0,f=c.right||0,g=c.top||0,p=c.bottom||0):(h=c,f=c,g=c,p=c);var m=e(t.boxes,"left"),v=e(t.boxes,"right"),b=e(t.boxes,"top"),x=e(t.boxes,"bottom"),y=e(t.boxes,"chartArea");n(m,!0),n(v,!1),n(b,!0),n(x,!1);var k=a-h-f,w=o-g-p,M=k/2,S=w/2,C=(a-M)/(m.length+v.length),D=(o-S)/(b.length+x.length),I=k,A=w,P=[];i.each(m.concat(v,b,x),r);var _=0,T=0,F=0,R=0;i.each(b.concat(x),function(t){if(t.getPadding){var e=t.getPadding();_=Math.max(_,e.left),T=Math.max(T,e.right)}}),i.each(m.concat(v),function(t){if(t.getPadding){var e=t.getPadding();F=Math.max(F,e.top),R=Math.max(R,e.bottom)}});var L=h,V=f,O=g,z=p;i.each(m.concat(v),l),i.each(m,function(t){L+=t.width}),i.each(v,function(t){V+=t.width}),i.each(b.concat(x),l),i.each(b,function(t){O+=t.height}),i.each(x,function(t){z+=t.height}),i.each(m.concat(v),s),L=h,V=f,O=g,z=p,i.each(m,function(t){L+=t.width}),i.each(v,function(t){V+=t.width}),i.each(b,function(t){O+=t.height}),i.each(x,function(t){z+=t.height});var B=Math.max(_-L,0);L+=B,V+=Math.max(T-V,0);var W=Math.max(F-O,0);O+=W,z+=Math.max(R-z,0);var N=o-O-z,E=a-L-V;E===I&&N===A||(i.each(m,function(t){t.height=N}),i.each(v,function(t){t.height=N}),i.each(b,function(t){t.fullWidth||(t.width=E)}),i.each(x,function(t){t.fullWidth||(t.width=E)}),A=N,I=E);var H=h+B,q=g+W;i.each(m.concat(b),u),H+=I,q+=A,i.each(v,u),i.each(x,u),t.chartArea={left:L,top:O,right:L+I,bottom:O+A},i.each(y,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(I,A)})}}}}},{}],30:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.plugins={},t.plugins={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){e.indexOf(t)===-1&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var n=e.indexOf(t);n!==-1&&e.splice(n,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,a,o,r,l,s=this.descriptors(t),u=s.length;for(i=0;i<u;++i)if(a=s[i],o=a.plugin,l=o[e],"function"==typeof l&&(r=[t].concat(n||[]),r.push(a.options),l.apply(o,r)===!1))return!1;return!0},descriptors:function(n){var i=n._plugins||(n._plugins={});if(i.id===this._cacheId)return i.descriptors;var a=[],o=[],r=n&&n.config||{},l=t.defaults.global.plugins,s=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach(function(t){var n=a.indexOf(t);if(n===-1){var i=t.id,r=s[i];r!==!1&&(r===!0&&(r=e.clone(l[i])),a.push(t),o.push({plugin:t,options:r||{}}))}}),i.descriptors=o,i.id=this._cacheId,o}},t.pluginService=t.plugins,t.PluginBase=t.Element.extend({})}},{}],31:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e,n){return i.isArray(e)?i.longestText(t,n,e):t.measureText(e).width}function n(e){var n=i.getValueOrDefault,a=t.defaults.global,o=n(e.fontSize,a.defaultFontSize),r=n(e.fontStyle,a.defaultFontStyle),l=n(e.fontFamily,a.defaultFontFamily);return{size:o,style:r,family:l,font:i.fontString(o,r,l)}}var i=t.helpers;t.defaults.scale={display:!0,position:"left",gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{labelString:"",display:!1},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:t.Ticks.formatters.values}},t.Scale=t.Element.extend({getPadding:function(){var t=this;return{left:t.paddingLeft||0,top:t.paddingTop||0,right:t.paddingRight||0,bottom:t.paddingBottom||0}},beforeUpdate:function(){i.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=i.extend({left:0,right:0,top:0,bottom:0},n),a.longestTextCache=a.longestTextCache||{},a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeDataLimits(),a.determineDataLimits(),a.afterDataLimits(),a.beforeBuildTicks(),a.buildTicks(),a.afterBuildTicks(),a.beforeTickToLabelConversion(),a.convertTicksToLabels(),a.afterTickToLabelConversion(),a.beforeCalculateTickRotation(),a.calculateTickRotation(),a.afterCalculateTickRotation(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:function(){i.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){i.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){i.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){i.callback(this.options.beforeDataLimits,[this])},determineDataLimits:i.noop,afterDataLimits:function(){i.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){i.callback(this.options.beforeBuildTicks,[this])},buildTicks:i.noop,afterBuildTicks:function(){i.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){i.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this,e=t.options.ticks;t.ticks=t.ticks.map(e.userCallback||e.callback)},afterTickToLabelConversion:function(){i.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){i.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,a=t.options.ticks,o=n(a);e.font=o.font;var r=a.minRotation||0;if(t.options.display&&t.isHorizontal())for(var l,s,u=i.longestText(e,o.font,t.ticks,t.longestTextCache),d=u,c=t.getPixelForTick(1)-t.getPixelForTick(0)-6;d>c&&r<a.maxRotation;){var h=i.toRadians(r);if(l=Math.cos(h),s=Math.sin(h),s*u>t.maxHeight){r--;break}r++,d=l*u}t.labelRotation=r},afterCalculateTickRotation:function(){i.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){i.callback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},o=t.options,r=o.ticks,l=o.scaleLabel,s=o.gridLines,u=o.display,d=t.isHorizontal(),c=n(r),h=1.5*n(l).size,f=o.gridLines.tickMarkLength;if(d?a.width=t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:a.width=u&&s.drawTicks?f:0,d?a.height=u&&s.drawTicks?f:0:a.height=t.maxHeight,l.display&&u&&(d?a.height+=h:a.width+=h),r.display&&u){var g=i.longestText(t.ctx,c.font,t.ticks,t.longestTextCache),p=i.numberOfLabelLines(t.ticks),m=.5*c.size;if(d){t.longestLabelWidth=g;var v=i.toRadians(t.labelRotation),b=Math.cos(v),x=Math.sin(v),y=x*g+c.size*p+m*p;a.height=Math.min(t.maxHeight,a.height+y),t.ctx.font=c.font;var k=t.ticks[0],w=e(t.ctx,k,c.font),M=t.ticks[t.ticks.length-1],S=e(t.ctx,M,c.font);0!==t.labelRotation?(t.paddingLeft="bottom"===o.position?b*w+3:b*m+3,t.paddingRight="bottom"===o.position?b*m+3:b*S+3):(t.paddingLeft=w/2+3,t.paddingRight=S/2+3)}else r.mirror?g=0:g+=t.options.ticks.padding,a.width=Math.min(t.maxWidth,a.width+g),t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){i.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){return null===t||"undefined"==typeof t?NaN:"number"!=typeof t||isFinite(t)?"object"==typeof t?t instanceof Date||t.isValid?t:this.getRightValue(this.isHorizontal()?t.x:t.y):t:NaN},getLabelForIndex:i.noop,getPixelForValue:i.noop,getValueForPixel:i.noop,getPixelForTick:function(t,e){var n=this;if(n.isHorizontal()){var i=n.width-(n.paddingLeft+n.paddingRight),a=i/Math.max(n.ticks.length-(n.options.gridLines.offsetGridLines?0:1),1),o=a*t+n.paddingLeft;e&&(o+=a/2);var r=n.left+Math.round(o);return r+=n.isFullWidth()?n.margins.left:0}var l=n.height-(n.paddingTop+n.paddingBottom);return n.top+t*(l/(n.ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=e.width-(e.paddingLeft+e.paddingRight),i=n*t+e.paddingLeft,a=e.left+Math.round(i);return a+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},draw:function(e){var a=this,o=a.options;if(o.display){var r,l,s=a.ctx,u=t.defaults.global,d=o.ticks,c=o.gridLines,h=o.scaleLabel,f=0!==a.labelRotation,g=d.autoSkip,p=a.isHorizontal();d.maxTicksLimit&&(l=d.maxTicksLimit);var m=i.getValueOrDefault(d.fontColor,u.defaultFontColor),v=n(d),b=c.drawTicks?c.tickMarkLength:0,x=i.getValueOrDefault(h.fontColor,u.defaultFontColor),y=n(h),k=i.toRadians(a.labelRotation),w=Math.cos(k),M=a.longestLabelWidth*w;s.fillStyle=m;var S=[];if(p){if(r=!1,(M+d.autoSkipPadding)*a.ticks.length>a.width-(a.paddingLeft+a.paddingRight)&&(r=1+Math.floor((M+d.autoSkipPadding)*a.ticks.length/(a.width-(a.paddingLeft+a.paddingRight)))),l&&a.ticks.length>l)for(;!r||a.ticks.length/(r||1)>l;)r||(r=1),r+=1;g||(r=!1)}var C="right"===o.position?a.left:a.right-b,D="right"===o.position?a.left+b:a.right,I="bottom"===o.position?a.top:a.bottom-b,A="bottom"===o.position?a.top+b:a.bottom;if(i.each(a.ticks,function(t,n){if(void 0!==t&&null!==t){var l=a.ticks.length===n+1,s=r>1&&n%r>0||n%r===0&&n+r>=a.ticks.length;if((!s||l)&&void 0!==t&&null!==t){var h,g,m,v;n===("undefined"!=typeof a.zeroLineIndex?a.zeroLineIndex:0)?(h=c.zeroLineWidth,g=c.zeroLineColor,m=c.zeroLineBorderDash,v=c.zeroLineBorderDashOffset):(h=i.getValueAtIndexOrDefault(c.lineWidth,n),g=i.getValueAtIndexOrDefault(c.color,n),m=i.getValueOrDefault(c.borderDash,u.borderDash),v=i.getValueOrDefault(c.borderDashOffset,u.borderDashOffset));var x,y,w,M,P,_,T,F,R,L,V="middle",O="middle";if(p){"bottom"===o.position?(O=f?"middle":"top",V=f?"right":"center",L=a.top+b):(O=f?"middle":"bottom",V=f?"left":"center",L=a.bottom-b);var z=a.getPixelForTick(n)+i.aliasPixel(h);R=a.getPixelForTick(n,c.offsetGridLines)+d.labelOffset,x=w=P=T=z,y=I,M=A,_=e.top,F=e.bottom}else{var B,W="left"===o.position,N=d.padding;d.mirror?(V=W?"left":"right",B=N):(V=W?"right":"left",
|
13 |
-
B=b+N),R=W?a.right-B:a.left+B;var E=a.getPixelForTick(n);E+=i.aliasPixel(h),L=a.getPixelForTick(n,c.offsetGridLines),x=C,w=D,P=e.left,T=e.right,y=M=_=F=E}S.push({tx1:x,ty1:y,tx2:w,ty2:M,x1:P,y1:_,x2:T,y2:F,labelX:R,labelY:L,glWidth:h,glColor:g,glBorderDash:m,glBorderDashOffset:v,rotation:-1*k,label:t,textBaseline:O,textAlign:V})}}}),i.each(S,function(t){if(c.display&&(s.save(),s.lineWidth=t.glWidth,s.strokeStyle=t.glColor,s.setLineDash&&(s.setLineDash(t.glBorderDash),s.lineDashOffset=t.glBorderDashOffset),s.beginPath(),c.drawTicks&&(s.moveTo(t.tx1,t.ty1),s.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(s.moveTo(t.x1,t.y1),s.lineTo(t.x2,t.y2)),s.stroke(),s.restore()),d.display){s.save(),s.translate(t.labelX,t.labelY),s.rotate(t.rotation),s.font=v.font,s.textBaseline=t.textBaseline,s.textAlign=t.textAlign;var e=t.label;if(i.isArray(e))for(var n=0,a=0;n<e.length;++n)s.fillText(""+e[n],0,a),a+=1.5*v.size;else s.fillText(e,0,0);s.restore()}}),h.display){var P,_,T=0;if(p)P=a.left+(a.right-a.left)/2,_="bottom"===o.position?a.bottom-y.size/2:a.top+y.size/2;else{var F="left"===o.position;P=F?a.left+y.size/2:a.right-y.size/2,_=a.top+(a.bottom-a.top)/2,T=F?-.5*Math.PI:.5*Math.PI}s.save(),s.translate(P,_),s.rotate(T),s.textAlign="center",s.textBaseline="middle",s.fillStyle=x,s.font=y.font,s.fillText(h.labelString,0,0),s.restore()}if(c.drawBorder){s.lineWidth=i.getValueAtIndexOrDefault(c.lineWidth,0),s.strokeStyle=i.getValueAtIndexOrDefault(c.color,0);var R=a.left,L=a.right,V=a.top,O=a.bottom,z=i.aliasPixel(s.lineWidth);p?(V=O="top"===o.position?a.bottom:a.top,V+=z,O+=z):(R=L="left"===o.position?a.right:a.left,R+=z,L+=z),s.beginPath(),s.moveTo(R,V),s.lineTo(L,O),s.stroke()}}}})}},{}],32:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,n,i){this.constructors[t]=n,this.defaults[t]=e.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(n){return this.defaults.hasOwnProperty(n)?e.scaleMerge(t.defaults.scale,this.defaults[n]):{}},updateScaleDefaults:function(t,n){var i=this.defaults;i.hasOwnProperty(t)&&(i[t]=e.extend(i[t],n))},addScalesToLayout:function(n){e.each(n.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,t.layoutService.addBox(n,e)})}}}},{}],33:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.Ticks={generators:{linear:function(t,n){var i,a=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var o=e.niceNum(n.max-n.min,!1);i=e.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(n.min/i)*i,l=Math.ceil(n.max/i)*i;t.min&&t.max&&t.stepSize&&e.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(r=t.min,l=t.max);var s=(l-r)/i;s=e.almostEquals(s,Math.round(s),i/1e3)?Math.round(s):Math.ceil(s),a.push(void 0!==t.min?t.min:r);for(var u=1;u<s;++u)a.push(r+u*i);return a.push(void 0!==t.max?t.max:l),a},logarithmic:function(t,n){var i,a,o=[],r=e.getValueOrDefault,l=r(t.min,Math.pow(10,Math.floor(e.log10(n.min)))),s=Math.floor(e.log10(n.max)),u=Math.ceil(n.max/Math.pow(10,s));0===l?(i=Math.floor(e.log10(n.minNotZero)),a=Math.floor(n.minNotZero/Math.pow(10,i)),o.push(l),l=a*Math.pow(10,i)):(i=Math.floor(e.log10(l)),a=Math.floor(l/Math.pow(10,i)));do o.push(l),++a,10===a&&(a=1,++i),l=a*Math.pow(10,i);while(i<s||i===s&&a<u);var d=r(t.max,l);return o.push(d),o}},formatters:{values:function(t){return e.isArray(t)?t:""+t},linear:function(t,n,i){var a=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=e.log10(Math.abs(a)),r="";if(0!==t){var l=-1*Math.floor(o);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,n,i){var a=t/Math.pow(10,Math.floor(e.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===n||n===i.length-1?t.toExponential():""}}}}},{}],34:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){var n=s.color(t);return n.alpha(e*n.alpha()).rgbaString()}function n(t,e){return e&&(s.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function i(t){var e=t._xScale,n=t._yScale||t._scale,i=t._index,a=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,a):"",yLabel:n?n.getLabelForIndex(i,a):"",index:i,datasetIndex:a,x:t._model.x,y:t._model.y}}function a(e){var n=t.defaults.global,i=s.getValueOrDefault;return{xPadding:e.xPadding,yPadding:e.yPadding,xAlign:e.xAlign,yAlign:e.yAlign,bodyFontColor:e.bodyFontColor,_bodyFontFamily:i(e.bodyFontFamily,n.defaultFontFamily),_bodyFontStyle:i(e.bodyFontStyle,n.defaultFontStyle),_bodyAlign:e.bodyAlign,bodyFontSize:i(e.bodyFontSize,n.defaultFontSize),bodySpacing:e.bodySpacing,titleFontColor:e.titleFontColor,_titleFontFamily:i(e.titleFontFamily,n.defaultFontFamily),_titleFontStyle:i(e.titleFontStyle,n.defaultFontStyle),titleFontSize:i(e.titleFontSize,n.defaultFontSize),_titleAlign:e.titleAlign,titleSpacing:e.titleSpacing,titleMarginBottom:e.titleMarginBottom,footerFontColor:e.footerFontColor,_footerFontFamily:i(e.footerFontFamily,n.defaultFontFamily),_footerFontStyle:i(e.footerFontStyle,n.defaultFontStyle),footerFontSize:i(e.footerFontSize,n.defaultFontSize),_footerAlign:e.footerAlign,footerSpacing:e.footerSpacing,footerMarginTop:e.footerMarginTop,caretSize:e.caretSize,cornerRadius:e.cornerRadius,backgroundColor:e.backgroundColor,opacity:0,legendColorBackground:e.multiKeyBackground,displayColors:e.displayColors,borderColor:e.borderColor,borderWidth:e.borderWidth}}function o(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var l=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;i+=l*d,i+=l?(l-1)*e.titleSpacing:0,i+=l?e.titleMarginBottom:0,i+=r*c,i+=r?(r-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*h,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=s.fontString(d,e._titleFontStyle,e._titleFontFamily),s.each(e.title,g),n.font=s.fontString(c,e._bodyFontStyle,e._bodyFontFamily),s.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,s.each(o,function(t){s.each(t.before,g),s.each(t.lines,g),s.each(t.after,g)}),f=0,n.font=s.fontString(h,e._footerFontStyle,e._footerFontFamily),s.each(e.footer,g),a+=2*e.xPadding,{width:a,height:i}}function r(t,e){var n=t._model,i=t._chart,a=t._chart.chartArea,o="center",r="center";n.y<e.height?r="top":n.y>i.height-e.height&&(r="bottom");var l,s,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===r?(l=function(t){return t<=h},s=function(t){return t>h}):(l=function(t){return t<=e.width/2},s=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},l(n.x)?(o="left",u(n.x)&&(o="center",r=c(n.y))):s(n.x)&&(o="right",d(n.x)&&(o="center",r=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:o,yAlign:g.yAlign?g.yAlign:r}}function l(t,e,n){var i=t.x,a=t.y,o=t.caretSize,r=t.caretPadding,l=t.cornerRadius,s=n.xAlign,u=n.yAlign,d=o+r,c=l+r;return"right"===s?i-=e.width:"center"===s&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===s?i+=d:"right"===s&&(i-=d):"left"===s?i-=c:"right"===s&&(i+=c),{x:i,y:a}}var s=t.helpers;t.defaults.global.tooltips={enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:s.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?n=o.xLabel:a>0&&o.index<a&&(n=i[o.index])}return n},afterTitle:s.noop,beforeBody:s.noop,beforeLabel:s.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+=t.yLabel},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex),i=n.data[t.index],a=i._view;return{borderColor:a.borderColor,backgroundColor:a.backgroundColor}},afterLabel:s.noop,afterBody:s.noop,beforeFooter:s.noop,footer:s.noop,afterFooter:s.noop}},t.Tooltip=t.Element.extend({initialize:function(){this._model=a(this._options)},getTitle:function(){var t=this,e=t._options,i=e.callbacks,a=i.beforeTitle.apply(t,arguments),o=i.title.apply(t,arguments),r=i.afterTitle.apply(t,arguments),l=[];return l=n(l,a),l=n(l,o),l=n(l,r)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return s.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,o=[];return s.each(t,function(t){var r={before:[],lines:[],after:[]};n(r.before,a.beforeLabel.call(i,t,e)),n(r.lines,a.label.call(i,t,e)),n(r.after,a.afterLabel.call(i,t,e)),o.push(r)}),o},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return s.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),o=e.afterFooter.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},update:function(e){var n,u,d=this,c=d._options,h=d._model,f=d._model=a(c),g=d._active,p=d._data,m={xAlign:h.xAlign,yAlign:h.yAlign},v={x:h.x,y:h.y},b={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var y=[];x=t.Tooltip.positioners[c.position](g,d._eventPosition);var k=[];for(n=0,u=g.length;n<u;++n)k.push(i(g[n]));c.filter&&(k=k.filter(function(t){return c.filter(t,p)})),c.itemSort&&(k=k.sort(function(t,e){return c.itemSort(t,e,p)})),s.each(k,function(t){y.push(c.callbacks.labelColor.call(d,t,d._chart))}),f.title=d.getTitle(k,p),f.beforeBody=d.getBeforeBody(k,p),f.body=d.getBody(k,p),f.afterBody=d.getAfterBody(k,p),f.footer=d.getFooter(k,p),f.x=Math.round(x.x),f.y=Math.round(x.y),f.caretPadding=c.caretPadding,f.labelColors=y,f.dataPoints=k,b=o(this,f),m=r(this,b),v=l(f,b,m)}else f.opacity=0;return f.xAlign=m.xAlign,f.yAlign=m.yAlign,f.x=v.x,f.y=v.y,f.width=b.width,f.height=b.height,f.caretX=x.x,f.caretY=x.y,d._model=f,e&&c.custom&&c.custom.call(d,f),d},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,o,r,l,s,u=n.caretSize,d=n.cornerRadius,c=n.xAlign,h=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)l=g+m/2,"left"===c?(i=f,a=i-u,o=i,r=l+u,s=l-u):(i=f+p,a=i+u,o=i,r=l-u,s=l+u);else if("left"===c?(a=f+d+u,i=a-u,o=a+u):"right"===c?(a=f+p-d-u,i=a-u,o=a+u):(a=f+p/2,i=a-u,o=a+u),"top"===h)r=g,l=r-u,s=r;else{r=g+m,l=r+u,s=r;var v=o;o=i,i=v}return{x1:i,x2:a,x3:o,y1:r,y2:l,y3:s}},drawTitle:function(t,n,i,a){var o=n.title;if(o.length){i.textAlign=n._titleAlign,i.textBaseline="top";var r=n.titleFontSize,l=n.titleSpacing;i.fillStyle=e(n.titleFontColor,a),i.font=s.fontString(r,n._titleFontStyle,n._titleFontFamily);var u,d;for(u=0,d=o.length;u<d;++u)i.fillText(o[u],t.x,t.y),t.y+=r+l,u+1===o.length&&(t.y+=n.titleMarginBottom-l)}},drawBody:function(t,n,i,a){var o=n.bodyFontSize,r=n.bodySpacing,l=n.body;i.textAlign=n._bodyAlign,i.textBaseline="top";var u=e(n.bodyFontColor,a);i.fillStyle=u,i.font=s.fontString(o,n._bodyFontStyle,n._bodyFontFamily);var d=0,c=function(e){i.fillText(e,t.x+d,t.y),t.y+=o+r};s.each(n.beforeBody,c);var h=n.displayColors;d=h?o+2:0,s.each(l,function(r,l){s.each(r.before,c),s.each(r.lines,function(r){h&&(i.fillStyle=e(n.legendColorBackground,a),i.fillRect(t.x,t.y,o,o),i.strokeStyle=e(n.labelColors[l].borderColor,a),i.strokeRect(t.x,t.y,o,o),i.fillStyle=e(n.labelColors[l].backgroundColor,a),i.fillRect(t.x+1,t.y+1,o-2,o-2),i.fillStyle=u),c(r)}),s.each(r.after,c)}),d=0,s.each(n.afterBody,c),t.y-=r},drawFooter:function(t,n,i,a){var o=n.footer;o.length&&(t.y+=n.footerMarginTop,i.textAlign=n._footerAlign,i.textBaseline="top",i.fillStyle=e(n.footerFontColor,a),i.font=s.fontString(n.footerFontSize,n._footerFontStyle,n._footerFontFamily),s.each(o,function(e){i.fillText(e,t.x,t.y),t.y+=n.footerFontSize+n.footerSpacing}))},drawBackground:function(t,n,i,a,o){i.fillStyle=e(n.backgroundColor,o),i.strokeStyle=e(n.borderColor,o),i.lineWidth=n.borderWidth;var r=n.xAlign,l=n.yAlign,s=t.x,u=t.y,d=a.width,c=a.height,h=n.cornerRadius;i.beginPath(),i.moveTo(s+h,u),"top"===l&&this.drawCaret(t,a),i.lineTo(s+d-h,u),i.quadraticCurveTo(s+d,u,s+d,u+h),"center"===l&&"right"===r&&this.drawCaret(t,a),i.lineTo(s+d,u+c-h),i.quadraticCurveTo(s+d,u+c,s+d-h,u+c),"bottom"===l&&this.drawCaret(t,a),i.lineTo(s+h,u+c),i.quadraticCurveTo(s,u+c,s,u+c-h),"center"===l&&"left"===r&&this.drawCaret(t,a),i.lineTo(s,u+h),i.quadraticCurveTo(s,u,s+h,u),i.closePath(),i.fill(),n.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chart.getElementsAtEventForMode(t,n.mode,n),i=!s.arrayEquals(e._active,e._lastActive),!i)return!1;if(e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,o=0;for(e=0,n=t.length;e<n;++e){var r=t[e];if(r&&r.hasValue()){var l=r.tooltipPosition();i+=l.x,a+=l.y,++o}}return{x:Math.round(i/o),y:Math.round(a/o)}},nearest:function(t,e){var n,i,a,o=e.x,r=e.y,l=Number.POSITIVE_INFINITY;for(i=0,a=t.length;i<a;++i){var u=t[i];if(u&&u.hasValue()){var d=u.getCenterPoint(),c=s.distanceBetweenPoints(e,d);c<l&&(l=c,n=u)}}if(n){var h=n.tooltipPosition();o=h.x,r=h.y}return{x:o,y:r}}}}},{}],35:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=t.defaults.global;n.elements.arc={backgroundColor:n.defaultColor,borderColor:"#fff",borderWidth:2},t.elements.Arc=t.Element.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,n){var i=this._view;if(i){for(var a=e.getAngleFromPoint(i,{x:t,y:n}),o=a.angle,r=a.distance,l=i.startAngle,s=i.endAngle;s<l;)s+=2*Math.PI;for(;o>s;)o-=2*Math.PI;for(;o<l;)o+=2*Math.PI;var u=o>=l&&o<=s,d=r>=i.innerRadius&&r<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})}},{}],36:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=t.defaults.global;t.defaults.global.elements.line={tension:.4,backgroundColor:n.defaultColor,borderWidth:3,borderColor:n.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0},t.elements.Line=t.Element.extend({draw:function(){var t,i,a,o,r=this,l=r._view,s=r._chart.ctx,u=l.spanGaps,d=r._children.slice(),c=n.elements.line,h=-1;for(r._loop&&d.length&&d.push(d[0]),s.save(),s.lineCap=l.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(l.borderDash||c.borderDash),s.lineDashOffset=l.borderDashOffset||c.borderDashOffset,s.lineJoin=l.borderJoinStyle||c.borderJoinStyle,s.lineWidth=l.borderWidth||c.borderWidth,s.strokeStyle=l.borderColor||n.defaultColor,s.beginPath(),h=-1,t=0;t<d.length;++t)i=d[t],a=e.previousItem(d,t),o=i._view,0===t?o.skip||(s.moveTo(o.x,o.y),h=t):(a=h===-1?a:d[h],o.skip||(h!==t-1&&!u||h===-1?s.moveTo(o.x,o.y):e.canvas.lineTo(s,a._view,i._view),h=t));s.stroke(),s.restore()}})}},{}],37:[function(t,e,n){"use strict";e.exports=function(t){function e(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2)}function n(t){var e=this._view;return!!e&&Math.pow(t-e.y,2)<Math.pow(e.radius+e.hitRadius,2)}var i=t.helpers,a=t.defaults.global,o=a.defaultColor;a.elements.point={radius:3,pointStyle:"circle",backgroundColor:o,borderWidth:1,borderColor:o,hitRadius:1,hoverRadius:4,hoverBorderWidth:1},t.elements.Point=t.Element.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:e,inXRange:e,inYRange:n,getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(e){var n=this._view,r=this._model,l=this._chart.ctx,s=n.pointStyle,u=n.radius,d=n.x,c=n.y,h=t.helpers.color,f=1.01,g=0;n.skip||(l.strokeStyle=n.borderColor||o,l.lineWidth=i.getValueOrDefault(n.borderWidth,a.elements.point.borderWidth),l.fillStyle=n.backgroundColor||o,void 0!==e&&(r.x<e.left||e.right*f<r.x||r.y<e.top||e.bottom*f<r.y)&&(r.x<e.left?g=(d-r.x)/(e.left-r.x):e.right*f<r.x?g=(r.x-d)/(r.x-e.right):r.y<e.top?g=(c-r.y)/(e.top-r.y):e.bottom*f<r.y&&(g=(r.y-c)/(r.y-e.bottom)),g=Math.round(100*g)/100,l.strokeStyle=h(l.strokeStyle).alpha(g).rgbString(),l.fillStyle=h(l.fillStyle).alpha(g).rgbString()),t.canvasHelpers.drawPoint(l,s,u,d,c))}})}},{}],38:[function(t,e,n){"use strict";e.exports=function(t){function e(t){return void 0!==t._view.width}function n(t){var n,i,a,o,r=t._view;if(e(t)){var l=r.width/2;n=r.x-l,i=r.x+l,a=Math.min(r.y,r.base),o=Math.max(r.y,r.base)}else{var s=r.height/2;n=Math.min(r.x,r.base),i=Math.max(r.x,r.base),a=r.y-s,o=r.y+s}return{left:n,top:a,right:i,bottom:o}}var i=t.defaults.global;i.elements.rectangle={backgroundColor:i.defaultColor,borderWidth:0,borderColor:i.defaultColor,borderSkipped:"bottom"},t.elements.Rectangle=t.Element.extend({draw:function(){function t(t){return v[(x+t)%4]}var e,n,i,a,o,r,l,s=this._chart.ctx,u=this._view,d=u.borderWidth;if(u.horizontal?(e=u.base,n=u.x,i=u.y-u.height/2,a=u.y+u.height/2,o=n>e?1:-1,r=1,l=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,a=u.base,o=1,r=a>i?1:-1,l=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a));d=d>c?c:d;var h=d/2,f=e+("left"!==l?h*o:0),g=n+("right"!==l?-h*o:0),p=i+("top"!==l?h*r:0),m=a+("bottom"!==l?-h*r:0);f!==g&&(i=p,a=m),p!==m&&(e=f,n=g)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=d;var v=[[e,a],[e,i],[n,i],[n,a]],b=["bottom","left","top","right"],x=b.indexOf(l,0);x===-1&&(x=0);var y=t(0);s.moveTo(y[0],y[1]);for(var k=1;k<4;k++)y=t(k),s.lineTo(y[0],y[1]);s.fill(),d&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var a=n(this);i=t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom}return i},inLabelRange:function(t,i){var a=this;if(!a._view)return!1;var o=!1,r=n(a);return o=e(a)?t>=r.left&&t<=r.right:i>=r.top&&i<=r.bottom},inXRange:function(t){var e=n(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=n(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,n,i=this._view;return e(this)?(t=i.x,n=(i.y+i.base)/2):(t=(i.x+i.base)/2,n=i.y),{x:t,y:n}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})}},{}],39:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){var n=s.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}function n(t,n){var i=t.style,a=t.getAttribute("height"),o=t.getAttribute("width");if(t._chartjs={initial:{height:a,width:o,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===o||""===o){var r=e(t,"width");void 0!==r&&(t.width=r)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(n.options.aspectRatio||2);else{var l=e(t,"height");void 0!==r&&(t.height=l)}return t}function i(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function a(t,e){var n=u[t.type]||t.type,a=s.getRelativePosition(t,e);return i(n,e,a.x,a.y,t)}function o(t){var e=document.createElement("iframe");return e.className="chartjs-hidden-iframe",e.style.cssText="display:block;overflow:hidden;border:0;margin:0;top:0;left:0;bottom:0;right:0;height:100%;width:100%;position:absolute;pointer-events:none;z-index:-1;",e.tabIndex=-1,s.addEvent(e,"load",function(){s.addEvent(e.contentWindow||e,"resize",t),t()}),e}function r(t,e,n){var a=t._chartjs={ticking:!1},r=function(){a.ticking||(a.ticking=!0,s.requestAnimFrame.call(window,function(){if(a.resizer)return a.ticking=!1,e(i("resize",n))}))};a.resizer=o(r),t.insertBefore(a.resizer,t.firstChild)}function l(t){if(t&&t._chartjs){var e=t._chartjs.resizer;e&&(e.parentNode.removeChild(e),t._chartjs.resizer=null),delete t._chartjs}}var s=t.helpers,u={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};return{acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(n(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e._chartjs){var n=e._chartjs.initial;["height","width"].forEach(function(t){var i=n[t];void 0===i||null===i?e.removeAttribute(t):e.setAttribute(t,i)}),s.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e._chartjs}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"===e)return void r(i.parentNode,n,t);var o=n._chartjs||(n._chartjs={}),l=o.proxies||(o.proxies={}),u=l[t.id+"_"+e]=function(e){n(a(e,t))};s.addEvent(i,e,u)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"===e)return void l(i.parentNode,n);var a=n._chartjs||{},o=a.proxies||{},r=o[t.id+"_"+e];r&&s.removeEvent(i,e,r)}}}},{}],40:[function(t,e,n){"use strict";var i=t(39);e.exports=function(t){t.platform={acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},t.helpers.extend(t.platform,i(t))}},{39:39}],41:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e,n){var i,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),o===!1||null===o)return!1;if(o===!0)return"origin";if(i=parseFloat(o,10),isFinite(i)&&Math.floor(i)===i)return"-"!==o[0]&&"+"!==o[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function n(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?o=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?o=n.scaleZero:i.getBasePosition?o=i.getBasePosition():i.getBasePixel&&(o=i.getBasePixel()),void 0!==o&&null!==o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return e=i.isHorizontal(),{x:e?o:null,y:e?null:o}}return null}function i(t,e,n){var i,a=t[e],o=a.fill,r=[e];if(!n)return o;for(;o!==!1&&r.indexOf(o)===-1;){if(!isFinite(o))return o;if(i=t[o],!i)return!1;if(i.visible)return o;r.push(o),o=i.fill}return!1}function a(t){var e=t.fill,n="dataset";return e===!1?null:(isFinite(e)||(n="boundary"),d[n](t))}function o(t){return t&&!t.skip}function r(t,e,n,i,a){var o;if(i&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<i;++o)u.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(n[a-1].x,n[a-1].y),o=a-1;o>0;--o)u.canvas.lineTo(t,n[o],n[o-1],!0)}}function l(t,e,n,i,a,l){var s,u,d,c,h,f,g,p=e.length,m=i.spanGaps,v=[],b=[],x=0,y=0;for(t.beginPath(),s=0,u=p+!!l;s<u;++s)d=s%p,c=e[d]._view,h=n(c,d,i),f=o(c),g=o(h),f&&g?(x=v.push(c),y=b.push(h)):x&&y&&(m?(f&&v.push(c),g&&b.push(h)):(r(t,v,b,x,y),x=y=0,v=[],b=[]));r(t,v,b,x,y),t.closePath(),t.fillStyle=a,t.fill()}t.defaults.global.plugins.filler={propagate:!0};var s=t.defaults,u=t.helpers,d={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e),o=a&&i.dataset._children||[];return o.length?function(t,e){return o[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};return{id:"filler",afterDatasetsUpdate:function(o,r){var l,s,u,d,c=(o.data.datasets||[]).length,h=r.propagate,f=[];for(s=0;s<c;++s)l=o.getDatasetMeta(s),u=l.dataset,d=null,u&&u._model&&u instanceof t.elements.Line&&(d={visible:o.isDatasetVisible(s),fill:e(u,s,c),chart:o,el:u}),l.$filler=d,f.push(d);for(s=0;s<c;++s)d=f[s],d&&(d.fill=i(f,s,h),d.boundary=n(d),d.mapper=a(d))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var i=n.el,a=i._view,o=i._children||[],r=n.mapper,u=a.backgroundColor||s.global.defaultColor;r&&u&&o.length&&l(t.ctx,o,r,a,u,i._loop)}}}}},{}],42:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});a.configure(e,i,n),a.addBox(e,i),e.legend=i}var i=t.helpers,a=t.layoutService,o=i.noop;return t.defaults.global.legend={display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return i.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:i.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}},this):[]}}},t.Legend=t.Element.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:o,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:function(){var t=this,e=t.options.labels,n=e.generateLabels.call(t,t.chart);e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:o,beforeFit:o,fit:function(){var n=this,a=n.options,o=a.labels,r=a.display,l=n.ctx,s=t.defaults.global,u=i.getValueOrDefault,d=u(o.fontSize,s.defaultFontSize),c=u(o.fontStyle,s.defaultFontStyle),h=u(o.fontFamily,s.defaultFontFamily),f=i.fontString(d,c,h),g=n.legendHitBoxes=[],p=n.minSize,m=n.isHorizontal();if(m?(p.width=n.maxWidth,p.height=r?10:0):(p.width=r?10:0,p.height=n.maxHeight),r)if(l.font=f,m){var v=n.lineWidths=[0],b=n.legendItems.length?d+o.padding:0;l.textAlign="left",l.textBaseline="top",i.each(n.legendItems,function(t,i){var a=e(o,d),r=a+d/2+l.measureText(t.text).width;v[v.length-1]+r+o.padding>=n.width&&(b+=d+o.padding,v[v.length]=n.left),g[i]={left:0,top:0,width:r,height:d},v[v.length-1]+=r+o.padding}),p.height+=b}else{var x=o.padding,y=n.columnWidths=[],k=o.padding,w=0,M=0,S=d+x;i.each(n.legendItems,function(t,n){var i=e(o,d),a=i+d/2+l.measureText(t.text).width;M+S>p.height&&(k+=w+o.padding,y.push(w),w=0,M=0),w=Math.max(w,a),M+=S,g[n]={left:0,top:0,width:a,height:d}}),k+=w,y.push(w),p.width+=k}n.width=p.width,n.height=p.height},afterFit:o,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var n=this,a=n.options,o=a.labels,r=t.defaults.global,l=r.elements.line,s=n.width,u=n.lineWidths;if(a.display){var d,c=n.ctx,h=i.getValueOrDefault,f=h(o.fontColor,r.defaultFontColor),g=h(o.fontSize,r.defaultFontSize),p=h(o.fontStyle,r.defaultFontStyle),m=h(o.fontFamily,r.defaultFontFamily),v=i.fontString(g,p,m);c.textAlign="left",c.textBaseline="top",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var b=e(o,g),x=n.legendHitBoxes,y=function(e,n,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,r.defaultColor),c.lineCap=h(i.lineCap,l.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,l.borderDashOffset),c.lineJoin=h(i.lineJoin,l.borderJoinStyle),c.lineWidth=h(i.lineWidth,l.borderWidth),c.strokeStyle=h(i.strokeStyle,r.defaultColor);var o=0===h(i.lineWidth,l.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,l.borderDash)),a.labels&&a.labels.usePointStyle){var s=g*Math.SQRT2/2,u=s/Math.SQRT2,d=e+u,f=n+u;t.canvasHelpers.drawPoint(c,i.pointStyle,s,d,f)}else o||c.strokeRect(e,n,b,g),c.fillRect(e,n,b,g);c.restore()}},k=function(t,e,n,i){c.fillText(n.text,b+g/2+t,e),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(b+g/2+t,e+g/2),c.lineTo(b+g/2+t+i,e+g/2),c.stroke())},w=n.isHorizontal();d=w?{x:n.left+(s-u[0])/2,y:n.top+o.padding,line:0}:{x:n.left+o.padding,y:n.top+o.padding,line:0};var M=g+o.padding;i.each(n.legendItems,function(t,e){var i=c.measureText(t.text).width,a=b+g/2+i,r=d.x,l=d.y;w?r+a>=s&&(l=d.y+=M,d.line++,r=d.x=n.left+(s-u[d.line])/2):l+M>n.bottom&&(r=d.x=r+n.columnWidths[d.line]+o.padding,l=d.y=n.top+o.padding,d.line++),y(r,l,t),x[e].left=r,x[e].top=l,k(r,l,t,i),w?d.x+=a+o.padding:d.y+=M})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var l=e.legendHitBoxes,s=0;s<l.length;++s){var u=l[s];if(o>=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[s]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[s]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(e){var o=e.options.legend,r=e.legend;o?(o=i.configMerge(t.defaults.global.legend,o),r?(a.configure(e,r,o),r.options=o):n(e,o)):r&&(a.removeBox(e,r),delete e.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{}],43:[function(t,e,n){"use strict";e.exports=function(t){function e(e,n){var a=new t.Title({ctx:e.ctx,options:n,chart:e});i.configure(e,a,n),i.addBox(e,a),e.titleBlock=a}var n=t.helpers,i=t.layoutService,a=n.noop;return t.defaults.global.title={display:!1,position:"top",fullWidth:!0,weight:2e3,fontStyle:"bold",padding:10,text:""},t.Title=t.Element.extend({initialize:function(t){var e=this;n.extend(e,t),e.legendHitBoxes=[];
|
14 |
-
},beforeUpdate:a,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:a,beforeSetDimensions:a,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:a,beforeBuildLabels:a,buildLabels:a,afterBuildLabels:a,beforeFit:a,fit:function(){var e=this,i=n.getValueOrDefault,a=e.options,o=t.defaults.global,r=a.display,l=i(a.fontSize,o.defaultFontSize),s=e.minSize;e.isHorizontal()?(s.width=e.maxWidth,s.height=r?l+2*a.padding:0):(s.width=r?l+2*a.padding:0,s.height=e.maxHeight),e.width=s.width,e.height=s.height},afterFit:a,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var e=this,i=e.ctx,a=n.getValueOrDefault,o=e.options,r=t.defaults.global;if(o.display){var l,s,u,d=a(o.fontSize,r.defaultFontSize),c=a(o.fontStyle,r.defaultFontStyle),h=a(o.fontFamily,r.defaultFontFamily),f=n.fontString(d,c,h),g=0,p=e.top,m=e.left,v=e.bottom,b=e.right;i.fillStyle=a(o.fontColor,r.defaultFontColor),i.font=f,e.isHorizontal()?(l=m+(b-m)/2,s=p+(v-p)/2,u=b-m):(l="left"===o.position?m+d/2:b-d/2,s=p+(v-p)/2,u=v-p,g=Math.PI*("left"===o.position?-.5:.5)),i.save(),i.translate(l,s),i.rotate(g),i.textAlign="center",i.textBaseline="middle",i.fillText(o.text,0,0,u),i.restore()}}}),{id:"title",beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(a){var o=a.options.title,r=a.titleBlock;o?(o=n.configMerge(t.defaults.global.title,o),r?(i.configure(a,r,o),r.options=o):e(a,o)):r&&(t.layoutService.removeBox(a,r),delete a.titleBlock)}}}},{}],44:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n={position:"bottom"},i=t.Scale.extend({getLabels:function(){var t=this.chart.data;return(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,n=t.getLabels();t.minIndex=0,t.maxIndex=n.length-1;var i;void 0!==t.options.ticks.min&&(i=e.indexOf(n,t.options.ticks.min),t.minIndex=i!==-1?i:t.minIndex),void 0!==t.options.ticks.max&&(i=e.indexOf(n,t.options.ticks.max),t.maxIndex=i!==-1?i:t.maxIndex),t.min=n[t.minIndex],t.max=n[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e,n,i){var a,o=this,r=Math.max(o.maxIndex+1-o.minIndex-(o.options.gridLines.offsetGridLines?0:1),1);if(void 0!==t&&null!==t&&(a=o.isHorizontal()?t.x:t.y),void 0!==a||void 0!==t&&isNaN(e)){var l=o.getLabels();t=a||t;var s=l.indexOf(t);e=s!==-1?s:e}if(o.isHorizontal()){var u=o.width/r,d=u*(e-o.minIndex);return(o.options.gridLines.offsetGridLines&&i||o.maxIndex===o.minIndex&&i)&&(d+=u/2),o.left+Math.round(d)}var c=o.height/r,h=c*(e-o.minIndex);return o.options.gridLines.offsetGridLines&&i&&(h+=c/2),o.top+Math.round(h)},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null,e)},getValueForPixel:function(t){var e,n=this,i=Math.max(n.ticks.length-(n.options.gridLines.offsetGridLines?0:1),1),a=n.isHorizontal(),o=(a?n.width:n.height)/i;return t-=a?n.left:n.top,n.options.gridLines.offsetGridLines&&(t-=o/2),e=t<=0?0:Math.round(t/o)},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",i,n)}},{}],45:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n={position:"left",ticks:{callback:t.Ticks.formatters.linear}},i=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return l?t.xAxisID===n.id:t.yAxisID===n.id}var n=this,i=n.options,a=n.chart,o=a.data,r=o.datasets,l=n.isHorizontal(),s=0,u=1;n.min=null,n.max=null;var d=i.stacked;if(void 0===d&&e.each(r,function(e,n){if(!d){var i=a.getDatasetMeta(n);a.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(d=!0)}}),i.stacked||d){var c={};e.each(r,function(o,r){var l=a.getDatasetMeta(r),s=[l.type,void 0===i.stacked&&void 0===l.stack?r:"",l.stack].join(".");void 0===c[s]&&(c[s]={positiveValues:[],negativeValues:[]});var u=c[s].positiveValues,d=c[s].negativeValues;a.isDatasetVisible(r)&&t(l)&&e.each(o.data,function(t,e){var a=+n.getRightValue(t);isNaN(a)||l.data[e].hidden||(u[e]=u[e]||0,d[e]=d[e]||0,i.relativePoints?u[e]=100:a<0?d[e]+=a:u[e]+=a)})}),e.each(c,function(t){var i=t.positiveValues.concat(t.negativeValues),a=e.min(i),o=e.max(i);n.min=null===n.min?a:Math.min(n.min,a),n.max=null===n.max?o:Math.max(n.max,o)})}else e.each(r,function(i,o){var r=a.getDatasetMeta(o);a.isDatasetVisible(o)&&t(r)&&e.each(i.data,function(t,e){var i=+n.getRightValue(t);isNaN(i)||r.data[e].hidden||(null===n.min?n.min=i:i<n.min&&(n.min=i),null===n.max?n.max=i:i>n.max&&(n.max=i))})});n.min=isFinite(n.min)?n.min:s,n.max=isFinite(n.max)?n.max:u,this.handleTickRangeOptions()},getTickLimit:function(){var n,i=this,a=i.options.ticks;if(i.isHorizontal())n=Math.min(a.maxTicksLimit?a.maxTicksLimit:11,Math.ceil(i.width/50));else{var o=e.getValueOrDefault(a.fontSize,t.defaults.global.defaultFontSize);n=Math.min(a.maxTicksLimit?a.maxTicksLimit:11,Math.ceil(i.height/(2*o)))}return n},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),o=n.end-i;return n.isHorizontal()?(e=n.left+n.width/o*(a-i),Math.round(e)):(e=n.bottom-n.height/o*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",i,n)}},{}],46:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=e.noop;t.LinearScaleBase=t.Scale.extend({handleTickRangeOptions:function(){var t=this,n=t.options,i=n.ticks;if(i.beginAtZero){var a=e.sign(t.min),o=e.sign(t.max);a<0&&o<0?t.max=0:a>0&&o>0&&(t.min=0)}void 0!==i.min?t.min=i.min:void 0!==i.suggestedMin&&(null===t.min?t.min=i.suggestedMin:t.min=Math.min(t.min,i.suggestedMin)),void 0!==i.max?t.max=i.max:void 0!==i.suggestedMax&&(null===t.max?t.max=i.suggestedMax:t.max=Math.max(t.max,i.suggestedMax)),t.min===t.max&&(t.max++,i.beginAtZero||t.min--)},getTickLimit:n,handleDirectionalChanges:n,buildTicks:function(){var n=this,i=n.options,a=i.ticks,o=n.getTickLimit();o=Math.max(2,o);var r={maxTicks:o,min:a.min,max:a.max,stepSize:e.getValueOrDefault(a.fixedStepSize,a.stepSize)},l=n.ticks=t.Ticks.generators.linear(r,n);n.handleDirectionalChanges(),n.max=e.max(l),n.min=e.min(l),a.reverse?(l.reverse(),n.start=n.max,n.end=n.min):(n.start=n.min,n.end=n.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{}],47:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n={position:"left",ticks:{callback:t.Ticks.formatters.logarithmic}},i=t.Scale.extend({determineDataLimits:function(){function t(t){return u?t.xAxisID===n.id:t.yAxisID===n.id}var n=this,i=n.options,a=i.ticks,o=n.chart,r=o.data,l=r.datasets,s=e.getValueOrDefault,u=n.isHorizontal();n.min=null,n.max=null,n.minNotZero=null;var d=i.stacked;if(void 0===d&&e.each(l,function(e,n){if(!d){var i=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(d=!0)}}),i.stacked||d){var c={};e.each(l,function(a,r){var l=o.getDatasetMeta(r),s=[l.type,void 0===i.stacked&&void 0===l.stack?r:"",l.stack].join(".");o.isDatasetVisible(r)&&t(l)&&(void 0===c[s]&&(c[s]=[]),e.each(a.data,function(t,e){var a=c[s],o=+n.getRightValue(t);isNaN(o)||l.data[e].hidden||(a[e]=a[e]||0,i.relativePoints?a[e]=100:a[e]+=o)}))}),e.each(c,function(t){var i=e.min(t),a=e.max(t);n.min=null===n.min?i:Math.min(n.min,i),n.max=null===n.max?a:Math.max(n.max,a)})}else e.each(l,function(i,a){var r=o.getDatasetMeta(a);o.isDatasetVisible(a)&&t(r)&&e.each(i.data,function(t,e){var i=+n.getRightValue(t);isNaN(i)||r.data[e].hidden||(null===n.min?n.min=i:i<n.min&&(n.min=i),null===n.max?n.max=i:i>n.max&&(n.max=i),0!==i&&(null===n.minNotZero||i<n.minNotZero)&&(n.minNotZero=i))})});n.min=s(a.min,n.min),n.max=s(a.max,n.max),n.min===n.max&&(0!==n.min&&null!==n.min?(n.min=Math.pow(10,Math.floor(e.log10(n.min))-1),n.max=Math.pow(10,Math.floor(e.log10(n.max))+1)):(n.min=1,n.max=10))},buildTicks:function(){var n=this,i=n.options,a=i.ticks,o={min:a.min,max:a.max},r=n.ticks=t.Ticks.generators.logarithmic(o,n);n.isHorizontal()||r.reverse(),n.max=e.max(r),n.min=e.min(r),a.reverse?(r.reverse(),n.start=n.max,n.end=n.min):(n.start=n.min,n.end=n.max)},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},getPixelForValue:function(t){var n,i,a,o=this,r=o.start,l=+o.getRightValue(t),s=o.options,u=s.ticks;return o.isHorizontal()?(a=e.log10(o.end)-e.log10(r),0===l?i=o.left:(n=o.width,i=o.left+n/a*(e.log10(l)-e.log10(r)))):(n=o.height,0!==r||u.reverse?0===o.end&&u.reverse?(a=e.log10(o.start)-e.log10(o.minNotZero),i=l===o.end?o.top:l===o.minNotZero?o.top+.02*n:o.top+.02*n+.98*n/a*(e.log10(l)-e.log10(o.minNotZero))):0===l?i=u.reverse?o.top:o.bottom:(a=e.log10(o.end)-e.log10(r),n=o.height,i=o.bottom-n/a*(e.log10(l)-e.log10(r))):(a=e.log10(o.end)-e.log10(o.minNotZero),i=l===r?o.bottom:l===o.minNotZero?o.bottom-.02*n:o.bottom-.02*n-.98*n/a*(e.log10(l)-e.log10(o.minNotZero)))),i},getValueForPixel:function(t){var n,i,a=this,o=e.log10(a.end)-e.log10(a.start);return a.isHorizontal()?(i=a.width,n=a.start*Math.pow(10,(t-a.left)*o/i)):(i=a.height,n=Math.pow(10,(a.bottom-t)*o/i)/a.start),n}});t.scaleService.registerScaleType("logarithmic",i,n)}},{}],48:[function(t,e,n){"use strict";e.exports=function(t){function e(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function n(t){var e=t.options.pointLabels,n=f.getValueOrDefault(e.fontSize,g.defaultFontSize),i=f.getValueOrDefault(e.fontStyle,g.defaultFontStyle),a=f.getValueOrDefault(e.fontFamily,g.defaultFontFamily),o=f.fontString(n,i,a);return{size:n,style:i,family:a,font:o}}function i(t,e,n){return f.isArray(n)?{w:f.longestText(t,t.font,n),h:n.length*e+1.5*(n.length-1)*e}:{w:t.measureText(n).width,h:e}}function a(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function o(t){var o,r,l,s=n(t),u=Math.min(t.height/2,t.width/2),d={r:t.width,l:0,t:t.height,b:0},c={};t.ctx.font=s.font,t._pointLabelSizes=[];var h=e(t);for(o=0;o<h;o++){l=t.getPointPosition(o,u),r=i(t.ctx,s.size,t.pointLabels[o]||""),t._pointLabelSizes[o]=r;var g=t.getIndexAngle(o),p=f.toDegrees(g)%360,m=a(p,l.x,r.w,0,180),v=a(p,l.y,r.h,90,270);m.start<d.l&&(d.l=m.start,c.l=g),m.end>d.r&&(d.r=m.end,c.r=g),v.start<d.t&&(d.t=v.start,c.t=g),v.end>d.b&&(d.b=v.end,c.b=g)}t.setReductions(u,d,c)}function r(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function l(t){return 0===t||180===t?"center":t<180?"left":"right"}function s(t,e,n,i){if(f.isArray(e))for(var a=n.y,o=1.5*i,r=0;r<e.length;++r)t.fillText(e[r],n.x,a),a+=o;else t.fillText(e,n.x,n.y)}function u(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function d(t){var i=t.ctx,a=f.getValueOrDefault,o=t.options,r=o.angleLines,d=o.pointLabels;i.lineWidth=r.lineWidth,i.strokeStyle=r.color;var c=t.getDistanceFromCenterForValue(o.reverse?t.min:t.max),h=n(t);i.textBaseline="top";for(var p=e(t)-1;p>=0;p--){if(r.display){var m=t.getPointPosition(p,c);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(m.x,m.y),i.stroke(),i.closePath()}if(d.display){var v=t.getPointPosition(p,c+5),b=a(d.fontColor,g.defaultFontColor);i.font=h.font,i.fillStyle=b;var x=t.getIndexAngle(p),y=f.toDegrees(x);i.textAlign=l(y),u(y,t._pointLabelSizes[p],v),s(i,t.pointLabels[p]||"",v,h.size)}}}function c(t,n,i,a){var o=t.ctx;if(o.strokeStyle=f.getValueAtIndexOrDefault(n.color,a-1),o.lineWidth=f.getValueAtIndexOrDefault(n.lineWidth,a-1),t.options.gridLines.circular)o.beginPath(),o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),o.closePath(),o.stroke();else{var r=e(t);if(0===r)return;o.beginPath();var l=t.getPointPosition(0,i);o.moveTo(l.x,l.y);for(var s=1;s<r;s++)l=t.getPointPosition(s,i),o.lineTo(l.x,l.y);o.closePath(),o.stroke()}}function h(t){return f.isNumber(t)?t:0}var f=t.helpers,g=t.defaults.global,p={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:t.Ticks.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}},m=t.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,n=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=f.min([t.height,t.width]),a=f.getValueOrDefault(n.fontSize,g.defaultFontSize);t.drawingArea=e.display?i/2-(a/2+n.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;f.each(e.data.datasets,function(a,o){if(e.isDatasetVisible(o)){var r=e.getDatasetMeta(o);f.each(a.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||r.data[a].hidden||(n=Math.min(o,n),i=Math.max(o,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=f.getValueOrDefault(t.fontSize,g.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){this.options.pointLabels.display?o(this):r(this)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),o=Math.max(e.r-i.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),l=-Math.max(e.b-i.height,0)/Math.cos(n.b);a=h(a),o=h(o),r=h(r),l=h(l),i.drawingArea=Math.min(Math.round(t-(a+o)/2),Math.round(t-(r+l)/2)),i.setCenterPoint(a,o,r,l)},setCenterPoint:function(t,e,n,i){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,l=n+a.drawingArea,s=a.height-i-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((l+s)/2+a.top)},getIndexAngle:function(t){var n=2*Math.PI/e(this),i=this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0,a=i*Math.PI*2/360;return t*n+a},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this,i=n.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+n.xCenter,y:Math.round(Math.sin(i)*e)+n.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this,e=t.min,n=t.max;return t.getPointPositionForValue(0,t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,a=f.getValueOrDefault;if(e.display){var o=t.ctx,r=a(i.fontSize,g.defaultFontSize),l=a(i.fontStyle,g.defaultFontStyle),s=a(i.fontFamily,g.defaultFontFamily),u=f.fontString(r,l,s);f.each(t.ticks,function(l,s){if(s>0||e.reverse){var d=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]),h=t.yCenter-d;if(n.display&&0!==s&&c(t,n,d,s),i.display){var f=a(i.fontColor,g.defaultFontColor);if(o.font=u,i.showLabelBackdrop){var p=o.measureText(l).width;o.fillStyle=i.backdropColor,o.fillRect(t.xCenter-p/2-i.backdropPaddingX,h-r/2-i.backdropPaddingY,p+2*i.backdropPaddingX,r+2*i.backdropPaddingY)}o.textAlign="center",o.textBaseline="middle",o.fillStyle=f,o.fillText(l,t.xCenter,h)}}}),(e.angleLines.display||e.pointLabels.display)&&d(t)}}});t.scaleService.registerScaleType("radialLinear",m,p)}},{}],49:[function(t,e,n){"use strict";var i=t(1);i="function"==typeof i?i:window.moment,e.exports=function(t){function e(t,e){var n=t.options.time;if("string"==typeof n.parser)return i(e,n.parser);if("function"==typeof n.parser)return n.parser(e);if("function"==typeof e.getMonth||"number"==typeof e)return i(e);if(e.isValid&&e.isValid())return e;var a=n.format;return"string"!=typeof a&&a.call?(console.warn("options.time.format is deprecated and replaced by options.time.parser."),a(e)):i(e,a)}function n(t,e,n,i){for(var a,o=Object.keys(l),r=o.length,s=o.indexOf(t);s<r;s++){a=o[s];var u=l[a],d=u.steps&&u.steps[u.steps.length-1]||u.maxStep;if(void 0===d||Math.ceil((n-e)/(d*u.size))<=i)break}return a}function a(t,e,n,i){var a=l[n],o=a.size,r=Math.ceil((e-t)/o),s=1,u=e-t;if(a.steps)for(var d=a.steps.length,c=0;c<d&&r>i;c++)s=a.steps[c],r=Math.ceil(u/(o*s));else for(;r>i&&i>0;)++s,r=Math.ceil(u/(o*s));return s}function o(t,e,n){var a=[];if(t.maxTicks){var o=t.stepSize;a.push(void 0!==t.min?t.min:n.min);for(var r=i(n.min);r.add(o,t.unit).valueOf()<n.max;)a.push(r.valueOf());var l=t.max||n.max;a[a.length-1]!==l&&a.push(l)}return a}var r=t.helpers,l={millisecond:{size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{size:1e3,steps:[1,2,5,10,30]},minute:{size:6e4,steps:[1,2,5,10,30]},hour:{size:36e5,steps:[1,2,3,6,12]},day:{size:864e5,steps:[1,2,5]},week:{size:6048e5,maxStep:4},month:{size:2628e6,maxStep:3},quarter:{size:7884e6,maxStep:4},year:{size:3154e7,maxStep:!1}},s={position:"bottom",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm:ss a",hour:"MMM D, hA",day:"ll",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1}};t.Ticks.generators.time=function(t,e){var n,a,r=t.isoWeekday;return"week"===t.unit&&r!==!1?(n=i(e.min).startOf("isoWeek").isoWeekday(r).valueOf(),a=i(e.max).startOf("isoWeek").isoWeekday(r),e.max-a>0&&a.add(1,"week"),a=a.valueOf()):(n=i(e.min).startOf(t.unit).valueOf(),a=i(e.max).startOf(t.unit),e.max-a>0&&a.add(1,t.unit),a=a.valueOf()),o(t,e,{min:n,max:a})};var u=t.Scale.extend({initialize:function(){if(!i)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");t.Scale.prototype.initialize.call(this)},determineDataLimits:function(){var t,n=this,i=n.options.time,a=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,l=n.chart.data,s={labels:[],datasets:[]};r.each(l.labels,function(r,l){var u=e(n,r);u.isValid()&&(i.round&&u.startOf(i.round),t=u.valueOf(),a=Math.min(t,a),o=Math.max(t,o),s.labels[l]=t)}),r.each(l.datasets,function(l,u){var d=[];"object"==typeof l.data[0]&&null!==l.data[0]&&n.chart.isDatasetVisible(u)?r.each(l.data,function(r,l){var s=e(n,n.getRightValue(r));s.isValid()&&(i.round&&s.startOf(i.round),t=s.valueOf(),a=Math.min(t,a),o=Math.max(t,o),d[l]=t)}):d=s.labels.slice(),s.datasets[u]=d}),n.dataMin=a,n.dataMax=o,n._parsedData=s},buildTicks:function(){var i,o,l=this,s=l.options.time,u=l.dataMin,d=l.dataMax;if(s.min){var c=e(l,s.min);s.round&&c.round(s.round),i=c.valueOf()}s.max&&(o=e(l,s.max).valueOf());var h=l.getLabelCapacity(i||u),f=s.unit||n(s.minUnit,i||u,o||d,h);l.displayFormat=s.displayFormats[f];var g=s.stepSize||a(i||u,o||d,f,h);l.ticks=t.Ticks.generators.time({maxTicks:h,min:i,max:o,stepSize:g,unit:f,isoWeekday:s.isoWeekday},{min:u,max:d}),l.max=r.max(l.ticks),l.min=r.min(l.ticks)},getLabelForIndex:function(t,n){var i=this,a=i.chart.data.labels&&t<i.chart.data.labels.length?i.chart.data.labels[t]:"",o=i.chart.data.datasets[n].data[t];return null!==o&&"object"==typeof o&&(a=i.getRightValue(o)),i.options.time.tooltipFormat&&(a=e(i,a).format(i.options.time.tooltipFormat)),a},tickFormatFunction:function(t,e,n){var i=t.format(this.displayFormat),a=this.options.ticks,o=r.getValueOrDefault(a.callback,a.userCallback);return o?o(i,e,n):i},convertTicksToLabels:function(){var t=this;t.ticksAsTimestamps=t.ticks,t.ticks=t.ticks.map(function(t){return i(t)}).map(t.tickFormatFunction,t)},getPixelForOffset:function(t){var e=this,n=e.max-e.min,i=n?(t-e.min)/n:0;if(e.isHorizontal()){var a=e.width*i;return e.left+Math.round(a)}var o=e.height*i;return e.top+Math.round(o)},getPixelForValue:function(t,n,i){var a=this,o=null;if(void 0!==n&&void 0!==i&&(o=a._parsedData.datasets[i][n]),null===o&&(t&&t.isValid||(t=e(a,a.getRightValue(t))),t&&t.isValid&&t.isValid()&&(o=t.valueOf())),null!==o)return a.getPixelForOffset(o)},getPixelForTick:function(t){return this.getPixelForOffset(this.ticksAsTimestamps[t])},getValueForPixel:function(t){var e=this,n=e.isHorizontal()?e.width:e.height,a=(t-(e.isHorizontal()?e.left:e.top))/n;return i(e.min+a*(e.max-e.min))},getLabelWidth:function(e){var n=this,i=n.options.ticks,a=n.ctx.measureText(e).width,o=Math.cos(r.toRadians(i.maxRotation)),l=Math.sin(r.toRadians(i.maxRotation)),s=r.getValueOrDefault(i.fontSize,t.defaults.global.defaultFontSize);return a*o+s*l},getLabelCapacity:function(t){var e=this;e.displayFormat=e.options.time.displayFormats.millisecond;var n=e.tickFormatFunction(i(t),0,[]),a=e.getLabelWidth(n),o=e.isHorizontal()?e.width:e.height,r=o/a;return r}});t.scaleService.registerScaleType("time",u,s)}},{1:1}]},{},[7])(7)});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/stats/views/dashboard-widget-tpl.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Dashboard Widget View for Stats Module of Orbit Fox.
|
4 |
-
*
|
5 |
-
* @link https://themeisle.com
|
6 |
-
* @since 1.0.0
|
7 |
-
*
|
8 |
-
* @package Orbit_Fox_Modules
|
9 |
-
* @subpackage Orbit_Fox_Modules/stats/views
|
10 |
-
* @codeCoverageIgnore
|
11 |
-
*/
|
12 |
-
|
13 |
-
$html_title = '';
|
14 |
-
if ( trim( $title ) != '' ) {
|
15 |
-
$html_title = '<h3>' . $title . ' <small><i> for ' . $display_year . '</i></small></h3>';
|
16 |
-
}
|
17 |
-
|
18 |
-
$html_desc = '';
|
19 |
-
if ( trim( $desc ) != '' ) {
|
20 |
-
$html_desc = '<hr/><small>' . $desc . '</small>';
|
21 |
-
}
|
22 |
-
|
23 |
-
$posts_data = '';
|
24 |
-
$comments_data = '';
|
25 |
-
$graph_shows = $this->get_option( 'graph_shows' );
|
26 |
-
if ( $graph_shows == 0 || $graph_shows == 2 ) {
|
27 |
-
$posts_data = 'data-posts="' . json_encode( $posts_count ) . '"';
|
28 |
-
}
|
29 |
-
if ( $graph_shows == 1 || $graph_shows == 2 ) {
|
30 |
-
$comments_data = 'data-comments="' . json_encode( $comments_count ) . '"';
|
31 |
-
}
|
32 |
-
|
33 |
-
?>
|
34 |
-
|
35 |
-
<?php echo $html_title; ?>
|
36 |
-
<canvas id="obfxChart" <?php echo $posts_data; ?> <?php echo $comments_data; ?> ></canvas>
|
37 |
-
<?php echo $html_desc; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/template-directory/css/admin.css
CHANGED
@@ -7,26 +7,42 @@
|
|
7 |
padding: 15px;
|
8 |
font-size: 16px;
|
9 |
font-weight: 600;
|
|
|
10 |
}
|
11 |
|
12 |
.obfx-template {
|
13 |
float: left;
|
|
|
|
|
14 |
position: relative;
|
15 |
-
box-sizing: border-box;
|
16 |
-
width: 22.7%;
|
17 |
-
margin: 0 3% 3% 0;
|
18 |
border: 1px solid #ddd;
|
19 |
-
|
20 |
-
box-
|
|
|
|
|
21 |
}
|
22 |
|
23 |
-
.obfx-template:nth-child(
|
24 |
margin-right: 0;
|
25 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
.obfx-template-actions {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
float: right;
|
29 |
-
padding: 10px;
|
30 |
}
|
31 |
|
32 |
.obfx-template-actions .button .dashicons {
|
@@ -38,17 +54,21 @@
|
|
38 |
}
|
39 |
|
40 |
.obfx-template-screenshot {
|
|
|
41 |
display: inline-block;
|
42 |
overflow: hidden;
|
43 |
position: relative;
|
44 |
border: 1px solid #ddd;
|
45 |
border-right: none;
|
46 |
border-left: none;
|
|
|
|
|
|
|
47 |
}
|
48 |
|
49 |
.obfx-template img {
|
50 |
float: left;
|
51 |
-
|
52 |
}
|
53 |
|
54 |
.obfx-template-browser.customizer {
|
@@ -56,14 +76,6 @@
|
|
56 |
padding: 10px 20px 60px;
|
57 |
}
|
58 |
|
59 |
-
.obfx-custom-customizer #customize-header-actions input.save {
|
60 |
-
display: none;
|
61 |
-
}
|
62 |
-
|
63 |
-
.obfx-custom-customizer .control-panel-widgets {
|
64 |
-
display: none !important;
|
65 |
-
}
|
66 |
-
|
67 |
.obfx-next-prev {
|
68 |
position: absolute;
|
69 |
left: 45px;
|
@@ -119,19 +131,6 @@
|
|
119 |
background: #fff;
|
120 |
}
|
121 |
|
122 |
-
.obfx-template-browser.customizer .obfx-template {
|
123 |
-
display: none;
|
124 |
-
float: none;
|
125 |
-
width: 100%;
|
126 |
-
margin: 0 0 20px 0;
|
127 |
-
border: none;
|
128 |
-
cursor: default;
|
129 |
-
}
|
130 |
-
|
131 |
-
#customize-controls .obfx-template-actions {
|
132 |
-
padding: 0;
|
133 |
-
}
|
134 |
-
|
135 |
.obfx-template-browser.customizer .obfx-template.active {
|
136 |
display: inline-block;
|
137 |
}
|
@@ -159,7 +158,10 @@
|
|
159 |
}
|
160 |
|
161 |
.obfx-done-import {
|
162 |
-
|
|
|
|
|
|
|
163 |
color: green;
|
164 |
}
|
165 |
|
@@ -167,20 +169,10 @@
|
|
167 |
font-size: 30px;
|
168 |
}
|
169 |
|
170 |
-
#customize-controls .obfx-done-import .dashicons {
|
171 |
-
line-height: 50px;
|
172 |
-
}
|
173 |
-
|
174 |
.obfx-updating.updating-message.button.button-primary {
|
175 |
padding: 0 4px 0 10px;
|
176 |
}
|
177 |
|
178 |
-
#customize-header-actions .button.obfx-import-template,
|
179 |
-
#customize-header-actions .button.obfx-updating {
|
180 |
-
float: right;
|
181 |
-
margin-top: 8px;
|
182 |
-
}
|
183 |
-
|
184 |
.obfx-no-elementor-modal-wrapper {
|
185 |
display: none;
|
186 |
position: fixed;
|
@@ -231,3 +223,101 @@
|
|
231 |
color: #7b7b7b;
|
232 |
cursor: pointer;
|
233 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
padding: 15px;
|
8 |
font-size: 16px;
|
9 |
font-weight: 600;
|
10 |
+
float: left;
|
11 |
}
|
12 |
|
13 |
.obfx-template {
|
14 |
float: left;
|
15 |
+
background: #fff;
|
16 |
+
cursor: pointer;
|
17 |
position: relative;
|
|
|
|
|
|
|
18 |
border: 1px solid #ddd;
|
19 |
+
box-shadow: 0 1px 1px -1px rgba(0,0,0,.1);
|
20 |
+
box-sizing: border-box;
|
21 |
+
margin: 0 4% 4% 0;
|
22 |
+
width: 30.6%;
|
23 |
}
|
24 |
|
25 |
+
.obfx-template:nth-child(3n) {
|
26 |
margin-right: 0;
|
27 |
}
|
28 |
+
.obfx-template:hover .obfx-template-actions,
|
29 |
+
.obfx-template:hover .obfx-preview-template {
|
30 |
+
opacity: 1;
|
31 |
+
}
|
32 |
+
.obfx-template:hover .obfx-template-screenshot {
|
33 |
+
opacity: .4;
|
34 |
+
}
|
35 |
|
36 |
.obfx-template-actions {
|
37 |
+
position: absolute;
|
38 |
+
right: 0;
|
39 |
+
bottom: 0;
|
40 |
+
transition: .3s ease;
|
41 |
+
opacity:0;
|
42 |
+
background: rgba(244,244,244,.7);
|
43 |
+
border-left: 1px solid rgba(0,0,0,.05);
|
44 |
float: right;
|
45 |
+
padding: 10px 15px;
|
46 |
}
|
47 |
|
48 |
.obfx-template-actions .button .dashicons {
|
54 |
}
|
55 |
|
56 |
.obfx-template-screenshot {
|
57 |
+
background: #fff;
|
58 |
display: inline-block;
|
59 |
overflow: hidden;
|
60 |
position: relative;
|
61 |
border: 1px solid #ddd;
|
62 |
border-right: none;
|
63 |
border-left: none;
|
64 |
+
float: left;
|
65 |
+
transition: .3s ease;
|
66 |
+
width: 100%;
|
67 |
}
|
68 |
|
69 |
.obfx-template img {
|
70 |
float: left;
|
71 |
+
width: 100%;
|
72 |
}
|
73 |
|
74 |
.obfx-template-browser.customizer {
|
76 |
padding: 10px 20px 60px;
|
77 |
}
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
.obfx-next-prev {
|
80 |
position: absolute;
|
81 |
left: 45px;
|
131 |
background: #fff;
|
132 |
}
|
133 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
.obfx-template-browser.customizer .obfx-template.active {
|
135 |
display: inline-block;
|
136 |
}
|
158 |
}
|
159 |
|
160 |
.obfx-done-import {
|
161 |
+
display: block;
|
162 |
+
text-align: center;
|
163 |
+
padding-top: 10px;
|
164 |
+
margin: 0;
|
165 |
color: green;
|
166 |
}
|
167 |
|
169 |
font-size: 30px;
|
170 |
}
|
171 |
|
|
|
|
|
|
|
|
|
172 |
.obfx-updating.updating-message.button.button-primary {
|
173 |
padding: 0 4px 0 10px;
|
174 |
}
|
175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
.obfx-no-elementor-modal-wrapper {
|
177 |
display: none;
|
178 |
position: fixed;
|
223 |
color: #7b7b7b;
|
224 |
cursor: pointer;
|
225 |
}
|
226 |
+
|
227 |
+
|
228 |
+
.obfx-template-preview.theme-install-overlay .install-theme-info.obfx-theme-info .theme-screenshot{
|
229 |
+
width: 100%;
|
230 |
+
}
|
231 |
+
.obfx-template-preview.theme-install-overlay .install-theme-info.obfx-theme-info {
|
232 |
+
display: none;
|
233 |
+
}
|
234 |
+
|
235 |
+
.obfx-template-preview.theme-install-overlay .install-theme-info.obfx-theme-info.active {
|
236 |
+
display: block;
|
237 |
+
}
|
238 |
+
|
239 |
+
.more-details.obfx-preview-template {
|
240 |
+
transition: .3s ease;
|
241 |
+
cursor: pointer;
|
242 |
+
position: absolute;
|
243 |
+
top: 0;
|
244 |
+
bottom: 51px;
|
245 |
+
left: 0;
|
246 |
+
right: 0;
|
247 |
+
text-align: center;
|
248 |
+
z-index: 100;
|
249 |
+
opacity:0;
|
250 |
+
}
|
251 |
+
|
252 |
+
.more-details.obfx-preview-template span {
|
253 |
+
background: #23282d;
|
254 |
+
background: rgba(0,0,0,.7);
|
255 |
+
color: #fff;
|
256 |
+
font-size: 15px;
|
257 |
+
text-shadow: 0 1px 0 rgba(0,0,0,.6);
|
258 |
+
-webkit-font-smoothing: antialiased;
|
259 |
+
font-weight: 600;
|
260 |
+
padding: 15px 12px;
|
261 |
+
text-align: center;
|
262 |
+
border-radius: 3px;
|
263 |
+
transform: translate(-50%, -50%);
|
264 |
+
position: relative;
|
265 |
+
left: 50%;
|
266 |
+
top: 50%;
|
267 |
+
width: 45%;
|
268 |
+
display: block;
|
269 |
+
}
|
270 |
+
|
271 |
+
.obfx-required-plugins > p {
|
272 |
+
color: #333;
|
273 |
+
font-weight: 800;
|
274 |
+
margin-top: 20px;
|
275 |
+
}
|
276 |
+
|
277 |
+
.obfx-required-plugins .button {
|
278 |
+
display: none;
|
279 |
+
}
|
280 |
+
@media only screen and (min-width: 1640px) {
|
281 |
+
.obfx-template {
|
282 |
+
width: 22.7%;
|
283 |
+
margin: 0 3% 3% 0;
|
284 |
+
}
|
285 |
+
.obfx-template:nth-child(3n) {
|
286 |
+
margin-right: 3%;
|
287 |
+
}
|
288 |
+
.obfx-template:nth-child(4n) {
|
289 |
+
margin-right: 0;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
@media only screen and (max-width: 1120px){
|
294 |
+
.obfx-template {
|
295 |
+
width: 47.5%;
|
296 |
+
margin: 0 3% 3% 0;
|
297 |
+
}
|
298 |
+
.obfx-template:nth-child(3n) {
|
299 |
+
margin-right: 3%;
|
300 |
+
}
|
301 |
+
.obfx-template:nth-child(even) {
|
302 |
+
margin-right: 0;
|
303 |
+
}
|
304 |
+
}
|
305 |
+
|
306 |
+
@media only screen and (max-width: 600px) {
|
307 |
+
.obfx-template-preview .wp-full-overlay-sidebar {
|
308 |
+
width: 100%;
|
309 |
+
}
|
310 |
+
}
|
311 |
+
|
312 |
+
@media only screen and (min-width: 2000px) {
|
313 |
+
.obfx-template {
|
314 |
+
width: 17.6%;
|
315 |
+
margin: 0 3% 3% 0;
|
316 |
+
}
|
317 |
+
.obfx-template:nth-child(4n) {
|
318 |
+
margin-right: 3%;
|
319 |
+
}
|
320 |
+
.obfx-template:nth-child(5n) {
|
321 |
+
margin-right: 0;
|
322 |
+
}
|
323 |
+
}
|
obfx_modules/template-directory/inc/class-obfx-template-directory-customizer-section.php
DELETED
@@ -1,122 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Orbit fox template directory customizer section.
|
4 |
-
*
|
5 |
-
* @package Orbit_Fox_Modules
|
6 |
-
* @subpackage Orbit_Fox_Modules/template-directory
|
7 |
-
*/
|
8 |
-
|
9 |
-
/**
|
10 |
-
* The Orbit Fox Template Directory Customizer Section.
|
11 |
-
*
|
12 |
-
* @link https://themeisle.com
|
13 |
-
* @since 1.0.0
|
14 |
-
*
|
15 |
-
* @package Template_Directory_OBFX_Module
|
16 |
-
*/
|
17 |
-
class OBFX_Template_Directory_Customizer_Section extends WP_Customize_Section {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* The type of customize section being rendered.
|
21 |
-
*
|
22 |
-
* @since 1.0.0
|
23 |
-
* @access public
|
24 |
-
* @var string
|
25 |
-
*/
|
26 |
-
public $type = 'obfx-template-directory-section';
|
27 |
-
|
28 |
-
/**
|
29 |
-
* OBFX Module Directory
|
30 |
-
*
|
31 |
-
* @since 1.0.0
|
32 |
-
* @access private
|
33 |
-
*
|
34 |
-
* @var string
|
35 |
-
*/
|
36 |
-
private $module_dir = '';
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Templates list.
|
40 |
-
*
|
41 |
-
* @var array
|
42 |
-
*/
|
43 |
-
private $templates = array();
|
44 |
-
|
45 |
-
/**
|
46 |
-
* The previewed template slug.
|
47 |
-
*
|
48 |
-
* @var string
|
49 |
-
*/
|
50 |
-
private $called_template = '';
|
51 |
-
|
52 |
-
/**
|
53 |
-
* The tempalte to render required plugins install button.
|
54 |
-
*
|
55 |
-
* @var string
|
56 |
-
*/
|
57 |
-
private $required_plugins = '';
|
58 |
-
|
59 |
-
/**
|
60 |
-
* Hestia_Hiding_Section constructor.
|
61 |
-
*
|
62 |
-
* @param WP_Customize_Manager $manager Customizer Manager.
|
63 |
-
* @param string $id Control id.
|
64 |
-
* @param array $args Arguments.
|
65 |
-
*/
|
66 |
-
public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
|
67 |
-
parent::__construct( $manager, $id, $args );
|
68 |
-
$this->module_dir = $args['module_directory'];
|
69 |
-
|
70 |
-
add_action( 'customize_controls_init', array( $this, 'enqueue' ) );
|
71 |
-
|
72 |
-
if ( ! empty( $args['templates'] ) ) {
|
73 |
-
$this->templates = $args['templates'];
|
74 |
-
}
|
75 |
-
if ( ! empty( $args['requires_plugins'] ) ) {
|
76 |
-
$this->required_plugins = $args['requires_plugins'];
|
77 |
-
}
|
78 |
-
|
79 |
-
$this->called_template = isset( $_GET['obfx_template_id'] ) ? $_GET['obfx_template_id'] : '';
|
80 |
-
}
|
81 |
-
|
82 |
-
/**
|
83 |
-
* Enqueue scripts designated for this control.
|
84 |
-
*/
|
85 |
-
public function enqueue() {
|
86 |
-
wp_enqueue_script( 'obfx-template-dir-script', $this->module_dir . 'template-directory/js/customizer.js', array( 'jquery', 'customize-preview' ), '1.0.0', true );
|
87 |
-
}
|
88 |
-
|
89 |
-
/**
|
90 |
-
* Outputs the Underscore.js template.
|
91 |
-
*
|
92 |
-
* @since 1.1.47
|
93 |
-
* @access public
|
94 |
-
* @return void
|
95 |
-
*/
|
96 |
-
protected function render() {
|
97 |
-
$html = '';
|
98 |
-
if ( ! empty( $this->templates ) ) {
|
99 |
-
$html .= '<div class="obfx-template-browser customizer">';
|
100 |
-
foreach ( $this->templates as $template => $properties ) {
|
101 |
-
$active = '';
|
102 |
-
if ( $template === $this->called_template ) {
|
103 |
-
$active = ' active';
|
104 |
-
}
|
105 |
-
$html .= '<div class="obfx-template' . esc_attr( $active ) . '" data-demo-url="' . esc_url( $properties['demo_url'] ) . '" data-slug="' . $template . '" data-template-file="' . esc_url( $properties['import_file'] ) . '">';
|
106 |
-
$html .= '<h2 class="template-name template-header">' . esc_html( $properties['title'] ) . '</h2>';
|
107 |
-
$html .= '<div class="obfx-template-screenshot">';
|
108 |
-
$html .= '<img src="' . esc_url( $properties['screenshot'] ) . '" alt="' . esc_html( $properties['title'] ) . '">';
|
109 |
-
$html .= '</div>';
|
110 |
-
$html .= '<div class="obfx-template-details">';
|
111 |
-
$html .= '<p>' . esc_html( $properties['description'] ) . '</p>';
|
112 |
-
$html .= '</div>'; // .obfx-template-details
|
113 |
-
$html .= '</div>'; // .obfx-template
|
114 |
-
}
|
115 |
-
$html .= '</div>'; // .obfx-template-browser
|
116 |
-
if ( ! empty( $this->required_plugins ) ) {
|
117 |
-
$html .= $this->required_plugins;
|
118 |
-
}
|
119 |
-
}
|
120 |
-
echo $html;
|
121 |
-
}
|
122 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/template-directory/init.php
CHANGED
@@ -67,11 +67,8 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
67 |
$this->loader->add_action( 'init', $this, 'demo_listing_register' );
|
68 |
//Add template redirect.
|
69 |
$this->loader->add_action( 'template_redirect', $this, 'demo_listing' );
|
70 |
-
//Remove customizer controls.
|
71 |
-
$this->loader->add_action( 'customize_register', $this, 'adjust_customizer', 1000 );
|
72 |
//Enqueue admin scripts.
|
73 |
$this->loader->add_action( 'admin_enqueue_scripts', $this, 'enqueue_template_dir_scripts' );
|
74 |
-
$this->loader->add_action( 'customize_controls_enqueue_scripts', $this, 'enqueue_template_dir_scripts' );
|
75 |
}
|
76 |
|
77 |
/**
|
@@ -79,12 +76,10 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
79 |
*/
|
80 |
public function enqueue_template_dir_scripts() {
|
81 |
$current_screen = get_current_screen();
|
82 |
-
if ( $current_screen->id == 'orbit-fox_page_obfx_template_dir'
|
83 |
$script_handle = $this->slug . '-script';
|
84 |
-
|
85 |
-
|
86 |
-
wp_enqueue_script( 'updates' );
|
87 |
-
}
|
88 |
wp_register_script( $script_handle, plugin_dir_url( $this->get_dir() ) . $this->slug . '/js/script.js', array( 'jquery' ), $this->version );
|
89 |
wp_localize_script( $script_handle, 'importer_endpoint',
|
90 |
array(
|
@@ -141,13 +136,6 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
141 |
'admin' => array(),
|
142 |
),
|
143 |
);
|
144 |
-
|
145 |
-
if ( ! defined( 'ELEMENTOR_VERSION' ) ) {
|
146 |
-
$enqueue['js'] = array(
|
147 |
-
'plugin-install-helper' => array( 'jquery' ),
|
148 |
-
);
|
149 |
-
}
|
150 |
-
|
151 |
return $enqueue;
|
152 |
}
|
153 |
|
@@ -161,66 +149,6 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
161 |
) );
|
162 |
}
|
163 |
|
164 |
-
/**
|
165 |
-
* Remove the customizer controls and add the template listing control.
|
166 |
-
*/
|
167 |
-
public function adjust_customizer( $wp_customize ) {
|
168 |
-
|
169 |
-
if ( ! $this->is_template_dir_customize() ) {
|
170 |
-
return;
|
171 |
-
}
|
172 |
-
add_filter( 'customize_loaded_components', '__return_empty_array' );
|
173 |
-
|
174 |
-
//Remove all customizer sections and panels except 'obfx-templates'.
|
175 |
-
foreach ( $wp_customize->sections() as $section ) {
|
176 |
-
if ( $section->id !== 'obfx-templates' ) {
|
177 |
-
$wp_customize->remove_section( $section->id );
|
178 |
-
}
|
179 |
-
}
|
180 |
-
foreach ( $wp_customize->panels() as $panel ) {
|
181 |
-
if ( $panel->id !== 'widgets' && $panel->id !== 'nav_menus' ) {
|
182 |
-
$wp_customize->remove_panel( $panel->id );
|
183 |
-
}
|
184 |
-
}
|
185 |
-
|
186 |
-
//Get the module directory to later pass it for scripts enqueueing in the Orbit Fox customizer section.
|
187 |
-
$module_directory = $this->get_dir();
|
188 |
-
|
189 |
-
//Include the customizer section custom class and add the section.
|
190 |
-
require_once( $module_directory . '/inc/class-obfx-template-directory-customizer-section.php' );
|
191 |
-
if ( class_exists( 'OBFX_Template_Directory_Customizer_Section' ) ) {
|
192 |
-
$wp_customize->add_section(
|
193 |
-
new OBFX_Template_Directory_Customizer_Section(
|
194 |
-
$wp_customize, 'obfx-templates', array(
|
195 |
-
'priority' => 0,
|
196 |
-
'module_directory' => plugin_dir_url( $this->get_dir() ),
|
197 |
-
'templates' => $this->templates_list(),
|
198 |
-
'requires_plugins' => $this->render_view( 'template-plugin-install' ),
|
199 |
-
)
|
200 |
-
)
|
201 |
-
);
|
202 |
-
}
|
203 |
-
|
204 |
-
}
|
205 |
-
|
206 |
-
/**
|
207 |
-
* Utility method to check if it's the customizer instance for the Template Directory Preview.
|
208 |
-
*
|
209 |
-
* @return bool
|
210 |
-
*/
|
211 |
-
public function is_template_dir_customize() {
|
212 |
-
//Check the URL parameter and bail if not on 'obfx_templates'.
|
213 |
-
$current = urldecode( isset( $_GET['url'] ) ? $_GET['url'] : '' );
|
214 |
-
$flag = add_query_arg( 'obfx_templates', '', trailingslashit( home_url() ) );
|
215 |
-
$current = str_replace( '/', '', $current );
|
216 |
-
$flag = str_replace( '/', '', $flag );
|
217 |
-
if ( $flag !== $current ) {
|
218 |
-
return false;
|
219 |
-
}
|
220 |
-
|
221 |
-
return true;
|
222 |
-
}
|
223 |
-
|
224 |
/**
|
225 |
* The templates list.
|
226 |
*
|
@@ -229,62 +157,84 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
229 |
public function templates_list() {
|
230 |
$repository_raw_url = 'https://raw.githubusercontent.com/Codeinwp/obfx-templates/master/';
|
231 |
$defaults_if_empty = array(
|
232 |
-
'title'
|
233 |
-
'screenshot'
|
234 |
-
'description'
|
235 |
-
'demo_url'
|
236 |
-
'import_file'
|
|
|
237 |
);
|
238 |
|
239 |
$templates_list = array(
|
240 |
'about-our-business-elementor' => array(
|
241 |
-
'title'
|
242 |
-
'description'
|
243 |
-
'demo_url'
|
244 |
-
'screenshot'
|
245 |
-
'import_file'
|
246 |
-
|
247 |
'contact-us-elementor' => array(
|
248 |
-
'title'
|
249 |
-
'description'
|
250 |
-
'demo_url'
|
251 |
-
'screenshot'
|
252 |
-
'import_file'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
),
|
254 |
-
'
|
255 |
-
'title'
|
256 |
-
'description'
|
257 |
-
'demo_url'
|
258 |
-
'screenshot'
|
259 |
-
'import_file'
|
260 |
),
|
261 |
-
'
|
262 |
-
'title'
|
263 |
-
'description'
|
264 |
-
'demo_url'
|
265 |
-
'screenshot'
|
266 |
-
'import_file'
|
267 |
),
|
268 |
-
'
|
269 |
-
'title'
|
270 |
-
'description'
|
271 |
-
'demo_url'
|
272 |
-
'screenshot'
|
273 |
-
'import_file'
|
274 |
),
|
275 |
-
'
|
276 |
-
'title'
|
277 |
-
'description'
|
278 |
-
'demo_url'
|
279 |
-
'screenshot'
|
280 |
-
'import_file'
|
281 |
),
|
282 |
-
'
|
283 |
-
'title'
|
284 |
-
'description'
|
285 |
-
'demo_url'
|
286 |
-
'screenshot'
|
287 |
-
'import_file'
|
288 |
),
|
289 |
);
|
290 |
|
@@ -339,7 +289,6 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
339 |
public function render_admin_page() {
|
340 |
$data = array(
|
341 |
'templates_array' => $this->templates_list(),
|
342 |
-
'requires_plugins' => $this->render_view( 'template-plugin-install' )
|
343 |
);
|
344 |
echo $this->render_view( 'template-directory-page', $data );
|
345 |
}
|
@@ -468,8 +417,6 @@ class Template_Directory_OBFX_Module extends Orbit_Fox_Module_Abstract {
|
|
468 |
array(
|
469 |
'action' => 'activate',
|
470 |
'plugin' => rawurlencode( $plugin_link_suffix ),
|
471 |
-
'plugin_status' => 'all',
|
472 |
-
'paged' => '1',
|
473 |
'_wpnonce' => wp_create_nonce( 'activate-plugin_' . $plugin_link_suffix ),
|
474 |
), network_admin_url( 'plugins.php' )
|
475 |
);
|
67 |
$this->loader->add_action( 'init', $this, 'demo_listing_register' );
|
68 |
//Add template redirect.
|
69 |
$this->loader->add_action( 'template_redirect', $this, 'demo_listing' );
|
|
|
|
|
70 |
//Enqueue admin scripts.
|
71 |
$this->loader->add_action( 'admin_enqueue_scripts', $this, 'enqueue_template_dir_scripts' );
|
|
|
72 |
}
|
73 |
|
74 |
/**
|
76 |
*/
|
77 |
public function enqueue_template_dir_scripts() {
|
78 |
$current_screen = get_current_screen();
|
79 |
+
if ( $current_screen->id == 'orbit-fox_page_obfx_template_dir' ) {
|
80 |
$script_handle = $this->slug . '-script';
|
81 |
+
wp_enqueue_script( 'plugin-install' );
|
82 |
+
wp_enqueue_script( 'updates' );
|
|
|
|
|
83 |
wp_register_script( $script_handle, plugin_dir_url( $this->get_dir() ) . $this->slug . '/js/script.js', array( 'jquery' ), $this->version );
|
84 |
wp_localize_script( $script_handle, 'importer_endpoint',
|
85 |
array(
|
136 |
'admin' => array(),
|
137 |
),
|
138 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
return $enqueue;
|
140 |
}
|
141 |
|
149 |
) );
|
150 |
}
|
151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
/**
|
153 |
* The templates list.
|
154 |
*
|
157 |
public function templates_list() {
|
158 |
$repository_raw_url = 'https://raw.githubusercontent.com/Codeinwp/obfx-templates/master/';
|
159 |
$defaults_if_empty = array(
|
160 |
+
'title' => __( 'A new Orbit Fox Template', 'themeisle-companion' ),
|
161 |
+
'screenshot' => esc_url( 'https://raw.githubusercontent.com/Codeinwp/obfx-templates/master/placeholder.png' ),
|
162 |
+
'description' => __( 'This is an awesome Orbit Fox Template.', 'themeisle-companion' ),
|
163 |
+
'demo_url' => esc_url( 'https://demo.themeisle.com/hestia-pro-demo-content/demo-placeholder/' ),
|
164 |
+
'import_file' => '',
|
165 |
+
'required_plugins' => array( 'elementor' => array( 'title' => __( 'Elementor Page Builder', 'themeisle-companion' ) ) ),
|
166 |
);
|
167 |
|
168 |
$templates_list = array(
|
169 |
'about-our-business-elementor' => array(
|
170 |
+
'title' => __( 'About Our Business', 'themeisle-companion' ),
|
171 |
+
'description' => __( 'Use this layout to present your business in a fancy way. Add an interactive header, shwocase your services via progress bars, introduce your team members, and locate your headquarters on Google Maps. Last but not least, beautify the design by adding catchy images.', 'themeisle-companion' ),
|
172 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/about-our-business-elementor/',
|
173 |
+
'screenshot' => esc_url( $repository_raw_url . 'about-our-business-elementor/screenshot.png' ),
|
174 |
+
'import_file' => esc_url( $repository_raw_url . 'about-our-business-elementor/template.json' ),
|
175 |
+
),
|
176 |
'contact-us-elementor' => array(
|
177 |
+
'title' => __( 'Contact Us', 'themeisle-companion' ),
|
178 |
+
'description' => __( 'A clean and simple template for your Contact page, where we integrated our Pirate Forms plugin. It will let your customers send you a message using an intuitive form. A Google map, together with a few other details about your business, completes the section.', 'themeisle-companion' ),
|
179 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/contact-us-elementor/',
|
180 |
+
'screenshot' => esc_url( $repository_raw_url . 'contact-us-elementor/screenshot.png' ),
|
181 |
+
'import_file' => esc_url( $repository_raw_url . 'contact-us-elementor/template.json' ),
|
182 |
+
),
|
183 |
+
'pricing-elementor' => array(
|
184 |
+
'title' => __( 'Pricing', 'themeisle-companion' ),
|
185 |
+
'description' => __( 'If you plan to sell your products online, this layout offers you elegant pricing tables so you can differentiate the features and services for your clients. Also, for a better clarification, the template provides a FAQ area where you can answer people\'s questions.', 'themeisle-companion' ),
|
186 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/pricing-elementor/',
|
187 |
+
'screenshot' => esc_url( $repository_raw_url . 'pricing-elementor/screenshot.png' ),
|
188 |
+
'import_file' => esc_url( $repository_raw_url . 'pricing-elementor/template.json' ),
|
189 |
+
),
|
190 |
+
'material-homepage-elementor' => array(
|
191 |
+
'title' => __( 'Material Homepage', 'themeisle-companion' ),
|
192 |
+
'description' => __( 'This layout could be your main website homepage (or you can use it as an alternative homepage, if you wish). It was built on material design and comes with call to action, catchy icons, testimonials, blog posts, pricing plans, and other sections that you can add yourself by customizing it.', 'themeisle-companion' ),
|
193 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/material-homepage-elementor/',
|
194 |
+
'screenshot' => esc_url( $repository_raw_url . 'material-homepage-elementor/screenshot.png' ),
|
195 |
+
'import_file' => esc_url( $repository_raw_url . 'material-homepage-elementor/template.json' ),
|
196 |
+
),
|
197 |
+
'ether-elementor' => array(
|
198 |
+
'title' => __( 'Ether - Landing Page', 'themeisle-companion' ),
|
199 |
+
'description' => __( 'An elegant and modern landing page for e-commerce, coming with a clean interface, beautiful typography, photo galleries, and call to action. If you have an online shop and want to promote a certain product, use this layout to tell people why they should buy it.', 'themeisle-companion' ),
|
200 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/ether-elementor/',
|
201 |
+
'screenshot' => esc_url( $repository_raw_url . 'ether-elementor/screenshot.png' ),
|
202 |
+
'import_file' => esc_url( $repository_raw_url . 'ether-elementor/template.json' ),
|
203 |
),
|
204 |
+
'jason-elementor' => array(
|
205 |
+
'title' => __( 'Jason - Landing Page', 'themeisle-companion' ),
|
206 |
+
'description' => __( 'A classy template for freelancers, where you can put your skills and knowldge in the spotlight for potential clients. Talk about yourself, your projects, awards, and let people contact you easily. The template is designed to feature one-page scrolling.', 'themeisle-companion' ),
|
207 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/jason-elementor/',
|
208 |
+
'screenshot' => esc_url( $repository_raw_url . 'jason-elementor/screenshot.png' ),
|
209 |
+
'import_file' => esc_url( $repository_raw_url . 'jason-elementor/template.json' ),
|
210 |
),
|
211 |
+
'pulse-elementor' => array(
|
212 |
+
'title' => __( 'Pulse - Landing Page', 'themeisle-companion' ),
|
213 |
+
'description' => __( 'A good-looking landing page for products and apps, built to mark the features and services that they offer. The layout provides customer reviews, call to action, beautiful pricing tables, an About section, and a creative design. If you want to promote and sell your brand product, this template might help.', 'themeisle-companion' ),
|
214 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/pulse-elementor/',
|
215 |
+
'screenshot' => esc_url( $repository_raw_url . 'pulse-elementor/screenshot.png' ),
|
216 |
+
'import_file' => esc_url( $repository_raw_url . 'pulse-elementor/template.json' ),
|
217 |
),
|
218 |
+
'ascend-elementor' => array(
|
219 |
+
'title' => __( 'Ascend - Landing Page', 'themeisle-companion' ),
|
220 |
+
'description' => __( 'A resume-like template, built for outdoor enthusiasts and nature lovers. Its design and layout make it flexible for any other purpose too, so do not hesitate to showcase any kind of skills and activities, even business-oriented.', 'themeisle-companion' ),
|
221 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/ascend-elementor/',
|
222 |
+
'screenshot' => esc_url( $repository_raw_url . 'ascend-elementor/screenshot.png' ),
|
223 |
+
'import_file' => esc_url( $repository_raw_url . 'ascend-elementor/template.json' ),
|
224 |
),
|
225 |
+
'path-elementor' => array(
|
226 |
+
'title' => __( 'Path - Landing Page', 'themeisle-companion' ),
|
227 |
+
'description' => __( 'If you are a business consultant - agency or working on your own - have a look at this template! It comes with a clean design, call to action, statistics, and sections that put your services first.', 'themeisle-companion' ),
|
228 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/path-elementor/',
|
229 |
+
'screenshot' => esc_url( $repository_raw_url . 'path-elementor/screenshot.png' ),
|
230 |
+
'import_file' => esc_url( $repository_raw_url . 'path-elementor/template.json' ),
|
231 |
),
|
232 |
+
'mocha-elementor' => array(
|
233 |
+
'title' => __( 'Mocha - Landing Page', 'themeisle-companion' ),
|
234 |
+
'description' => __( 'An elegant and modern template for cafes and pubs, where you can display your menu in a mouth-watering way. Call to action, blog posts, attractive images, tabbed menus, and a catchy design will help you convince more people to stop by.', 'themeisle-companion' ),
|
235 |
+
'demo_url' => 'https://demo.themeisle.com/hestia-pro-demo-content/mocha-elementor/',
|
236 |
+
'screenshot' => esc_url( $repository_raw_url . 'mocha-elementor/screenshot.png' ),
|
237 |
+
'import_file' => esc_url( $repository_raw_url . 'mocha-elementor/template.json' ),
|
238 |
),
|
239 |
);
|
240 |
|
289 |
public function render_admin_page() {
|
290 |
$data = array(
|
291 |
'templates_array' => $this->templates_list(),
|
|
|
292 |
);
|
293 |
echo $this->render_view( 'template-directory-page', $data );
|
294 |
}
|
417 |
array(
|
418 |
'action' => 'activate',
|
419 |
'plugin' => rawurlencode( $plugin_link_suffix ),
|
|
|
|
|
420 |
'_wpnonce' => wp_create_nonce( 'activate-plugin_' . $plugin_link_suffix ),
|
421 |
), network_admin_url( 'plugins.php' )
|
422 |
);
|
obfx_modules/template-directory/js/customizer.js
DELETED
@@ -1,71 +0,0 @@
|
|
1 |
-
/*exported obfxHandleChange */
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Template Directory Customizer Public Script
|
5 |
-
*
|
6 |
-
* This handles the customizer.
|
7 |
-
*
|
8 |
-
* @since 1.0.0
|
9 |
-
* @package obfx_modules/template-directory/js
|
10 |
-
*
|
11 |
-
* @author ThemeIsle
|
12 |
-
*/
|
13 |
-
|
14 |
-
var obfx_template_directory_previewer = function( $ ) {
|
15 |
-
'use strict';
|
16 |
-
|
17 |
-
$(
|
18 |
-
function () {
|
19 |
-
$( 'head title' ).html( 'Orbit Fox Template Preview' );
|
20 |
-
$( '.wp-full-overlay-sidebar' ).addClass( 'obfx-custom-customizer' );
|
21 |
-
var importBtn = '<span class="obfx-import-template button button-primary" href="#">Import</span>';
|
22 |
-
$( '.customize-controls-preview-toggle .controls' ).html( 'Templates' );
|
23 |
-
// Remove Save Button
|
24 |
-
$( 'input.save, .customize-info, #accordion-panel-widgets, .customize-save-button-wrapper, .customize-control-notifications-container' ).remove();
|
25 |
-
$( '.wp-full-overlay-sidebar-content' ).removeAttr( 'style' );
|
26 |
-
$( '#customize-header-actions' ).prepend( importBtn ).append( '<div class="obfx-next-prev"><span onclick="obfxHandleChange(\'prev\');" class="previous-template"></span><span onclick="obfxHandleChange(\'next\');" class="next-template"></span></div>' );
|
27 |
-
$( '#customize-preview' ).remove();
|
28 |
-
var previewUrl = $( '.obfx-template.active' ).data( 'demo-url' );
|
29 |
-
var newFrame = '<div id="customize-preview" class="wp-full-overlay-main"><iframe src="' + previewUrl + '" title="OBFX Template Preview" name="customize-preview-obfx-template"></iframe></div>';
|
30 |
-
$( '.obfx-custom-customizer' ).after( newFrame );
|
31 |
-
changeButtonProps();
|
32 |
-
}
|
33 |
-
);
|
34 |
-
};
|
35 |
-
|
36 |
-
obfx_template_directory_previewer( jQuery );
|
37 |
-
|
38 |
-
function obfxHandleChange(direction) {
|
39 |
-
'use strict';
|
40 |
-
var active = jQuery( '.obfx-template.active' ).removeClass( 'active' );
|
41 |
-
direction = direction || 'next';
|
42 |
-
if (direction === 'next') {
|
43 |
-
if (active.next() && active.next().length) {
|
44 |
-
active.next().addClass( 'active' );
|
45 |
-
} else {
|
46 |
-
active.siblings( ':first' ).addClass( 'active' );
|
47 |
-
}
|
48 |
-
}
|
49 |
-
if (direction === 'prev') {
|
50 |
-
if (active.prev() && active.prev().length) {
|
51 |
-
active.prev().addClass( 'active' );
|
52 |
-
} else {
|
53 |
-
active.siblings( ':last' ).addClass( 'active' );
|
54 |
-
}
|
55 |
-
}
|
56 |
-
changePreviewSource();
|
57 |
-
}
|
58 |
-
|
59 |
-
function changePreviewSource() {
|
60 |
-
var previewUrl = jQuery( '.obfx-template.active' ).data( 'demo-url' );
|
61 |
-
jQuery( '#customize-preview iframe' ).attr( 'src', previewUrl );
|
62 |
-
changeButtonProps();
|
63 |
-
}
|
64 |
-
|
65 |
-
function changeButtonProps() {
|
66 |
-
var templateFileUrl = jQuery( '.obfx-template.active' ).data( 'template-file' );
|
67 |
-
var importBtn = '<span class="obfx-import-template button button-primary" href="#">Import</span>';
|
68 |
-
|
69 |
-
jQuery( '.obfx-done-import' ).replaceWith( importBtn );
|
70 |
-
jQuery( '.obfx-import-template.button' ).attr( 'data-template-file', templateFileUrl );
|
71 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/template-directory/js/plugin-install-helper.js
DELETED
@@ -1,55 +0,0 @@
|
|
1 |
-
var obfx_plugin_install_helper = function( $ ) {
|
2 |
-
'use strict';
|
3 |
-
$(
|
4 |
-
function () {
|
5 |
-
|
6 |
-
$( 'body' ).on(
|
7 |
-
'click', ' .obfx-install-plugin ', function () {
|
8 |
-
var slug = $( this ).attr( 'data-slug' );
|
9 |
-
wp.updates.installPlugin(
|
10 |
-
{
|
11 |
-
slug: slug
|
12 |
-
}
|
13 |
-
);
|
14 |
-
return false;
|
15 |
-
}
|
16 |
-
);
|
17 |
-
|
18 |
-
$( '.obfx-close-modal' ).on(
|
19 |
-
'click', function () {
|
20 |
-
$( '.obfx-no-elementor-modal-wrapper' ).fadeOut();
|
21 |
-
}
|
22 |
-
);
|
23 |
-
}
|
24 |
-
);
|
25 |
-
|
26 |
-
// Remove activate button and replace with activation in progress button.
|
27 |
-
$( document ).on(
|
28 |
-
'DOMNodeInserted','.activate-now', function () {
|
29 |
-
var activateButton = $( '.obfx-no-elementor-modal-wrapper .activate-now' );
|
30 |
-
if (activateButton.length) {
|
31 |
-
var url = $( activateButton ).attr( 'href' );
|
32 |
-
if (typeof url !== 'undefined') {
|
33 |
-
// Request plugin activation.
|
34 |
-
$.ajax(
|
35 |
-
{
|
36 |
-
beforeSend: function () {
|
37 |
-
$( activateButton ).replaceWith( '<a class="button updating-message">Activating...</a>' );
|
38 |
-
},
|
39 |
-
async: true,
|
40 |
-
type: 'GET',
|
41 |
-
url: url,
|
42 |
-
success: function () {
|
43 |
-
$( '.obfx-no-elementor-modal-wrapper' ).fadeOut();
|
44 |
-
$( '.obfx-import-queue' ).trigger( 'click' );
|
45 |
-
|
46 |
-
}
|
47 |
-
}
|
48 |
-
);
|
49 |
-
}
|
50 |
-
}
|
51 |
-
}
|
52 |
-
);
|
53 |
-
};
|
54 |
-
|
55 |
-
obfx_plugin_install_helper( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/template-directory/js/script.js
CHANGED
@@ -5,61 +5,217 @@
|
|
5 |
*
|
6 |
* This handles the template directory.
|
7 |
*
|
8 |
-
* @since
|
9 |
* @package obfx_modules/template-directory/js
|
10 |
*
|
11 |
-
* @author
|
12 |
*/
|
13 |
|
14 |
-
var obfx_template_directory = function( $ ) {
|
15 |
'use strict';
|
16 |
|
17 |
$(
|
18 |
function () {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
25 |
$.ajax(
|
26 |
{
|
27 |
url: importer_endpoint.url,
|
28 |
beforeSend: function ( xhr ) {
|
|
|
29 |
xhr.setRequestHeader( 'X-WP-Nonce', importer_endpoint.nonce );
|
30 |
},
|
31 |
-
async:
|
32 |
data: {
|
33 |
template_url: template_url,
|
34 |
template_name: template_name
|
35 |
},
|
36 |
type: 'POST',
|
37 |
success: function ( data ) {
|
38 |
-
|
39 |
-
|
40 |
-
location.href = data;
|
41 |
-
} else {
|
42 |
-
$( '.obfx-import-template' ).show();
|
43 |
-
$( '.obfx-updating' ).remove();
|
44 |
-
$( '.obfx-no-elementor-modal-wrapper' ).fadeIn();
|
45 |
-
}
|
46 |
},
|
47 |
error: function ( error ) {
|
48 |
console.error( error );
|
|
|
|
|
|
|
49 |
}
|
50 |
}, 'json'
|
51 |
);
|
52 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
);
|
56 |
};
|
57 |
|
58 |
obfx_template_directory( jQuery );
|
59 |
-
|
60 |
-
function get_the_template_name( button ) {
|
61 |
-
if ( jQuery( 'body' ).hasClass( 'tools_page_obfx_template_dir' ) ) {
|
62 |
-
return jQuery( button ).parent().prev().prev().text();
|
63 |
-
}
|
64 |
-
return jQuery( '.obfx-template.active .template-name' ).text();
|
65 |
-
}
|
5 |
*
|
6 |
* This handles the template directory.
|
7 |
*
|
8 |
+
* @since 1.0.0
|
9 |
* @package obfx_modules/template-directory/js
|
10 |
*
|
11 |
+
* @author ThemeIsle
|
12 |
*/
|
13 |
|
14 |
+
var obfx_template_directory = function ( $ ) {
|
15 |
'use strict';
|
16 |
|
17 |
$(
|
18 |
function () {
|
19 |
+
|
20 |
+
// Handle import click.
|
21 |
+
$( '.wp-full-overlay-header' ).on(
|
22 |
+
'click', '.obfx-import-template', function () {
|
23 |
+
$( this ).addClass( 'obfx-import-queue updating-message obfx-updating' ).html( '' );
|
24 |
+
$( '.obfx-template-preview .close-full-overlay, .obfx-next-prev' ).remove();
|
25 |
+
var template_url = $( this ).data( 'template-file' );
|
26 |
+
var template_name = $( this ).data( 'template-title' );
|
27 |
+
if ( $( '.active .obfx-installable' ).length || $( '.active .obfx-activate' ).length ) {
|
28 |
+
checkAndInstallPlugins();
|
29 |
+
} else {
|
30 |
$.ajax(
|
31 |
{
|
32 |
url: importer_endpoint.url,
|
33 |
beforeSend: function ( xhr ) {
|
34 |
+
$( '.obfx-import-queue' ).addClass( 'obfx-updating' ).html( '' );
|
35 |
xhr.setRequestHeader( 'X-WP-Nonce', importer_endpoint.nonce );
|
36 |
},
|
37 |
+
// async: false,
|
38 |
data: {
|
39 |
template_url: template_url,
|
40 |
template_name: template_name
|
41 |
},
|
42 |
type: 'POST',
|
43 |
success: function ( data ) {
|
44 |
+
$( '.obfx-updating' ).replaceWith( '<span class="obfx-done-import"><i class="dashicons-yes dashicons"></i></span>' );
|
45 |
+
location.href = data;
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
},
|
47 |
error: function ( error ) {
|
48 |
console.error( error );
|
49 |
+
},
|
50 |
+
complete: function() {
|
51 |
+
$( '.obfx-updating' ).replaceWith( '<span class="obfx-done-import"><i class="dashicons-yes dashicons"></i></span>' );
|
52 |
}
|
53 |
}, 'json'
|
54 |
);
|
55 |
}
|
56 |
+
}
|
57 |
+
);
|
58 |
+
|
59 |
+
function checkAndInstallPlugins() {
|
60 |
+
var installable = $( '.active .obfx-installable' );
|
61 |
+
var toActivate = $( '.active .obfx-activate' );
|
62 |
+
if ( installable.length || toActivate.length ) {
|
63 |
+
|
64 |
+
$( installable ).each(
|
65 |
+
function () {
|
66 |
+
var plugin = $( this );
|
67 |
+
$( plugin ).removeClass( 'obfx-installable' ).addClass( 'obfx-installing' );
|
68 |
+
$( plugin ).find( 'span.dashicons' ).replaceWith( '<span class="dashicons dashicons-update" style="-webkit-animation: rotation 2s infinite linear; animation: rotation 2s infinite linear; color: #ffb227 "></span>' );
|
69 |
+
var slug = $( this ).find( '.obfx-install-plugin' ).attr( 'data-slug' );
|
70 |
+
wp.updates.installPlugin(
|
71 |
+
{
|
72 |
+
slug: slug,
|
73 |
+
success: function ( response ) {
|
74 |
+
activatePlugin( response.activateUrl, plugin );
|
75 |
+
}
|
76 |
+
}
|
77 |
+
);
|
78 |
+
}
|
79 |
+
);
|
80 |
+
|
81 |
+
$( toActivate ).each(
|
82 |
+
function () {
|
83 |
+
var plugin = $( this );
|
84 |
+
var activateUrl = $( plugin ).find( '.activate-now' ).attr( 'href' );
|
85 |
+
if (typeof activateUrl !== 'undefined') {
|
86 |
+
activatePlugin( activateUrl, plugin );
|
87 |
+
}
|
88 |
+
}
|
89 |
+
);
|
90 |
+
}
|
91 |
+
}
|
92 |
+
|
93 |
+
function activatePlugin( activationUrl, plugin ) {
|
94 |
+
$.ajax(
|
95 |
+
{
|
96 |
+
type: 'GET',
|
97 |
+
url: activationUrl,
|
98 |
+
beforeSend: function() {
|
99 |
+
$( plugin ).removeClass( 'obfx-activate' ).addClass( 'obfx-installing' );
|
100 |
+
$( plugin ).find( 'span.dashicons' ).replaceWith( '<span class="dashicons dashicons-update" style="-webkit-animation: rotation 2s infinite linear; animation: rotation 2s infinite linear; color: #ffb227 "></span>' );
|
101 |
+
},
|
102 |
+
success: function () {
|
103 |
+
$( plugin ).find( '.dashicons' ).replaceWith( '<span class="dashicons dashicons-yes" style="color: #34a85e"></span>' );
|
104 |
+
$( plugin ).removeClass( 'obfx-installing' );
|
105 |
+
},
|
106 |
+
complete: function() {
|
107 |
+
if ( $( '.active .obfx-installing' ).length === 0 ) {
|
108 |
+
$( '.obfx-import-queue' ).trigger( 'click' );
|
109 |
+
}
|
110 |
+
}
|
111 |
+
}
|
112 |
);
|
113 |
+
}
|
114 |
+
|
115 |
+
// Handle sidebar collapse in preview.
|
116 |
+
$( '.obfx-template-preview' ).on(
|
117 |
+
'click', '.collapse-sidebar', function () {
|
118 |
+
event.preventDefault();
|
119 |
+
var overlay = $( '.obfx-template-preview' );
|
120 |
+
if ( overlay.hasClass( 'expanded' ) ) {
|
121 |
+
overlay.removeClass( 'expanded' );
|
122 |
+
overlay.addClass( 'collapsed' );
|
123 |
+
return false;
|
124 |
+
}
|
125 |
+
|
126 |
+
if ( overlay.hasClass( 'collapsed' ) ) {
|
127 |
+
overlay.removeClass( 'collapsed' );
|
128 |
+
overlay.addClass( 'expanded' );
|
129 |
+
return false;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
);
|
133 |
+
|
134 |
+
// Handle responsive buttons.
|
135 |
+
$( '.obfx-responsive-preview' ).on(
|
136 |
+
'click', 'button', function () {
|
137 |
+
$( '.obfx-template-preview' ).removeClass( 'preview-mobile preview-tablet preview-desktop' );
|
138 |
+
var deviceClass = 'preview-' + $( this ).data( 'device' );
|
139 |
+
$( '.obfx-responsive-preview button' ).each(
|
140 |
+
function () {
|
141 |
+
$( this ).attr( 'aria-pressed', 'false' );
|
142 |
+
$( this ).removeClass( 'active' );
|
143 |
+
}
|
144 |
+
);
|
145 |
+
|
146 |
+
$( '.obfx-responsive-preview' ).removeClass( $( this ).attr( 'class' ).split( ' ' ).pop() );
|
147 |
+
$( '.obfx-template-preview' ).addClass( deviceClass );
|
148 |
+
$( this ).addClass( 'active' );
|
149 |
+
}
|
150 |
+
);
|
151 |
+
|
152 |
+
// Hide preview.
|
153 |
+
$( '.close-full-overlay' ).on(
|
154 |
+
'click', function () {
|
155 |
+
$( '.obfx-template-preview .obfx-theme-info.active' ).removeClass( 'active' );
|
156 |
+
$( '.obfx-template-preview' ).hide();
|
157 |
+
$( '.obfx-template-frame' ).attr( 'src', '' );
|
158 |
+
}
|
159 |
+
);
|
160 |
+
|
161 |
+
// Open preview routine.
|
162 |
+
$( '.obfx-preview-template' ).on(
|
163 |
+
'click', function () {
|
164 |
+
var templateSlug = $( this ).data( 'template-slug' );
|
165 |
+
var previewUrl = $( this ).data( 'demo-url' );
|
166 |
+
$( '.obfx-template-frame' ).attr( 'src', previewUrl );
|
167 |
+
$( '.obfx-theme-info.' + templateSlug ).addClass( 'active' );
|
168 |
+
setupImportButton();
|
169 |
+
$( '.obfx-template-preview' ).fadeIn();
|
170 |
+
}
|
171 |
+
);
|
172 |
+
|
173 |
+
// Handle left-right navigation between templates.
|
174 |
+
$( '.obfx-next-prev .next-theme' ).on(
|
175 |
+
'click', function () {
|
176 |
+
var active = $( '.obfx-theme-info.active' ).removeClass( 'active' );
|
177 |
+
if ( active.next() && active.next().length ) {
|
178 |
+
active.next().addClass( 'active' );
|
179 |
+
} else {
|
180 |
+
active.siblings( ':first' ).addClass( 'active' );
|
181 |
+
}
|
182 |
+
changePreviewSource();
|
183 |
+
setupImportButton();
|
184 |
+
}
|
185 |
+
);
|
186 |
+
$( '.obfx-next-prev .previous-theme' ).on(
|
187 |
+
'click', function () {
|
188 |
+
var active = $( '.obfx-theme-info.active' ).removeClass( 'active' );
|
189 |
+
if ( active.prev() && active.prev().length ) {
|
190 |
+
active.prev().addClass( 'active' );
|
191 |
+
} else {
|
192 |
+
active.siblings( ':last' ).addClass( 'active' );
|
193 |
+
}
|
194 |
+
changePreviewSource();
|
195 |
+
setupImportButton();
|
196 |
+
}
|
197 |
+
);
|
198 |
+
|
199 |
+
// Change preview source.
|
200 |
+
function changePreviewSource() {
|
201 |
+
var previewUrl = $( '.obfx-theme-info.active' ).data( 'demo-url' );
|
202 |
+
$( '.obfx-template-frame' ).attr( 'src', previewUrl );
|
203 |
+
}
|
204 |
+
|
205 |
+
function setupImportButton() {
|
206 |
+
var installable = $( '.active .obfx-installable' );
|
207 |
+
if ( installable.length > 0 ) {
|
208 |
+
$( '.wp-full-overlay-header .obfx-import-template' ).text( 'Install and Import' );
|
209 |
+
} else {
|
210 |
+
$( '.wp-full-overlay-header .obfx-import-template' ).text( 'Import' );
|
211 |
+
}
|
212 |
+
var activeTheme = $( '.obfx-theme-info.active' );
|
213 |
+
var button = $( '.wp-full-overlay-header .obfx-import-template' );
|
214 |
+
$( button ).attr( 'data-template-file', $( activeTheme ).data( 'template-file' ) );
|
215 |
+
$( button ).attr( 'data-template-title', $( activeTheme ).data( 'template-title' ) );
|
216 |
+
}
|
217 |
}
|
218 |
);
|
219 |
};
|
220 |
|
221 |
obfx_template_directory( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obfx_modules/template-directory/views/template-directory-page-tpl.php
CHANGED
@@ -20,28 +20,16 @@ if ( is_array( $templates_array ) ) {
|
|
20 |
$html .= '<div class="obfx-template-browser">';
|
21 |
|
22 |
foreach ( $templates_array as $template => $properties ) {
|
23 |
-
$admin_url = admin_url() . 'customize.php';
|
24 |
-
$customizer_url = add_query_arg(
|
25 |
-
array(
|
26 |
-
'url' => urlencode( $preview_url ),
|
27 |
-
'return' => admin_url() . 'admin.php?page=obfx_template_dir',
|
28 |
-
'obfx_template_id' => esc_html( $template ),
|
29 |
-
), $admin_url
|
30 |
-
);
|
31 |
-
|
32 |
$html .= '<div class="obfx-template">';
|
33 |
-
$html .= '<
|
34 |
$html .= '<div class="obfx-template-screenshot">';
|
35 |
$html .= '<img src="' . esc_url( $properties['screenshot'] ) . '" alt="' . esc_html( $properties['title'] ) . '" >';
|
36 |
$html .= '</div>'; // .obfx-template-screenshot
|
37 |
-
|
38 |
$html .= '<div class="obfx-template-actions">';
|
39 |
-
if ( ! empty( $properties['demo_url'] ) ) {
|
40 |
-
$html .= '<a class="button obfx-preview-template" href="' . esc_url( $customizer_url ) . '" >' . __( 'Preview', 'themeisle-companion' ) . '</a>';
|
41 |
-
}
|
42 |
|
43 |
-
if ( ! empty( $properties['
|
44 |
-
$html .= '<a class="button
|
45 |
}
|
46 |
$html .= '</div>'; // .obfx-template-actions
|
47 |
$html .= '</div>'; // .obfx-template
|
@@ -49,9 +37,92 @@ if ( is_array( $templates_array ) ) {
|
|
49 |
$html .= '</div>'; // .obfx-template-browser
|
50 |
$html .= '</div>'; // .obfx-template-dir
|
51 |
$html .= '<div class="wp-clearfix clearfix"></div>';
|
52 |
-
if ( ! defined( 'ELEMENTOR_VERSION' ) ) {
|
53 |
-
$html .= $requires_plugins;
|
54 |
-
}
|
55 |
}// End if().
|
56 |
|
57 |
echo $html;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
$html .= '<div class="obfx-template-browser">';
|
21 |
|
22 |
foreach ( $templates_array as $template => $properties ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
$html .= '<div class="obfx-template">';
|
24 |
+
$html .= '<div class="more-details obfx-preview-template" data-demo-url="' . esc_url( $properties['demo_url'] ) . '" data-template-slug="' . esc_attr( $template ) . '" ><span>' . __( 'More Details', 'themeisle-companion' ) . '</span></div>';
|
25 |
$html .= '<div class="obfx-template-screenshot">';
|
26 |
$html .= '<img src="' . esc_url( $properties['screenshot'] ) . '" alt="' . esc_html( $properties['title'] ) . '" >';
|
27 |
$html .= '</div>'; // .obfx-template-screenshot
|
28 |
+
$html .= '<h2 class="template-name template-header">' . esc_html( $properties['title'] ) . '</h2>';
|
29 |
$html .= '<div class="obfx-template-actions">';
|
|
|
|
|
|
|
30 |
|
31 |
+
if ( ! empty( $properties['demo_url'] ) ) {
|
32 |
+
$html .= '<a class="button obfx-preview-template" data-demo-url="' . esc_url( $properties['demo_url'] ) . '" data-template-slug="' . esc_attr( $template ) . '" >' . __( 'Preview', 'themeisle-companion' ) . '</a>';
|
33 |
}
|
34 |
$html .= '</div>'; // .obfx-template-actions
|
35 |
$html .= '</div>'; // .obfx-template
|
37 |
$html .= '</div>'; // .obfx-template-browser
|
38 |
$html .= '</div>'; // .obfx-template-dir
|
39 |
$html .= '<div class="wp-clearfix clearfix"></div>';
|
|
|
|
|
|
|
40 |
}// End if().
|
41 |
|
42 |
echo $html;
|
43 |
+
?>
|
44 |
+
|
45 |
+
<div class="obfx-template-preview theme-install-overlay wp-full-overlay expanded" style="display: none;">
|
46 |
+
<div class="wp-full-overlay-sidebar">
|
47 |
+
<div class="wp-full-overlay-header">
|
48 |
+
<button class="close-full-overlay"><span class="screen-reader-text">Close</span></button>
|
49 |
+
<div class="obfx-next-prev">
|
50 |
+
<button class="previous-theme"><span class="screen-reader-text">Previous</span></button>
|
51 |
+
<button class="next-theme"><span class="screen-reader-text">Next</span></button>
|
52 |
+
</div>
|
53 |
+
<span class="obfx-import-template button button-primary">Import</span>
|
54 |
+
</div>
|
55 |
+
<div class="wp-full-overlay-sidebar-content">
|
56 |
+
<?php
|
57 |
+
foreach ( $templates_array as $template => $properties ) {
|
58 |
+
?>
|
59 |
+
<div class="install-theme-info obfx-theme-info <?php echo esc_attr( $template ); ?>"
|
60 |
+
data-demo-url="<?php echo esc_url( $properties['demo_url'] ); ?>"
|
61 |
+
data-template-file="<?php echo esc_url( $properties['import_file'] ); ?>"
|
62 |
+
data-template-title="<?php echo esc_html( $properties['title'] ); ?>">
|
63 |
+
<h3 class="theme-name"><?php echo esc_html( $properties['title'] ); ?></h3>
|
64 |
+
<img class="theme-screenshot" src="<?php echo esc_url( $properties['screenshot'] ); ?>"
|
65 |
+
alt="<?php echo esc_html( $properties['title'] ); ?>">
|
66 |
+
<div class="theme-details">
|
67 |
+
<?php echo esc_html( $properties['description'] ); ?>
|
68 |
+
</div>
|
69 |
+
<?php
|
70 |
+
if ( ! empty( $properties['required_plugins'] ) && is_array( $properties['required_plugins'] ) ) {
|
71 |
+
?>
|
72 |
+
<div class="obfx-required-plugins">
|
73 |
+
<p>Required Plugins</p>
|
74 |
+
<?php
|
75 |
+
foreach ( $properties['required_plugins'] as $plugin_slug => $details ) {
|
76 |
+
if ( $this->check_plugin_state( $plugin_slug ) === 'install' ) {
|
77 |
+
echo '<div class="obfx-installable plugin-card-' . esc_attr( $plugin_slug ) . '">';
|
78 |
+
echo '<span class="dashicons dashicons-no-alt"></span>';
|
79 |
+
echo $details['title'];
|
80 |
+
echo $this->get_button_html( $plugin_slug );
|
81 |
+
echo '</div>';
|
82 |
+
} elseif ( $this->check_plugin_state( $plugin_slug ) === 'activate' ) {
|
83 |
+
echo '<div class="obfx-activate plugin-card-' . esc_attr( $plugin_slug ) . '">';
|
84 |
+
echo '<span class="dashicons dashicons-admin-plugins" style="color: #ffb227;"></span>';
|
85 |
+
echo $details['title'];
|
86 |
+
echo $this->get_button_html( $plugin_slug );
|
87 |
+
echo '</div>';
|
88 |
+
} else {
|
89 |
+
echo '<div class="obfx-installed plugin-card-' . esc_attr( $plugin_slug ) . '">';
|
90 |
+
echo '<span class="dashicons dashicons-yes" style="color: #34a85e"></span>';
|
91 |
+
echo $details['title'];
|
92 |
+
echo '</div>';
|
93 |
+
}
|
94 |
+
}
|
95 |
+
?>
|
96 |
+
</div>
|
97 |
+
<?php
|
98 |
+
}
|
99 |
+
?>
|
100 |
+
</div><!-- /.install-theme-info -->
|
101 |
+
<?php } ?>
|
102 |
+
</div>
|
103 |
+
|
104 |
+
<div class="wp-full-overlay-footer">
|
105 |
+
<button type="button" class="collapse-sidebar button" aria-expanded="true" aria-label="Collapse Sidebar">
|
106 |
+
<span class="collapse-sidebar-arrow"></span>
|
107 |
+
<span class="collapse-sidebar-label"><?php echo __( 'Collapse', 'themeisle-companion' ); ?></span>
|
108 |
+
</button>
|
109 |
+
<div class="devices-wrapper">
|
110 |
+
<div class="devices obfx-responsive-preview">
|
111 |
+
<button type="button" class="preview-desktop active" aria-pressed="true" data-device="desktop">
|
112 |
+
<span class="screen-reader-text">Enter desktop preview mode</span>
|
113 |
+
</button>
|
114 |
+
<button type="button" class="preview-tablet" aria-pressed="false" data-device="tablet">
|
115 |
+
<span class="screen-reader-text">Enter tablet preview mode</span>
|
116 |
+
</button>
|
117 |
+
<button type="button" class="preview-mobile" aria-pressed="false" data-device="mobile">
|
118 |
+
<span class="screen-reader-text">Enter mobile preview mode</span>
|
119 |
+
</button>
|
120 |
+
</div>
|
121 |
+
</div>
|
122 |
+
|
123 |
+
</div>
|
124 |
+
</div>
|
125 |
+
<div class="wp-full-overlay-main obfx-main-preview">
|
126 |
+
<iframe src="" title="Preview" class="obfx-template-frame"></iframe>
|
127 |
+
</div>
|
128 |
+
</div>
|
obfx_modules/template-directory/views/template-plugin-install-tpl.php
DELETED
@@ -1,23 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The View for Rendering the Plugin install modal.
|
4 |
-
*
|
5 |
-
* @link https://themeisle.com
|
6 |
-
* @since 2.0.0
|
7 |
-
*
|
8 |
-
* @package Orbit_Fox_Modules
|
9 |
-
* @subpackage Orbit_Fox_Modules/template-directory
|
10 |
-
* @codeCoverageIgnore
|
11 |
-
*/
|
12 |
-
|
13 |
-
if ( ( $this->check_plugin_state( 'elementor' ) === 'activate' ) || ( $this->check_plugin_state( 'elementor' ) === 'install' ) ) {
|
14 |
-
$html = '';
|
15 |
-
$button = $this->get_button_html( 'elementor' );
|
16 |
-
$html .= '<div class="obfx-no-elementor-modal-wrapper"><div class="obfx-no-elementor-modal plugin-card-elementor">';
|
17 |
-
$html .= '<div class="modal-header"><span class="obfx-close-modal"><i class="dashicons dashicons-no"></i></span></div>';
|
18 |
-
$html .= '<p>' . __( 'In order to import this template, you must have Elementor Page Builder installed. Click the button below to install and activate now.', 'themeisle-companion' ) . '</p>';
|
19 |
-
$html .= $button;
|
20 |
-
$html .= '</div>';
|
21 |
-
|
22 |
-
echo $html;
|
23 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.md
CHANGED
@@ -36,6 +36,35 @@ Orbit Fox is a user-centred plugin with an easy-to-use admin panel. One of the m
|
|
36 |
|
37 |
- It’s fully customizable: You can easily optimise button location for according to the device your visitors will use.
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
Choose from more than 20+ social networks to share with full control for every device that your visitors use.
|
40 |
|
41 |
The sharing options can be positioned for the maximum effect according to whether the visitor is using a mobile device or desktop. Best of all they can be switched on/off from your WordPress instance.
|
@@ -46,8 +75,10 @@ We've also built some fantastic <a href="http://themeisle.com/wordpress-themes/f
|
|
46 |
|
47 |
**Features:**
|
48 |
|
|
|
|
|
|
|
49 |
- Sharing module
|
50 |
-
- Reporting module
|
51 |
- Menu icons module
|
52 |
- Free stock photos module
|
53 |
- More widgets and sections for Hestia Theme
|
@@ -86,6 +117,17 @@ Activating the Orbit Fox Companion plugin is just like any other plugin. If you'
|
|
86 |
3. Screenshot 3. How reports module is looking
|
87 |
|
88 |
## Changelog ##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
### 2.2.5 - 2017-12-11 ###
|
90 |
|
91 |
* Better UX for CC0 images import module.
|
36 |
|
37 |
- It’s fully customizable: You can easily optimise button location for according to the device your visitors will use.
|
38 |
|
39 |
+
|
40 |
+
**Why use our custom Elementor addons module:**
|
41 |
+
|
42 |
+
- We offer new widgets to add more value to the content you can create within Elementor page builder.
|
43 |
+
|
44 |
+
- Pricing Table Widget to easily create pricing layouts.
|
45 |
+
|
46 |
+
- Services Widget to easily create pricing layouts.
|
47 |
+
|
48 |
+
- Post Grid Widget to easily list your Posts / Products / any other post types in a grid.
|
49 |
+
|
50 |
+
|
51 |
+
**Why use our custom Beaver Builder addons module:**
|
52 |
+
|
53 |
+
- We offer new widgets to add more value to the content you can create within the Beaver Builder page builder.
|
54 |
+
|
55 |
+
- Pricing Table Widget to easily create pricing layouts.
|
56 |
+
|
57 |
+
- Services Widget to easily create pricing layouts.
|
58 |
+
|
59 |
+
- Post Grid Widget to easily list your Posts / Products / any other post types in a grid.
|
60 |
+
|
61 |
+
|
62 |
+
**Why use our Template Directory:**
|
63 |
+
|
64 |
+
- One-click import for awesome page templates.
|
65 |
+
|
66 |
+
- Elementor templates will be added frequently for you to use creatively.
|
67 |
+
|
68 |
Choose from more than 20+ social networks to share with full control for every device that your visitors use.
|
69 |
|
70 |
The sharing options can be positioned for the maximum effect according to whether the visitor is using a mobile device or desktop. Best of all they can be switched on/off from your WordPress instance.
|
75 |
|
76 |
**Features:**
|
77 |
|
78 |
+
- Template Directory
|
79 |
+
- Elementor Addons and Widgets
|
80 |
+
- Beaver Builder Widgets
|
81 |
- Sharing module
|
|
|
82 |
- Menu icons module
|
83 |
- Free stock photos module
|
84 |
- More widgets and sections for Hestia Theme
|
117 |
3. Screenshot 3. How reports module is looking
|
118 |
|
119 |
## Changelog ##
|
120 |
+
### 2.2.6 - 2017-12-19 ###
|
121 |
+
|
122 |
+
* Added new Beaver Builder Widgets Module - Pricing table widget, Services widget, Posts Grid widget.
|
123 |
+
* Better user experience for the template directory.
|
124 |
+
* More native design for the template directory.
|
125 |
+
* Added three free new templates to the template directory - Path, Mocha and Ascend.
|
126 |
+
* Fixed bug with the Elementor Pricing Table widget button link.
|
127 |
+
* Fixed php notice given by the Elementor Posts Grid widget.
|
128 |
+
* Removed the useless Stats module.
|
129 |
+
|
130 |
+
|
131 |
### 2.2.5 - 2017-12-11 ###
|
132 |
|
133 |
* Better UX for CC0 images import module.
|
readme.txt
CHANGED
@@ -36,6 +36,35 @@ Orbit Fox is a user-centred plugin with an easy-to-use admin panel. One of the m
|
|
36 |
|
37 |
- It’s fully customizable: You can easily optimise button location for according to the device your visitors will use.
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
Choose from more than 20+ social networks to share with full control for every device that your visitors use.
|
40 |
|
41 |
The sharing options can be positioned for the maximum effect according to whether the visitor is using a mobile device or desktop. Best of all they can be switched on/off from your WordPress instance.
|
@@ -46,8 +75,10 @@ We've also built some fantastic <a href="http://themeisle.com/wordpress-themes/f
|
|
46 |
|
47 |
**Features:**
|
48 |
|
|
|
|
|
|
|
49 |
- Sharing module
|
50 |
-
- Reporting module
|
51 |
- Menu icons module
|
52 |
- Free stock photos module
|
53 |
- More widgets and sections for Hestia Theme
|
@@ -86,6 +117,17 @@ Activating the Orbit Fox Companion plugin is just like any other plugin. If you'
|
|
86 |
3. Screenshot 3. How reports module is looking
|
87 |
|
88 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
= 2.2.5 - 2017-12-11 =
|
90 |
|
91 |
* Better UX for CC0 images import module.
|
36 |
|
37 |
- It’s fully customizable: You can easily optimise button location for according to the device your visitors will use.
|
38 |
|
39 |
+
|
40 |
+
**Why use our custom Elementor addons module:**
|
41 |
+
|
42 |
+
- We offer new widgets to add more value to the content you can create within Elementor page builder.
|
43 |
+
|
44 |
+
- Pricing Table Widget to easily create pricing layouts.
|
45 |
+
|
46 |
+
- Services Widget to easily create pricing layouts.
|
47 |
+
|
48 |
+
- Post Grid Widget to easily list your Posts / Products / any other post types in a grid.
|
49 |
+
|
50 |
+
|
51 |
+
**Why use our custom Beaver Builder addons module:**
|
52 |
+
|
53 |
+
- We offer new widgets to add more value to the content you can create within the Beaver Builder page builder.
|
54 |
+
|
55 |
+
- Pricing Table Widget to easily create pricing layouts.
|
56 |
+
|
57 |
+
- Services Widget to easily create pricing layouts.
|
58 |
+
|
59 |
+
- Post Grid Widget to easily list your Posts / Products / any other post types in a grid.
|
60 |
+
|
61 |
+
|
62 |
+
**Why use our Template Directory:**
|
63 |
+
|
64 |
+
- One-click import for awesome page templates.
|
65 |
+
|
66 |
+
- Elementor templates will be added frequently for you to use creatively.
|
67 |
+
|
68 |
Choose from more than 20+ social networks to share with full control for every device that your visitors use.
|
69 |
|
70 |
The sharing options can be positioned for the maximum effect according to whether the visitor is using a mobile device or desktop. Best of all they can be switched on/off from your WordPress instance.
|
75 |
|
76 |
**Features:**
|
77 |
|
78 |
+
- Template Directory
|
79 |
+
- Elementor Addons and Widgets
|
80 |
+
- Beaver Builder Widgets
|
81 |
- Sharing module
|
|
|
82 |
- Menu icons module
|
83 |
- Free stock photos module
|
84 |
- More widgets and sections for Hestia Theme
|
117 |
3. Screenshot 3. How reports module is looking
|
118 |
|
119 |
== Changelog ==
|
120 |
+
= 2.2.6 - 2017-12-19 =
|
121 |
+
|
122 |
+
* Added new Beaver Builder Widgets Module - Pricing table widget, Services widget, Posts Grid widget.
|
123 |
+
* Better user experience for the template directory.
|
124 |
+
* More native design for the template directory.
|
125 |
+
* Added three free new templates to the template directory - Path, Mocha and Ascend.
|
126 |
+
* Fixed bug with the Elementor Pricing Table widget button link.
|
127 |
+
* Fixed php notice given by the Elementor Posts Grid widget.
|
128 |
+
* Removed the useless Stats module.
|
129 |
+
|
130 |
+
|
131 |
= 2.2.5 - 2017-12-11 =
|
132 |
|
133 |
* Better UX for CC0 images import module.
|
themeisle-companion.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* Plugin Name: Orbit Fox Companion
|
16 |
* Plugin URI: https://themeisle.com/plugins/orbit-fox-companion
|
17 |
* Description: Enhances ThemeIsle's themes with extra functionality.
|
18 |
-
* Version: 2.2.
|
19 |
* Author: Themeisle
|
20 |
* Author URI: https://themeisle.com
|
21 |
* License: GPL-2.0+
|
15 |
* Plugin Name: Orbit Fox Companion
|
16 |
* Plugin URI: https://themeisle.com/plugins/orbit-fox-companion
|
17 |
* Description: Enhances ThemeIsle's themes with extra functionality.
|
18 |
+
* Version: 2.2.6
|
19 |
* Author: Themeisle
|
20 |
* Author URI: https://themeisle.com
|
21 |
* License: GPL-2.0+
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit2950a8d436437719e363bc4bb2cf7a75::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit28f2d4a1d11f34b08053b24cf7e97e23
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit28f2d4a1d11f34b08053b24cf7e97e23
|
|
42 |
|
43 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
44 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
45 |
-
|
46 |
}
|
47 |
|
48 |
return $loader;
|
49 |
}
|
50 |
}
|
51 |
|
52 |
-
function
|
53 |
{
|
54 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
55 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit2950a8d436437719e363bc4bb2cf7a75
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit2950a8d436437719e363bc4bb2cf7a75', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit2950a8d436437719e363bc4bb2cf7a75', 'loadClassLoader'));
|
25 |
|
26 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
27 |
foreach ($map as $namespace => $path) {
|
42 |
|
43 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
44 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
45 |
+
composerRequire2950a8d436437719e363bc4bb2cf7a75($fileIdentifier, $file);
|
46 |
}
|
47 |
|
48 |
return $loader;
|
49 |
}
|
50 |
}
|
51 |
|
52 |
+
function composerRequire2950a8d436437719e363bc4bb2cf7a75($fileIdentifier, $file)
|
53 |
{
|
54 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
55 |
require $file;
|