Version Description
- New: Dashboard post views stats widget.
- Fix: A couple of typos in method names.
Download this release
Release Info
Developer | dfactory |
Plugin | Post Views Counter |
Version | 1.2.0 |
Comparing to | |
See all releases |
Code changes from version 1.1.4 to 1.2.0
- css/admin-dashboard.css +20 -0
- includes/columns.php +6 -15
- includes/counter.php +132 -155
- includes/dashboard.php +213 -0
- includes/frontend.php +28 -21
- includes/functions.php +28 -10
- includes/query.php +34 -4
- includes/widgets.php +14 -14
- js/admin-dashboard.js +98 -0
- js/chart.min.js +41 -0
- languages/post-views-counter-pl_PL.mo +0 -0
- languages/post-views-counter-pl_PL.po +127 -111
- languages/post-views-counter.pot +118 -108
- post-views-counter.php +368 -369
- readme.txt +9 -5
css/admin-dashboard.css
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#pvc_dashboard_container {
|
2 |
+
color: #aaa;
|
3 |
+
min-height: 240px;
|
4 |
+
margin: 0 -4px;
|
5 |
+
text-align: center;
|
6 |
+
position: relative;
|
7 |
+
}
|
8 |
+
#pvc_dashboard_container .spinner {
|
9 |
+
position: absolute;
|
10 |
+
left: 50%;
|
11 |
+
top: 40%;
|
12 |
+
margin-left: -10px;
|
13 |
+
}
|
14 |
+
#pvc_dashboard p.sub {
|
15 |
+
color: #8f8f8f;
|
16 |
+
font-size: 14px;
|
17 |
+
text-align: left;
|
18 |
+
padding-bottom: 3px;
|
19 |
+
border-bottom: 1px solid #ececec;
|
20 |
+
}
|
includes/columns.php
CHANGED
@@ -146,21 +146,12 @@ class Post_Views_Counter_Columns {
|
|
146 |
|
147 |
if ( ! empty( $post_types ) ) {
|
148 |
foreach ( $post_types as $post_type ) {
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
add_filter( 'manage_edit-page_sortable_columns', array( $this, 'register_sortable_custom_column' ) );
|
156 |
-
} else {
|
157 |
-
// actions
|
158 |
-
add_action( 'manage_' . $post_type . '_posts_custom_column', array( $this, 'add_new_column_content' ), 10, 2 );
|
159 |
-
|
160 |
-
// filters
|
161 |
-
add_filter( 'manage_' . $post_type . '_posts_columns', array( $this, 'add_new_column' ) );
|
162 |
-
add_filter( 'manage_edit-' . $post_type . '_sortable_columns', array( $this, 'register_sortable_custom_column' ) );
|
163 |
-
}
|
164 |
}
|
165 |
}
|
166 |
}
|
146 |
|
147 |
if ( ! empty( $post_types ) ) {
|
148 |
foreach ( $post_types as $post_type ) {
|
149 |
+
// actions
|
150 |
+
add_action( 'manage_' . $post_type . '_posts_custom_column', array( $this, 'add_new_column_content' ), 10, 2 );
|
151 |
+
|
152 |
+
// filters
|
153 |
+
add_filter( 'manage_' . $post_type . '_posts_columns', array( $this, 'add_new_column' ) );
|
154 |
+
add_filter( 'manage_edit-' . $post_type . '_sortable_columns', array( $this, 'register_sortable_custom_column' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
}
|
156 |
}
|
157 |
}
|
includes/counter.php
CHANGED
@@ -21,50 +21,102 @@ class Post_Views_Counter_Counter {
|
|
21 |
public function __construct() {
|
22 |
// actions
|
23 |
add_action( 'plugins_loaded', array( $this, 'check_cookie' ), 1 );
|
24 |
-
add_action( 'wp', array( $this, 'check_post' ) );
|
25 |
add_action( 'deleted_post', array( $this, 'delete_post_views' ) );
|
|
|
26 |
add_action( 'wp_ajax_pvc-check-post', array( $this, 'check_post_ajax' ) );
|
27 |
add_action( 'wp_ajax_nopriv_pvc-check-post', array( $this, 'check_post_ajax' ) );
|
28 |
}
|
29 |
|
30 |
/**
|
31 |
-
*
|
32 |
*
|
33 |
-
* @param int $
|
34 |
*/
|
35 |
-
public function
|
36 |
-
|
|
|
|
|
|
|
|
|
37 |
|
38 |
-
$
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
/**
|
|
|
42 |
*
|
43 |
-
*
|
44 |
-
*
|
45 |
-
* @param string $type
|
46 |
-
* @param int $number
|
47 |
-
* @param int $timestamp
|
48 |
-
* @return string
|
49 |
*/
|
50 |
-
public function
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
'days' => 86400,
|
55 |
-
'weeks' => 604800,
|
56 |
-
'months' => 2592000,
|
57 |
-
'years' => 946080000
|
58 |
-
);
|
59 |
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
/**
|
64 |
* Check whether to count visit via AJAX request.
|
65 |
*/
|
66 |
public function check_post_ajax() {
|
67 |
-
if ( isset( $_POST['action'], $_POST['post_id'], $_POST['pvc_nonce'], $_POST['post_type'] ) && $_POST['action'] === 'pvc-check-post' && ($post_id = (int) $_POST['post_id']) > 0 && wp_verify_nonce( $_POST['pvc_nonce'], 'pvc-check-post' ) !== false
|
|
|
|
|
|
|
|
|
|
|
68 |
// get countable post types
|
69 |
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
70 |
|
@@ -74,128 +126,20 @@ class Post_Views_Counter_Counter {
|
|
74 |
// whether to count this post type or not
|
75 |
if ( empty( $post_types ) || empty( $post_type ) || $post_type !== $_POST['post_type'] || ! in_array( $post_type, $post_types, true ) )
|
76 |
exit;
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
// whether to count this ip or not
|
82 |
-
if ( ! empty( $excluded_ips ) && filter_var( preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ), FILTER_VALIDATE_IP ) && in_array( $_SERVER['REMOTE_ADDR'], $excluded_ips, true ) )
|
83 |
-
exit;
|
84 |
-
|
85 |
-
// get groups to check them faster
|
86 |
-
$groups = Post_Views_Counter()->options['general']['exclude']['groups'];
|
87 |
-
|
88 |
-
// whether to count this user
|
89 |
-
if ( is_user_logged_in() ) {
|
90 |
-
// exclude logged in users?
|
91 |
-
if ( in_array( 'users', $groups, true ) )
|
92 |
-
exit;
|
93 |
-
// exclude specific roles?
|
94 |
-
elseif ( in_array( 'roles', $groups, true ) && $this->is_user_role_excluded( Post_Views_Counter()->options['general']['exclude']['roles'] ) )
|
95 |
-
exit;
|
96 |
-
}
|
97 |
-
// exclude guests?
|
98 |
-
elseif ( in_array( 'guests', $groups, true ) )
|
99 |
-
exit;
|
100 |
-
|
101 |
-
// whether to count robots
|
102 |
-
if ( $this->is_robot() )
|
103 |
-
exit;
|
104 |
-
|
105 |
-
// cookie already existed?
|
106 |
-
if ( $this->cookie['exists'] ) {
|
107 |
-
// post already viewed but not expired?
|
108 |
-
if ( in_array( $post_id, array_keys( $this->cookie['visited_posts'] ), true ) && current_time( 'timestamp', true ) < $this->cookie['visited_posts'][$post_id] ) {
|
109 |
-
// updates cookie but do not count visit
|
110 |
-
$this->save_cookie( $post_id, $this->cookie, false );
|
111 |
-
|
112 |
-
exit;
|
113 |
-
} else
|
114 |
-
// updates cookie
|
115 |
-
$this->save_cookie( $post_id, $this->cookie );
|
116 |
-
} else {
|
117 |
-
// set new cookie
|
118 |
-
$this->save_cookie( $post_id );
|
119 |
-
}
|
120 |
-
|
121 |
-
// count visit
|
122 |
-
$this->count_visit( $post_id );
|
123 |
}
|
124 |
|
125 |
exit;
|
126 |
}
|
127 |
|
128 |
-
/**
|
129 |
-
* Check whether to count visit.
|
130 |
-
*/
|
131 |
-
public function check_post() {
|
132 |
-
// do not count admin entries
|
133 |
-
if ( is_admin() )
|
134 |
-
return;
|
135 |
-
|
136 |
-
// do we use PHP as counter?
|
137 |
-
if ( Post_Views_Counter()->options['general']['counter_mode'] === 'php' ) {
|
138 |
-
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
139 |
-
|
140 |
-
// whether to count this post type
|
141 |
-
if ( empty( $post_types ) || ! is_singular( $post_types ) )
|
142 |
-
return;
|
143 |
-
|
144 |
-
$ips = Post_Views_Counter()->options['general']['exclude_ips'];
|
145 |
-
|
146 |
-
// whether to count this ip
|
147 |
-
if ( ! empty( $ips ) && filter_var( preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ), FILTER_VALIDATE_IP ) && in_array( $_SERVER['REMOTE_ADDR'], $ips, true ) )
|
148 |
-
return;
|
149 |
-
|
150 |
-
// get groups to check them faster
|
151 |
-
$groups = Post_Views_Counter()->options['general']['exclude']['groups'];
|
152 |
-
|
153 |
-
// whether to count this user
|
154 |
-
if ( is_user_logged_in() ) {
|
155 |
-
// exclude logged in users?
|
156 |
-
if ( in_array( 'users', $groups, true ) )
|
157 |
-
return;
|
158 |
-
// exclude specific roles?
|
159 |
-
elseif ( in_array( 'roles', $groups, true ) && $this->is_user_role_excluded( Post_Views_Counter()->options['general']['exclude']['roles'] ) )
|
160 |
-
return;
|
161 |
-
}
|
162 |
-
// exclude guests?
|
163 |
-
elseif ( in_array( 'guests', $groups, true ) )
|
164 |
-
return;
|
165 |
-
|
166 |
-
// whether to count robots
|
167 |
-
if ( $this->is_robot() )
|
168 |
-
return;
|
169 |
-
|
170 |
-
// get post id
|
171 |
-
$id = get_the_ID();
|
172 |
-
|
173 |
-
// cookie already existed?
|
174 |
-
if ( $this->cookie['exists'] ) {
|
175 |
-
// post already viewed but not expired?
|
176 |
-
if ( in_array( $id, array_keys( $this->cookie['visited_posts'] ), true ) && current_time( 'timestamp', true ) < $this->cookie['visited_posts'][$id] ) {
|
177 |
-
// update cookie but do not count visit
|
178 |
-
$this->save_cookie( $id, $this->cookie, false );
|
179 |
-
|
180 |
-
return;
|
181 |
-
} else
|
182 |
-
// update cookie
|
183 |
-
$this->save_cookie( $id, $this->cookie );
|
184 |
-
} else
|
185 |
-
// set new cookie
|
186 |
-
$this->save_cookie( $id );
|
187 |
-
|
188 |
-
// count visit
|
189 |
-
$this->count_visit( $id );
|
190 |
-
}
|
191 |
-
}
|
192 |
-
|
193 |
/**
|
194 |
* Initialize cookie session.
|
195 |
*/
|
196 |
public function check_cookie() {
|
197 |
// do not run in admin except for ajax requests
|
198 |
-
if ( is_admin() && ! (defined( 'DOING_AJAX' ) && DOING_AJAX) )
|
199 |
return;
|
200 |
|
201 |
// is cookie set?
|
@@ -305,24 +249,6 @@ class Post_Views_Counter_Counter {
|
|
305 |
}
|
306 |
}
|
307 |
|
308 |
-
/**
|
309 |
-
* Check if object cache is in use.
|
310 |
-
*
|
311 |
-
* @param bool $using
|
312 |
-
* @return bool
|
313 |
-
*/
|
314 |
-
public function using_object_cache( $using = null ) {
|
315 |
-
$using = wp_using_ext_object_cache( $using );
|
316 |
-
|
317 |
-
if ( $using ) {
|
318 |
-
// check if explicitly disabled by flush_interval setting/option <= 0
|
319 |
-
$flush_interval_number = Post_Views_Counter()->options['general']['flush_interval']['number'];
|
320 |
-
$using = ( $flush_interval_number <= 0 ) ? false : true;
|
321 |
-
}
|
322 |
-
|
323 |
-
return $using;
|
324 |
-
}
|
325 |
-
|
326 |
/**
|
327 |
* Count visit function.
|
328 |
*
|
@@ -367,6 +293,57 @@ class Post_Views_Counter_Counter {
|
|
367 |
|
368 |
return true;
|
369 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
|
371 |
/**
|
372 |
* Update the single cache key which holds a list of all the cache keys
|
21 |
public function __construct() {
|
22 |
// actions
|
23 |
add_action( 'plugins_loaded', array( $this, 'check_cookie' ), 1 );
|
|
|
24 |
add_action( 'deleted_post', array( $this, 'delete_post_views' ) );
|
25 |
+
add_action( 'wp', array( $this, 'check_post_php' ) );
|
26 |
add_action( 'wp_ajax_pvc-check-post', array( $this, 'check_post_ajax' ) );
|
27 |
add_action( 'wp_ajax_nopriv_pvc-check-post', array( $this, 'check_post_ajax' ) );
|
28 |
}
|
29 |
|
30 |
/**
|
31 |
+
* Check whether to count visit.
|
32 |
*
|
33 |
+
* @param int $id
|
34 |
*/
|
35 |
+
public function check_post( $id = 0 ) {
|
36 |
+
// get post id
|
37 |
+
$id = (int) (empty( $id ) ? get_the_ID() : $id);
|
38 |
+
|
39 |
+
if ( empty( $id ) )
|
40 |
+
return;
|
41 |
|
42 |
+
$ips = Post_Views_Counter()->options['general']['exclude_ips'];
|
43 |
+
|
44 |
+
// whether to count this ip
|
45 |
+
if ( ! empty( $ips ) && filter_var( preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ), FILTER_VALIDATE_IP ) && in_array( $_SERVER['REMOTE_ADDR'], $ips, true ) )
|
46 |
+
return;
|
47 |
+
|
48 |
+
// get groups to check them faster
|
49 |
+
$groups = Post_Views_Counter()->options['general']['exclude']['groups'];
|
50 |
+
|
51 |
+
// whether to count this user
|
52 |
+
if ( is_user_logged_in() ) {
|
53 |
+
// exclude logged in users?
|
54 |
+
if ( in_array( 'users', $groups, true ) )
|
55 |
+
return;
|
56 |
+
// exclude specific roles?
|
57 |
+
elseif ( in_array( 'roles', $groups, true ) && $this->is_user_role_excluded( Post_Views_Counter()->options['general']['exclude']['roles'] ) )
|
58 |
+
return;
|
59 |
+
}
|
60 |
+
// exclude guests?
|
61 |
+
elseif ( in_array( 'guests', $groups, true ) )
|
62 |
+
return;
|
63 |
+
|
64 |
+
// whether to count robots
|
65 |
+
if ( $this->is_robot() )
|
66 |
+
return;
|
67 |
+
|
68 |
+
// cookie already existed?
|
69 |
+
if ( $this->cookie['exists'] ) {
|
70 |
+
// post already viewed but not expired?
|
71 |
+
if ( in_array( $id, array_keys( $this->cookie['visited_posts'] ), true ) && current_time( 'timestamp', true ) < $this->cookie['visited_posts'][$id] ) {
|
72 |
+
// update cookie but do not count visit
|
73 |
+
$this->save_cookie( $id, $this->cookie, false );
|
74 |
|
75 |
+
return;
|
76 |
+
} else
|
77 |
+
// update cookie
|
78 |
+
$this->save_cookie( $id, $this->cookie );
|
79 |
+
} else
|
80 |
+
// set new cookie
|
81 |
+
$this->save_cookie( $id );
|
82 |
+
|
83 |
+
// count visit
|
84 |
+
$this->count_visit( $id );
|
85 |
+
}
|
86 |
+
|
87 |
/**
|
88 |
+
* Check whether to count visit via PHP request.
|
89 |
*
|
90 |
+
* @param int $id
|
|
|
|
|
|
|
|
|
|
|
91 |
*/
|
92 |
+
public function check_post_php() {
|
93 |
+
// do not count admin entries
|
94 |
+
if ( is_admin() && ! (defined( 'DOING_AJAX' ) && DOING_AJAX) )
|
95 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
+
// do we use PHP as counter?
|
98 |
+
if ( Post_Views_Counter()->options['general']['counter_mode'] != 'php' )
|
99 |
+
return;
|
100 |
+
|
101 |
+
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
102 |
|
103 |
+
// whether to count this post type
|
104 |
+
if ( empty( $post_types ) || ! is_singular( $post_types ) )
|
105 |
+
return;
|
106 |
+
|
107 |
+
$this->check_post( get_the_ID() );
|
108 |
+
}
|
109 |
+
|
110 |
/**
|
111 |
* Check whether to count visit via AJAX request.
|
112 |
*/
|
113 |
public function check_post_ajax() {
|
114 |
+
if ( isset( $_POST['action'], $_POST['post_id'], $_POST['pvc_nonce'], $_POST['post_type'] ) && $_POST['action'] === 'pvc-check-post' && ($post_id = (int) $_POST['post_id']) > 0 && wp_verify_nonce( $_POST['pvc_nonce'], 'pvc-check-post' ) !== false ) {
|
115 |
+
|
116 |
+
// do we use Ajax as counter?
|
117 |
+
if ( Post_Views_Counter()->options['general']['counter_mode'] != 'js' )
|
118 |
+
exit;
|
119 |
+
|
120 |
// get countable post types
|
121 |
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
122 |
|
126 |
// whether to count this post type or not
|
127 |
if ( empty( $post_types ) || empty( $post_type ) || $post_type !== $_POST['post_type'] || ! in_array( $post_type, $post_types, true ) )
|
128 |
exit;
|
129 |
+
|
130 |
+
$this->check_post( $post_id );
|
131 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
}
|
133 |
|
134 |
exit;
|
135 |
}
|
136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
/**
|
138 |
* Initialize cookie session.
|
139 |
*/
|
140 |
public function check_cookie() {
|
141 |
// do not run in admin except for ajax requests
|
142 |
+
if ( is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) )
|
143 |
return;
|
144 |
|
145 |
// is cookie set?
|
249 |
}
|
250 |
}
|
251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
/**
|
253 |
* Count visit function.
|
254 |
*
|
293 |
|
294 |
return true;
|
295 |
}
|
296 |
+
|
297 |
+
/**
|
298 |
+
* Remove post views from database when post is deleted.
|
299 |
+
*
|
300 |
+
* @param int $post_id
|
301 |
+
*/
|
302 |
+
public function delete_post_views( $post_id ) {
|
303 |
+
global $wpdb;
|
304 |
+
|
305 |
+
$wpdb->delete( $wpdb->prefix . 'post_views', array( 'id' => $post_id ), array( '%d' ) );
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
*
|
310 |
+
* Get timestamp convertion.
|
311 |
+
*
|
312 |
+
* @param string $type
|
313 |
+
* @param int $number
|
314 |
+
* @param int $timestamp
|
315 |
+
* @return string
|
316 |
+
*/
|
317 |
+
public function get_timestamp( $type, $number, $timestamp = true ) {
|
318 |
+
$converter = array(
|
319 |
+
'minutes' => 60,
|
320 |
+
'hours' => 3600,
|
321 |
+
'days' => 86400,
|
322 |
+
'weeks' => 604800,
|
323 |
+
'months' => 2592000,
|
324 |
+
'years' => 946080000
|
325 |
+
);
|
326 |
+
|
327 |
+
return ($timestamp ? current_time( 'timestamp', true ) : 0) + $number * $converter[$type];
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Check if object cache is in use.
|
332 |
+
*
|
333 |
+
* @param bool $using
|
334 |
+
* @return bool
|
335 |
+
*/
|
336 |
+
public function using_object_cache( $using = null ) {
|
337 |
+
$using = wp_using_ext_object_cache( $using );
|
338 |
+
|
339 |
+
if ( $using ) {
|
340 |
+
// check if explicitly disabled by flush_interval setting/option <= 0
|
341 |
+
$flush_interval_number = Post_Views_Counter()->options['general']['flush_interval']['number'];
|
342 |
+
$using = ( $flush_interval_number <= 0 ) ? false : true;
|
343 |
+
}
|
344 |
+
|
345 |
+
return $using;
|
346 |
+
}
|
347 |
|
348 |
/**
|
349 |
* Update the single cache key which holds a list of all the cache keys
|
includes/dashboard.php
ADDED
@@ -0,0 +1,213 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// exit if accessed directly
|
3 |
+
if ( ! defined( 'ABSPATH' ) )
|
4 |
+
exit;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Post_Views_Counter_Dashboard class.
|
8 |
+
*/
|
9 |
+
class Post_Views_Counter_Dashboard {
|
10 |
+
|
11 |
+
public function __construct() {
|
12 |
+
// actions
|
13 |
+
add_action( 'wp_dashboard_setup', array( $this, 'wp_dashboard_setup' ) );
|
14 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts_styles' ) );
|
15 |
+
add_action( 'wp_ajax_pvc_dashboard_chart', array( $this, 'dashboard_widget_chart' ) );
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Initialize widget.
|
20 |
+
*/
|
21 |
+
public function wp_dashboard_setup() {
|
22 |
+
// filter user_can_see_stats
|
23 |
+
if ( ! apply_filters( 'pvc_user_can_see_stats', current_user_can( 'publish_posts' ) ) ) {
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
|
27 |
+
// add dashboard widget
|
28 |
+
wp_add_dashboard_widget( 'pvc_dashboard', __( 'Post Views', 'post-views-counter' ), array( $this, 'dashboard_widget' ) /*, array( $this, 'dashboard_widget_control' ) */ );
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Render dashboard widget.
|
33 |
+
*
|
34 |
+
* @return mixed
|
35 |
+
*/
|
36 |
+
public function dashboard_widget() {
|
37 |
+
?>
|
38 |
+
<div id="pvc_dashboard_container">
|
39 |
+
<canvas id="pvc_chart" height="175"></canvas>
|
40 |
+
</div>
|
41 |
+
<?php
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Dashboard widget settings.
|
46 |
+
*
|
47 |
+
* @return mixed
|
48 |
+
*/
|
49 |
+
public function dashboard_widget_control() {
|
50 |
+
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Dashboard widget chart data function.
|
55 |
+
*
|
56 |
+
*/
|
57 |
+
public function dashboard_widget_chart() {
|
58 |
+
|
59 |
+
if ( ! apply_filters( 'pvc_user_can_see_stats', current_user_can( 'publish_posts' ) ) )
|
60 |
+
wp_die( _( 'You do not have permission to access this page.', 'post-views-counter' ) );
|
61 |
+
|
62 |
+
if ( ! check_ajax_referer( 'dashboard-chart', 'nonce' ) )
|
63 |
+
wp_die( __( 'You do not have permission to access this page.', 'post-views-counter' ) );
|
64 |
+
|
65 |
+
$period = isset( $_REQUEST['period'] ) ? esc_attr( $_REQUEST['period'] ) : 'this_month';
|
66 |
+
|
67 |
+
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
68 |
+
|
69 |
+
// get stats
|
70 |
+
$query_args = array(
|
71 |
+
'post_type' => $post_types,
|
72 |
+
'posts_per_page' => -1,
|
73 |
+
'orderby' => 'post_views',
|
74 |
+
'suppress_filters' => false
|
75 |
+
);
|
76 |
+
|
77 |
+
// set range
|
78 |
+
$range = 'this_month';
|
79 |
+
$now = getdate( current_time( 'timestamp', get_option( 'gmt_offset' ) ) );
|
80 |
+
|
81 |
+
// set chart labels
|
82 |
+
switch ( $range ) {
|
83 |
+
case 'this_week' :
|
84 |
+
$data = array(
|
85 |
+
'text' => array(
|
86 |
+
'xAxes' => date_i18n( 'F Y' ),
|
87 |
+
'yAxes' => __( 'Post Views', 'post-views-counter' )
|
88 |
+
)
|
89 |
+
);
|
90 |
+
|
91 |
+
for ( $day = 0; $day <= 6; $day ++ ) {
|
92 |
+
|
93 |
+
$date = strtotime( $now['mday'] . '-' . $now['mon'] . '-' . $now['year'] . ' + ' . $day . ' days - ' . $now['wday'] . ' days' );
|
94 |
+
$query = new WP_Query( wp_parse_args( $query_args, array( 'views_query' => array( 'year' => date( 'Y', $date ), 'month' => date( 'n', $date ), 'day' => date( 'd', $date ) ) ) ) );
|
95 |
+
|
96 |
+
$data['data']['labels'][] = date_i18n( 'j', $date );
|
97 |
+
$data['data']['datasets'][$type_name]['label'] = __( 'Post Views', 'post-views-counter');
|
98 |
+
$data['data']['datasets'][0]['data'][] = $query->total_views;
|
99 |
+
}
|
100 |
+
break;
|
101 |
+
|
102 |
+
case 'this month' :
|
103 |
+
default :
|
104 |
+
$data = array(
|
105 |
+
'text' => array(
|
106 |
+
'xAxes' => date_i18n( 'F Y' ),
|
107 |
+
'yAxes' => __( 'Post Views', 'post-views-counter' ),
|
108 |
+
),
|
109 |
+
'design' => array(
|
110 |
+
'fill' => true,
|
111 |
+
'backgroundColor' => 'rgba(50, 143, 186, 0.2)',
|
112 |
+
'borderColor' => 'rgba(50, 143, 186, 1)',
|
113 |
+
'borderWidth' => 2,
|
114 |
+
'borderDash' => array(),
|
115 |
+
'pointBorderColor' => 'rgba(50, 143, 186, 1)',
|
116 |
+
'pointBackgroundColor' => 'rgba(255, 255, 255, 1)',
|
117 |
+
'pointBorderWidth' => 1.2
|
118 |
+
)
|
119 |
+
);
|
120 |
+
|
121 |
+
$data['data']['datasets'][0]['label'] = __( 'Total Views', 'post-views-counter');
|
122 |
+
|
123 |
+
// get data for specific post types
|
124 |
+
$empty_post_type_views = array();
|
125 |
+
|
126 |
+
// reindex post types
|
127 |
+
$post_types = array_combine( range( 1, count( $post_types ) ), array_values( $post_types ) );
|
128 |
+
|
129 |
+
foreach ( $post_types as $id => $post_type ) {
|
130 |
+
$empty_post_type_views[$post_type] = 0;
|
131 |
+
$post_type_obj = get_post_type_object( $post_type );
|
132 |
+
|
133 |
+
$data['data']['datasets'][$id]['label'] = $post_type_obj->labels->name;
|
134 |
+
$data['data']['datasets'][$id]['data'] = array();
|
135 |
+
}
|
136 |
+
|
137 |
+
// reverse post types
|
138 |
+
$rev_post_types = array_flip( $post_types );
|
139 |
+
|
140 |
+
// this month day loop
|
141 |
+
for ( $i = 1; $i <= date( 't' ); $i++ ) {
|
142 |
+
$query = new WP_Query( wp_parse_args( $query_args, array( 'views_query' => array( 'year' => date( 'Y' ), 'month' => date( 'n' ), 'day' => str_pad( $i, 2, '0', STR_PAD_LEFT ) ) ) ) );
|
143 |
+
|
144 |
+
// get data for specific post types
|
145 |
+
$post_type_views = $empty_post_type_views;
|
146 |
+
|
147 |
+
if ( ! empty( $query->posts ) ) {
|
148 |
+
foreach ( $query->posts as $index => $post ) {
|
149 |
+
$post_type_views[$post->post_type] += $post->post_views;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
// generate chart data
|
154 |
+
$data['data']['labels'][] = str_pad( $i, 2, '0', STR_PAD_LEFT );
|
155 |
+
$data['data']['dates'][] = date_i18n( get_option( 'date_format' ), strtotime( date( 'Y' ) . '-' . date( 'n' ) . '-' . str_pad( $i, 2, '0', STR_PAD_LEFT ) ) );
|
156 |
+
$data['data']['datasets'][0]['data'][] = $query->total_views;
|
157 |
+
|
158 |
+
// generate chart data for specific post types
|
159 |
+
foreach ( $post_type_views as $type_name => $type_views ) {
|
160 |
+
$data['data']['datasets'][$rev_post_types[$type_name]]['data'][] = $type_views;
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
break;
|
165 |
+
}
|
166 |
+
|
167 |
+
echo json_encode( $data );
|
168 |
+
|
169 |
+
exit;
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Enqueue admin scripts and styles.
|
174 |
+
*
|
175 |
+
* @param string $pagenow
|
176 |
+
*/
|
177 |
+
public function admin_scripts_styles( $pagenow ) {
|
178 |
+
if ( $pagenow != 'index.php' )
|
179 |
+
return;
|
180 |
+
|
181 |
+
// filter user_can_see_stats
|
182 |
+
if ( ! apply_filters( 'pvc_user_can_see_stats', current_user_can( 'publish_posts' ) ) ) {
|
183 |
+
return;
|
184 |
+
}
|
185 |
+
|
186 |
+
wp_register_style(
|
187 |
+
'pvc-admin-dashboard', POST_VIEWS_COUNTER_URL . '/css/admin-dashboard.css'
|
188 |
+
);
|
189 |
+
wp_enqueue_style( 'pvc-admin-dashboard' );
|
190 |
+
|
191 |
+
wp_register_script(
|
192 |
+
'pvc-admin-dashboard', POST_VIEWS_COUNTER_URL . '/js/admin-dashboard.js', array( 'jquery', 'pvc-chart' ), Post_Views_Counter()->defaults['version'], true
|
193 |
+
);
|
194 |
+
|
195 |
+
wp_register_script(
|
196 |
+
'pvc-chart', POST_VIEWS_COUNTER_URL . '/js/chart.min.js', array( 'jquery' ), Post_Views_Counter()->defaults['version'], true
|
197 |
+
);
|
198 |
+
|
199 |
+
// set ajax args
|
200 |
+
$ajax_args = array(
|
201 |
+
'ajaxURL' => admin_url( 'admin-ajax.php' ),
|
202 |
+
'nonce' => wp_create_nonce( 'dashboard-chart' )
|
203 |
+
);
|
204 |
+
|
205 |
+
wp_enqueue_script( 'pvc-admin-dashboard' );
|
206 |
+
// wp_enqueue_script( 'pvc-chart' );
|
207 |
+
|
208 |
+
wp_localize_script(
|
209 |
+
'pvc-admin-dashboard', 'pvcArgs', $ajax_args
|
210 |
+
);
|
211 |
+
|
212 |
+
}
|
213 |
+
}
|
includes/frontend.php
CHANGED
@@ -48,34 +48,41 @@ class Post_Views_Counter_Frontend {
|
|
48 |
* @return mixed
|
49 |
*/
|
50 |
public function add_post_views_count( $content ) {
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
$
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
68 |
|
|
|
|
|
69 |
switch ( Post_Views_Counter()->options['display']['position'] ) {
|
70 |
case 'after':
|
71 |
-
|
|
|
72 |
|
73 |
case 'before':
|
74 |
-
|
|
|
75 |
|
76 |
-
default:
|
77 |
case 'manual':
|
78 |
-
|
|
|
79 |
}
|
80 |
}
|
81 |
|
48 |
* @return mixed
|
49 |
*/
|
50 |
public function add_post_views_count( $content ) {
|
51 |
+
$display = false;
|
52 |
+
|
53 |
+
if ( is_singular() && in_array( get_post_type(), Post_Views_Counter()->options['display']['post_types_display'], true ) )
|
54 |
+
$display = true;
|
55 |
+
|
56 |
+
// get groups to check it faster
|
57 |
+
$groups = Post_Views_Counter()->options['display']['restrict_display']['groups'];
|
58 |
+
|
59 |
+
// whether to display views
|
60 |
+
if ( is_user_logged_in() ) {
|
61 |
+
// exclude logged in users?
|
62 |
+
if ( in_array( 'users', $groups, true ) )
|
63 |
+
$display = false;
|
64 |
+
// exclude specific roles?
|
65 |
+
elseif ( in_array( 'roles', $groups, true ) && Post_Views_Counter()->counter->is_user_roles_excluded( Post_Views_Counter()->options['display']['restrict_display']['roles'] ) )
|
66 |
+
$display = false;
|
67 |
+
}
|
68 |
+
// exclude guests?
|
69 |
+
elseif ( in_array( 'guests', $groups, true ) )
|
70 |
+
$display = false;
|
71 |
|
72 |
+
|
73 |
+
if ( apply_filters( 'pvc_display_views_count', $display ) === true ) {
|
74 |
switch ( Post_Views_Counter()->options['display']['position'] ) {
|
75 |
case 'after':
|
76 |
+
$content = $content . '[post-views]';
|
77 |
+
break;
|
78 |
|
79 |
case 'before':
|
80 |
+
$content = '[post-views]' . $content;
|
81 |
+
break;
|
82 |
|
|
|
83 |
case 'manual':
|
84 |
+
default:
|
85 |
+
break;
|
86 |
}
|
87 |
}
|
88 |
|
includes/functions.php
CHANGED
@@ -53,7 +53,7 @@ if ( ! function_exists( 'pvc_post_views' ) ) {
|
|
53 |
|
54 |
function pvc_post_views( $post_id = 0, $display = true ) {
|
55 |
// get all data
|
56 |
-
$post_id = (int) (empty( $post_id ) ? get_the_ID() : $post_id);
|
57 |
$options = Post_Views_Counter()->options['display'];
|
58 |
$views = pvc_get_post_views( $post_id );
|
59 |
|
@@ -122,14 +122,14 @@ if ( ! function_exists( 'pvc_most_viewed_posts' ) ) {
|
|
122 |
|
123 |
function pvc_most_viewed_posts( $args = array(), $display = true ) {
|
124 |
$defaults = array(
|
125 |
-
'number_of_posts'
|
126 |
-
'
|
127 |
-
'order'
|
128 |
-
'thumbnail_size'
|
129 |
-
'show_post_views'
|
130 |
-
'show_post_thumbnail'
|
131 |
-
'show_post_excerpt'
|
132 |
-
'no_posts_message'
|
133 |
);
|
134 |
|
135 |
$args = apply_filters( 'pvc_most_viewed_posts_args', wp_parse_args( $args, $defaults ) );
|
@@ -142,7 +142,7 @@ if ( ! function_exists( 'pvc_most_viewed_posts' ) ) {
|
|
142 |
array(
|
143 |
'posts_per_page' => (isset( $args['number_of_posts'] ) ? (int) $args['number_of_posts'] : $defaults['number_of_posts']),
|
144 |
'order' => (isset( $args['order'] ) ? $args['order'] : $defaults['order']),
|
145 |
-
'post_type' => (isset( $args['
|
146 |
)
|
147 |
);
|
148 |
|
@@ -202,3 +202,21 @@ if ( ! function_exists( 'pvc_most_viewed_posts' ) ) {
|
|
202 |
}
|
203 |
|
204 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
function pvc_post_views( $post_id = 0, $display = true ) {
|
55 |
// get all data
|
56 |
+
$post_id = (int) ( empty( $post_id ) ? get_the_ID() : $post_id );
|
57 |
$options = Post_Views_Counter()->options['display'];
|
58 |
$views = pvc_get_post_views( $post_id );
|
59 |
|
122 |
|
123 |
function pvc_most_viewed_posts( $args = array(), $display = true ) {
|
124 |
$defaults = array(
|
125 |
+
'number_of_posts' => 5,
|
126 |
+
'post_type' => array( 'post' ),
|
127 |
+
'order' => 'desc',
|
128 |
+
'thumbnail_size' => 'thumbnail',
|
129 |
+
'show_post_views' => true,
|
130 |
+
'show_post_thumbnail' => false,
|
131 |
+
'show_post_excerpt' => false,
|
132 |
+
'no_posts_message' => __( 'No Posts', 'post-views-counter' )
|
133 |
);
|
134 |
|
135 |
$args = apply_filters( 'pvc_most_viewed_posts_args', wp_parse_args( $args, $defaults ) );
|
142 |
array(
|
143 |
'posts_per_page' => (isset( $args['number_of_posts'] ) ? (int) $args['number_of_posts'] : $defaults['number_of_posts']),
|
144 |
'order' => (isset( $args['order'] ) ? $args['order'] : $defaults['order']),
|
145 |
+
'post_type' => (isset( $args['post_type'] ) ? $args['post_type'] : $defaults['post_type'])
|
146 |
)
|
147 |
);
|
148 |
|
202 |
}
|
203 |
|
204 |
}
|
205 |
+
|
206 |
+
/**
|
207 |
+
* View post manually function.
|
208 |
+
*
|
209 |
+
* @since 1.2.0
|
210 |
+
* @param int $post_id
|
211 |
+
* @return bool
|
212 |
+
*/
|
213 |
+
function pvc_view_post( $post_id = 0 ) {
|
214 |
+
$post_id = (int) ( empty( $post_id ) ? get_the_ID() : $post_id );
|
215 |
+
|
216 |
+
if ( ! $post_id )
|
217 |
+
return false;
|
218 |
+
|
219 |
+
Post_Views_Counter()->counter->check_post( $post_id );
|
220 |
+
|
221 |
+
return true;
|
222 |
+
}
|
includes/query.php
CHANGED
@@ -18,10 +18,11 @@ class Post_Views_Counter_Query {
|
|
18 |
add_filter( 'posts_groupby', array( $this, 'posts_groupby' ), 10, 2 );
|
19 |
add_filter( 'posts_orderby', array( $this, 'posts_orderby' ), 10, 2 );
|
20 |
add_filter( 'posts_fields', array( $this, 'posts_fields' ), 10, 2 );
|
|
|
21 |
}
|
22 |
|
23 |
/**
|
24 |
-
*
|
25 |
*
|
26 |
* @param array $query_vars
|
27 |
* @return array
|
@@ -34,7 +35,7 @@ class Post_Views_Counter_Query {
|
|
34 |
|
35 |
/**
|
36 |
* Extend query with post_views orderby parameter.
|
37 |
-
*
|
38 |
* @param object $query
|
39 |
*/
|
40 |
public function extend_pre_query( $query ) {
|
@@ -136,6 +137,9 @@ class Post_Views_Counter_Query {
|
|
136 |
|
137 |
if ( strpos( $groupby, $wpdb->prefix . 'posts.ID' ) === false )
|
138 |
$groupby = ( $groupby !== '' ? $groupby . ', ' : '') . $wpdb->prefix . 'posts.ID';
|
|
|
|
|
|
|
139 |
}
|
140 |
|
141 |
return $groupby;
|
@@ -155,7 +159,7 @@ class Post_Views_Counter_Query {
|
|
155 |
global $wpdb;
|
156 |
|
157 |
$order = $query->get( 'order' );
|
158 |
-
$orderby = 'pvc.count ' . $order . ', ' . $wpdb->prefix . 'posts.ID ' . $order;
|
159 |
}
|
160 |
|
161 |
return $orderby;
|
@@ -170,11 +174,37 @@ class Post_Views_Counter_Query {
|
|
170 |
*/
|
171 |
public function posts_fields( $fields, $query ) {
|
172 |
if ( ( ! isset( $query->query['fields'] ) || $query->query['fields'] === '' ) && ( ( isset( $query->pvc_orderby ) && $query->pvc_orderby ) || ( isset( $query->pvc_query ) && $query->pvc_query ) || apply_filters( 'pvc_extend_post_object', false, $query ) === true ) )
|
173 |
-
$fields = $fields . ', IFNULL( pvc.count, 0 ) AS post_views';
|
174 |
|
175 |
return $fields;
|
176 |
}
|
177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
/**
|
179 |
* Validate date helper function.
|
180 |
*
|
18 |
add_filter( 'posts_groupby', array( $this, 'posts_groupby' ), 10, 2 );
|
19 |
add_filter( 'posts_orderby', array( $this, 'posts_orderby' ), 10, 2 );
|
20 |
add_filter( 'posts_fields', array( $this, 'posts_fields' ), 10, 2 );
|
21 |
+
add_filter( 'the_posts', array( $this, 'the_posts' ), 10, 2 );
|
22 |
}
|
23 |
|
24 |
/**
|
25 |
+
* Register views_query var.
|
26 |
*
|
27 |
* @param array $query_vars
|
28 |
* @return array
|
35 |
|
36 |
/**
|
37 |
* Extend query with post_views orderby parameter.
|
38 |
+
*
|
39 |
* @param object $query
|
40 |
*/
|
41 |
public function extend_pre_query( $query ) {
|
137 |
|
138 |
if ( strpos( $groupby, $wpdb->prefix . 'posts.ID' ) === false )
|
139 |
$groupby = ( $groupby !== '' ? $groupby . ', ' : '') . $wpdb->prefix . 'posts.ID';
|
140 |
+
|
141 |
+
if ( ! isset( $query->query['views_query']['hide_empty'] ) || $query->query['views_query']['hide_empty'] === true )
|
142 |
+
$groupby .= ' HAVING post_views > 0';
|
143 |
}
|
144 |
|
145 |
return $groupby;
|
159 |
global $wpdb;
|
160 |
|
161 |
$order = $query->get( 'order' );
|
162 |
+
$orderby = ( ! isset( $query->query['views_query']['hide_empty'] ) || $query->query['views_query']['hide_empty'] === true ? 'post_views' : 'pvc.count' ) . ' ' . $order . ', ' . $wpdb->prefix . 'posts.ID ' . $order;
|
163 |
}
|
164 |
|
165 |
return $orderby;
|
174 |
*/
|
175 |
public function posts_fields( $fields, $query ) {
|
176 |
if ( ( ! isset( $query->query['fields'] ) || $query->query['fields'] === '' ) && ( ( isset( $query->pvc_orderby ) && $query->pvc_orderby ) || ( isset( $query->pvc_query ) && $query->pvc_query ) || apply_filters( 'pvc_extend_post_object', false, $query ) === true ) )
|
177 |
+
$fields = $fields . ', SUM( IFNULL( pvc.count, 0 ) ) AS post_views';
|
178 |
|
179 |
return $fields;
|
180 |
}
|
181 |
|
182 |
+
/**
|
183 |
+
* Extend query object with total post views.
|
184 |
+
*
|
185 |
+
* @param array $posts
|
186 |
+
* @param object $query
|
187 |
+
* @return array
|
188 |
+
*/
|
189 |
+
public function the_posts( $posts, $query ) {
|
190 |
+
if ( ( isset( $query->pvc_orderby ) && $query->pvc_orderby ) || ( isset( $query->pvc_query ) && $query->pvc_query ) || apply_filters( 'pvc_extend_post_object', false, $query ) === true ) {
|
191 |
+
$sum = 0;
|
192 |
+
|
193 |
+
// any posts found?
|
194 |
+
if ( ! empty( $posts ) ) {
|
195 |
+
foreach ( $posts as $post ) {
|
196 |
+
if ( ! empty( $post->post_views ) )
|
197 |
+
$sum += (int) $post->post_views;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
// pass total views
|
202 |
+
$query->total_views = $sum;
|
203 |
+
}
|
204 |
+
|
205 |
+
return $posts;
|
206 |
+
}
|
207 |
+
|
208 |
/**
|
209 |
* Validate date helper function.
|
210 |
*
|
includes/widgets.php
CHANGED
@@ -45,15 +45,15 @@ class Post_Views_Counter_List_Widget extends WP_Widget {
|
|
45 |
);
|
46 |
|
47 |
$this->pvc_defaults = array(
|
48 |
-
'title'
|
49 |
-
'number_of_posts'
|
50 |
-
'thumbnail_size'
|
51 |
-
'
|
52 |
-
'order'
|
53 |
-
'show_post_views'
|
54 |
-
'show_post_thumbnail'
|
55 |
-
'show_post_excerpt'
|
56 |
-
'no_posts_message'
|
57 |
);
|
58 |
|
59 |
$this->pvc_order_types = array(
|
@@ -103,7 +103,7 @@ class Post_Views_Counter_List_Widget extends WP_Widget {
|
|
103 |
|
104 |
foreach ( $this->pvc_post_types as $post_type => $post_type_name ) {
|
105 |
$html .= '
|
106 |
-
<input id="' . $this->get_field_id( '
|
107 |
}
|
108 |
|
109 |
$show_post_thumbnail = isset( $instance['show_post_thumbnail'] ) ? $instance['show_post_thumbnail'] : $this->pvc_defaults['show_post_thumbnail'];
|
@@ -179,17 +179,17 @@ class Post_Views_Counter_List_Widget extends WP_Widget {
|
|
179 |
$old_instance['no_posts_message'] = sanitize_text_field( isset( $new_instance['no_posts_message'] ) ? $new_instance['no_posts_message'] : $this->pvc_defaults['no_posts_message'] );
|
180 |
|
181 |
// post types
|
182 |
-
if ( isset( $new_instance['
|
183 |
$post_types = array();
|
184 |
|
185 |
-
foreach ( $new_instance['
|
186 |
if ( isset( $this->pvc_post_types[$post_type] ) )
|
187 |
$post_types[] = $post_type;
|
188 |
}
|
189 |
|
190 |
-
$old_instance['
|
191 |
} else
|
192 |
-
$old_instance['
|
193 |
|
194 |
return $old_instance;
|
195 |
}
|
45 |
);
|
46 |
|
47 |
$this->pvc_defaults = array(
|
48 |
+
'title' => __( 'Most Viewed Posts', 'post-views-counter' ),
|
49 |
+
'number_of_posts' => 5,
|
50 |
+
'thumbnail_size' => 'thumbnail',
|
51 |
+
'post_type' => array(),
|
52 |
+
'order' => 'desc',
|
53 |
+
'show_post_views' => true,
|
54 |
+
'show_post_thumbnail' => false,
|
55 |
+
'show_post_excerpt' => false,
|
56 |
+
'no_posts_message' => __( 'No Posts found', 'post-views-counter' )
|
57 |
);
|
58 |
|
59 |
$this->pvc_order_types = array(
|
103 |
|
104 |
foreach ( $this->pvc_post_types as $post_type => $post_type_name ) {
|
105 |
$html .= '
|
106 |
+
<input id="' . $this->get_field_id( 'post_type' ) . '-' . $post_type . '" type="checkbox" name="' . $this->get_field_name( 'post_type' ) . '[]" value="' . $post_type . '" ' . checked( ( ! isset( $instance['post_type'] ) ? true : in_array( $post_type, $instance['post_type'], true ) ), true, false ) . '><label for="' . $this->get_field_id( 'post_type' ) . '-' . $post_type . '">' . esc_html( $post_type_name ) . '</label>';
|
107 |
}
|
108 |
|
109 |
$show_post_thumbnail = isset( $instance['show_post_thumbnail'] ) ? $instance['show_post_thumbnail'] : $this->pvc_defaults['show_post_thumbnail'];
|
179 |
$old_instance['no_posts_message'] = sanitize_text_field( isset( $new_instance['no_posts_message'] ) ? $new_instance['no_posts_message'] : $this->pvc_defaults['no_posts_message'] );
|
180 |
|
181 |
// post types
|
182 |
+
if ( isset( $new_instance['post_type'] ) ) {
|
183 |
$post_types = array();
|
184 |
|
185 |
+
foreach ( $new_instance['post_type'] as $post_type ) {
|
186 |
if ( isset( $this->pvc_post_types[$post_type] ) )
|
187 |
$post_types[] = $post_type;
|
188 |
}
|
189 |
|
190 |
+
$old_instance['post_type'] = array_unique( $post_types );
|
191 |
} else
|
192 |
+
$old_instance['post_type'] = array( 'post' );
|
193 |
|
194 |
return $old_instance;
|
195 |
}
|
js/admin-dashboard.js
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function ( $ ) {
|
2 |
+
|
3 |
+
// set global options
|
4 |
+
// Chart.defaults.global.tooltips.titleMarginBottom = 0;
|
5 |
+
// Chart.defaults.global.tooltips.footerMarginTop = 4;
|
6 |
+
|
7 |
+
window.onload = function() {
|
8 |
+
updateChart( 'this_month' );
|
9 |
+
};
|
10 |
+
|
11 |
+
function updateChart( period ) {
|
12 |
+
|
13 |
+
var container = document.getElementById( 'pvc_dashboard_container' );
|
14 |
+
|
15 |
+
if ( $( container ).length > 0 ) {
|
16 |
+
|
17 |
+
$( container ).addClass( 'loading' ).append( '<span class="spinner is-active"></span>' );
|
18 |
+
|
19 |
+
$.ajax( {
|
20 |
+
url: pvcArgs.ajaxURL,
|
21 |
+
type: 'POST',
|
22 |
+
dataType: 'json',
|
23 |
+
data: ( {
|
24 |
+
action : 'pvc_dashboard_chart',
|
25 |
+
nonce : pvcArgs.nonce,
|
26 |
+
period : period
|
27 |
+
} ),
|
28 |
+
success: function ( args ) {
|
29 |
+
|
30 |
+
$( container ).removeClass( 'loading' );
|
31 |
+
$( container ).find( '.spinner' ).removeClass( 'is-active' );
|
32 |
+
|
33 |
+
var config = {
|
34 |
+
type: 'line',
|
35 |
+
data: args.data,
|
36 |
+
options: {
|
37 |
+
responsive: true,
|
38 |
+
legend: {
|
39 |
+
display: false,
|
40 |
+
position: 'bottom',
|
41 |
+
},
|
42 |
+
scales: {
|
43 |
+
xAxes: [{
|
44 |
+
display: true,
|
45 |
+
scaleLabel: {
|
46 |
+
display: true,
|
47 |
+
labelString: args.text.xAxes
|
48 |
+
}
|
49 |
+
}],
|
50 |
+
yAxes: [{
|
51 |
+
display: true,
|
52 |
+
scaleLabel: {
|
53 |
+
display: false,
|
54 |
+
labelString: args.text.yAxes
|
55 |
+
}
|
56 |
+
}]
|
57 |
+
},
|
58 |
+
hover: {
|
59 |
+
mode: 'label'
|
60 |
+
},
|
61 |
+
tooltips: {
|
62 |
+
custom: function( tooltip ) {
|
63 |
+
// console.log( tooltip );
|
64 |
+
},
|
65 |
+
callbacks: {
|
66 |
+
title: function( tooltip ) {
|
67 |
+
return args.data.dates[tooltip[0].index];
|
68 |
+
}
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
};
|
73 |
+
|
74 |
+
$.each( config.data.datasets, function ( i, dataset ) {
|
75 |
+
dataset.fill = args.design.fill;
|
76 |
+
dataset.borderColor = args.design.borderColor;
|
77 |
+
dataset.backgroundColor = args.design.backgroundColor;
|
78 |
+
dataset.borderWidth = args.design.borderWidth;
|
79 |
+
dataset.borderDash = args.design.borderDash;
|
80 |
+
dataset.pointBorderColor = args.design.pointBorderColor;
|
81 |
+
dataset.pointBackgroundColor = args.design.pointBackgroundColor;
|
82 |
+
dataset.pointBorderWidth = args.design.pointBorderWidth;
|
83 |
+
} );
|
84 |
+
|
85 |
+
window.chartPVC = new Chart( document.getElementById( 'pvc_chart' ).getContext( '2d' ), config );
|
86 |
+
}
|
87 |
+
} );
|
88 |
+
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
function updateLegend() {
|
93 |
+
$legendContainer = $( '#legendContainer' );
|
94 |
+
$legendContainer.empty();
|
95 |
+
$legendContainer.append( window.chartPVC.generateLegend() );
|
96 |
+
}
|
97 |
+
|
98 |
+
} )( jQuery );
|
js/chart.min.js
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
!function(t,e){"function"==typeof define&&define.amd?define(["moment"],e):"object"==typeof exports?module.exports=e.call(t,require("moment")):t.Chart=e.call(t,t.moment)}(this||window,function(t){/*!
|
2 |
+
* Chart.js
|
3 |
+
* http://chartjs.org/
|
4 |
+
* Version: 2.0.0-beta2
|
5 |
+
*
|
6 |
+
* Copyright 2015 Nick Downie
|
7 |
+
* Released under the MIT license
|
8 |
+
* https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
|
9 |
+
*/
|
10 |
+
/*!
|
11 |
+
* Chart.js
|
12 |
+
* http://chartjs.org/
|
13 |
+
* Version: 2.0.0-beta2
|
14 |
+
*
|
15 |
+
* Copyright 2015 Nick Downie
|
16 |
+
* Released under the MIT license
|
17 |
+
* https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
|
18 |
+
*/
|
19 |
+
/*!
|
20 |
+
* Chart.js
|
21 |
+
* http://chartjs.org/
|
22 |
+
* Version: 2.0.0-beta2
|
23 |
+
*
|
24 |
+
* Copyright 2015 Nick Downie
|
25 |
+
* Released under the MIT license
|
26 |
+
* https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
|
27 |
+
*/
|
28 |
+
/*!
|
29 |
+
* Chart.js
|
30 |
+
* http://chartjs.org/
|
31 |
+
* Version: 2.0.0-beta2
|
32 |
+
*
|
33 |
+
* Copyright 2015 Nick Downie
|
34 |
+
* Released under the MIT license
|
35 |
+
* https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
|
36 |
+
*/
|
37 |
+
return!function e(t,i,s){function a(n,r){if(!i[n]){if(!t[n]){var h="function"==typeof require&&require;if(!r&&h)return h(n,!0);if(o)return o(n,!0);var l=new Error("Cannot find module '"+n+"'");throw l.code="MODULE_NOT_FOUND",l}var c=i[n]={exports:{}};t[n][0].call(c.exports,function(e){var i=t[n][1][e];return a(i?i:e)},c,c.exports,e,t,i,s)}return i[n].exports}for(var o="function"==typeof require&&require,n=0;n<s.length;n++)a(s[n]);return a}({1:[function(t,e,i){!function(){var i=t("color-convert"),s=t("color-string"),a=function(t){if(t instanceof a)return t;if(!(this instanceof a))return new a(t);if(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},"string"==typeof t){var e=s.getRgba(t);if(e)this.setValues("rgb",e);else if(e=s.getHsla(t))this.setValues("hsl",e);else{if(!(e=s.getHwb(t)))throw new Error('Unable to parse color from string "'+t+'"');this.setValues("hwb",e)}}else if("object"==typeof t){var e=t;if(void 0!==e.r||void 0!==e.red)this.setValues("rgb",e);else if(void 0!==e.l||void 0!==e.lightness)this.setValues("hsl",e);else if(void 0!==e.v||void 0!==e.value)this.setValues("hsv",e);else if(void 0!==e.w||void 0!==e.whiteness)this.setValues("hwb",e);else{if(void 0===e.c&&void 0===e.cyan)throw new Error("Unable to parse color from object "+JSON.stringify(t));this.setValues("cmyk",e)}}};a.prototype={rgb:function(t){return this.setSpace("rgb",arguments)},hsl:function(t){return this.setSpace("hsl",arguments)},hsv:function(t){return this.setSpace("hsv",arguments)},hwb:function(t){return this.setSpace("hwb",arguments)},cmyk:function(t){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(){return 1!==this.values.alpha?this.values.hwb.concat([this.values.alpha]):this.values.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values.rgb;return t.concat([this.values.alpha])},hslaArray:function(){var t=this.values.hsl;return t.concat([this.values.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 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 s.hexString(this.values.rgb)},rgbString:function(){return s.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return s.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return s.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return s.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return s.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return s.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return s.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){return this.values.rgb[0]<<16|this.values.rgb[1]<<8|this.values.rgb[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var s=t[i]/255;e[i]=.03928>=s?s/12.92:Math.pow((s+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.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 128>e},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;3>e;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){return this.values.hsl[2]+=this.values.hsl[2]*t,this.setValues("hsl",this.values.hsl),this},darken:function(t){return this.values.hsl[2]-=this.values.hsl[2]*t,this.setValues("hsl",this.values.hsl),this},saturate:function(t){return this.values.hsl[1]+=this.values.hsl[1]*t,this.setValues("hsl",this.values.hsl),this},desaturate:function(t){return this.values.hsl[1]-=this.values.hsl[1]*t,this.setValues("hsl",this.values.hsl),this},whiten:function(t){return this.values.hwb[1]+=this.values.hwb[1]*t,this.setValues("hwb",this.values.hwb),this},blacken:function(t){return this.values.hwb[2]+=this.values.hwb[2]*t,this.setValues("hwb",this.values.hwb),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){return this.setValues("alpha",this.values.alpha-this.values.alpha*t),this},opaquer:function(t){return this.setValues("alpha",this.values.alpha+this.values.alpha*t),this},rotate:function(t){var e=this.values.hsl[0];return e=(e+t)%360,e=0>e?360+e:e,this.values.hsl[0]=e,this.setValues("hsl",this.values.hsl),this},mix:function(t,e){e=1-(null==e?.5:e);for(var i=2*e-1,s=this.alpha()-t.alpha(),a=((i*s==-1?i:(i+s)/(1+i*s))+1)/2,o=1-a,n=this.rgbArray(),r=t.rgbArray(),h=0;h<n.length;h++)n[h]=n[h]*a+r[h]*o;this.setValues("rgb",n);var l=this.alpha()*e+t.alpha()*(1-e);return this.setValues("alpha",l),this},toJSON:function(){return this.rgb()},clone:function(){return new a(this.rgb())}},a.prototype.getValues=function(t){for(var e={},i=0;i<t.length;i++)e[t.charAt(i)]=this.values[t][i];return 1!=this.values.alpha&&(e.a=this.values.alpha),e},a.prototype.setValues=function(t,e){var s={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},a={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o=1;if("alpha"==t)o=e;else if(e.length)this.values[t]=e.slice(0,t.length),o=e[t.length];else if(void 0!==e[t.charAt(0)]){for(var n=0;n<t.length;n++)this.values[t][n]=e[t.charAt(n)];o=e.a}else if(void 0!==e[s[t][0]]){for(var r=s[t],n=0;n<t.length;n++)this.values[t][n]=e[r[n]];o=e.alpha}if(this.values.alpha=Math.max(0,Math.min(1,void 0!==o?o:this.values.alpha)),"alpha"!=t){for(var n=0;n<t.length;n++){var h=Math.max(0,Math.min(a[t][n],this.values[t][n]));this.values[t][n]=Math.round(h)}for(var l in s){l!=t&&(this.values[l]=i[t][l](this.values[t]));for(var n=0;n<l.length;n++){var h=Math.max(0,Math.min(a[l][n],this.values[l][n]));this.values[l][n]=Math.round(h)}}return!0}},a.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},a.prototype.setChannel=function(t,e,i){return void 0===i?this.values[t][e]:(this.values[t][e]=i,this.setValues(t,this.values[t]),this)},window.Color=e.exports=a}()},{"color-convert":3,"color-string":4}],2:[function(t,e,i){function s(t){var e,i,s,a=t[0]/255,o=t[1]/255,n=t[2]/255,r=Math.min(a,o,n),h=Math.max(a,o,n),l=h-r;return h==r?e=0:a==h?e=(o-n)/l:o==h?e=2+(n-a)/l:n==h&&(e=4+(a-o)/l),e=Math.min(60*e,360),0>e&&(e+=360),s=(r+h)/2,i=h==r?0:.5>=s?l/(h+r):l/(2-h-r),[e,100*i,100*s]}function a(t){var e,i,s,a=t[0],o=t[1],n=t[2],r=Math.min(a,o,n),h=Math.max(a,o,n),l=h-r;return i=0==h?0:l/h*1e3/10,h==r?e=0:a==h?e=(o-n)/l:o==h?e=2+(n-a)/l:n==h&&(e=4+(a-o)/l),e=Math.min(60*e,360),0>e&&(e+=360),s=h/255*1e3/10,[e,i,s]}function o(t){var e=t[0],i=t[1],a=t[2],o=s(t)[0],n=1/255*Math.min(e,Math.min(i,a)),a=1-1/255*Math.max(e,Math.max(i,a));return[o,100*n,100*a]}function n(t){var e,i,s,a,o=t[0]/255,n=t[1]/255,r=t[2]/255;return a=Math.min(1-o,1-n,1-r),e=(1-o-a)/(1-a)||0,i=(1-n-a)/(1-a)||0,s=(1-r-a)/(1-a)||0,[100*e,100*i,100*s,100*a]}function h(t){return G[JSON.stringify(t)]}function l(t){var e=t[0]/255,i=t[1]/255,s=t[2]/255;e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92,s=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92;var a=.4124*e+.3576*i+.1805*s,o=.2126*e+.7152*i+.0722*s,n=.0193*e+.1192*i+.9505*s;return[100*a,100*o,100*n]}function c(t){var e,i,s,a=l(t),o=a[0],n=a[1],r=a[2];return o/=95.047,n/=100,r/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*n-16,i=500*(o-n),s=200*(n-r),[e,i,s]}function d(t){return B(c(t))}function u(t){var e,i,s,a,o,n=t[0]/360,r=t[1]/100,h=t[2]/100;if(0==r)return o=255*h,[o,o,o];i=.5>h?h*(1+r):h+r-h*r,e=2*h-i,a=[0,0,0];for(var l=0;3>l;l++)s=n+1/3*-(l-1),0>s&&s++,s>1&&s--,o=1>6*s?e+6*(i-e)*s:1>2*s?i:2>3*s?e+(i-e)*(2/3-s)*6:e,a[l]=255*o;return a}function m(t){var e,i,s=t[0],a=t[1]/100,o=t[2]/100;return o*=2,a*=1>=o?o:2-o,i=(o+a)/2,e=2*a/(o+a),[s,100*e,100*i]}function p(t){return o(u(t))}function f(t){return n(u(t))}function x(t){return h(u(t))}function v(t){var e=t[0]/60,i=t[1]/100,s=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),n=255*s*(1-i),r=255*s*(1-i*o),h=255*s*(1-i*(1-o)),s=255*s;switch(a){case 0:return[s,h,n];case 1:return[r,s,n];case 2:return[n,s,h];case 3:return[n,r,s];case 4:return[h,n,s];case 5:return[s,n,r]}}function y(t){var e,i,s=t[0],a=t[1]/100,o=t[2]/100;return i=(2-a)*o,e=a*o,e/=1>=i?i:2-i,e=e||0,i/=2,[s,100*e,100*i]}function k(t){return o(v(t))}function S(t){return n(v(t))}function D(t){return h(v(t))}function C(t){var e,i,s,a,o=t[0]/360,n=t[1]/100,h=t[2]/100,l=n+h;switch(l>1&&(n/=l,h/=l),e=Math.floor(6*o),i=1-h,s=6*o-e,0!=(1&e)&&(s=1-s),a=n+s*(i-n),e){default:case 6:case 0:r=i,g=a,b=n;break;case 1:r=a,g=i,b=n;break;case 2:r=n,g=i,b=a;break;case 3:r=n,g=a,b=i;break;case 4:r=a,g=n,b=i;break;case 5:r=i,g=n,b=a}return[255*r,255*g,255*b]}function w(t){return s(C(t))}function _(t){return a(C(t))}function A(t){return n(C(t))}function M(t){return h(C(t))}function I(t){var e,i,s,a=t[0]/100,o=t[1]/100,n=t[2]/100,r=t[3]/100;return e=1-Math.min(1,a*(1-r)+r),i=1-Math.min(1,o*(1-r)+r),s=1-Math.min(1,n*(1-r)+r),[255*e,255*i,255*s]}function P(t){return s(I(t))}function T(t){return a(I(t))}function F(t){return o(I(t))}function R(t){return h(I(t))}function L(t){var e,i,s,a=t[0]/100,o=t[1]/100,n=t[2]/100;return e=3.2406*a+-1.5372*o+n*-.4986,i=a*-.9689+1.8758*o+.0415*n,s=.0557*a+o*-.204+1.057*n,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e=12.92*e,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i=12.92*i,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s=12.92*s,e=Math.min(Math.max(0,e),1),i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),[255*e,255*i,255*s]}function W(t){var e,i,s,a=t[0],o=t[1],n=t[2];return a/=95.047,o/=100,n/=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,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,e=116*o-16,i=500*(a-o),s=200*(o-n),[e,i,s]}function z(t){return B(W(t))}function V(t){var e,i,s,a,o=t[0],n=t[1],r=t[2];return 8>=o?(i=100*o/903.3,a=7.787*(i/100)+16/116):(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),e=.008856>=e/95.047?e=95.047*(n/500+a-16/116)/7.787:95.047*Math.pow(n/500+a,3),s=.008859>=s/108.883?s=108.883*(a-r/200-16/116)/7.787:108.883*Math.pow(a-r/200,3),[e,i,s]}function B(t){var e,i,s,a=t[0],o=t[1],n=t[2];return e=Math.atan2(n,o),i=360*e/2/Math.PI,0>i&&(i+=360),s=Math.sqrt(o*o+n*n),[a,s,i]}function O(t){return L(V(t))}function N(t){var e,i,s,a=t[0],o=t[1],n=t[2];return s=n/360*2*Math.PI,e=o*Math.cos(s),i=o*Math.sin(s),[a,e,i]}function H(t){return V(N(t))}function E(t){return O(N(t))}function j(t){return X[t]}function q(t){return s(j(t))}function U(t){return a(j(t))}function Y(t){return o(j(t))}function Q(t){return n(j(t))}function J(t){return c(j(t))}function Z(t){return l(j(t))}e.exports={rgb2hsl:s,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:n,rgb2keyword:h,rgb2xyz:l,rgb2lab:c,rgb2lch:d,hsl2rgb:u,hsl2hsv:m,hsl2hwb:p,hsl2cmyk:f,hsl2keyword:x,hsv2rgb:v,hsv2hsl:y,hsv2hwb:k,hsv2cmyk:S,hsv2keyword:D,hwb2rgb:C,hwb2hsl:w,hwb2hsv:_,hwb2cmyk:A,hwb2keyword:M,cmyk2rgb:I,cmyk2hsl:P,cmyk2hsv:T,cmyk2hwb:F,cmyk2keyword:R,keyword2rgb:j,keyword2hsl:q,keyword2hsv:U,keyword2hwb:Y,keyword2cmyk:Q,keyword2lab:J,keyword2xyz:Z,xyz2rgb:L,xyz2lab:W,xyz2lch:z,lab2xyz:V,lab2rgb:O,lab2lch:B,lch2lab:N,lch2xyz:H,lch2rgb:E};var X={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]},G={};for(var $ in X)G[JSON.stringify(X[$])]=$},{}],3:[function(t,e,i){var s=t("./conversions"),a=function(){return new l};for(var o in s){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),s[t](e)}}(o);var n=/(\w+)2(\w+)/.exec(o),r=n[1],h=n[2];a[r]=a[r]||{},a[r][h]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var i=s[t](e);if("string"==typeof i||void 0===i)return i;for(var a=0;a<i.length;a++)i[a]=Math.round(i[a]);return i}}(o)}var l=function(){this.convs={}};l.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},l.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},l.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,s=this.convs[i];e=a[i][t](s),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){l.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{"./conversions":2}],4:[function(t,e,i){function s(t){if(t){var e=/^#([a-fA-F0-9]{3})$/,i=/^#([a-fA-F0-9]{6})$/,s=/^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+)/,n=[0,0,0],r=1,h=t.match(e);if(h){h=h[1];for(var l=0;l<n.length;l++)n[l]=parseInt(h[l]+h[l],16)}else if(h=t.match(i)){h=h[1];for(var l=0;l<n.length;l++)n[l]=parseInt(h.slice(2*l,2*l+2),16)}else if(h=t.match(s)){for(var l=0;l<n.length;l++)n[l]=parseInt(h[l+1]);r=parseFloat(h[4])}else if(h=t.match(a)){for(var l=0;l<n.length;l++)n[l]=Math.round(2.55*parseFloat(h[l+1]));r=parseFloat(h[4])}else if(h=t.match(o)){if("transparent"==h[1])return[0,0,0,0];if(n=y[h[1]],!n)return}for(var l=0;l<n.length;l++)n[l]=x(n[l],0,255);return r=r||0==r?x(r,0,1):1,n[3]=r,n}}function a(t){if(t){var e=/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,i=t.match(e);if(i){var s=parseFloat(i[4]),a=x(parseInt(i[1]),0,360),o=x(parseFloat(i[2]),0,100),n=x(parseFloat(i[3]),0,100),r=x(isNaN(s)?1:s,0,1);return[a,o,n,r]}}}function o(t){if(t){var e=/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,i=t.match(e);if(i){var s=parseFloat(i[4]),a=x(parseInt(i[1]),0,360),o=x(parseFloat(i[2]),0,100),n=x(parseFloat(i[3]),0,100),r=x(isNaN(s)?1:s,0,1);return[a,o,n,r]}}}function n(t){var e=s(t);return e&&e.slice(0,3)}function r(t){var e=a(t);return e&&e.slice(0,3)}function h(t){var e=s(t);return e?e[3]:(e=a(t))?e[3]:(e=o(t))?e[3]:void 0}function l(t){return"#"+v(t[0])+v(t[1])+v(t[2])}function c(t,e){return 1>e||t[3]&&t[3]<1?d(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function d(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function u(t,e){if(1>e||t[3]&&t[3]<1)return g(t,e);var i=Math.round(t[0]/255*100),s=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+s+"%, "+a+"%)"}function g(t,e){var i=Math.round(t[0]/255*100),s=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgba("+i+"%, "+s+"%, "+a+"%, "+(e||t[3]||1)+")"}function m(t,e){return 1>e||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 f(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 b(t){return k[t.slice(0,3)]}function x(t,e,i){return Math.min(Math.max(e,t),i)}function v(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var y=t("color-name");e.exports={getRgba:s,getHsla:a,getRgb:n,getHsl:r,getHwb:o,getAlpha:h,hexString:l,rgbString:c,rgbaString:d,percentString:u,percentaString:g,hslString:m,hslaString:p,hwbString:f,keyword:b};var k={};for(var S in y)k[y[S]]=S},{"color-name":5}],5:[function(t,e,i){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]}},{}]},{},[1]),function(){"use strict";var t=this,e=t.Chart,i=function(t,e){this.config=e,t.length&&t[0].getContext&&(t=t[0]),t.getContext&&(t=t.getContext("2d")),this.ctx=t,this.canvas=t.canvas,this.width=t.canvas.width||parseInt(i.helpers.getStyle(t.canvas,"width"))||i.helpers.getMaximumWidth(t.canvas),this.height=t.canvas.height||parseInt(i.helpers.getStyle(t.canvas,"height"))||i.helpers.getMaximumHeight(t.canvas),this.aspectRatio=this.width/this.height,(isNaN(this.aspectRatio)||isFinite(this.aspectRatio)===!1)&&(this.aspectRatio=void 0!==e.aspectRatio?e.aspectRatio:2),this.originalCanvasStyleWidth=t.canvas.style.width,this.originalCanvasStyleHeight=t.canvas.style.height,i.helpers.retinaScale(this),e&&(this.controller=new i.Controller(this));var s=this;return i.helpers.addResizeListener(t.canvas.parentNode,function(){s.controller&&s.controller.config.options.responsive&&s.controller.resize()}),this.controller?this.controller:this};i.defaults={global:{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"single",animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",elements:{},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style="background-color:'+t.data.datasets[i].backgroundColor+'">'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("</span></li>");return e.push("</ul>"),e.join("")}}},t.Chart=i,i.noConflict=function(){return t.Chart=e,i}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers={};i.each=function(t,e,s,a){var o,n;if(i.isArray(t))if(n=t.length,a)for(o=n-1;o>=0;o--)e.call(s,t[o],o);else for(o=0;n>o;o++)e.call(s,t[o],o);else if("object"==typeof t){var r=Object.keys(t);for(n=r.length,o=0;n>o;o++)e.call(s,t[r[o]],r[o])}},i.clone=function(t){var e={};return i.each(t,function(s,a){t.hasOwnProperty(a)&&(i.isArray(s)?e[a]=s.slice(0):"object"==typeof s&&null!==s?e[a]=i.clone(s):e[a]=s)}),e},i.extend=function(t){for(var e=arguments.length,s=[],a=1;e>a;a++)s.push(arguments[a]);return i.each(s,function(e){i.each(e,function(i,s){e.hasOwnProperty(s)&&(t[s]=i)})}),t},i.configMerge=function(t){var s=i.clone(t);return i.each(Array.prototype.slice.call(arguments,1),function(t){i.each(t,function(a,o){if(t.hasOwnProperty(o))if("scales"===o)s[o]=i.scaleMerge(s.hasOwnProperty(o)?s[o]:{},a);else if("scale"===o)s[o]=i.configMerge(s.hasOwnProperty(o)?s[o]:{},e.scaleService.getScaleDefaults(a.type),a);else if(s.hasOwnProperty(o)&&i.isArray(s[o])&&i.isArray(a)){var n=s[o];i.each(a,function(t,e){e<n.length?"object"==typeof n[e]&&null!==n[e]&&"object"==typeof t&&null!==t?n[e]=i.configMerge(n[e],t):n[e]=t:n.push(t)})}else s.hasOwnProperty(o)&&"object"==typeof s[o]&&null!==s[o]&&"object"==typeof a?s[o]=i.configMerge(s[o],a):s[o]=a})}),s},i.extendDeep=function(t){function e(t){return i.each(arguments,function(s){s!==t&&i.each(s,function(i,s){t[s]&&t[s].constructor&&t[s].constructor===Object?e(t[s],i):t[s]=i})}),t}return e.apply(this,arguments)},i.scaleMerge=function(t,s){var a=i.clone(t);return i.each(s,function(t,o){s.hasOwnProperty(o)&&("xAxes"===o||"yAxes"===o?a.hasOwnProperty(o)?i.each(t,function(t,s){s>=a[o].length||!a[o][s].type?a[o].push(i.configMerge(t.type?e.scaleService.getScaleDefaults(t.type):{},t)):t.type!==a[o][s].type?a[o][s]=i.configMerge(a[o][s],t.type?e.scaleService.getScaleDefaults(t.type):{},t):a[o][s]=i.configMerge(a[o][s],t)}):(a[o]=[],i.each(t,function(t){a[o].push(i.configMerge(t.type?e.scaleService.getScaleDefaults(t.type):{},t))})):a.hasOwnProperty(o)&&"object"==typeof a[o]&&null!==a[o]&&"object"==typeof t?a[o]=i.configMerge(a[o],t):a[o]=t)}),a},i.getValueAtIndexOrDefault=function(t,e,s){return void 0===t||null===t?s:i.isArray(t)?e<t.length?t[e]:s:t},i.getValueOrDefault=function(t,e){return void 0===t?e:t},i.indexOf=function(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1},i.where=function(t,e){var s=[];return i.each(t,function(t){e(t)&&s.push(t)}),s},i.findNextWhere=function(t,e,i){(void 0===i||null===i)&&(i=-1);for(var s=i+1;s<t.length;s++){var a=t[s];if(e(a))return a}},i.findPreviousWhere=function(t,e,i){(void 0===i||null===i)&&(i=t.length);for(var s=i-1;s>=0;s--){var a=t[s];if(e(a))return a}},i.inherits=function(t){var e=this,s=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=s};return a.prototype=e.prototype,s.prototype=new a,s.extend=i.inherits,t&&i.extend(s.prototype,t),s.__super__=e.prototype,s},i.noop=function(){},i.uid=function(){var t=0;return function(){return"chart-"+t++}}(),i.warn=function(t){console&&"function"==typeof console.warn&&console.warn(t)},i.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},i.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},i.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},i.sign=function(t){return Math.sign?Math.sign(t):(t=+t,0===t||isNaN(t)?t:t>0?1:-1)},i.log10=function(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10},i.toRadians=function(t){return t*(Math.PI/180)},i.toDegrees=function(t){return t*(180/Math.PI)},i.getAngleFromPoint=function(t,e){var i=e.x-t.x,s=e.y-t.y,a=Math.sqrt(i*i+s*s),o=Math.atan2(s,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},i.aliasPixel=function(t){return t%2===0?0:.5},i.splineCurve=function(t,e,i,s){var a=t.skip?e:t,o=e,n=i.skip?e:i,r=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),h=Math.sqrt(Math.pow(n.x-o.x,2)+Math.pow(n.y-o.y,2)),l=r/(r+h),c=h/(r+h);l=isNaN(l)?0:l,c=isNaN(c)?0:c;var d=s*l,u=s*c;return{previous:{x:o.x-d*(n.x-a.x),y:o.y-d*(n.y-a.y)},next:{x:o.x+u*(n.x-a.x),y:o.y+u*(n.y-a.y)}}},i.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},i.previousItem=function(t,e,i){return i?0>=e?t[t.length-1]:t[e-1]:0>=e?t[0]:t[e-1]},i.niceNum=function(t,e){var s,a=Math.floor(i.log10(t)),o=t/Math.pow(10,a);return s=e?1.5>o?1:3>o?2:7>o?5:10:1>=o?1:2>=o?2:5>=o?5:10,s*Math.pow(10,a)};var s=i.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:-0.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:-0.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-0.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?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,s=1;return 0===t?0:1==(t/=1)?1:(i||(i=.3),s<Math.abs(1)?(s=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/s),-(s*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/i)))},easeOutElastic:function(t){var e=1.70158,i=0,s=1;return 0===t?0:1==(t/=1)?1:(i||(i=.3),s<Math.abs(1)?(s=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/s),s*Math.pow(2,-10*t)*Math.sin((1*t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,s=1;return 0===t?0:2==(t/=.5)?1:(i||(i=1*(.3*1.5)),s<Math.abs(1)?(s=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/s),1>t?-.5*(s*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/i)):s*Math.pow(2,-10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/i)*.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-s.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?1*(7.5625*t*t):2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375);
|
38 |
+
},easeInOutBounce:function(t){return.5>t?.5*s.easeInBounce(2*t):.5*s.easeOutBounce(2*t-1)+.5}};i.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),i.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),i.getRelativePosition=function(t,e){var i,s,a=t.originalEvent||t,o=t.currentTarget||t.srcElement,n=o.getBoundingClientRect();return a.touches&&a.touches.length>0?(i=a.touches[0].clientX,s=a.touches[0].clientY):(i=a.clientX,s=a.clientY),i=Math.round((i-n.left)/(n.right-n.left)*o.width/e.currentDevicePixelRatio),s=Math.round((s-n.top)/(n.bottom-n.top)*o.height/e.currentDevicePixelRatio),{x:i,y:s}},i.addEvent=function(t,e,i){t.addEventListener?t.addEventListener(e,i):t.attachEvent?t.attachEvent("on"+e,i):t["on"+e]=i},i.removeEvent=function(t,e,s){t.removeEventListener?t.removeEventListener(e,s,!1):t.detachEvent?t.detachEvent("on"+e,s):t["on"+e]=i.noop},i.bindEvents=function(t,e,s){t.events||(t.events={}),i.each(e,function(e){t.events[e]=function(){s.apply(t,arguments)},i.addEvent(t.chart.canvas,e,t.events[e])})},i.unbindEvents=function(t,e){i.each(e,function(e,s){i.removeEvent(t.chart.canvas,s,e)})},i.getConstraintWidth=function(t){var e,i=document.defaultView.getComputedStyle(t)["max-width"],s=document.defaultView.getComputedStyle(t.parentNode)["max-width"],a=null!==i&&"none"!==i,o=null!==s&&"none"!==s;return(a||o)&&(e=Math.min(a?parseInt(i,10):Number.POSITIVE_INFINITY,o?parseInt(s,10):Number.POSITIVE_INFINITY)),e},i.getConstraintHeight=function(t){var e,i=document.defaultView.getComputedStyle(t)["max-height"],s=document.defaultView.getComputedStyle(t.parentNode)["max-height"],a=null!==i&&"none"!==i,o=null!==s&&"none"!==s;return(i||s)&&(e=Math.min(a?parseInt(i,10):Number.POSITIVE_INFINITY,o?parseInt(s,10):Number.POSITIVE_INFINITY)),e},i.getMaximumWidth=function(t){var e=t.parentNode,s=parseInt(i.getStyle(e,"padding-left"))+parseInt(i.getStyle(e,"padding-right")),a=e.clientWidth-s,o=i.getConstraintWidth(t);return void 0!==o&&(a=Math.min(a,o)),a},i.getMaximumHeight=function(t){var e=t.parentNode,s=parseInt(i.getStyle(e,"padding-top"))+parseInt(i.getStyle(e,"padding-bottom")),a=e.clientHeight-s,o=i.getConstraintHeight(t);return void 0!==o&&(a=Math.min(a,o)),a},i.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},i.retinaScale=function(t){var e=t.ctx,i=t.canvas.width,s=t.canvas.height,a=t.currentDevicePixelRatio=window.devicePixelRatio||1;1!==a&&(e.canvas.height=s*a,e.canvas.width=i*a,e.scale(a,a),e.canvas.style.width=i+"px",e.canvas.style.height=s+"px",t.originalDevicePixelRatio=t.originalDevicePixelRatio||a)},i.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},i.fontString=function(t,e,i){return e+" "+t+"px "+i},i.longestText=function(t,e,s,a){a=a||{},a.data=a.data||{},a.garbageCollect=a.garbageCollect||[],a.font!==e&&(a.data={},a.garbageCollect=[],a.font=e),t.font=e;var o=0;i.each(s,function(e){var i=a.data[e];i||(i=a.data[e]=t.measureText(e).width,a.garbageCollect.push(e)),i>o&&(o=i)});var n=a.garbageCollect.length/2;if(n>s.length)for(var r=0;n>r;r++){var h=a.garbageCollect.shift();delete a.data[h]}return o},i.drawRoundedRectangle=function(t,e,i,s,a,o){t.beginPath(),t.moveTo(e+o,i),t.lineTo(e+s-o,i),t.quadraticCurveTo(e+s,i,e+s,i+o),t.lineTo(e+s,i+a-o),t.quadraticCurveTo(e+s,i+a,e+s-o,i+a),t.lineTo(e+o,i+a),t.quadraticCurveTo(e,i+a,e,i+a-o),t.lineTo(e,i+o),t.quadraticCurveTo(e,i,e+o,i),t.closePath()},i.color=function(e){return t.Color?t.Color(e):(console.log("Color.js not found!"),e)},i.addResizeListener=function(t,e){var i=document.createElement("iframe"),s="chartjs-hidden-iframe";i.classlist?i.classlist.add(s):i.setAttribute("class",s),i.style.width="100%",i.style.display="block",i.style.border=0,i.style.height=0,i.style.margin=0,i.style.position="absolute",i.style.left=0,i.style.right=0,i.style.top=0,i.style.bottom=0,t.insertBefore(i,t.firstChild);(i.contentWindow||i).onresize=function(){e&&e()}},i.removeResizeListener=function(t){var e=t.querySelector(".chartjs-hidden-iframe");e&&e.parentNode.removeChild(e)},i.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===Object.prototype.toString.call(arg)},i.isDatasetVisible=function(t){return!t.hidden},i.callCallback=function(t,e,i){t&&"function"==typeof t.call&&t.apply(i,e)}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.elements={},e.Element=function(t){i.extend(this,t),this.initialize.apply(this,arguments)},i.extend(e.Element.prototype,{initialize:function(){},pivot:function(){return this._view||(this._view=i.clone(this._model)),this._start=i.clone(this._view),this},transition:function(t){return this._view||(this._view=i.clone(this._model)),1===t?(this._view=this._model,this._start=null,this):(this._start||this.pivot(),i.each(this._model,function(e,s){if("_"!==s[0]&&this._model.hasOwnProperty(s))if(this._view.hasOwnProperty(s))if(e===this._view[s]);else if("string"==typeof e)try{var a=i.color(this._start[s]).mix(i.color(this._model[s]),t);this._view[s]=a.rgbString()}catch(o){this._view[s]=e}else if("number"==typeof e){var n=void 0!==this._start[s]&&isNaN(this._start[s])===!1?this._start[s]:0;this._view[s]=(this._model[s]-n)*t+n}else this._view[s]=e;else"number"!=typeof e||isNaN(this._view[s])?this._view[s]=e:this._view[s]=e*t;else;},this),this)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return i.isNumber(this._model.x)&&i.isNumber(this._model.y)}}),e.Element.extend=i.inherits}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:i.noop,onComplete:i.noop},e.Animation=e.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),e.animationService={frameDuration:17,animations:[],dropFrames:0,addAnimation:function(t,e,s,a){a||(t.animating=!0);for(var o=0;o<this.animations.length;++o)if(this.animations[o].chartInstance===t)return void(this.animations[o].animationObject=e);this.animations.push({chartInstance:t,animationObject:e}),1==this.animations.length&&i.requestAnimFrame.call(window,this.digestWrapper)},cancelAnimation:function(t){var e=i.findNextWhere(this.animations,function(e){return e.chartInstance===t});e&&(this.animations.splice(e,1),t.animating=!1)},digestWrapper:function(){e.animationService.startDigest.call(e.animationService)},startDigest:function(){var t=Date.now(),e=0;this.dropFrames>1&&(e=Math.floor(this.dropFrames),this.dropFrames=this.dropFrames%1);for(var s=0;s<this.animations.length;s++)null===this.animations[s].animationObject.currentStep&&(this.animations[s].animationObject.currentStep=0),this.animations[s].animationObject.currentStep+=1+e,this.animations[s].animationObject.currentStep>this.animations[s].animationObject.numSteps&&(this.animations[s].animationObject.currentStep=this.animations[s].animationObject.numSteps),this.animations[s].animationObject.render(this.animations[s].chartInstance,this.animations[s].animationObject),this.animations[s].animationObject.onAnimationProgress&&this.animations[s].animationObject.onAnimationProgress.call&&this.animations[s].animationObject.onAnimationProgress.call(this.animations[s].chartInstance,this.animations[s]),this.animations[s].animationObject.currentStep==this.animations[s].animationObject.numSteps&&(this.animations[s].animationObject.onAnimationComplete&&this.animations[s].animationObject.onAnimationComplete.call&&this.animations[s].animationObject.onAnimationComplete.call(this.animations[s].chartInstance,this.animations[s]),this.animations[s].chartInstance.animating=!1,this.animations.splice(s,1),s--);var a=Date.now(),o=(a-t)/this.frameDuration;this.dropFrames+=o,this.animations.length>0&&i.requestAnimFrame.call(window,this.digestWrapper)}}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.types={},e.instances={},e.controllers={},e.Controller=function(t){return this.chart=t,this.config=t.config,this.options=this.config.options=i.configMerge(e.defaults.global,e.defaults[this.config.type],this.config.options||{}),this.id=i.uid(),Object.defineProperty(this,"data",{get:function(){return this.config.data}}),e.instances[this.id]=this,this.options.responsive&&this.resize(!0),this.initialize.call(this),this},i.extend(e.Controller.prototype,{initialize:function(){return this.bindEvents(),this.ensureScalesHaveIDs(),this.buildOrUpdateControllers(),this.buildScales(),this.buildSurroundingItems(),this.updateLayout(),this.resetElements(),this.initToolTip(),this.draw(),this.update(),this},clear:function(){return i.clear(this.chart),this},stop:function(){return e.animationService.cancelAnimation(this),this},resize:function(t){var e=this.chart.canvas,s=i.getMaximumWidth(this.chart.canvas),a=this.options.maintainAspectRatio&&isNaN(this.chart.aspectRatio)===!1&&isFinite(this.chart.aspectRatio)&&0!==this.chart.aspectRatio?s/this.chart.aspectRatio:i.getMaximumHeight(this.chart.canvas),o=this.chart.width!==s||this.chart.height!==a;return o?(e.width=this.chart.width=s,e.height=this.chart.height=a,i.retinaScale(this.chart),t||(this.stop(),this.update(this.options.responsiveAnimationDuration)),this):this},ensureScalesHaveIDs:function(){var t="x-axis-",e="y-axis-";this.options.scales&&(this.options.scales.xAxes&&this.options.scales.xAxes.length&&i.each(this.options.scales.xAxes,function(e,i){e.id=e.id||t+i}),this.options.scales.yAxes&&this.options.scales.yAxes.length&&i.each(this.options.scales.yAxes,function(t,i){t.id=t.id||e+i}))},buildScales:function(){if(this.scales={},this.options.scales&&(this.options.scales.xAxes&&this.options.scales.xAxes.length&&i.each(this.options.scales.xAxes,function(t,i){var s=e.scaleService.getScaleConstructor(t.type);if(s){var a=new s({ctx:this.chart.ctx,options:t,chart:this,id:t.id});this.scales[a.id]=a}},this),this.options.scales.yAxes&&this.options.scales.yAxes.length&&i.each(this.options.scales.yAxes,function(t,i){var s=e.scaleService.getScaleConstructor(t.type);if(s){var a=new s({ctx:this.chart.ctx,options:t,chart:this,id:t.id});this.scales[a.id]=a}},this)),this.options.scale){var t=e.scaleService.getScaleConstructor(this.options.scale.type);if(t){var s=new t({ctx:this.chart.ctx,options:this.options.scale,chart:this});this.scale=s,this.scales.radialScale=s}}e.scaleService.addScalesToLayout(this)},buildSurroundingItems:function(){this.options.title&&(this.titleBlock=new e.Title({ctx:this.chart.ctx,options:this.options.title,chart:this}),e.layoutService.addBox(this,this.titleBlock)),this.options.legend&&(this.legend=new e.Legend({ctx:this.chart.ctx,options:this.options.legend,chart:this}),e.layoutService.addBox(this,this.legend))},updateLayout:function(){e.layoutService.update(this,this.chart.width,this.chart.height)},buildOrUpdateControllers:function(){var t=[],s=[];if(i.each(this.data.datasets,function(i,a){i.type||(i.type=this.config.type);var o=i.type;t.push(o),i.controller?i.controller.updateIndex(a):(i.controller=new e.controllers[o](this,a),s.push(i.controller))},this),t.length>1)for(var a=1;a<t.length;a++)if(t[a]!=t[a-1]){this.isCombo=!0;break}return s},resetElements:function(){i.each(this.data.datasets,function(t,e){t.controller.reset()})},update:function(t,s){this.tooltip._data=this.data;var a=this.buildOrUpdateControllers();e.layoutService.update(this,this.chart.width,this.chart.height),i.each(a,function(t){t.reset()}),i.each(this.data.datasets,function(t,e){t.controller.buildOrUpdateElements()}),i.each(this.data.datasets,function(t,e){t.controller.update()}),this.render(t,s)},render:function(t,s){if(this.options.animation&&("undefined"!=typeof t&&0!==t||"undefined"==typeof t&&0!==this.options.animation.duration)){var a=new e.Animation;a.numSteps=(t||this.options.animation.duration)/16.66,a.easing=this.options.animation.easing,a.render=function(t,e){var s=i.easingEffects[e.easing],a=e.currentStep/e.numSteps,o=s(a);t.draw(o,a,e.currentStep)},a.onAnimationProgress=this.options.animation.onProgress,a.onAnimationComplete=this.options.animation.onComplete,e.animationService.addAnimation(this,a,t,s)}else this.draw(),this.options.animation&&this.options.animation.onComplete&&this.options.animation.onComplete.call&&this.options.animation.onComplete.call(this);return this},draw:function(t){var e=t||1;this.clear(),i.each(this.boxes,function(t){t.draw(this.chartArea)},this),this.scale&&this.scale.draw(),i.each(this.data.datasets,function(e,s){i.isDatasetVisible(e)&&e.controller.draw(t)}),this.tooltip.transition(e).draw()},getElementAtEvent:function(t){var e=i.getRelativePosition(t,this.chart),s=[];return i.each(this.data.datasets,function(t,a){i.isDatasetVisible(t)&&i.each(t.metaData,function(t,i){return t.inRange(e.x,e.y)?(s.push(t),s):void 0})}),s},getElementsAtEvent:function(t){var e=i.getRelativePosition(t,this.chart),s=[],a=function(){for(var t=0;t<this.data.datasets.length;t++)if(i.isDatasetVisible(this.data.datasets[t]))for(var s=0;s<this.data.datasets[t].metaData.length;s++)if(this.data.datasets[t].metaData[s].inRange(e.x,e.y))return this.data.datasets[t].metaData[s]}.call(this);return a?(i.each(this.data.datasets,function(t,e){i.isDatasetVisible(t)&&s.push(t.metaData[a._index])}),s):s},getDatasetAtEvent:function(t){var e=this.getElementAtEvent(t);return e.length>0&&(e=this.data.datasets[e[0]._datasetIndex].metaData),e},generateLegend:function(){return this.options.legendCallback(this)},destroy:function(){this.clear(),i.unbindEvents(this,this.events),i.removeResizeListener(this.chart.canvas.parentNode);var t=this.chart.canvas;t.width=this.chart.width,t.height=this.chart.height,void 0!==this.chart.originalDevicePixelRatio&&this.chart.ctx.scale(1/this.chart.originalDevicePixelRatio,1/this.chart.originalDevicePixelRatio),t.style.width=this.chart.originalCanvasStyleWidth,t.style.height=this.chart.originalCanvasStyleHeight,delete e.instances[this.id]},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)},initToolTip:function(){this.tooltip=new e.Tooltip({_chart:this.chart,_chartInstance:this,_data:this.data,_options:this.options},this)},bindEvents:function(){i.bindEvents(this,this.options.events,function(t){this.eventHandler(t)})},eventHandler:function(t){if(this.lastActive=this.lastActive||[],this.lastTooltipActive=this.lastTooltipActive||[],"mouseout"==t.type)this.active=[],this.tooltipActive=[];else{var e=this,s=function(i){switch(i){case"single":return e.getElementAtEvent(t);case"label":return e.getElementsAtEvent(t);case"dataset":return e.getDatasetAtEvent(t);default:return t}};this.active=s(this.options.hover.mode),this.tooltipActive=s(this.options.tooltips.mode)}this.options.hover.onHover&&this.options.hover.onHover.call(this,this.active),("mouseup"==t.type||"click"==t.type)&&(this.options.onClick&&this.options.onClick.call(this,t,this.active),this.legend&&this.legend.handleEvent&&this.legend.handleEvent(t));if(this.lastActive.length)switch(this.options.hover.mode){case"single":this.data.datasets[this.lastActive[0]._datasetIndex].controller.removeHoverStyle(this.lastActive[0],this.lastActive[0]._datasetIndex,this.lastActive[0]._index);break;case"label":case"dataset":for(var a=0;a<this.lastActive.length;a++)this.lastActive[a]&&this.data.datasets[this.lastActive[a]._datasetIndex].controller.removeHoverStyle(this.lastActive[a],this.lastActive[a]._datasetIndex,this.lastActive[a]._index)}if(this.active.length&&this.options.hover.mode)switch(this.options.hover.mode){case"single":this.data.datasets[this.active[0]._datasetIndex].controller.setHoverStyle(this.active[0]);break;case"label":case"dataset":for(var o=0;o<this.active.length;o++)this.active[o]&&this.data.datasets[this.active[o]._datasetIndex].controller.setHoverStyle(this.active[o])}if((this.options.tooltips.enabled||this.options.tooltips.custom)&&(this.tooltip.initialize(),this.tooltip._active=this.tooltipActive,this.tooltip.update()),this.tooltip.pivot(),!this.animating){var n;i.each(this.active,function(t,e){t!==this.lastActive[e]&&(n=!0)},this),i.each(this.tooltipActive,function(t,e){t!==this.lastTooltipActive[e]&&(n=!0)},this),(this.lastActive.length!==this.active.length||this.lastTooltipActive.length!==this.tooltipActive.length||n)&&(this.stop(),(this.options.tooltips.enabled||this.options.tooltips.custom)&&this.tooltip.update(!0),this.render(this.options.hover.animationDuration,!0))}return this.lastActive=this.active,this.lastTooltipActive=this.tooltipActive,this}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.DatasetController=function(t,e){this.initialize.call(this,t,e)},i.extend(e.DatasetController.prototype,{initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){this.getDataset().xAxisID||(this.getDataset().xAxisID=this.chart.options.scales.xAxes[0].id),this.getDataset().yAxisID||(this.getDataset().yAxisID=this.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},buildOrUpdateElements:function(){var t=this.getDataset().data.length,e=this.getDataset().metaData.length;if(e>t)this.getDataset().metaData.splice(t,e-t);else if(t>e)for(var i=e;t>i;++i)this.addElementAndReset(i)},addElements:i.noop,addElementAndReset:i.noop,draw:i.noop,removeHoverStyle:i.noop,setHoverStyle:i.noop,update:i.noop}),e.DatasetController.extend=i.inherits}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),t.boxes.push(e)},removeBox:function(t,e){t.boxes&&t.boxes.splice(t.boxes.indexOf(e),1)},update:function(t,e,s){function a(t){var e,i=t.isHorizontal();i?(e=t.update(t.options.fullWidth?p:k,y),S-=e.height):(e=t.update(v,x),k-=e.width),D.push({horizontal:i,minSize:e,box:t})}function o(t){var e=i.findNextWhere(D,function(e){return e.box===t});if(e)if(t.isHorizontal()){var s={left:C,right:w,top:0,bottom:0};t.update(t.options.fullWidth?p:k,f/2,s)}else t.update(e.minSize.width,S)}function n(t){var e=i.findNextWhere(D,function(e){return e.box===t}),s={left:0,right:0,top:_,bottom:A};e&&t.update(e.minSize.width,S,s)}function r(t){t.isHorizontal()?(t.left=t.options.fullWidth?h:C,t.right=t.options.fullWidth?e-h:C+k,t.top=T,t.bottom=T+t.height,T=t.bottom):(t.left=P,t.right=P+t.width,t.top=_,t.bottom=_+S,P=t.right)}if(t){var h=e>30?5:2,l=s>30?5:2,c=i.where(t.boxes,function(t){return"left"==t.options.position}),d=i.where(t.boxes,function(t){return"right"==t.options.position}),u=i.where(t.boxes,function(t){return"top"==t.options.position}),g=i.where(t.boxes,function(t){return"bottom"==t.options.position}),m=i.where(t.boxes,function(t){return"chartArea"==t.options.position});u.sort(function(t,e){return(e.options.fullWidth?1:0)-(t.options.fullWidth?1:0)}),g.sort(function(t,e){return(t.options.fullWidth?1:0)-(e.options.fullWidth?1:0)});var p=e-2*h,f=s-2*l,b=p/2,x=f/2,v=(e-b)/(c.length+d.length),y=(s-x)/(u.length+g.length),k=p,S=f,D=[];i.each(c.concat(d,u,g),a);var C=h,w=h,_=l,A=l;i.each(c.concat(d),o),i.each(c,function(t){C+=t.width}),i.each(d,function(t){w+=t.width}),i.each(u.concat(g),o),i.each(u,function(t){_+=t.height}),i.each(g,function(t){A+=t.height}),i.each(c.concat(d),n),C=h,w=h,_=l,A=l,i.each(c,function(t){C+=t.width}),i.each(d,function(t){w+=t.width}),i.each(u,function(t){_+=t.height}),i.each(g,function(t){A+=t.height});var M=s-_-A,I=e-C-w;(I!==k||M!==S)&&(i.each(c,function(t){t.height=M}),i.each(d,function(t){t.height=M}),i.each(u,function(t){t.width=I}),i.each(g,function(t){t.width=I}),S=M,k=I);var P=h,T=l;i.each(c.concat(u),r),P+=k,T+=S,i.each(d,r),i.each(g,r),t.chartArea={left:C,top:_,right:C+k,bottom:_+S},i.each(m,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,S)})}}}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.global.legend={display:!0,position:"top",fullWidth:!0,onClick:function(t,e){var i=this.chart.data.datasets[e.datasetIndex];i.hidden=!i.hidden,this.chart.update()},labels:{boxWidth:40,fontSize:12,fontStyle:"normal",fontColor:"#666",fontFamily:"Helvetica Neue",padding:10,generateLabels:function(t){return t.datasets.map(function(t,e){return{text:t.label,fillStyle:t.backgroundColor,hidden:t.hidden,lineCap:t.borderCapStyle,lineDash:t.borderDash,lineDashOffset:t.borderDashOffset,lineJoin:t.borderJoinStyle,lineWidth:t.borderWidth,strokeStyle:t.borderColor,datasetIndex:e}},this)}}},e.Legend=e.Element.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:i.noop,update:function(t,e,i){return this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this.margins=i,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this.beforeBuildLabels(),this.buildLabels(),this.afterBuildLabels(),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate(),this.minSize},afterUpdate:i.noop,beforeSetDimensions:i.noop,setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0,this.minSize={width:0,height:0}},afterSetDimensions:i.noop,beforeBuildLabels:i.noop,buildLabels:function(){this.legendItems=this.options.labels.generateLabels.call(this,this.chart.data)},afterBuildLabels:i.noop,beforeFit:i.noop,fit:function(){var t=this.ctx,e=i.fontString(this.options.labels.fontSize,this.options.labels.fontStyle,this.options.labels.fontFamily);if(this.legendHitBoxes=[],this.isHorizontal()?this.minSize.width=this.maxWidth:this.minSize.width=this.options.display?10:0,this.isHorizontal()?this.minSize.height=this.options.display?10:0:this.minSize.height=this.maxHeight,this.options.display&&this.isHorizontal()){this.lineWidths=[0];var s=this.legendItems.length?this.options.labels.fontSize+this.options.labels.padding:0;t.textAlign="left",t.textBaseline="top",t.font=e,i.each(this.legendItems,function(e,i){var a=this.options.labels.boxWidth+this.options.labels.fontSize/2+t.measureText(e.text).width;this.lineWidths[this.lineWidths.length-1]+a>=this.width&&(s+=this.options.labels.fontSize+this.options.labels.padding,this.lineWidths[this.lineWidths.length]=this.left),this.legendHitBoxes[i]={left:0,top:0,width:a,height:this.options.labels.fontSize},this.lineWidths[this.lineWidths.length-1]+=a+this.options.labels.padding},this),this.minSize.height+=s}this.width=this.minSize.width,this.height=this.minSize.height},afterFit:i.noop,isHorizontal:function(){return"top"==this.options.position||"bottom"==this.options.position},draw:function(){if(this.options.display){var t=this.ctx,s={x:this.left+(this.width-this.lineWidths[0])/2,y:this.top+this.options.labels.padding,line:0},a=i.fontString(this.options.labels.fontSize,this.options.labels.fontStyle,this.options.labels.fontFamily);this.isHorizontal()&&(t.textAlign="left",t.textBaseline="top",t.lineWidth=.5,t.strokeStyle=this.options.labels.fontColor,t.fillStyle=this.options.labels.fontColor,t.font=a,i.each(this.legendItems,function(i,a){var o=t.measureText(i.text).width,n=this.options.labels.boxWidth+this.options.labels.fontSize/2+o;s.x+n>=this.width&&(s.y+=this.options.labels.fontSize+this.options.labels.padding,s.line++,s.x=this.left+(this.width-this.lineWidths[s.line])/2),t.save();var r=function(t,e){return void 0!==t?t:e};t.fillStyle=r(i.fillStyle,e.defaults.global.defaultColor),t.lineCap=r(i.lineCap,e.defaults.global.elements.line.borderCapStyle),t.lineDashOffset=r(i.lineDashOffset,e.defaults.global.elements.line.borderDashOffset),t.lineJoin=r(i.lineJoin,e.defaults.global.elements.line.borderJoinStyle),t.lineWidth=r(i.lineWidth,e.defaults.global.elements.line.borderWidth),t.strokeStyle=r(i.strokeStyle,e.defaults.global.defaultColor),t.setLineDash&&t.setLineDash(r(i.lineDash,e.defaults.global.elements.line.borderDash)),t.strokeRect(s.x,s.y,this.options.labels.boxWidth,this.options.labels.fontSize),t.fillRect(s.x,s.y,this.options.labels.boxWidth,this.options.labels.fontSize),t.restore(),this.legendHitBoxes[a].left=s.x,this.legendHitBoxes[a].top=s.y,t.fillText(i.text,this.options.labels.boxWidth+this.options.labels.fontSize/2+s.x,s.y),i.hidden&&(t.beginPath(),t.lineWidth=2,t.moveTo(this.options.labels.boxWidth+this.options.labels.fontSize/2+s.x,s.y+this.options.labels.fontSize/2),t.lineTo(this.options.labels.boxWidth+this.options.labels.fontSize/2+s.x+o,s.y+this.options.labels.fontSize/2),t.stroke()),s.x+=n+this.options.labels.padding},this))}},handleEvent:function(t){var e=i.getRelativePosition(t,this.chart.chart);if(e.x>=this.left&&e.x<=this.right&&e.y>=this.top&&e.y<=this.bottom)for(var s=0;s<this.legendHitBoxes.length;++s){var a=this.legendHitBoxes[s];if(e.x>=a.left&&e.x<=a.left+a.width&&e.y>=a.top&&e.y<=a.top+a.height){this.options.onClick&&this.options.onClick.call(this,t,this.legendItems[s]);break}}}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.scale={display:!0,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawOnChartArea:!0,drawTicks:!0,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",offsetGridLines:!1},scaleLabel:{fontColor:"#666",fontFamily:"Helvetica Neue",fontSize:12,fontStyle:"normal",labelString:"",display:!1},ticks:{beginAtZero:!1,fontSize:12,fontStyle:"normal",fontColor:"#666",fontFamily:"Helvetica Neue",maxRotation:90,mirror:!1,padding:10,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:20,callback:function(t){return""+t}}},e.Scale=e.Element.extend({beforeUpdate:function(){i.callCallback(this.options.beforeUpdate,[this])},update:function(t,e,s){return this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this.margins=i.extend({left:0,right:0,top:0,bottom:0},s),this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this.beforeBuildTicks(),this.buildTicks(),this.afterBuildTicks(),this.beforeTickToLabelConversion(),this.convertTicksToLabels(),this.afterTickToLabelConversion(),this.beforeCalculateTickRotation(),this.calculateTickRotation(),this.afterCalculateTickRotation(),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate(),this.minSize},afterUpdate:function(){i.callCallback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){i.callCallback(this.options.beforeSetDimensions,[this])},setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0},afterSetDimensions:function(){i.callCallback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){i.callCallback(this.options.beforeDataLimits,[this])},determineDataLimits:i.noop,afterDataLimits:function(){i.callCallback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){i.callCallback(this.options.beforeBuildTicks,[this])},buildTicks:i.noop,afterBuildTicks:function(){i.callCallback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){i.callCallback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){this.ticks=this.ticks.map(function(t,e,i){return this.options.ticks.userCallback?this.options.ticks.userCallback(t,e,i):this.options.ticks.callback(t,e,i)},this)},afterTickToLabelConversion:function(){i.callCallback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){i.callCallback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=i.fontString(this.options.ticks.fontSize,this.options.ticks.fontStyle,this.options.ticks.fontFamily);this.ctx.font=t;var e,s=this.ctx.measureText(this.ticks[0]).width,a=this.ctx.measureText(this.ticks[this.ticks.length-1]).width;if(this.labelRotation=0,this.paddingRight=0,this.paddingLeft=0,this.options.display&&this.isHorizontal()){this.paddingRight=a/2+3,this.paddingLeft=s/2+3,this.longestTextCache||(this.longestTextCache={});for(var o,n,r=i.longestText(this.ctx,t,this.ticks,this.longestTextCache),h=r,l=this.getPixelForTick(1)-this.getPixelForTick(0)-6;h>l&&this.labelRotation<this.options.ticks.maxRotation;){if(o=Math.cos(i.toRadians(this.labelRotation)),n=Math.sin(i.toRadians(this.labelRotation)),e=o*s,e+this.options.ticks.fontSize/2>this.yLabelWidth&&(this.paddingLeft=e+this.options.ticks.fontSize/2),this.paddingRight=this.options.ticks.fontSize/2,n*r>this.maxHeight){this.labelRotation--;break}this.labelRotation++,h=o*r}}this.margins&&(this.paddingLeft=Math.max(this.paddingLeft-this.margins.left,0),this.paddingRight=Math.max(this.paddingRight-this.margins.right,0))},afterCalculateTickRotation:function(){i.callCallback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){i.callCallback(this.options.beforeFit,[this])},fit:function(){if(this.minSize={width:0,height:0},this.isHorizontal()?this.minSize.width=this.isFullWidth()?this.maxWidth-this.margins.left-this.margins.right:this.maxWidth:this.minSize.width=this.options.gridLines.display&&this.options.display?10:0,this.isHorizontal()?this.minSize.height=this.options.gridLines.display&&this.options.display?10:0:this.minSize.height=this.maxHeight,this.options.scaleLabel.display&&(this.isHorizontal()?this.minSize.height+=1.5*this.options.scaleLabel.fontSize:this.minSize.width+=1.5*this.options.scaleLabel.fontSize),this.options.ticks.display&&this.options.display){var t=i.fontString(this.options.ticks.fontSize,this.options.ticks.fontStyle,this.options.ticks.fontFamily);this.longestTextCache||(this.longestTextCache={});var e=i.longestText(this.ctx,t,this.ticks,this.longestTextCache);if(this.isHorizontal()){this.longestLabelWidth=e;var s=Math.sin(i.toRadians(this.labelRotation))*this.longestLabelWidth+1.5*this.options.ticks.fontSize;this.minSize.height=Math.min(this.maxHeight,this.minSize.height+s),t=i.fontString(this.options.ticks.fontSize,this.options.ticks.fontStyle,this.options.ticks.fontFamily),this.ctx.font=t;var a=this.ctx.measureText(this.ticks[0]).width,o=this.ctx.measureText(this.ticks[this.ticks.length-1]).width,n=Math.cos(i.toRadians(this.labelRotation)),r=Math.sin(i.toRadians(this.labelRotation));this.paddingLeft=0!==this.labelRotation?n*a+3:a/2+3,this.paddingRight=0!==this.labelRotation?r*(this.options.ticks.fontSize/2)+3:o/2+3}else{var h=this.maxWidth-this.minSize.width;this.options.ticks.mirror||(e+=this.options.ticks.padding),h>e?this.minSize.width+=e:this.minSize.width=this.maxWidth,this.paddingTop=this.options.ticks.fontSize/2,this.paddingBottom=this.options.ticks.fontSize/2}}this.margins&&(this.paddingLeft=Math.max(this.paddingLeft-this.margins.left,0),this.paddingTop=Math.max(this.paddingTop-this.margins.top,0),this.paddingRight=Math.max(this.paddingRight-this.margins.right,0),this.paddingBottom=Math.max(this.paddingBottom-this.margins.bottom,0)),this.width=this.minSize.width,this.height=this.minSize.height},afterFit:function(){i.callCallback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function s(t){return null===t||"undefined"==typeof t?NaN:"number"==typeof t&&isNaN(t)?NaN:"object"==typeof t?t instanceof Date?t:s(this.isHorizontal()?t.x:t.y):t},getLabelForIndex:i.noop,getPixelForValue:i.noop,getPixelForTick:function(t,e){if(this.isHorizontal()){
|
39 |
+
var i=this.width-(this.paddingLeft+this.paddingRight),s=i/Math.max(this.ticks.length-(this.options.gridLines.offsetGridLines?0:1),1),a=s*t+this.paddingLeft;e&&(a+=s/2);var o=this.left+Math.round(a);return o+=this.isFullWidth()?this.margins.left:0}var n=this.height-(this.paddingTop+this.paddingBottom);return this.top+t*(n/(this.ticks.length-1))},getPixelForDecimal:function(t){if(this.isHorizontal()){var e=this.width-(this.paddingLeft+this.paddingRight),i=e*t+this.paddingLeft,s=this.left+Math.round(i);return s+=this.isFullWidth()?this.margins.left:0}return this.top+t*this.height},draw:function(t){if(this.options.display){var e,s,a,o,n,r=0!==this.labelRotation,h=this.options.ticks.autoSkip;this.options.ticks.maxTicksLimit&&(n=this.options.ticks.maxTicksLimit),this.ctx.fillStyle=this.options.ticks.fontColor;var l=i.fontString(this.options.ticks.fontSize,this.options.ticks.fontStyle,this.options.ticks.fontFamily),c=Math.cos(i.toRadians(this.labelRotation)),d=Math.sin(i.toRadians(this.labelRotation)),u=this.longestLabelWidth*c;this.options.ticks.fontSize*d;if(this.isHorizontal()){e=!0;var g="bottom"===this.options.position?this.top:this.bottom-10,m="bottom"===this.options.position?this.top+10:this.bottom;if(s=!1,(u/2+this.options.ticks.autoSkipPadding)*this.ticks.length>this.width-(this.paddingLeft+this.paddingRight)&&(s=1+Math.floor((u/2+this.options.ticks.autoSkipPadding)*this.ticks.length/(this.width-(this.paddingLeft+this.paddingRight)))),h||(s=!1),n&&this.ticks.length>n)for(;!s||this.ticks.length/(s||1)>n;)s||(s=1),s+=1;i.each(this.ticks,function(a,o){var n=this.ticks.length==o+1,h=s>1&&o%s>0;if((!h||n)&&void 0!==a&&null!==a){var c=this.getPixelForTick(o),d=this.getPixelForTick(o,this.options.gridLines.offsetGridLines);this.options.gridLines.display&&(o===("undefined"!=typeof this.zeroLineIndex?this.zeroLineIndex:0)?(this.ctx.lineWidth=this.options.gridLines.zeroLineWidth,this.ctx.strokeStyle=this.options.gridLines.zeroLineColor,e=!0):e&&(this.ctx.lineWidth=this.options.gridLines.lineWidth,this.ctx.strokeStyle=this.options.gridLines.color,e=!1),c+=i.aliasPixel(this.ctx.lineWidth),this.ctx.beginPath(),this.options.gridLines.drawTicks&&(this.ctx.moveTo(c,g),this.ctx.lineTo(c,m)),this.options.gridLines.drawOnChartArea&&(this.ctx.moveTo(c,t.top),this.ctx.lineTo(c,t.bottom)),this.ctx.stroke()),this.options.ticks.display&&(this.ctx.save(),this.ctx.translate(d,r?this.top+12:"top"===this.options.position?this.bottom-10:this.top+10),this.ctx.rotate(-1*i.toRadians(this.labelRotation)),this.ctx.font=l,this.ctx.textAlign=r?"right":"center",this.ctx.textBaseline=r?"middle":"top"===this.options.position?"bottom":"top",this.ctx.fillText(a,0,0),this.ctx.restore())}},this),this.options.scaleLabel.display&&(this.ctx.textAlign="center",this.ctx.textBaseline="middle",this.ctx.fillStyle=this.options.scaleLabel.fontColor,this.ctx.font=i.fontString(this.options.scaleLabel.fontSize,this.options.scaleLabel.fontStyle,this.options.scaleLabel.fontFamily),a=this.left+(this.right-this.left)/2,o="bottom"===this.options.position?this.bottom-this.options.scaleLabel.fontSize/2:this.top+this.options.scaleLabel.fontSize/2,this.ctx.fillText(this.options.scaleLabel.labelString,a,o))}else{e=!0;var p="right"===this.options.position?this.left:this.right-5,f="right"===this.options.position?this.left+5:this.right;if(i.each(this.ticks,function(s,a){if(void 0!==s&&null!==s){var o=this.getPixelForTick(a);if(this.options.gridLines.display&&(a===("undefined"!=typeof this.zeroLineIndex?this.zeroLineIndex:0)?(this.ctx.lineWidth=this.options.gridLines.zeroLineWidth,this.ctx.strokeStyle=this.options.gridLines.zeroLineColor,e=!0):e&&(this.ctx.lineWidth=this.options.gridLines.lineWidth,this.ctx.strokeStyle=this.options.gridLines.color,e=!1),o+=i.aliasPixel(this.ctx.lineWidth),this.ctx.beginPath(),this.options.gridLines.drawTicks&&(this.ctx.moveTo(p,o),this.ctx.lineTo(f,o)),this.options.gridLines.drawOnChartArea&&(this.ctx.moveTo(t.left,o),this.ctx.lineTo(t.right,o)),this.ctx.stroke()),this.options.ticks.display){var n,r=this.getPixelForTick(a,this.options.gridLines.offsetGridLines);this.ctx.save(),"left"===this.options.position?this.options.ticks.mirror?(n=this.right+this.options.ticks.padding,this.ctx.textAlign="left"):(n=this.right-this.options.ticks.padding,this.ctx.textAlign="right"):this.options.ticks.mirror?(n=this.left-this.options.ticks.padding,this.ctx.textAlign="right"):(n=this.left+this.options.ticks.padding,this.ctx.textAlign="left"),this.ctx.translate(n,r),this.ctx.rotate(-1*i.toRadians(this.labelRotation)),this.ctx.font=l,this.ctx.textBaseline="middle",this.ctx.fillText(s,0,0),this.ctx.restore()}}},this),this.options.scaleLabel.display){a="left"===this.options.position?this.left+this.options.scaleLabel.fontSize/2:this.right-this.options.scaleLabel.fontSize/2,o=this.top+(this.bottom-this.top)/2;var b="left"===this.options.position?-.5*Math.PI:.5*Math.PI;this.ctx.save(),this.ctx.translate(a,o),this.ctx.rotate(b),this.ctx.textAlign="center",this.ctx.fillStyle=this.options.scaleLabel.fontColor,this.ctx.font=i.fontString(this.options.scaleLabel.fontSize,this.options.scaleLabel.fontStyle,this.options.scaleLabel.fontFamily),this.ctx.textBaseline="middle",this.ctx.fillText(this.options.scaleLabel.labelString,0,0),this.ctx.restore()}}this.ctx.lineWidth=this.options.gridLines.lineWidth,this.ctx.strokeStyle=this.options.gridLines.color;var x=this.left,v=this.right,y=this.top,k=this.bottom;this.isHorizontal()?(y=k="top"===this.options.position?this.bottom:this.top,y+=i.aliasPixel(this.ctx.lineWidth),k+=i.aliasPixel(this.ctx.lineWidth)):(x=v="left"===this.options.position?this.right:this.left,x+=i.aliasPixel(this.ctx.lineWidth),v+=i.aliasPixel(this.ctx.lineWidth)),this.ctx.beginPath(),this.ctx.moveTo(x,y),this.ctx.lineTo(v,k),this.ctx.stroke()}}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,s){this.constructors[t]=e,this.defaults[t]=i.clone(s)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?i.scaleMerge(e.defaults.scale,this.defaults[t]):{}},addScalesToLayout:function(t){i.each(t.scales,function(i){e.layoutService.addBox(t,i)})}}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.global.title={display:!1,position:"top",fullWidth:!0,fontColor:"#666",fontFamily:"Helvetica Neue",fontSize:12,fontStyle:"bold",padding:10,text:""},e.Title=e.Element.extend({initialize:function(t){i.extend(this,t),this.options=i.configMerge(e.defaults.global.title,t.options),this.legendHitBoxes=[]},beforeUpdate:i.noop,update:function(t,e,i){return this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this.margins=i,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this.beforeBuildLabels(),this.buildLabels(),this.afterBuildLabels(),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate(),this.minSize},afterUpdate:i.noop,beforeSetDimensions:i.noop,setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0,this.minSize={width:0,height:0}},afterSetDimensions:i.noop,beforeBuildLabels:i.noop,buildLabels:i.noop,afterBuildLabels:i.noop,beforeFit:i.noop,fit:function(){this.ctx,i.fontString(this.options.fontSize,this.options.fontStyle,this.options.fontFamily);this.isHorizontal()?this.minSize.width=this.maxWidth:this.minSize.width=0,this.isHorizontal()?this.minSize.height=0:this.minSize.height=this.maxHeight,this.isHorizontal()&&this.options.display&&(this.minSize.height+=this.options.fontSize+2*this.options.padding),this.width=this.minSize.width,this.height=this.minSize.height},afterFit:i.noop,isHorizontal:function(){return"top"==this.options.position||"bottom"==this.options.position},draw:function(){if(this.options.display){var t,e,s=this.ctx;if(this.isHorizontal())this.options.display&&(s.textAlign="center",s.textBaseline="middle",s.fillStyle=this.options.fontColor,s.font=i.fontString(this.options.fontSize,this.options.fontStyle,this.options.fontFamily),t=this.left+(this.right-this.left)/2,e=this.top+(this.bottom-this.top)/2,s.fillText(this.options.text,t,e));else if(this.options.display){t="left"==this.options.position?this.left+this.options.fontSize/2:this.right-this.options.fontSize/2,e=this.top+(this.bottom-this.top)/2;var a="left"==this.options.position?-.5*Math.PI:.5*Math.PI;s.save(),s.translate(t,e),s.rotate(a),s.textAlign="center",s.fillStyle=this.options.fontColor,s.font=i.fontString(this.options.fontSize,this.options.fontStyle,this.options.fontFamily),s.textBaseline="middle",s.fillText(this.options.text,0,0),s.restore()}}}})}.call(this),function(){"use strict";function t(t,e){return e&&(s.isArray(e)?t=t.concat(e):t.push(e)),t}var e=this,i=e.Chart,s=i.helpers;i.defaults.global.tooltips={enabled:!0,custom:null,mode:"single",backgroundColor:"rgba(0,0,0,0.8)",titleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",titleFontSize:12,titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleColor:"#fff",titleAlign:"left",bodyFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",bodyFontSize:12,bodyFontStyle:"normal",bodySpacing:2,bodyColor:"#fff",bodyAlign:"left",footerFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",footerFontSize:12,footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",callbacks:{beforeTitle:s.noop,title:function(t,e){var i="";return t.length>0&&(t[0].xLabel?i=t[0].xLabel:e.labels.length>0&&t[0].index<e.labels.length&&(i=e.labels[t[0].index])),i},afterTitle:s.noop,beforeBody:s.noop,beforeLabel:s.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i+": "+t.yLabel},afterLabel:s.noop,afterBody:s.noop,beforeFooter:s.noop,footer:s.noop,afterFooter:s.noop}},i.Tooltip=i.Element.extend({initialize:function(){var t=this._options;s.extend(this,{_model:{xPadding:t.tooltips.xPadding,yPadding:t.tooltips.yPadding,bodyColor:t.tooltips.bodyColor,_bodyFontFamily:t.tooltips.bodyFontFamily,_bodyFontStyle:t.tooltips.bodyFontStyle,_bodyAlign:t.tooltips.bodyAlign,bodyFontSize:t.tooltips.bodyFontSize,bodySpacing:t.tooltips.bodySpacing,titleColor:t.tooltips.titleColor,_titleFontFamily:t.tooltips.titleFontFamily,_titleFontStyle:t.tooltips.titleFontStyle,titleFontSize:t.tooltips.titleFontSize,_titleAlign:t.tooltips.titleAlign,titleSpacing:t.tooltips.titleSpacing,titleMarginBottom:t.tooltips.titleMarginBottom,footerColor:t.tooltips.footerColor,_footerFontFamily:t.tooltips.footerFontFamily,_footerFontStyle:t.tooltips.footerFontStyle,footerFontSize:t.tooltips.footerFontSize,_footerAlign:t.tooltips.footerAlign,footerSpacing:t.tooltips.footerSpacing,footerMarginTop:t.tooltips.footerMarginTop,caretSize:t.tooltips.caretSize,cornerRadius:t.tooltips.cornerRadius,backgroundColor:t.tooltips.backgroundColor,opacity:0,legendColorBackground:t.tooltips.multiKeyBackground}})},getTitle:function(){var e=this._options.tooltips.callbacks.beforeTitle.apply(this,arguments),i=this._options.tooltips.callbacks.title.apply(this,arguments),s=this._options.tooltips.callbacks.afterTitle.apply(this,arguments),a=[];return a=t(a,e),a=t(a,i),a=t(a,s)},getBeforeBody:function(){var t=this._options.tooltips.callbacks.beforeBody.apply(this,arguments);return s.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=[];return s.each(t,function(t){var s=this._options.tooltips.callbacks.beforeLabel.call(this,t,e)||"",a=this._options.tooltips.callbacks.label.call(this,t,e)||"",o=this._options.tooltips.callbacks.afterLabel.call(this,t,e)||"";i.push(s+a+o)},this),i},getAfterBody:function(){var t=this._options.tooltips.callbacks.afterBody.apply(this,arguments);return s.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var e=this._options.tooltips.callbacks.beforeFooter.apply(this,arguments),i=this._options.tooltips.callbacks.footer.apply(this,arguments),s=this._options.tooltips.callbacks.afterFooter.apply(this,arguments),a=[];return a=t(a,e),a=t(a,i),a=t(a,s)},getAveragePosition:function(t){if(!t.length)return!1;var e=[],i=[];s.each(t,function(t){if(t){var s=t.tooltipPosition();e.push(s.x),i.push(s.y)}});for(var a=0,o=0,n=0;n<e.length;n++)a+=e[n],o+=i[n];return{x:Math.round(a/e.length),y:Math.round(o/e.length)}},update:function(t){if(this._active.length){this._model.opacity=1;var e,i=this._active[0],a=[],o=[];if("single"===this._options.tooltips.mode){var n=i._yScale||i._scale;o.push({xLabel:i._xScale?i._xScale.getLabelForIndex(i._index,i._datasetIndex):"",yLabel:n?n.getLabelForIndex(i._index,i._datasetIndex):"",index:i._index,datasetIndex:i._datasetIndex}),e=this.getAveragePosition(this._active)}else s.each(this._data.datasets,function(t,e){if(s.isDatasetVisible(t)){var a=t.metaData[i._index];if(a){var n=i._yScale||i._scale;o.push({xLabel:a._xScale?a._xScale.getLabelForIndex(a._index,a._datasetIndex):"",yLabel:n?n.getLabelForIndex(a._index,a._datasetIndex):"",index:i._index,datasetIndex:e})}}}),s.each(this._active,function(t){t&&a.push({borderColor:t._view.borderColor,backgroundColor:t._view.backgroundColor})}),e=this.getAveragePosition(this._active),e.y=this._active[0]._yScale.getPixelForDecimal(.5);s.extend(this._model,{title:this.getTitle(o,this._data),beforeBody:this.getBeforeBody(o,this._data),body:this.getBody(o,this._data),afterBody:this.getAfterBody(o,this._data),footer:this.getFooter(o,this._data)}),s.extend(this._model,{x:Math.round(e.x),y:Math.round(e.y),caretPadding:s.getValueOrDefault(e.padding,2),labelColors:a});var r=this.getTooltipSize(this._model);this.determineAlignment(r),s.extend(this._model,this.getBackgroundPoint(this._model,r))}else this._model.opacity=0;return t&&this._options.tooltips.custom&&this._options.tooltips.custom.call(this,this._model),this},getTooltipSize:function(t){var e=this._chart.ctx,i={height:2*t.yPadding,width:0},a=t.body.length+t.beforeBody.length+t.afterBody.length;return i.height+=t.title.length*t.titleFontSize,i.height+=(t.title.length-1)*t.titleSpacing,i.height+=t.title.length?t.titleMarginBottom:0,i.height+=a*t.bodyFontSize,i.height+=a?(a-1)*t.bodySpacing:0,i.height+=t.footer.length?t.footerMarginTop:0,i.height+=t.footer.length*t.footerFontSize,i.height+=t.footer.length?(t.footer.length-1)*t.footerSpacing:0,e.font=s.fontString(t.titleFontSize,t._titleFontStyle,t._titleFontFamily),s.each(t.title,function(t){i.width=Math.max(i.width,e.measureText(t).width)}),e.font=s.fontString(t.bodyFontSize,t._bodyFontStyle,t._bodyFontFamily),s.each(t.beforeBody.concat(t.afterBody),function(t){i.width=Math.max(i.width,e.measureText(t).width)}),s.each(t.body,function(s){i.width=Math.max(i.width,e.measureText(s).width+("single"!==this._options.tooltips.mode?t.bodyFontSize+2:0))},this),e.font=s.fontString(t.footerFontSize,t._footerFontStyle,t._footerFontFamily),s.each(t.footer,function(t){i.width=Math.max(i.width,e.measureText(t).width)}),i.width+=2*t.xPadding,i},determineAlignment:function(t){this._model.xAlign=this._model.yAlign="center",this._model.y<t.height?this._model.yAlign="top":this._model.y>this._chart.height-t.height&&(this._model.yAlign="bottom");var e,i,s,a,o,n=this,r=(this._chartInstance.chartArea.left+this._chartInstance.chartArea.right)/2,h=(this._chartInstance.chartArea.top+this._chartInstance.chartArea.bottom)/2;"center"===this._model.yAlign?(e=function(t){return r>=t},i=function(t){return t>r}):(e=function(e){return e<=t.width/2},i=function(e){return e>=n._chart.width-t.width/2}),s=function(e){return e+t.width>n._chart.width},a=function(e){return e-t.width<0},o=function(t){return h>=t?"top":"bottom"},e(this._model.x)?(this._model.xAlign="left",s(this._model.x)&&(this._model.xAlign="center",this._model.yAlign=o(this._model.y))):i(this._model.x)&&(this._model.xAlign="right",a(this._model.x)&&(this._model.xAlign="center",this._model.yAlign=o(this._model.y)))},getBackgroundPoint:function(t,e){var i={x:t.x,y:t.y};return"right"===t.xAlign?i.x-=e.width:"center"===t.xAlign&&(i.x-=e.width/2),"top"===t.yAlign?i.y+=t.caretPadding+t.caretSize:"bottom"===t.yAlign?i.y-=e.height+t.caretPadding+t.caretSize:i.y-=e.height/2,"center"==t.yAlign?"left"===t.xAlign?i.x+=t.caretPadding+t.caretSize:"right"===t.xAlign&&(i.x-=t.caretPadding+t.caretSize):"left"===t.xAlign?i.x-=t.cornerRadius+t.caretPadding:"right"===t.xAlign&&(i.x+=t.cornerRadius+t.caretPadding),i},drawCaret:function(t,e,i,a){var o,n,r,h,l,c,d=this._view,u=this._chart.ctx;"center"===d.yAlign?("left"===d.xAlign?(o=t.x,n=o-d.caretSize,r=o):(o=t.x+e.width,n=o+d.caretSize,r=o),l=t.y+e.height/2,h=l-d.caretSize,c=l+d.caretSize):("left"===d.xAlign?(o=t.x+d.cornerRadius,n=o+d.caretSize,r=n+d.caretSize):"right"===d.xAlign?(o=t.x+e.width-d.cornerRadius,n=o-d.caretSize,r=n-d.caretSize):(n=t.x+e.width/2,o=n-d.caretSize,r=n+d.caretSize),"top"===d.yAlign?(h=t.y,l=h-d.caretSize,c=h):(h=t.y+e.height,l=h+d.caretSize,c=h)),u.fillStyle=s.color(d.backgroundColor).alpha(i).rgbString(),u.beginPath(),u.moveTo(o,h),u.lineTo(n,l),u.lineTo(r,c),u.closePath(),u.fill()},drawTitle:function(t,e,i,a){e.title.length&&(i.textAlign=e._titleAlign,i.textBaseline="top",i.fillStyle=s.color(e.titleColor).alpha(a).rgbString(),i.font=s.fontString(e.titleFontSize,e._titleFontStyle,e._titleFontFamily),s.each(e.title,function(s,a){i.fillText(s,t.x,t.y),t.y+=e.titleFontSize+e.titleSpacing,a+1===e.title.length&&(t.y+=e.titleMarginBottom-e.titleSpacing)}))},drawBody:function(t,e,i,a){i.textAlign=e._bodyAlign,i.textBaseline="top",i.fillStyle=s.color(e.bodyColor).alpha(a).rgbString(),i.font=s.fontString(e.bodyFontSize,e._bodyFontStyle,e._bodyFontFamily),s.each(e.beforeBody,function(s){i.fillText(s,t.x,t.y),t.y+=e.bodyFontSize+e.bodySpacing}),s.each(e.body,function(o,n){"single"!==this._options.tooltips.mode&&(i.fillStyle=s.color(e.legendColorBackground).alpha(a).rgbaString(),i.fillRect(t.x,t.y,e.bodyFontSize,e.bodyFontSize),i.strokeStyle=s.color(e.labelColors[n].borderColor).alpha(a).rgbaString(),i.strokeRect(t.x,t.y,e.bodyFontSize,e.bodyFontSize),i.fillStyle=s.color(e.labelColors[n].backgroundColor).alpha(a).rgbaString(),i.fillRect(t.x+1,t.y+1,e.bodyFontSize-2,e.bodyFontSize-2),i.fillStyle=s.color(e.bodyColor).alpha(a).rgbaString()),i.fillText(o,t.x+("single"!==this._options.tooltips.mode?e.bodyFontSize+2:0),t.y),t.y+=e.bodyFontSize+e.bodySpacing},this),s.each(e.afterBody,function(s){i.fillText(s,t.x,t.y),t.y+=e.bodyFontSize}),t.y-=e.bodySpacing},drawFooter:function(t,e,i,a){e.footer.length&&(t.y+=e.footerMarginTop,i.textAlign=e._footerAlign,i.textBaseline="top",i.fillStyle=s.color(e.footerColor).alpha(a).rgbString(),i.font=s.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),s.each(e.footer,function(s){i.fillText(s,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i=e.caretPadding,a=this.getTooltipSize(e),o={x:e.x,y:e.y},n=Math.abs(e.opacity<.001)?0:e.opacity;this._options.tooltips.enabled&&(t.fillStyle=s.color(e.backgroundColor).alpha(n).rgbString(),s.drawRoundedRectangle(t,o.x,o.y,a.width,a.height,e.cornerRadius),t.fill(),this.drawCaret(o,a,n,i),o.x+=e.xPadding,o.y+=e.yPadding,this.drawTitle(o,e,t,n),this.drawBody(o,e,t,n),this.drawFooter(o,e,t,n))}}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.bar={hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}},e.controllers.bar=e.DatasetController.extend({initialize:function(t,i){e.DatasetController.prototype.initialize.call(this,t,i),this.getDataset().bar=!0},getBarCount:function(){var t=0;return i.each(this.chart.data.datasets,function(e){i.isDatasetVisible(e)&&e.bar&&++t}),t},addElements:function(){this.getDataset().metaData=this.getDataset().metaData||[],i.each(this.getDataset().data,function(t,i){this.getDataset().metaData[i]=this.getDataset().metaData[i]||new e.elements.Rectangle({_chart:this.chart.chart,_datasetIndex:this.index,_index:i})},this)},addElementAndReset:function(t){this.getDataset().metaData=this.getDataset().metaData||[];var i=new e.elements.Rectangle({_chart:this.chart.chart,_datasetIndex:this.index,_index:t}),s=this.getBarCount();this.updateElement(i,t,!0,s),this.getDataset().metaData.splice(t,0,i)},update:function(t){var e=this.getBarCount();i.each(this.getDataset().metaData,function(i,s){this.updateElement(i,s,t,e)},this)},updateElement:function(t,e,s,a){var o,n=this.getScaleForId(this.getDataset().xAxisID),r=this.getScaleForId(this.getDataset().yAxisID);o=r.min<0&&r.max<0?r.getPixelForValue(r.max):r.min>0&&r.max>0?r.getPixelForValue(r.min):r.getPixelForValue(0),i.extend(t,{_chart:this.chart.chart,_xScale:n,_yScale:r,_datasetIndex:this.index,_index:e,_model:{x:this.calculateBarX(e,this.index),y:s?o:this.calculateBarY(e,this.index),label:this.chart.data.labels[e],datasetLabel:this.getDataset().label,base:this.calculateBarBase(this.index,e),width:this.calculateBarWidth(a),backgroundColor:t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.rectangle.backgroundColor),borderColor:t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.rectangle.borderColor),borderWidth:t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.rectangle.borderWidth)}}),t.pivot()},calculateBarBase:function(t,e){var s=(this.getScaleForId(this.getDataset().xAxisID),this.getScaleForId(this.getDataset().yAxisID)),a=0;if(s.options.stacked){var o=this.chart.data.datasets[t].data[e];if(0>o)for(var n=0;t>n;n++){var r=this.chart.data.datasets[n];i.isDatasetVisible(r)&&r.yAxisID===s.id&&r.bar&&(a+=r.data[e]<0?r.data[e]:0)}else for(var h=0;t>h;h++){var l=this.chart.data.datasets[h];i.isDatasetVisible(l)&&l.yAxisID===s.id&&l.bar&&(a+=l.data[e]>0?l.data[e]:0)}return s.getPixelForValue(a)}return a=s.getPixelForValue(s.min),s.beginAtZero||s.min<=0&&s.max>=0||s.min>=0&&s.max<=0?a=s.getPixelForValue(0,0):s.min<0&&s.max<0&&(a=s.getPixelForValue(s.max)),a},getRuler:function(){var t=this.getScaleForId(this.getDataset().xAxisID),e=(this.getScaleForId(this.getDataset().yAxisID),this.getBarCount()),i=function(){for(var e=t.getPixelForTick(1)-t.getPixelForTick(0),i=2;i<this.getDataset().data.length;i++)e=Math.min(t.getPixelForTick(i)-t.getPixelForTick(i-1),e);return e}.call(this),s=i*t.options.categoryPercentage,a=(i-i*t.options.categoryPercentage)/2,o=s/e,n=o*t.options.barPercentage,r=o-o*t.options.barPercentage;return{datasetCount:e,tickWidth:i,categoryWidth:s,categorySpacing:a,fullBarWidth:o,barWidth:n,barSpacing:r}},calculateBarWidth:function(){var t=this.getScaleForId(this.getDataset().xAxisID),e=this.getRuler();return t.options.stacked?e.categoryWidth:e.barWidth},getBarIndex:function(t){for(var e=0,s=0;t>s;++s)i.isDatasetVisible(this.chart.data.datasets[s])&&this.chart.data.datasets[s].bar&&++e;return e},calculateBarX:function(t,e){var i=(this.getScaleForId(this.getDataset().yAxisID),this.getScaleForId(this.getDataset().xAxisID)),s=this.getBarIndex(e),a=this.getRuler(),o=i.getPixelForValue(null,t,e,this.chart.isCombo);return o-=this.chart.isCombo?a.tickWidth/2:0,i.options.stacked?o+a.categoryWidth/2+a.categorySpacing:o+a.barWidth/2+a.categorySpacing+a.barWidth*s+a.barSpacing/2+a.barSpacing*s},calculateBarY:function(t,e){var s=(this.getScaleForId(this.getDataset().xAxisID),this.getScaleForId(this.getDataset().yAxisID)),a=this.getDataset().data[t];if(s.options.stacked){for(var o=0,n=0,r=0;e>r;r++){var h=this.chart.data.datasets[r];i.isDatasetVisible(h)&&h.bar&&h.yAxisID===s.id&&(h.data[t]<0?n+=h.data[t]||0:o+=h.data[t]||0)}return 0>a?s.getPixelForValue(n+a):s.getPixelForValue(o+a)}return s.getPixelForValue(a)},draw:function(t){var e=t||1;i.each(this.getDataset().metaData,function(t,i){var s=this.getDataset().data[i];null===s||void 0===s||isNaN(s)||t.transition(e).draw()},this)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],s=t._index;t._model.backgroundColor=t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(e.hoverBackgroundColor,s,i.color(t._model.backgroundColor).saturate(.5).darken(.1).rgbString()),t._model.borderColor=t.custom&&t.custom.hoverBorderColor?t.custom.hoverBorderColor:i.getValueAtIndexOrDefault(e.hoverBorderColor,s,i.color(t._model.borderColor).saturate(.5).darken(.1).rgbString()),t._model.borderWidth=t.custom&&t.custom.hoverBorderWidth?t.custom.hoverBorderWidth:i.getValueAtIndexOrDefault(e.hoverBorderWidth,s,t._model.borderWidth)},removeHoverStyle:function(t){var e=(this.chart.data.datasets[t._datasetIndex],t._index);t._model.backgroundColor=t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.rectangle.backgroundColor),t._model.borderColor=t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.rectangle.borderColor),t._model.borderWidth=t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.rectangle.borderWidth)}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.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(t,e){return""},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"",s=e.datasets[t.datasetIndex].data[t.index];return i+": ("+s.x+", "+s.y+", "+s.r+")"}}}},e.controllers.bubble=e.DatasetController.extend({addElements:function(){this.getDataset().metaData=this.getDataset().metaData||[],i.each(this.getDataset().data,function(t,i){this.getDataset().metaData[i]=this.getDataset().metaData[i]||new e.elements.Point({_chart:this.chart.chart,_datasetIndex:this.index,_index:i})},this)},addElementAndReset:function(t){this.getDataset().metaData=this.getDataset().metaData||[];var i=new e.elements.Point({_chart:this.chart.chart,_datasetIndex:this.index,_index:t});this.updateElement(i,t,!0),this.getDataset().metaData.splice(t,0,i)},update:function(t){var e,s=this.getDataset().metaData,a=this.getScaleForId(this.getDataset().yAxisID);this.getScaleForId(this.getDataset().xAxisID);e=a.min<0&&a.max<0?a.getPixelForValue(a.max):a.min>0&&a.max>0?a.getPixelForValue(a.min):a.getPixelForValue(0),i.each(s,function(e,i){this.updateElement(e,i,t)},this)},updateElement:function(t,e,s){var a,o=this.getScaleForId(this.getDataset().yAxisID),n=this.getScaleForId(this.getDataset().xAxisID);a=o.min<0&&o.max<0?o.getPixelForValue(o.max):o.min>0&&o.max>0?o.getPixelForValue(o.min):o.getPixelForValue(0),i.extend(t,{_chart:this.chart.chart,_xScale:n,_yScale:o,_datasetIndex:this.index,_index:e,_model:{x:s?n.getPixelForDecimal(.5):n.getPixelForValue(this.getDataset().data[e],e,this.index,this.chart.isCombo),y:s?a:o.getPixelForValue(this.getDataset().data[e],e,this.index),radius:s?0:t.custom&&t.custom.radius?t.custom.radius:this.getRadius(this.getDataset().data[e]),backgroundColor:t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.point.backgroundColor),borderColor:t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.point.borderColor),borderWidth:t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.point.borderWidth),hitRadius:t.custom&&t.custom.hitRadius?t.custom.hitRadius:i.getValueAtIndexOrDefault(this.getDataset().hitRadius,e,this.chart.options.elements.point.hitRadius)}}),t._model.skip=t.custom&&t.custom.skip?t.custom.skip:isNaN(t._model.x)||isNaN(t._model.y),t.pivot()},getRadius:function(t){return t.r||this.chart.options.elements.point.radius},draw:function(t){var e=t||1;i.each(this.getDataset().metaData,function(t,i){t.transition(e),t.draw()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],s=t._index;t._model.radius=t.custom&&t.custom.hoverRadius?t.custom.hoverRadius:i.getValueAtIndexOrDefault(e.hoverRadius,s,this.chart.options.elements.point.hoverRadius)+this.getRadius(this.getDataset().data[t._index]),t._model.backgroundColor=t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(e.hoverBackgroundColor,s,i.color(t._model.backgroundColor).saturate(.5).darken(.1).rgbString()),t._model.borderColor=t.custom&&t.custom.hoverBorderColor?t.custom.hoverBorderColor:i.getValueAtIndexOrDefault(e.hoverBorderColor,s,i.color(t._model.borderColor).saturate(.5).darken(.1).rgbString()),t._model.borderWidth=t.custom&&t.custom.hoverBorderWidth?t.custom.hoverBorderWidth:i.getValueAtIndexOrDefault(e.hoverBorderWidth,s,t._model.borderWidth)},removeHoverStyle:function(t){var e=(this.chart.data.datasets[t._datasetIndex],t._index);t._model.radius=t.custom&&t.custom.radius?t.custom.radius:this.getRadius(this.getDataset().data[t._index]),t._model.backgroundColor=t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.point.backgroundColor),t._model.borderColor=t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.point.borderColor),t._model.borderWidth=t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.point.borderWidth)}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.doughnut={animation:{animateRotate:!0,animateScale:!1},aspectRatio:1,hover:{mode:"single"},legendCallback:function(t){var e=[];if(e.push('<ul class="'+t.id+'-legend">'),t.data.datasets.length)for(var i=0;i<t.data.datasets[0].data.length;++i)e.push('<li><span style="background-color:'+t.data.datasets[0].backgroundColor[i]+'">'),t.data.labels[i]&&e.push(t.data.labels[i]),e.push("</span></li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){return t.labels.map(function(e,i){return{text:e,fillStyle:t.datasets[0].backgroundColor[i],hidden:isNaN(t.datasets[0].data[i]),index:i}})}},onClick:function(t,e){i.each(this.chart.data.datasets,function(t){t.metaHiddenData=t.metaHiddenData||[];var i=e.index;isNaN(t.data[i])?isNaN(t.metaHiddenData[i])||(t.data[i]=t.metaHiddenData[i]):(t.metaHiddenData[i]=t.data[i],t.data[i]=NaN)}),this.chart.update()}},cutoutPercentage:50,tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+e.datasets[t.datasetIndex].data[t.index]}}}},e.defaults.pie=i.clone(e.defaults.doughnut),i.extend(e.defaults.pie,{cutoutPercentage:0}),e.controllers.doughnut=e.controllers.pie=e.DatasetController.extend({linkScales:function(){},addElements:function(){this.getDataset().metaData=this.getDataset().metaData||[],i.each(this.getDataset().data,function(t,i){this.getDataset().metaData[i]=this.getDataset().metaData[i]||new e.elements.Arc({_chart:this.chart.chart,_datasetIndex:this.index,_index:i})},this)},addElementAndReset:function(t,s){this.getDataset().metaData=this.getDataset().metaData||[];var a=new e.elements.Arc({_chart:this.chart.chart,_datasetIndex:this.index,_index:t});s&&i.isArray(this.getDataset().backgroundColor)&&this.getDataset().backgroundColor.splice(t,0,s),this.updateElement(a,t,!0),
|
40 |
+
this.getDataset().metaData.splice(t,0,a)},getVisibleDatasetCount:function(){return i.where(this.chart.data.datasets,function(t){return i.isDatasetVisible(t)}).length},getRingIndex:function(t){for(var e=0,s=0;t>s;++s)i.isDatasetVisible(this.chart.data.datasets[s])&&++e;return e},update:function(t){var e=Math.min(this.chart.chartArea.right-this.chart.chartArea.left,this.chart.chartArea.bottom-this.chart.chartArea.top);this.chart.outerRadius=Math.max(e/2-this.chart.options.elements.arc.borderWidth/2,0),this.chart.innerRadius=Math.max(this.chart.options.cutoutPercentage?this.chart.outerRadius/100*this.chart.options.cutoutPercentage:1,0),this.chart.radiusLength=(this.chart.outerRadius-this.chart.innerRadius)/this.getVisibleDatasetCount(),this.getDataset().total=0,i.each(this.getDataset().data,function(t){isNaN(t)||(this.getDataset().total+=Math.abs(t))},this),this.outerRadius=this.chart.outerRadius-this.chart.radiusLength*this.getRingIndex(this.index),this.innerRadius=this.outerRadius-this.chart.radiusLength,i.each(this.getDataset().metaData,function(e,i){this.updateElement(e,i,t)},this)},updateElement:function(t,e,s){var a=(this.chart.chartArea.left+this.chart.chartArea.right)/2,o=(this.chart.chartArea.top+this.chart.chartArea.bottom)/2,n={x:a,y:o,startAngle:Math.PI*-.5,endAngle:Math.PI*-.5,circumference:this.chart.options.animation.animateRotate?0:this.calculateCircumference(this.getDataset().data[e]),outerRadius:this.chart.options.animation.animateScale?0:this.outerRadius,innerRadius:this.chart.options.animation.animateScale?0:this.innerRadius};i.extend(t,{_chart:this.chart.chart,_datasetIndex:this.index,_index:e,_model:s?n:{x:a,y:o,circumference:this.calculateCircumference(this.getDataset().data[e]),outerRadius:this.outerRadius,innerRadius:this.innerRadius,backgroundColor:t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.arc.backgroundColor),hoverBackgroundColor:t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(this.getDataset().hoverBackgroundColor,e,this.chart.options.elements.arc.hoverBackgroundColor),borderWidth:t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.arc.borderWidth),borderColor:t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.arc.borderColor),label:i.getValueAtIndexOrDefault(this.getDataset().label,e,this.chart.data.labels[e])}}),s||(0===e?t._model.startAngle=Math.PI*-.5:t._model.startAngle=this.getDataset().metaData[e-1]._model.endAngle,t._model.endAngle=t._model.startAngle+t._model.circumference,e<this.getDataset().data.length-1&&(this.getDataset().metaData[e+1]._model.startAngle=t._model.endAngle)),t.pivot()},draw:function(t){var e=t||1;i.each(this.getDataset().metaData,function(t,i){t.transition(e).draw()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],s=t._index;t._model.backgroundColor=t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(e.hoverBackgroundColor,s,i.color(t._model.backgroundColor).saturate(.5).darken(.1).rgbString()),t._model.borderColor=t.custom&&t.custom.hoverBorderColor?t.custom.hoverBorderColor:i.getValueAtIndexOrDefault(e.hoverBorderColor,s,i.color(t._model.borderColor).saturate(.5).darken(.1).rgbString()),t._model.borderWidth=t.custom&&t.custom.hoverBorderWidth?t.custom.hoverBorderWidth:i.getValueAtIndexOrDefault(e.hoverBorderWidth,s,t._model.borderWidth)},removeHoverStyle:function(t){var e=(this.chart.data.datasets[t._datasetIndex],t._index);t._model.backgroundColor=t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.arc.backgroundColor),t._model.borderColor=t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.arc.borderColor),t._model.borderWidth=t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.arc.borderWidth)},calculateCircumference:function(t){return this.getDataset().total>0&&!isNaN(t)?1.999999*Math.PI*(t/this.getDataset().total):0}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.line={showLines:!0,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},e.controllers.line=e.DatasetController.extend({addElements:function(){this.getDataset().metaData=this.getDataset().metaData||[],this.getDataset().metaDataset=this.getDataset().metaDataset||new e.elements.Line({_chart:this.chart.chart,_datasetIndex:this.index,_points:this.getDataset().metaData}),i.each(this.getDataset().data,function(t,i){this.getDataset().metaData[i]=this.getDataset().metaData[i]||new e.elements.Point({_chart:this.chart.chart,_datasetIndex:this.index,_index:i})},this)},addElementAndReset:function(t){this.getDataset().metaData=this.getDataset().metaData||[];var i=new e.elements.Point({_chart:this.chart.chart,_datasetIndex:this.index,_index:t});this.updateElement(i,t,!0),this.getDataset().metaData.splice(t,0,i),this.chart.options.showLines&&0!==this.chart.options.elements.line.tension&&this.updateBezierControlPoints()},update:function(t){var e,s=this.getDataset().metaDataset,a=this.getDataset().metaData,o=this.getScaleForId(this.getDataset().yAxisID);this.getScaleForId(this.getDataset().xAxisID);e=o.min<0&&o.max<0?o.getPixelForValue(o.max):o.min>0&&o.max>0?o.getPixelForValue(o.min):o.getPixelForValue(0),this.chart.options.showLines&&(s._scale=o,s._datasetIndex=this.index,s._children=a,s._model={tension:s.custom&&s.custom.tension?s.custom.tension:i.getValueOrDefault(this.getDataset().tension,this.chart.options.elements.line.tension),backgroundColor:s.custom&&s.custom.backgroundColor?s.custom.backgroundColor:this.getDataset().backgroundColor||this.chart.options.elements.line.backgroundColor,borderWidth:s.custom&&s.custom.borderWidth?s.custom.borderWidth:this.getDataset().borderWidth||this.chart.options.elements.line.borderWidth,borderColor:s.custom&&s.custom.borderColor?s.custom.borderColor:this.getDataset().borderColor||this.chart.options.elements.line.borderColor,borderCapStyle:s.custom&&s.custom.borderCapStyle?s.custom.borderCapStyle:this.getDataset().borderCapStyle||this.chart.options.elements.line.borderCapStyle,borderDash:s.custom&&s.custom.borderDash?s.custom.borderDash:this.getDataset().borderDash||this.chart.options.elements.line.borderDash,borderDashOffset:s.custom&&s.custom.borderDashOffset?s.custom.borderDashOffset:this.getDataset().borderDashOffset||this.chart.options.elements.line.borderDashOffset,borderJoinStyle:s.custom&&s.custom.borderJoinStyle?s.custom.borderJoinStyle:this.getDataset().borderJoinStyle||this.chart.options.elements.line.borderJoinStyle,fill:s.custom&&s.custom.fill?s.custom.fill:void 0!==this.getDataset().fill?this.getDataset().fill:this.chart.options.elements.line.fill,scaleTop:o.top,scaleBottom:o.bottom,scaleZero:e},s.pivot()),i.each(a,function(e,i){this.updateElement(e,i,t)},this),this.chart.options.showLines&&0!==this.chart.options.elements.line.tension&&this.updateBezierControlPoints()},getPointBackgroundColor:function(t,e){var s=this.chart.options.elements.point.backgroundColor,a=this.getDataset();return t.custom&&t.custom.backgroundColor?s=t.custom.backgroundColor:a.pointBackgroundColor?s=i.getValueAtIndexOrDefault(a.pointBackgroundColor,e,s):a.backgroundColor&&(s=a.backgroundColor),s},getPointBorderColor:function(t,e){var s=this.chart.options.elements.point.borderColor,a=this.getDataset();return t.custom&&t.custom.borderColor?s=t.custom.borderColor:a.pointBorderColor?s=i.getValueAtIndexOrDefault(this.getDataset().pointBorderColor,e,s):a.borderColor&&(s=a.borderColor),s},getPointBorderWidth:function(t,e){var s=this.chart.options.elements.point.borderWidth,a=this.getDataset();return t.custom&&void 0!==t.custom.borderWidth?s=t.custom.borderWidth:void 0!==a.pointBorderWidth?s=i.getValueAtIndexOrDefault(a.pointBorderWidth,e,s):void 0!==a.borderWidth&&(s=a.borderWidth),s},updateElement:function(t,e,s){var a,o=this.getScaleForId(this.getDataset().yAxisID),n=this.getScaleForId(this.getDataset().xAxisID);a=o.min<0&&o.max<0?o.getPixelForValue(o.max):o.min>0&&o.max>0?o.getPixelForValue(o.min):o.getPixelForValue(0),t._chart=this.chart.chart,t._xScale=n,t._yScale=o,t._datasetIndex=this.index,t._index=e,t._model={x:n.getPixelForValue(this.getDataset().data[e],e,this.index,this.chart.isCombo),y:s?a:this.calculatePointY(this.getDataset().data[e],e,this.index,this.chart.isCombo),tension:t.custom&&t.custom.tension?t.custom.tension:i.getValueOrDefault(this.getDataset().tension,this.chart.options.elements.line.tension),radius:t.custom&&t.custom.radius?t.custom.radius:i.getValueAtIndexOrDefault(this.getDataset().radius,e,this.chart.options.elements.point.radius),pointStyle:t.custom&&t.custom.pointStyle?t.custom.pointStyle:i.getValueAtIndexOrDefault(this.getDataset().pointStyle,e,this.chart.options.elements.point.pointStyle),backgroundColor:this.getPointBackgroundColor(t,e),borderColor:this.getPointBorderColor(t,e),borderWidth:this.getPointBorderWidth(t,e),hitRadius:t.custom&&t.custom.hitRadius?t.custom.hitRadius:i.getValueAtIndexOrDefault(this.getDataset().hitRadius,e,this.chart.options.elements.point.hitRadius)},t._model.skip=t.custom&&t.custom.skip?t.custom.skip:isNaN(t._model.x)||isNaN(t._model.y)},calculatePointY:function(t,e,s,a){var o=(this.getScaleForId(this.getDataset().xAxisID),this.getScaleForId(this.getDataset().yAxisID));if(o.options.stacked){for(var n=0,r=0,h=this.chart.data.datasets.length-1;h>s;h--){var l=this.chart.data.datasets[h];"line"===l.type&&i.isDatasetVisible(l)&&(l.data[e]<0?r+=l.data[e]||0:n+=l.data[e]||0)}return 0>t?o.getPixelForValue(r+t):o.getPixelForValue(n+t)}return o.getPixelForValue(t)},updateBezierControlPoints:function(){i.each(this.getDataset().metaData,function(t,e){var s=i.splineCurve(i.previousItem(this.getDataset().metaData,e)._model,t._model,i.nextItem(this.getDataset().metaData,e)._model,t._model.tension);t._model.controlPointPreviousX=Math.max(Math.min(s.previous.x,this.chart.chartArea.right),this.chart.chartArea.left),t._model.controlPointPreviousY=Math.max(Math.min(s.previous.y,this.chart.chartArea.bottom),this.chart.chartArea.top),t._model.controlPointNextX=Math.max(Math.min(s.next.x,this.chart.chartArea.right),this.chart.chartArea.left),t._model.controlPointNextY=Math.max(Math.min(s.next.y,this.chart.chartArea.bottom),this.chart.chartArea.top),t.pivot()},this)},draw:function(t){var e=t||1;i.each(this.getDataset().metaData,function(t){t.transition(e)}),this.chart.options.showLines&&this.getDataset().metaDataset.transition(e).draw(),i.each(this.getDataset().metaData,function(t){t.draw()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],s=t._index;t._model.radius=t.custom&&t.custom.hoverRadius?t.custom.hoverRadius:i.getValueAtIndexOrDefault(e.pointHoverRadius,s,this.chart.options.elements.point.hoverRadius),t._model.backgroundColor=t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(e.pointHoverBackgroundColor,s,i.color(t._model.backgroundColor).saturate(.5).darken(.1).rgbString()),t._model.borderColor=t.custom&&t.custom.hoverBorderColor?t.custom.hoverBorderColor:i.getValueAtIndexOrDefault(e.pointHoverBorderColor,s,i.color(t._model.borderColor).saturate(.5).darken(.1).rgbString()),t._model.borderWidth=t.custom&&t.custom.hoverBorderWidth?t.custom.hoverBorderWidth:i.getValueAtIndexOrDefault(e.pointHoverBorderWidth,s,t._model.borderWidth)},removeHoverStyle:function(t){var e=(this.chart.data.datasets[t._datasetIndex],t._index);t._model.radius=t.custom&&t.custom.radius?t.custom.radius:i.getValueAtIndexOrDefault(this.getDataset().radius,e,this.chart.options.elements.point.radius),t._model.backgroundColor=this.getPointBackgroundColor(t,e),t._model.borderColor=this.getPointBorderColor(t,e),t._model.borderWidth=this.getPointBorderWidth(t,e)}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.polarArea={scale:{type:"radialLinear",lineArc:!0},animateRotate:!0,animateScale:!0,aspectRatio:1,legendCallback:function(t){var e=[];if(e.push('<ul class="'+t.id+'-legend">'),t.data.datasets.length)for(var i=0;i<t.data.datasets[0].data.length;++i)e.push('<li><span style="background-color:'+t.data.datasets[0].backgroundColor[i]+'">'),t.data.labels[i]&&e.push(t.data.labels[i]),e.push("</span></li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){return t.labels.map(function(e,i){return{text:e,fillStyle:t.datasets[0].backgroundColor[i],hidden:isNaN(t.datasets[0].data[i]),index:i}})}},onClick:function(t,e){i.each(this.chart.data.datasets,function(t){t.metaHiddenData=t.metaHiddenData||[];var i=e.index;isNaN(t.data[i])?isNaN(t.metaHiddenData[i])||(t.data[i]=t.metaHiddenData[i]):(t.metaHiddenData[i]=t.data[i],t.data[i]=NaN)}),this.chart.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}},e.controllers.polarArea=e.DatasetController.extend({linkScales:function(){},addElements:function(){this.getDataset().metaData=this.getDataset().metaData||[],i.each(this.getDataset().data,function(t,i){this.getDataset().metaData[i]=this.getDataset().metaData[i]||new e.elements.Arc({_chart:this.chart.chart,_datasetIndex:this.index,_index:i})},this)},addElementAndReset:function(t){this.getDataset().metaData=this.getDataset().metaData||[];var i=new e.elements.Arc({_chart:this.chart.chart,_datasetIndex:this.index,_index:t});this.updateElement(i,t,!0),this.getDataset().metaData.splice(t,0,i)},getVisibleDatasetCount:function(){return i.where(this.chart.data.datasets,function(t){return i.isDatasetVisible(t)}).length},update:function(t){var e=Math.min(this.chart.chartArea.right-this.chart.chartArea.left,this.chart.chartArea.bottom-this.chart.chartArea.top);this.chart.outerRadius=Math.max((e-this.chart.options.elements.arc.borderWidth/2)/2,0),this.chart.innerRadius=Math.max(this.chart.options.cutoutPercentage?this.chart.outerRadius/100*this.chart.options.cutoutPercentage:1,0),this.chart.radiusLength=(this.chart.outerRadius-this.chart.innerRadius)/this.getVisibleDatasetCount(),this.getDataset().total=0,i.each(this.getDataset().data,function(t){this.getDataset().total+=Math.abs(t)},this),this.outerRadius=this.chart.outerRadius-this.chart.radiusLength*this.index,this.innerRadius=this.outerRadius-this.chart.radiusLength,i.each(this.getDataset().metaData,function(e,i){this.updateElement(e,i,t)},this)},updateElement:function(t,e,s){for(var a=this.calculateCircumference(this.getDataset().data[e]),o=(this.chart.chartArea.left+this.chart.chartArea.right)/2,n=(this.chart.chartArea.top+this.chart.chartArea.bottom)/2,r=0,h=0;e>h;++h)isNaN(this.getDataset().data[h])||++r;var l=-.5*Math.PI+a*r,c=l+a,d={x:o,y:n,innerRadius:0,outerRadius:this.chart.options.animateScale?0:this.chart.scale.getDistanceFromCenterForValue(this.getDataset().data[e]),startAngle:this.chart.options.animateRotate?Math.PI*-.5:l,endAngle:this.chart.options.animateRotate?Math.PI*-.5:c,backgroundColor:t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.arc.backgroundColor),borderWidth:t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.arc.borderWidth),borderColor:t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.arc.borderColor),label:i.getValueAtIndexOrDefault(this.chart.data.labels,e,this.chart.data.labels[e])};i.extend(t,{_chart:this.chart.chart,_datasetIndex:this.index,_index:e,_scale:this.chart.scale,_model:s?d:{x:o,y:n,innerRadius:0,outerRadius:this.chart.scale.getDistanceFromCenterForValue(this.getDataset().data[e]),startAngle:l,endAngle:c,backgroundColor:t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.arc.backgroundColor),borderWidth:t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.arc.borderWidth),borderColor:t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.arc.borderColor),label:i.getValueAtIndexOrDefault(this.chart.data.labels,e,this.chart.data.labels[e])}}),t.pivot()},draw:function(t){var e=t||1;i.each(this.getDataset().metaData,function(t,i){t.transition(e).draw()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],s=t._index;t._model.backgroundColor=t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(e.hoverBackgroundColor,s,i.color(t._model.backgroundColor).saturate(.5).darken(.1).rgbString()),t._model.borderColor=t.custom&&t.custom.hoverBorderColor?t.custom.hoverBorderColor:i.getValueAtIndexOrDefault(e.hoverBorderColor,s,i.color(t._model.borderColor).saturate(.5).darken(.1).rgbString()),t._model.borderWidth=t.custom&&t.custom.hoverBorderWidth?t.custom.hoverBorderWidth:i.getValueAtIndexOrDefault(e.hoverBorderWidth,s,t._model.borderWidth)},removeHoverStyle:function(t){var e=(this.chart.data.datasets[t._datasetIndex],t._index);t._model.backgroundColor=t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().backgroundColor,e,this.chart.options.elements.arc.backgroundColor),t._model.borderColor=t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().borderColor,e,this.chart.options.elements.arc.borderColor),t._model.borderWidth=t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().borderWidth,e,this.chart.options.elements.arc.borderWidth)},calculateCircumference:function(t){if(isNaN(t))return 0;var e=i.where(this.getDataset().data,function(t){return isNaN(t)}).length;return 2*Math.PI/(this.getDataset().data.length-e)}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.radar={scale:{type:"radialLinear"},elements:{line:{tension:0}}},e.controllers.radar=e.DatasetController.extend({linkScales:function(){},addElements:function(){this.getDataset().metaData=this.getDataset().metaData||[],this.getDataset().metaDataset=this.getDataset().metaDataset||new e.elements.Line({_chart:this.chart.chart,_datasetIndex:this.index,_points:this.getDataset().metaData,_loop:!0}),i.each(this.getDataset().data,function(t,i){this.getDataset().metaData[i]=this.getDataset().metaData[i]||new e.elements.Point({_chart:this.chart.chart,_datasetIndex:this.index,_index:i,_model:{x:0,y:0}})},this)},addElementAndReset:function(t){this.getDataset().metaData=this.getDataset().metaData||[];var i=new e.elements.Point({_chart:this.chart.chart,_datasetIndex:this.index,_index:t});this.updateElement(i,t,!0),this.getDataset().metaData.splice(t,0,i),this.updateBezierControlPoints()},update:function(t){var e,s=this.getDataset().metaDataset,a=this.getDataset().metaData,o=this.chart.scale;e=o.min<0&&o.max<0?o.getPointPositionForValue(0,o.max):o.min>0&&o.max>0?o.getPointPositionForValue(0,o.min):o.getPointPositionForValue(0,0),i.extend(this.getDataset().metaDataset,{_datasetIndex:this.index,_children:this.getDataset().metaData,_model:{tension:s.custom&&s.custom.tension?s.custom.tension:i.getValueOrDefault(this.getDataset().tension,this.chart.options.elements.line.tension),backgroundColor:s.custom&&s.custom.backgroundColor?s.custom.backgroundColor:this.getDataset().backgroundColor||this.chart.options.elements.line.backgroundColor,borderWidth:s.custom&&s.custom.borderWidth?s.custom.borderWidth:this.getDataset().borderWidth||this.chart.options.elements.line.borderWidth,borderColor:s.custom&&s.custom.borderColor?s.custom.borderColor:this.getDataset().borderColor||this.chart.options.elements.line.borderColor,fill:s.custom&&s.custom.fill?s.custom.fill:void 0!==this.getDataset().fill?this.getDataset().fill:this.chart.options.elements.line.fill,borderCapStyle:s.custom&&s.custom.borderCapStyle?s.custom.borderCapStyle:this.getDataset().borderCapStyle||this.chart.options.elements.line.borderCapStyle,borderDash:s.custom&&s.custom.borderDash?s.custom.borderDash:this.getDataset().borderDash||this.chart.options.elements.line.borderDash,borderDashOffset:s.custom&&s.custom.borderDashOffset?s.custom.borderDashOffset:this.getDataset().borderDashOffset||this.chart.options.elements.line.borderDashOffset,borderJoinStyle:s.custom&&s.custom.borderJoinStyle?s.custom.borderJoinStyle:this.getDataset().borderJoinStyle||this.chart.options.elements.line.borderJoinStyle,scaleTop:o.top,scaleBottom:o.bottom,scaleZero:e}}),this.getDataset().metaDataset.pivot(),i.each(a,function(e,i){this.updateElement(e,i,t)},this),this.updateBezierControlPoints()},updateElement:function(t,e,s){var a=this.chart.scale.getPointPositionForValue(e,this.getDataset().data[e]);i.extend(t,{_datasetIndex:this.index,_index:e,_scale:this.chart.scale,_model:{x:s?this.chart.scale.xCenter:a.x,y:s?this.chart.scale.yCenter:a.y,tension:t.custom&&t.custom.tension?t.custom.tension:i.getValueOrDefault(this.getDataset().tension,this.chart.options.elements.line.tension),radius:t.custom&&t.custom.radius?t.custom.radius:i.getValueAtIndexOrDefault(this.getDataset().pointRadius,e,this.chart.options.elements.point.radius),backgroundColor:t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().pointBackgroundColor,e,this.chart.options.elements.point.backgroundColor),borderColor:t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().pointBorderColor,e,this.chart.options.elements.point.borderColor),borderWidth:t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().pointBorderWidth,e,this.chart.options.elements.point.borderWidth),pointStyle:t.custom&&t.custom.pointStyle?t.custom.pointStyle:i.getValueAtIndexOrDefault(this.getDataset().pointStyle,e,this.chart.options.elements.point.pointStyle),hitRadius:t.custom&&t.custom.hitRadius?t.custom.hitRadius:i.getValueAtIndexOrDefault(this.getDataset().hitRadius,e,this.chart.options.elements.point.hitRadius)}}),t._model.skip=t.custom&&t.custom.skip?t.custom.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){i.each(this.getDataset().metaData,function(t,e){var s=i.splineCurve(i.previousItem(this.getDataset().metaData,e,!0)._model,t._model,i.nextItem(this.getDataset().metaData,e,!0)._model,t._model.tension);t._model.controlPointPreviousX=Math.max(Math.min(s.previous.x,this.chart.chartArea.right),this.chart.chartArea.left),t._model.controlPointPreviousY=Math.max(Math.min(s.previous.y,this.chart.chartArea.bottom),this.chart.chartArea.top),t._model.controlPointNextX=Math.max(Math.min(s.next.x,this.chart.chartArea.right),this.chart.chartArea.left),t._model.controlPointNextY=Math.max(Math.min(s.next.y,this.chart.chartArea.bottom),this.chart.chartArea.top),t.pivot()},this)},draw:function(t){var e=t||1;i.each(this.getDataset().metaData,function(t,i){t.transition(e)}),this.getDataset().metaDataset.transition(e).draw(),i.each(this.getDataset().metaData,function(t){t.draw()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],s=t._index;t._model.radius=t.custom&&t.custom.hoverRadius?t.custom.hoverRadius:i.getValueAtIndexOrDefault(e.pointHoverRadius,s,this.chart.options.elements.point.hoverRadius),t._model.backgroundColor=t.custom&&t.custom.hoverBackgroundColor?t.custom.hoverBackgroundColor:i.getValueAtIndexOrDefault(e.pointHoverBackgroundColor,s,i.color(t._model.backgroundColor).saturate(.5).darken(.1).rgbString()),t._model.borderColor=t.custom&&t.custom.hoverBorderColor?t.custom.hoverBorderColor:i.getValueAtIndexOrDefault(e.pointHoverBorderColor,s,i.color(t._model.borderColor).saturate(.5).darken(.1).rgbString()),t._model.borderWidth=t.custom&&t.custom.hoverBorderWidth?t.custom.hoverBorderWidth:i.getValueAtIndexOrDefault(e.pointHoverBorderWidth,s,t._model.borderWidth)},removeHoverStyle:function(t){var e=(this.chart.data.datasets[t._datasetIndex],t._index);t._model.radius=t.custom&&t.custom.radius?t.custom.radius:i.getValueAtIndexOrDefault(this.getDataset().radius,e,this.chart.options.elements.point.radius),t._model.backgroundColor=t.custom&&t.custom.backgroundColor?t.custom.backgroundColor:i.getValueAtIndexOrDefault(this.getDataset().pointBackgroundColor,e,this.chart.options.elements.point.backgroundColor),t._model.borderColor=t.custom&&t.custom.borderColor?t.custom.borderColor:i.getValueAtIndexOrDefault(this.getDataset().pointBorderColor,e,this.chart.options.elements.point.borderColor),t._model.borderWidth=t.custom&&t.custom.borderWidth?t.custom.borderWidth:i.getValueAtIndexOrDefault(this.getDataset().pointBorderWidth,e,this.chart.options.elements.point.borderWidth)}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=(e.helpers,{position:"bottom"}),s=e.Scale.extend({buildTicks:function(t){this.ticks=this.chart.data.labels},getLabelForIndex:function(t,e){return this.ticks[t]},getPixelForValue:function(t,e,i,s){if(this.isHorizontal()){var a=this.width-(this.paddingLeft+this.paddingRight),o=a/Math.max(this.chart.data.labels.length-(this.options.gridLines.offsetGridLines?0:1),1),n=o*e+this.paddingLeft;return this.options.gridLines.offsetGridLines&&s&&(n+=o/2),this.left+Math.round(n)}var r=this.height-(this.paddingTop+this.paddingBottom),h=r/Math.max(this.chart.data.labels.length-(this.options.gridLines.offsetGridLines?0:1),1),l=h*e+this.paddingTop;return this.options.gridLines.offsetGridLines&&s&&(l+=h/2),this.top+Math.round(l)}});e.scaleService.registerScaleType("category",s,i)}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers,s={position:"left",ticks:{callback:function(t,e,s){var a=s[1]-s[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=i.log10(Math.abs(a)),n="";if(0!==t){var r=-1*Math.floor(o);r=Math.max(Math.min(r,20),0),n=t.toFixed(r)}else n="0";return n}}},a=e.Scale.extend({determineDataLimits:function(){if(this.min=null,this.max=null,this.options.stacked){var t={},e=!1,s=!1;i.each(this.chart.data.datasets,function(a){void 0===t[a.type]&&(t[a.type]={positiveValues:[],negativeValues:[]});var o=t[a.type].positiveValues,n=t[a.type].negativeValues;i.isDatasetVisible(a)&&(this.isHorizontal()?a.xAxisID===this.id:a.yAxisID===this.id)&&i.each(a.data,function(t,i){var a=+this.getRightValue(t);isNaN(a)||(o[i]=o[i]||0,n[i]=n[i]||0,this.options.relativePoints?o[i]=100:0>a?(s=!0,n[i]+=a):(e=!0,o[i]+=a))},this)},this),i.each(t,function(t){var e=t.positiveValues.concat(t.negativeValues),s=i.min(e),a=i.max(e);this.min=null===this.min?s:Math.min(this.min,s),this.max=null===this.max?a:Math.max(this.max,a)},this)}else i.each(this.chart.data.datasets,function(t){i.isDatasetVisible(t)&&(this.isHorizontal()?t.xAxisID===this.id:t.yAxisID===this.id)&&i.each(t.data,function(t,e){var i=+this.getRightValue(t);isNaN(i)||(null===this.min?this.min=i:i<this.min&&(this.min=i),null===this.max?this.max=i:i>this.max&&(this.max=i))},this)},this);if(this.options.ticks.beginAtZero){var a=i.sign(this.min),o=i.sign(this.max);0>a&&0>o?this.max=0:a>0&&o>0&&(this.min=0)}void 0!==this.options.ticks.min?this.min=this.options.ticks.min:void 0!==this.options.ticks.suggestedMin&&(this.min=Math.min(this.min,this.options.ticks.suggestedMin)),void 0!==this.options.ticks.max?this.max=this.options.ticks.max:void 0!==this.options.ticks.suggestedMax&&(this.max=Math.max(this.max,this.options.ticks.suggestedMax)),this.min===this.max&&(this.min--,this.max++)},buildTicks:function(){this.ticks=[];var t;t=this.isHorizontal()?Math.min(this.options.ticks.maxTicksLimit?this.options.ticks.maxTicksLimit:11,Math.ceil(this.width/50)):Math.min(this.options.ticks.maxTicksLimit?this.options.ticks.maxTicksLimit:11,Math.ceil(this.height/(2*this.options.ticks.fontSize))),t=Math.max(2,t);var e=i.niceNum(this.max-this.min,!1),s=i.niceNum(e/(t-1),!0),a=Math.floor(this.min/s)*s,o=Math.ceil(this.max/s)*s,n=Math.ceil((o-a)/s);this.ticks.push(void 0!==this.options.ticks.min?this.options.ticks.min:a);for(var r=1;n>r;++r)this.ticks.push(a+r*s);this.ticks.push(void 0!==this.options.ticks.max?this.options.ticks.max:o),("left"==this.options.position||"right"==this.options.position)&&this.ticks.reverse(),this.max=i.max(this.ticks),this.min=i.min(this.ticks),this.options.ticks.reverse?(this.ticks.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),this.ticksAsNumbers=this.ticks.slice(),this.zeroLineIndex=this.ticks.indexOf(0)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t,e,i,s){var a,o=+this.getRightValue(t),n=this.end-this.start;if(this.isHorizontal()){var r=this.width-(this.paddingLeft+this.paddingRight);return a=this.left+r/n*(o-this.start),Math.round(a+this.paddingLeft)}var h=this.height-(this.paddingTop+this.paddingBottom);return a=this.bottom-this.paddingBottom-h/n*(o-this.start),Math.round(a)},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticksAsNumbers[t],null,null,e)}});e.scaleService.registerScaleType("linear",a,s)}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers,s={position:"left",ticks:{callback:function(t,i,s){var a=t/Math.pow(10,Math.floor(e.helpers.log10(t)));return 1===a||2===a||5===a||0===i||i===s.length-1?t.toExponential():""}}},a=e.Scale.extend({determineDataLimits:function(){if(this.min=null,this.max=null,this.options.stacked){var t={};i.each(this.chart.data.datasets,function(e){i.isDatasetVisible(e)&&(this.isHorizontal()?e.xAxisID===this.id:e.yAxisID===this.id)&&(void 0===t[e.type]&&(t[e.type]=[]),i.each(e.data,function(i,s){var a=t[e.type],o=+this.getRightValue(i);isNaN(o)||(a[s]=a[s]||0,this.options.relativePoints?a[s]=100:a[s]+=o)},this))},this),i.each(t,function(t){var e=i.min(t),s=i.max(t);this.min=null===this.min?e:Math.min(this.min,e),this.max=null===this.max?s:Math.max(this.max,s)},this)}else i.each(this.chart.data.datasets,function(t){i.isDatasetVisible(t)&&(this.isHorizontal()?t.xAxisID===this.id:t.yAxisID===this.id)&&i.each(t.data,function(t,e){var i=+this.getRightValue(t);isNaN(i)||(null===this.min?this.min=i:i<this.min&&(this.min=i),null===this.max?this.max=i:i>this.max&&(this.max=i))},this)},this);this.min=void 0!==this.options.ticks.min?this.options.ticks.min:this.min,this.max=void 0!==this.options.ticks.max?this.options.ticks.max:this.max,this.min===this.max&&(0!==this.min&&null!==this.min?(this.min=Math.pow(10,Math.floor(i.log10(this.min))-1),this.max=Math.pow(10,Math.floor(i.log10(this.max))+1)):(this.min=1,this.max=10))},buildTicks:function(){this.tickValues=[];for(var t=void 0!==this.options.ticks.min?this.options.ticks.min:Math.pow(10,Math.floor(i.log10(this.min)));t<this.max;){this.tickValues.push(t);var e=Math.floor(i.log10(t)),s=Math.floor(t/Math.pow(10,e))+1;10===s&&(s=1,++e),t=s*Math.pow(10,e)}var a=void 0!==this.options.ticks.max?this.options.ticks.max:t;this.tickValues.push(a),("left"==this.options.position||"right"==this.options.position)&&this.tickValues.reverse(),this.max=i.max(this.tickValues),this.min=i.min(this.tickValues),this.options.ticks.reverse?(this.tickValues.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),this.ticks=this.tickValues.slice()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t,e){return this.getPixelForValue(this.tickValues[t],null,null,e);
|
41 |
+
},getPixelForValue:function(t,e,s,a){var o,n=+this.getRightValue(t),r=i.log10(this.end)-i.log10(this.start);if(this.isHorizontal())if(0===n)o=this.left+this.paddingLeft;else{var h=this.width-(this.paddingLeft+this.paddingRight);o=this.left+h/r*(i.log10(n)-i.log10(this.start)),o+=this.paddingLeft}else if(0===n)o=this.top+this.paddingTop;else{var l=this.height-(this.paddingTop+this.paddingBottom);o=this.bottom-this.paddingBottom-l/r*(i.log10(n)-i.log10(this.start))}return o}});e.scaleService.registerScaleType("logarithmic",a,s)}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers,s={display:!0,animate:!0,lineArc:!1,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2},pointLabels:{fontFamily:"'Arial'",fontStyle:"normal",fontSize:10,fontColor:"#666",callback:function(t){return t}}},a=e.Scale.extend({getValueCount:function(){return this.chart.data.labels.length},setDimensions:function(){this.width=this.maxWidth,this.height=this.maxHeight,this.xCenter=Math.round(this.width/2),this.yCenter=Math.round(this.height/2);var t=i.min([this.height,this.width]);this.drawingArea=this.options.display?t/2-(this.options.ticks.fontSize/2+this.options.ticks.backdropPaddingY):t/2},determineDataLimits:function(){if(this.min=null,this.max=null,i.each(this.chart.data.datasets,function(t){i.isDatasetVisible(t)&&i.each(t.data,function(t,e){var i=+this.getRightValue(t);isNaN(i)||(null===this.min?this.min=i:i<this.min&&(this.min=i),null===this.max?this.max=i:i>this.max&&(this.max=i))},this)},this),this.options.ticks.beginAtZero){var t=i.sign(this.min),e=i.sign(this.max);0>t&&0>e?this.max=0:t>0&&e>0&&(this.min=0)}void 0!==this.options.ticks.min?this.min=this.options.ticks.min:void 0!==this.options.ticks.suggestedMin&&(this.min=Math.min(this.min,this.options.ticks.suggestedMin)),void 0!==this.options.ticks.max?this.max=this.options.ticks.max:void 0!==this.options.ticks.suggestedMax&&(this.max=Math.max(this.max,this.options.ticks.suggestedMax)),this.min===this.max&&(this.min--,this.max++)},buildTicks:function(){this.ticks=[];var t=Math.min(this.options.ticks.maxTicksLimit?this.options.ticks.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*this.options.ticks.fontSize)));t=Math.max(2,t);var e=i.niceNum(this.max-this.min,!1),s=i.niceNum(e/(t-1),!0),a=Math.floor(this.min/s)*s,o=Math.ceil(this.max/s)*s,n=Math.ceil((o-a)/s);this.ticks.push(void 0!==this.options.ticks.min?this.options.ticks.min:a);for(var r=1;n>r;++r)this.ticks.push(a+r*s);this.ticks.push(void 0!==this.options.ticks.max?this.options.ticks.max:o),this.max=i.max(this.ticks),this.min=i.min(this.ticks),this.options.ticks.reverse?(this.ticks.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),this.zeroLineIndex=this.ticks.indexOf(0)},convertTicksToLabels:function(){e.Scale.prototype.convertTicksToLabels.call(this),this.pointLabels=this.chart.data.labels.map(this.options.pointLabels.callback,this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,e,s,a,o,n,r,h,l,c,d,u,g=i.min([this.height/2-this.options.pointLabels.fontSize-5,this.width/2]),m=this.width,p=0;for(this.ctx.font=i.fontString(this.options.pointLabels.fontSize,this.options.pointLabels.fontStyle,this.options.pointLabels.fontFamily),e=0;e<this.getValueCount();e++)t=this.getPointPosition(e,g),s=this.ctx.measureText(this.pointLabels[e]?this.pointLabels[e]:"").width+5,0===e||e===this.getValueCount()/2?(a=s/2,t.x+a>m&&(m=t.x+a,o=e),t.x-a<p&&(p=t.x-a,r=e)):e<this.getValueCount()/2?t.x+s>m&&(m=t.x+s,o=e):e>this.getValueCount()/2&&t.x-s<p&&(p=t.x-s,r=e);l=p,c=Math.ceil(m-this.width),n=this.getIndexAngle(o),h=this.getIndexAngle(r),d=c/Math.sin(n+Math.PI/2),u=l/Math.sin(h+Math.PI/2),d=i.isNumber(d)?d:0,u=i.isNumber(u)?u:0,this.drawingArea=Math.round(g-(u+d)/2),this.setCenterPoint(u,d)},setCenterPoint:function(t,e){var i=this.width-e-this.drawingArea,s=t+this.drawingArea;this.xCenter=Math.round((s+i)/2+this.left),this.yCenter=Math.round(this.height/2+this.top)},getIndexAngle:function(t){var e=2*Math.PI/this.getValueCount();return t*e-Math.PI/2},getDistanceFromCenterForValue:function(t){if(null===t)return 0;var e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e},getPointPosition:function(t,e){var i=this.getIndexAngle(t);return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},draw:function(){if(this.options.display){var t=this.ctx;if(i.each(this.ticks,function(e,s){if(s>0||this.options.reverse){var a=this.getDistanceFromCenterForValue(this.ticks[s]),o=this.yCenter-a;if(this.options.gridLines.display)if(t.strokeStyle=this.options.gridLines.color,t.lineWidth=this.options.gridLines.lineWidth,this.options.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,a,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var n=0;n<this.getValueCount();n++){var r=this.getPointPosition(n,this.getDistanceFromCenterForValue(this.ticks[s]));0===n?t.moveTo(r.x,r.y):t.lineTo(r.x,r.y)}t.closePath(),t.stroke()}if(this.options.ticks.display){if(t.font=i.fontString(this.options.ticks.fontSize,this.options.ticks.fontStyle,this.options.ticks.fontFamily),this.options.ticks.showLabelBackdrop){var h=t.measureText(e).width;t.fillStyle=this.options.ticks.backdropColor,t.fillRect(this.xCenter-h/2-this.options.ticks.backdropPaddingX,o-this.options.ticks.fontSize/2-this.options.ticks.backdropPaddingY,h+2*this.options.ticks.backdropPaddingX,this.options.ticks.fontSize+2*this.options.ticks.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.options.ticks.fontColor,t.fillText(e,this.xCenter,o)}}},this),!this.options.lineArc){t.lineWidth=this.options.angleLines.lineWidth,t.strokeStyle=this.options.angleLines.color;for(var e=this.getValueCount()-1;e>=0;e--){if(this.options.angleLines.display){var s=this.getPointPosition(e,this.getDistanceFromCenterForValue(this.options.reverse?this.min:this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(s.x,s.y),t.stroke(),t.closePath()}var a=this.getPointPosition(e,this.getDistanceFromCenterForValue(this.options.reverse?this.min:this.max)+5);t.font=i.fontString(this.options.pointLabels.fontSize,this.options.pointLabels.fontStyle,this.options.pointLabels.fontFamily),t.fillStyle=this.options.pointLabels.fontColor;var o=this.pointLabels.length,n=this.pointLabels.length/2,r=n/2,h=r>e||e>o-r,l=e===r||e===o-r;0===e?t.textAlign="center":e===n?t.textAlign="center":n>e?t.textAlign="left":t.textAlign="right",l?t.textBaseline="middle":h?t.textBaseline="bottom":t.textBaseline="top",t.fillText(this.pointLabels[e]?this.pointLabels[e]:"",a.x,a.y)}}}}});e.scaleService.registerScaleType("radialLinear",a,s)}.call(this),function(t){"use strict";if(!t)return void console.warn("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at http://momentjs.com/");var e=this,i=e.Chart,s=i.helpers,a={units:[{name:"millisecond",steps:[1,2,5,10,20,50,100,250,500]},{name:"second",steps:[1,2,5,10,30]},{name:"minute",steps:[1,2,5,10,30]},{name:"hour",steps:[1,2,3,6,12]},{name:"day",steps:[1,2,5]},{name:"week",maxStep:4},{name:"month",maxStep:3},{name:"quarter",maxStep:4},{name:"year",maxStep:!1}]},o={position:"bottom",time:{format:!1,unit:!1,round:!1,displayFormat:!1,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"}}},n=i.Scale.extend({getLabelMoment:function(t,e){return this.labelMoments[t][e]},determineDataLimits:function(){this.labelMoments=[];var e=[];this.chart.data.labels&&this.chart.data.labels.length>0?(s.each(this.chart.data.labels,function(t,i){var s=this.parseTime(t);this.options.time.round&&s.startOf(this.options.time.round),e.push(s)},this),this.firstTick=t.min.call(this,e),this.lastTick=t.max.call(this,e)):(this.firstTick=null,this.lastTick=null),s.each(this.chart.data.datasets,function(i,a){var o=[];"object"==typeof i.data[0]?s.each(i.data,function(e,i){var s=this.parseTime(this.getRightValue(e));this.options.time.round&&s.startOf(this.options.time.round),o.push(s),this.firstTick=null!==this.firstTick?t.min(this.firstTick,s):s,this.lastTick=null!==this.lastTick?t.max(this.lastTick,s):s},this):o=e,this.labelMoments.push(o)},this),this.options.time.min&&(this.firstTick=this.parseTime(this.options.time.min)),this.options.time.max&&(this.lastTick=this.parseTime(this.options.time.max)),this.firstTick=(this.firstTick||t()).clone(),this.lastTick=(this.lastTick||t()).clone()},buildTicks:function(t){if(this.ticks=[],this.unitScale=1,this.options.time.unit)this.tickUnit=this.options.time.unit||"day",this.displayFormat=this.options.time.displayFormats[this.tickUnit],this.tickRange=Math.ceil(this.lastTick.diff(this.firstTick,this.tickUnit,!0));else{var e=this.isHorizontal()?this.width-(this.paddingLeft+this.paddingRight):this.height-(this.paddingTop+this.paddingBottom),i=e/(this.options.ticks.fontSize+10),o=this.options.time.round?0:1;this.tickUnit="millisecond",this.tickRange=Math.ceil(this.lastTick.diff(this.firstTick,this.tickUnit,!0)+o),this.displayFormat=this.options.time.displayFormats[this.tickUnit];for(var n=0,r=a.units[n];n<a.units.length;){if(this.unitScale=1,s.isArray(r.steps)&&Math.ceil(this.tickRange/i)<s.max(r.steps)){for(var h=0;h<r.steps.length;++h)if(r.steps[h]>Math.ceil(this.tickRange/i)){this.unitScale=r.steps[h];break}break}if(r.maxStep===!1||Math.ceil(this.tickRange/i)<r.maxStep){this.unitScale=Math.ceil(this.tickRange/i);break}++n,r=a.units[n],this.tickUnit=r.name,this.tickRange=Math.ceil(this.lastTick.diff(this.firstTick,this.tickUnit)+o),this.displayFormat=this.options.time.displayFormats[r.name]}}var l;this.options.time.min?l=this.firstTick.clone().startOf(this.tickUnit):(this.firstTick.startOf(this.tickUnit),l=this.firstTick),this.options.time.max||this.lastTick.endOf(this.tickUnit),this.smallestLabelSeparation=this.width,s.each(this.chart.data.datasets,function(t,e){for(var i=1;i<this.labelMoments[e].length;i++)this.smallestLabelSeparation=Math.min(this.smallestLabelSeparation,this.labelMoments[e][i].diff(this.labelMoments[e][i-1],this.tickUnit,!0))},this),this.options.time.displayFormat&&(this.displayFormat=this.options.time.displayFormat),this.ticks.push(this.firstTick.clone());for(var c=1;c<this.tickRange;++c){var d=l.clone().add(c,this.tickUnit);if(this.options.time.max&&d.diff(this.lastTick,this.tickUnit,!0)>=0)break;c%this.unitScale===0&&this.ticks.push(d)}this.options.time.max?this.ticks.push(this.lastTick.clone()):0!==this.ticks[this.ticks.length-1].diff(this.lastTick,this.tickUnit,!0)&&(this.tickRange=Math.ceil(this.tickRange/this.unitScale)*this.unitScale,this.ticks.push(this.firstTick.clone().add(this.tickRange,this.tickUnit)),this.lastTick=this.ticks[this.ticks.length-1].clone())},getLabelForIndex:function(t,e){var i=this.chart.data.labels&&t<this.chart.data.labels.length?this.chart.data.labels[t]:"";return"object"==typeof this.chart.data.datasets[e].data[0]&&(i=this.getRightValue(this.chart.data.datasets[e].data[t])),this.options.time.tooltipFormat&&(i=this.parseTime(i).format(this.options.time.tooltipFormat)),i},convertTicksToLabels:function(){this.ticks=this.ticks.map(function(t,e,i){var s=t.format(this.displayFormat);return this.options.ticks.userCallback?this.options.ticks.userCallback(s,e,i):s},this)},getPixelForValue:function(t,e,i,s){var a=this.getLabelMoment(i,e),o=a.diff(this.firstTick,this.tickUnit,!0),n=o/this.tickRange;if(this.isHorizontal()){var r=this.width-(this.paddingLeft+this.paddingRight),h=(r/Math.max(this.ticks.length-1,1),r*n+this.paddingLeft);return this.left+Math.round(h)}var l=this.height-(this.paddingTop+this.paddingBottom),c=(l/Math.max(this.ticks.length-1,1),l*n+this.paddingTop);return this.top+Math.round(c)},parseTime:function(e){return"function"==typeof e.getMonth||"number"==typeof e?t(e):e.isValid&&e.isValid()?e:"string"!=typeof this.options.time.format&&this.options.time.format.call?this.options.time.format(e):t(e,this.options.time.format)}});i.scaleService.registerScaleType("time",n,o)}.call(this,t),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.global.elements.arc={backgroundColor:e.defaults.global.defaultColor,borderColor:"#fff",borderWidth:2},e.elements.Arc=e.Element.extend({inLabelRange:function(t){var e=this._view;return e?Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2):!1},inRange:function(t,e){var s=this._view;if(s){var a=i.getAngleFromPoint(s,{x:t,y:e}),o=s.startAngle<-.5*Math.PI?s.startAngle+2*Math.PI:s.startAngle>1.5*Math.PI?s.startAngle-2*Math.PI:s.startAngle,n=s.endAngle<-.5*Math.PI?s.endAngle+2*Math.PI:s.endAngle>1.5*Math.PI?s.endAngle-2*Math.PI:s.endAngle,r=a.angle>=o&&a.angle<=n,h=a.distance>=s.innerRadius&&a.distance<=s.outerRadius;return r&&h}return!1},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,e.startAngle,e.endAngle),t.arc(e.x,e.y,e.innerRadius,e.endAngle,e.startAngle,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers;e.defaults.global.elements.line={tension:.4,backgroundColor:e.defaults.global.defaultColor,borderWidth:3,borderColor:e.defaults.global.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",fill:!0},e.elements.Line=e.Element.extend({lineToNextPoint:function(t,e,i,s,a){var o=this._chart.ctx;e._view.skip?s.call(this,t,e,i):t._view.skip?a.call(this,t,e,i):0===e._view.tension?o.lineTo(e._view.x,e._view.y):o.bezierCurveTo(t._view.controlPointNextX,t._view.controlPointNextY,e._view.controlPointPreviousX,e._view.controlPointPreviousY,e._view.x,e._view.y)},draw:function(){function t(t){n._view.skip||r._view.skip?t&&o.lineTo(s._view.scaleZero.x,s._view.scaleZero.y):o.bezierCurveTo(r._view.controlPointNextX,r._view.controlPointNextY,n._view.controlPointPreviousX,n._view.controlPointPreviousY,n._view.x,n._view.y)}var s=this,a=this._view,o=this._chart.ctx,n=this._children[0],r=this._children[this._children.length-1];o.save(),this._children.length>0&&a.fill&&(o.beginPath(),i.each(this._children,function(t,e){var s=i.previousItem(this._children,e),n=i.nextItem(this._children,e);0===e?(this._loop?o.moveTo(a.scaleZero.x,a.scaleZero.y):o.moveTo(t._view.x,a.scaleZero),t._view.skip?this._loop||o.moveTo(n._view.x,this._view.scaleZero):o.lineTo(t._view.x,t._view.y)):this.lineToNextPoint(s,t,n,function(t,e,i){this._loop?o.lineTo(this._view.scaleZero.x,this._view.scaleZero.y):(o.lineTo(t._view.x,this._view.scaleZero),o.moveTo(i._view.x,this._view.scaleZero))},function(t,e){o.lineTo(e._view.x,e._view.y)})},this),this._loop?t(!0):(o.lineTo(this._children[this._children.length-1]._view.x,a.scaleZero),o.lineTo(this._children[0]._view.x,a.scaleZero)),o.fillStyle=a.backgroundColor||e.defaults.global.defaultColor,o.closePath(),o.fill()),o.lineCap=a.borderCapStyle||e.defaults.global.elements.line.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||e.defaults.global.elements.line.borderDash),o.lineDashOffset=a.borderDashOffset||e.defaults.global.elements.line.borderDashOffset,o.lineJoin=a.borderJoinStyle||e.defaults.global.elements.line.borderJoinStyle,o.lineWidth=a.borderWidth||e.defaults.global.elements.line.borderWidth,o.strokeStyle=a.borderColor||e.defaults.global.defaultColor,o.beginPath(),i.each(this._children,function(t,e){var s=i.previousItem(this._children,e),a=i.nextItem(this._children,e);0===e?o.moveTo(t._view.x,t._view.y):this.lineToNextPoint(s,t,a,function(t,e,i){o.moveTo(i._view.x,i._view.y)},function(t,e){o.moveTo(e._view.x,e._view.y)})},this),this._loop&&this._children.length>0&&t(),o.stroke(),o.restore()}})}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.defaults.global.elements.point={radius:3,pointStyle:"circle",backgroundColor:e.defaults.global.defaultColor,borderWidth:1,borderColor:e.defaults.global.defaultColor,hitRadius:1,hoverRadius:4,hoverBorderWidth:1},e.elements.Point=e.Element.extend({inRange:function(t,e){var i=this._view;if(i){var s=i.hitRadius+i.radius;return Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(s,2)}return!1},inLabelRange:function(t){var e=this._view;return e?Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2):!1},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(){var t=this._view,i=this._chart.ctx;if(!t.skip&&(t.radius>0||t.borderWidth>0)){i.strokeStyle=t.borderColor||e.defaults.global.defaultColor,i.lineWidth=t.borderWidth||e.defaults.global.elements.point.borderWidth,i.fillStyle=t.backgroundColor||e.defaults.global.defaultColor;var s=t.radius||e.defaults.global.elements.point.radius;switch(t.pointStyle){case"circle":default:i.beginPath(),i.arc(t.x,t.y,s,0,2*Math.PI),i.closePath(),i.fill();break;case"triangle":i.beginPath();var a=3*s/Math.sqrt(3),o=a*Math.sqrt(3)/2;i.moveTo(t.x-a/2,t.y+o/3),i.lineTo(t.x+a/2,t.y+o/3),i.lineTo(t.x,t.y-2*o/3),i.closePath(),i.fill();break;case"rect":i.fillRect(t.x-1/Math.SQRT2*s,t.y-1/Math.SQRT2*s,2/Math.SQRT2*s,2/Math.SQRT2*s),i.strokeRect(t.x-1/Math.SQRT2*s,t.y-1/Math.SQRT2*s,2/Math.SQRT2*s,2/Math.SQRT2*s);break;case"rectRot":i.translate(t.x,t.y),i.rotate(Math.PI/4),i.fillRect(-1/Math.SQRT2*s,-1/Math.SQRT2*s,2/Math.SQRT2*s,2/Math.SQRT2*s),i.strokeRect(-1/Math.SQRT2*s,-1/Math.SQRT2*s,2/Math.SQRT2*s,2/Math.SQRT2*s),i.setTransform(1,0,0,1,0,0);break;case"cross":i.beginPath(),i.moveTo(t.x,t.y+s),i.lineTo(t.x,t.y-s),i.moveTo(t.x-s,t.y),i.lineTo(t.x+s,t.y),i.closePath();break;case"crossRot":i.beginPath();var n=Math.cos(Math.PI/4)*s,r=Math.sin(Math.PI/4)*s;i.moveTo(t.x-n,t.y-r),i.lineTo(t.x+n,t.y+r),i.moveTo(t.x-n,t.y+r),i.lineTo(t.x+n,t.y-r),i.closePath();break;case"star":i.beginPath(),i.moveTo(t.x,t.y+s),i.lineTo(t.x,t.y-s),i.moveTo(t.x-s,t.y),i.lineTo(t.x+s,t.y);var n=Math.cos(Math.PI/4)*s,r=Math.sin(Math.PI/4)*s;i.moveTo(t.x-n,t.y-r),i.lineTo(t.x+n,t.y+r),i.moveTo(t.x-n,t.y+r),i.lineTo(t.x+n,t.y-r),i.closePath();break;case"line":i.beginPath(),i.moveTo(t.x-s,t.y),i.lineTo(t.x+s,t.y),i.closePath();break;case"dash":i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(t.x+s,t.y),i.closePath()}i.stroke()}}})}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.defaults.global.elements.rectangle={backgroundColor:e.defaults.global.defaultColor,borderWidth:0,borderColor:e.defaults.global.defaultColor},e.elements.Rectangle=e.Element.extend({draw:function(){var t=this._chart.ctx,e=this._view,i=e.width/2,s=e.x-i,a=e.x+i,o=e.base-(e.base-e.y),n=e.borderWidth/2;e.borderWidth&&(s+=n,a-=n,o+=n),t.beginPath(),t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.moveTo(s,e.base),t.lineTo(s,o),t.lineTo(a,o),t.lineTo(a,e.base),t.fill(),e.borderWidth&&t.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=this._view,s=!1;return i&&(s=i.y<i.base?t>=i.x-i.width/2&&t<=i.x+i.width/2&&e>=i.y&&e<=i.base:t>=i.x-i.width/2&&t<=i.x+i.width/2&&e>=i.base&&e<=i.y),s},inLabelRange:function(t){var e=this._view;return e?t>=e.x-e.width/2&&t<=e.x+e.width/2:!1},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.Bar=function(t,i){return i.type="bar",new e(t,i)}}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.Bubble=function(t,i){return i.type="bubble",new e(t,i)}}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.Doughnut=function(t,i){return i.type="doughnut",new e(t,i)}}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.Line=function(t,i){return i.type="line",new e(t,i)}}.call(this),function(){"use strict";var t=this,e=t.Chart;e.helpers;e.PolarArea=function(t,i){return i.type="polarArea",new e(t,i)}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=e.helpers,s={aspectRatio:1};e.Radar=function(t,a){return a.options=i.configMerge(s,a.options),a.type="radar",new e(t,a)}}.call(this),function(){"use strict";var t=this,e=t.Chart,i=(e.helpers,{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(t,e){return""},label:function(t,e){return"("+t.xLabel+", "+t.yLabel+")"}}}});e.defaults.scatter=i,e.controllers.scatter=e.controllers.line,e.Scatter=function(t,i){return i.type="scatter",new e(t,i)}}.call(this),this.Chart});
|
languages/post-views-counter-pl_PL.mo
CHANGED
Binary file
|
languages/post-views-counter-pl_PL.po
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Post Views Counter\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: Bartosz Arendt <info@dfactory.eu>\n"
|
7 |
"Language-Team: dFactory <info@dfactory.eu>\n"
|
8 |
"Language: pl_PL\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 1.8.
|
13 |
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;esc_attr__;esc_attr_e;"
|
14 |
"esc_html__;esc_html_e\n"
|
15 |
"X-Poedit-Basepath: .\n"
|
@@ -17,259 +17,269 @@ msgstr ""
|
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
"X-Poedit-SearchPath-0: ..\n"
|
19 |
|
20 |
-
#: ../includes/columns.php:
|
21 |
-
#: ../includes/columns.php:
|
|
|
|
|
22 |
msgid "Post Views"
|
23 |
msgstr "Odwiedziny"
|
24 |
|
25 |
-
#: ../includes/columns.php:
|
26 |
msgid "Edit"
|
27 |
msgstr "Edytuj"
|
28 |
|
29 |
-
#: ../includes/columns.php:
|
30 |
msgid "Adjust the views count for this post."
|
31 |
msgstr "Zmodyfikuj liczbę odsłon tego wpisu."
|
32 |
|
33 |
-
#: ../includes/columns.php:
|
34 |
msgid "OK"
|
35 |
msgstr "OK"
|
36 |
|
37 |
-
#: ../includes/columns.php:
|
38 |
msgid "Cancel"
|
39 |
msgstr "Anuluj"
|
40 |
|
41 |
-
#: ../includes/cron.php:
|
42 |
msgid "Post Views Counter reset daily counts interval"
|
43 |
msgstr ""
|
44 |
"Odstęp czasu po jakim resetowane będą dzienne dane o liczbie odwiedzin."
|
45 |
|
46 |
-
#: ../includes/cron.php:
|
47 |
msgid "Post Views Counter cache flush interval"
|
48 |
msgstr "Czas czyszczenia danych o odsłonach z cache"
|
49 |
|
50 |
-
#: ../includes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
msgid "No Posts"
|
52 |
msgstr "Brak wpisów"
|
53 |
|
54 |
-
#: ../includes/settings.php:
|
55 |
msgid "PHP"
|
56 |
msgstr "PHP"
|
57 |
|
58 |
-
#: ../includes/settings.php:
|
59 |
msgid "JavaScript"
|
60 |
msgstr "JavaScript"
|
61 |
|
62 |
-
#: ../includes/settings.php:
|
63 |
msgid "minutes"
|
64 |
msgstr "minuty"
|
65 |
|
66 |
-
#: ../includes/settings.php:
|
67 |
msgid "hours"
|
68 |
msgstr "godziny"
|
69 |
|
70 |
-
#: ../includes/settings.php:
|
71 |
msgid "days"
|
72 |
msgstr "dni"
|
73 |
|
74 |
-
#: ../includes/settings.php:
|
75 |
msgid "weeks"
|
76 |
msgstr "tygodnie"
|
77 |
|
78 |
-
#: ../includes/settings.php:
|
79 |
msgid "months"
|
80 |
msgstr "miesiące"
|
81 |
|
82 |
-
#: ../includes/settings.php:
|
83 |
msgid "years"
|
84 |
msgstr "lata"
|
85 |
|
86 |
-
#: ../includes/settings.php:
|
87 |
msgid "robots"
|
88 |
msgstr "roboty"
|
89 |
|
90 |
-
#: ../includes/settings.php:
|
91 |
msgid "logged in users"
|
92 |
msgstr "zalogowani użytkownicy"
|
93 |
|
94 |
-
#: ../includes/settings.php:
|
95 |
msgid "guests"
|
96 |
msgstr "goście"
|
97 |
|
98 |
-
#: ../includes/settings.php:
|
99 |
msgid "selected user roles"
|
100 |
msgstr "wybrane role użytkowników"
|
101 |
|
102 |
-
#: ../includes/settings.php:
|
103 |
msgid "before the content"
|
104 |
msgstr "przed treścią"
|
105 |
|
106 |
-
#: ../includes/settings.php:
|
107 |
msgid "after the content"
|
108 |
msgstr "po treści"
|
109 |
|
110 |
-
#: ../includes/settings.php:
|
111 |
msgid "manual"
|
112 |
msgstr "ręcznie"
|
113 |
|
114 |
-
#: ../includes/settings.php:
|
115 |
msgid "icon"
|
116 |
msgstr "ikona"
|
117 |
|
118 |
-
#: ../includes/settings.php:
|
119 |
msgid "label"
|
120 |
msgstr "etykieta"
|
121 |
|
122 |
-
#: ../includes/settings.php:
|
123 |
msgid "General"
|
124 |
msgstr "Ogólne"
|
125 |
|
126 |
-
#: ../includes/settings.php:
|
127 |
msgid "Display"
|
128 |
msgstr "Wyświetlanie"
|
129 |
|
130 |
-
#: ../includes/settings.php:
|
131 |
-
#: ../includes/settings.php:
|
132 |
msgid "Post Views Counter"
|
133 |
msgstr "Licznik odwiedzin"
|
134 |
|
135 |
-
#: ../includes/settings.php:
|
136 |
msgid "Need support?"
|
137 |
msgstr "Potrzebujesz pomocy?"
|
138 |
|
139 |
-
#: ../includes/settings.php:
|
140 |
msgid ""
|
141 |
"If you are having problems with this plugin, please talk about them in the"
|
142 |
msgstr "Jeśli masz jakieś problemy z tą wtyczką, powiedz o nich"
|
143 |
|
144 |
-
#: ../includes/settings.php:
|
145 |
msgid "Support forum"
|
146 |
msgstr "Forum pomocy"
|
147 |
|
148 |
-
#: ../includes/settings.php:
|
149 |
msgid "Do you like this plugin?"
|
150 |
msgstr "Lubisz tę wtyczkę?"
|
151 |
|
152 |
-
#: ../includes/settings.php:
|
153 |
msgid "Rate it 5"
|
154 |
msgstr "Oceń ją na 5"
|
155 |
|
156 |
-
#: ../includes/settings.php:
|
157 |
msgid "on WordPress.org"
|
158 |
msgstr "na WordPress.org"
|
159 |
|
160 |
-
#: ../includes/settings.php:
|
161 |
msgid "Blog about it & link to the"
|
162 |
msgstr "Napisz o niej i dodaj link"
|
163 |
|
164 |
-
#: ../includes/settings.php:
|
165 |
msgid "plugin page"
|
166 |
msgstr "do strony wtyczki"
|
167 |
|
168 |
-
#: ../includes/settings.php:
|
169 |
msgid "Check out our other"
|
170 |
msgstr "Sprawdż nasze inne"
|
171 |
|
172 |
-
#: ../includes/settings.php:
|
173 |
msgid "WordPress plugins"
|
174 |
msgstr "wtyczki do WordPressa"
|
175 |
|
176 |
-
#: ../includes/settings.php:
|
177 |
msgid "Created by"
|
178 |
msgstr "Stworzone przez"
|
179 |
|
180 |
-
#: ../includes/settings.php:
|
181 |
msgid "Reset to defaults"
|
182 |
msgstr "Resetuj do domyślnych"
|
183 |
|
184 |
-
#: ../includes/settings.php:
|
185 |
msgid "General settings"
|
186 |
msgstr "Ustawienia ogólne"
|
187 |
|
188 |
-
#: ../includes/settings.php:
|
189 |
msgid "Post Types Count"
|
190 |
msgstr "Własne typy wpisów"
|
191 |
|
192 |
-
#: ../includes/settings.php:
|
193 |
msgid "Counter Mode"
|
194 |
msgstr "Tryb pracy licznika"
|
195 |
|
196 |
-
#: ../includes/settings.php:
|
197 |
msgid "Post Views Column"
|
198 |
msgstr "Kolumna z liczbą odwiedzin"
|
199 |
|
200 |
-
#: ../includes/settings.php:
|
201 |
msgid "Restrict Edit"
|
202 |
msgstr "Ograniczenie edycji"
|
203 |
|
204 |
-
#: ../includes/settings.php:
|
205 |
msgid "Time Between Counts"
|
206 |
msgstr "Czas między zliczaniem"
|
207 |
|
208 |
-
#: ../includes/settings.php:
|
209 |
msgid "Reset Data Interval"
|
210 |
msgstr "Czas resetowania danych"
|
211 |
|
212 |
-
#: ../includes/settings.php:
|
213 |
msgid "Flush Object Cache Interval"
|
214 |
msgstr "Czas czyszczenia cache"
|
215 |
|
216 |
-
#: ../includes/settings.php:
|
217 |
msgid "Exclude Visitors"
|
218 |
msgstr "Wykluczanie odwiedzających"
|
219 |
|
220 |
-
#: ../includes/settings.php:
|
221 |
msgid "Exclude IPs"
|
222 |
msgstr "Wykluczanie IP"
|
223 |
|
224 |
-
#: ../includes/settings.php:
|
225 |
msgid "WP-PostViews"
|
226 |
msgstr "WP-PostViews"
|
227 |
|
228 |
-
#: ../includes/settings.php:
|
229 |
msgid "Deactivation"
|
230 |
msgstr "Deaktywacja wtyczki"
|
231 |
|
232 |
-
#: ../includes/settings.php:
|
233 |
msgid "Display settings"
|
234 |
msgstr "Ustawienia wyświetlania"
|
235 |
|
236 |
-
#: ../includes/settings.php:
|
237 |
msgid "Post Views Label"
|
238 |
msgstr "Etykieta licznika"
|
239 |
|
240 |
-
#: ../includes/settings.php:
|
241 |
msgid "Post Types Display"
|
242 |
msgstr "Wyświetlanie licznika"
|
243 |
|
244 |
-
#: ../includes/settings.php:
|
245 |
msgid "Restrict Display"
|
246 |
msgstr "Ograniczenia wyświetlania"
|
247 |
|
248 |
-
#: ../includes/settings.php:
|
249 |
msgid "Position"
|
250 |
msgstr "Pozycja"
|
251 |
|
252 |
-
#: ../includes/settings.php:
|
253 |
msgid "Display Style"
|
254 |
msgstr "Styl wyświetlania"
|
255 |
|
256 |
-
#: ../includes/settings.php:
|
257 |
msgid "Icon Class"
|
258 |
msgstr "Klasa ikony"
|
259 |
|
260 |
-
#: ../includes/settings.php:
|
261 |
msgid "Enter the label for the post views counter field."
|
262 |
msgstr "Wpisz etykietę jaka będzie wyświetlana w liczniku odwiedzin wpisu."
|
263 |
|
264 |
-
#: ../includes/settings.php:
|
265 |
msgid "Select post types for which post views will be counted."
|
266 |
msgstr "Wybierz typy wpisów dla których będzie włączone zliczanie."
|
267 |
|
268 |
-
#: ../includes/settings.php:
|
269 |
msgid "Select post types for which post views will be displayed."
|
270 |
msgstr "Wybierz typy wpisów dla których licznik będzie wyświetlony."
|
271 |
|
272 |
-
#: ../includes/settings.php:
|
273 |
msgid ""
|
274 |
"Select the method of collecting post views data. If you are using any of the "
|
275 |
"caching plugins select Javascript."
|
@@ -277,17 +287,17 @@ msgstr ""
|
|
277 |
"Wybierz metodę gromadzenia danych. Jeśli używaż jakiejkolwiek wtyczki do "
|
278 |
"cachowania wybierz Javascript."
|
279 |
|
280 |
-
#: ../includes/settings.php:
|
281 |
msgid ""
|
282 |
"Enable to display post views count column for each of the selected post "
|
283 |
"types."
|
284 |
msgstr "Włącz aby wyświetlić kolumnę z liczbą odsłon."
|
285 |
|
286 |
-
#: ../includes/settings.php:
|
287 |
msgid "Enter the time between single user visit count."
|
288 |
msgstr "Określ czas pomiędzy zliczaniem wizyt poszczególnego użytkownika."
|
289 |
|
290 |
-
#: ../includes/settings.php:
|
291 |
msgid ""
|
292 |
"Delete single day post views data older than specified above. Enter 0 "
|
293 |
"(number zero) if you want to preserve your data regardless of its age."
|
@@ -295,7 +305,7 @@ msgstr ""
|
|
295 |
"Usuwanie dziennych danych o liczbie wpisów po określonym powyżej czasie. "
|
296 |
"Wpisz 0 jeśli chcesz przetrzymywać te dane bez ograniczeń."
|
297 |
|
298 |
-
#: ../includes/settings.php:
|
299 |
msgid ""
|
300 |
"How often to flush cached view counts from the object cache into the "
|
301 |
"database. This feature is used only if a persistent object cache is detected "
|
@@ -314,56 +324,56 @@ msgstr ""
|
|
314 |
"jeśli cachowanie obiektowe nie będzie dostępne lub cache zostanie "
|
315 |
"wyczyszczony w trakcie trwania wybranego okresu."
|
316 |
|
317 |
-
#: ../includes/settings.php:
|
318 |
msgid "Use it to hide the post views counter from selected type of visitors."
|
319 |
msgstr ""
|
320 |
"Użyj tego aby ograniczyć wyświetlanie licznika do określonych typów "
|
321 |
"użytkowników."
|
322 |
|
323 |
-
#: ../includes/settings.php:
|
324 |
msgid "Use it to hide the post views counter from selected user roles."
|
325 |
msgstr ""
|
326 |
"Użyj tego aby ograniczyć wyświetlanie licznika do określonych tról "
|
327 |
"użytkowników."
|
328 |
|
329 |
-
#: ../includes/settings.php:
|
330 |
msgid "Remove"
|
331 |
msgstr "Usuń"
|
332 |
|
333 |
-
#: ../includes/settings.php:
|
334 |
msgid "Add new"
|
335 |
msgstr "Dodaj nowy"
|
336 |
|
337 |
-
#: ../includes/settings.php:
|
338 |
msgid "Add my current IP"
|
339 |
msgstr "Dodaj mój aktualny IP"
|
340 |
|
341 |
-
#: ../includes/settings.php:
|
342 |
msgid "Enter the IP addresses to be excluded from post views count."
|
343 |
msgstr "Wpisz adresy IP, któe mają być wyłączone z działania licznika."
|
344 |
|
345 |
-
#: ../includes/settings.php:
|
346 |
msgid "Import"
|
347 |
msgstr "Importuj"
|
348 |
|
349 |
-
#: ../includes/settings.php:
|
350 |
msgid "Import post views data from WP-PostViews plugin."
|
351 |
msgstr "Importuj dane o liczbie odwiedzin z wtyczki WP-PostViews."
|
352 |
|
353 |
-
#: ../includes/settings.php:
|
354 |
msgid "Override existing Post Views Counter data."
|
355 |
msgstr "Nadpisz istniejące dane Licznika odwiedzin."
|
356 |
|
357 |
-
#: ../includes/settings.php:
|
358 |
msgid "Enable to restrict post views editing to admins only."
|
359 |
msgstr ""
|
360 |
"Włącz aby ograniczyć możliwość edycji liczby wpisów do administratorów."
|
361 |
|
362 |
-
#: ../includes/settings.php:
|
363 |
msgid "Enable to delete all plugin data on deactivation."
|
364 |
msgstr "Włącz aby usunąć wszystkie dane wtyczki podczas deaktywacji"
|
365 |
|
366 |
-
#: ../includes/settings.php:
|
367 |
msgid ""
|
368 |
"Select where would you like to display the post views counter. Use [post-"
|
369 |
"views] shortcode for manual display."
|
@@ -371,11 +381,11 @@ msgstr ""
|
|
371 |
"Wybierz w którym miejscu chcesz wyświetlać licznik odwiedzin. Użyj skrótu "
|
372 |
"[post-views] aby wyświetlić licznik ręcznie."
|
373 |
|
374 |
-
#: ../includes/settings.php:
|
375 |
msgid "Choose how to display the post views counter."
|
376 |
msgstr "Wybierz w jaki sposób chcesz wyświetlać licznik."
|
377 |
|
378 |
-
#: ../includes/settings.php:
|
379 |
#, php-format
|
380 |
msgid ""
|
381 |
"Enter the post views icon class. Any of the <a href=\"%s\" target=\"_blank"
|
@@ -384,90 +394,96 @@ msgstr ""
|
|
384 |
"Wpisz klasę CSS ikony. Każda z ikond typu <a href=\"%s\" target=\"_blank"
|
385 |
"\">Dashicons</a> może być tutaj zastosowana."
|
386 |
|
387 |
-
#: ../includes/settings.php:
|
388 |
-
msgid "
|
389 |
-
msgstr "Dane
|
390 |
|
391 |
-
#: ../includes/settings.php:
|
392 |
-
msgid "There was no data to import."
|
393 |
-
msgstr "
|
394 |
|
395 |
-
#: ../includes/settings.php:
|
396 |
msgid "General settings restored to defaults."
|
397 |
msgstr "Ustawienia zostały przywrócone do domyślnych."
|
398 |
|
399 |
-
#: ../includes/settings.php:
|
400 |
msgid "Display settings restored to defaults."
|
401 |
msgstr "Ustawienia wyświetlania została przywrócone do domyślnych."
|
402 |
|
403 |
-
#: ../includes/widgets.php:
|
404 |
msgid "Most Viewed Posts"
|
405 |
msgstr "Najczęściej oglądane wpisy"
|
406 |
|
407 |
-
#: ../includes/widgets.php:
|
408 |
msgid "Displays a list of the most viewed posts"
|
409 |
msgstr "Wyświetla listę najczęściej oglądanych wpisów"
|
410 |
|
411 |
-
#: ../includes/widgets.php:
|
412 |
msgid "No Posts found"
|
413 |
msgstr "Brak wpisów"
|
414 |
|
415 |
-
#: ../includes/widgets.php:
|
416 |
msgid "Ascending"
|
417 |
msgstr "Rosnąco"
|
418 |
|
419 |
-
#: ../includes/widgets.php:
|
420 |
msgid "Descending"
|
421 |
msgstr "Malejąco"
|
422 |
|
423 |
-
#: ../includes/widgets.php:
|
424 |
msgid "Title"
|
425 |
msgstr "Tytuł"
|
426 |
|
427 |
-
#: ../includes/widgets.php:
|
428 |
msgid "Post Types"
|
429 |
msgstr "Typy wpisów"
|
430 |
|
431 |
-
#: ../includes/widgets.php:
|
432 |
msgid "Number of posts to show"
|
433 |
msgstr "Liczba wpisów do wyświetlenia"
|
434 |
|
435 |
-
#: ../includes/widgets.php:
|
436 |
msgid "No posts message"
|
437 |
msgstr "Treść braku wpisów"
|
438 |
|
439 |
-
#: ../includes/widgets.php:
|
440 |
msgid "Order"
|
441 |
msgstr "Kolejność"
|
442 |
|
443 |
-
#: ../includes/widgets.php:
|
444 |
msgid "Display post views?"
|
445 |
msgstr "Wyświetlanie liczby odsłon?"
|
446 |
|
447 |
-
#: ../includes/widgets.php:
|
448 |
msgid "Display post excerpt?"
|
449 |
msgstr "Wyświetlanie wypisu?"
|
450 |
|
451 |
-
#: ../includes/widgets.php:
|
452 |
msgid "Display post thumbnail?"
|
453 |
msgstr "WYświetlanie miniatury?"
|
454 |
|
455 |
-
#: ../includes/widgets.php:
|
456 |
msgid "Thumbnail size"
|
457 |
msgstr "WIelkość miniatury"
|
458 |
|
459 |
-
#: ../post-views-counter.php:
|
460 |
msgid "Are you sure you want to reset these settings to defaults?"
|
461 |
msgstr "Czy jesteś pewny, że chcesz zresetować ustawienia do domyślnych?"
|
462 |
|
463 |
-
#: ../post-views-counter.php:
|
464 |
msgid "Support"
|
465 |
msgstr "Forum pomocy"
|
466 |
|
467 |
-
#: ../post-views-counter.php:
|
468 |
msgid "Settings"
|
469 |
msgstr "Ustawienia"
|
470 |
|
|
|
|
|
|
|
|
|
|
|
|
|
471 |
#~ msgid "Select post types"
|
472 |
#~ msgstr "Wybierz typy wpisów"
|
473 |
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Post Views Counter\n"
|
4 |
+
"POT-Creation-Date: 2016-02-12 10:50+0100\n"
|
5 |
+
"PO-Revision-Date: 2016-02-12 10:51+0100\n"
|
6 |
"Last-Translator: Bartosz Arendt <info@dfactory.eu>\n"
|
7 |
"Language-Team: dFactory <info@dfactory.eu>\n"
|
8 |
"Language: pl_PL\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.8.7\n"
|
13 |
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;esc_attr__;esc_attr_e;"
|
14 |
"esc_html__;esc_html_e\n"
|
15 |
"X-Poedit-Basepath: .\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
"X-Poedit-SearchPath-0: ..\n"
|
19 |
|
20 |
+
#: ../includes/columns.php:59 ../includes/columns.php:194
|
21 |
+
#: ../includes/columns.php:200 ../includes/columns.php:272
|
22 |
+
#: ../includes/dashboard.php:28 ../includes/dashboard.php:87
|
23 |
+
#: ../includes/dashboard.php:97 ../includes/dashboard.php:107
|
24 |
msgid "Post Views"
|
25 |
msgstr "Odwiedziny"
|
26 |
|
27 |
+
#: ../includes/columns.php:68
|
28 |
msgid "Edit"
|
29 |
msgstr "Edytuj"
|
30 |
|
31 |
+
#: ../includes/columns.php:72
|
32 |
msgid "Adjust the views count for this post."
|
33 |
msgstr "Zmodyfikuj liczbę odsłon tego wpisu."
|
34 |
|
35 |
+
#: ../includes/columns.php:76
|
36 |
msgid "OK"
|
37 |
msgstr "OK"
|
38 |
|
39 |
+
#: ../includes/columns.php:77
|
40 |
msgid "Cancel"
|
41 |
msgstr "Anuluj"
|
42 |
|
43 |
+
#: ../includes/cron.php:52
|
44 |
msgid "Post Views Counter reset daily counts interval"
|
45 |
msgstr ""
|
46 |
"Odstęp czasu po jakim resetowane będą dzienne dane o liczbie odwiedzin."
|
47 |
|
48 |
+
#: ../includes/cron.php:57
|
49 |
msgid "Post Views Counter cache flush interval"
|
50 |
msgstr "Czas czyszczenia danych o odsłonach z cache"
|
51 |
|
52 |
+
#: ../includes/dashboard.php:60 ../includes/dashboard.php:63
|
53 |
+
msgid "You do not have permission to access this page."
|
54 |
+
msgstr "Nie masz uprawnień dostępu do tej strony."
|
55 |
+
|
56 |
+
#: ../includes/dashboard.php:121
|
57 |
+
msgid "Total Views"
|
58 |
+
msgstr "Odwiedzin ogółem"
|
59 |
+
|
60 |
+
#: ../includes/functions.php:132
|
61 |
msgid "No Posts"
|
62 |
msgstr "Brak wpisów"
|
63 |
|
64 |
+
#: ../includes/settings.php:35
|
65 |
msgid "PHP"
|
66 |
msgstr "PHP"
|
67 |
|
68 |
+
#: ../includes/settings.php:36
|
69 |
msgid "JavaScript"
|
70 |
msgstr "JavaScript"
|
71 |
|
72 |
+
#: ../includes/settings.php:40
|
73 |
msgid "minutes"
|
74 |
msgstr "minuty"
|
75 |
|
76 |
+
#: ../includes/settings.php:41
|
77 |
msgid "hours"
|
78 |
msgstr "godziny"
|
79 |
|
80 |
+
#: ../includes/settings.php:42
|
81 |
msgid "days"
|
82 |
msgstr "dni"
|
83 |
|
84 |
+
#: ../includes/settings.php:43
|
85 |
msgid "weeks"
|
86 |
msgstr "tygodnie"
|
87 |
|
88 |
+
#: ../includes/settings.php:44
|
89 |
msgid "months"
|
90 |
msgstr "miesiące"
|
91 |
|
92 |
+
#: ../includes/settings.php:45
|
93 |
msgid "years"
|
94 |
msgstr "lata"
|
95 |
|
96 |
+
#: ../includes/settings.php:49
|
97 |
msgid "robots"
|
98 |
msgstr "roboty"
|
99 |
|
100 |
+
#: ../includes/settings.php:50
|
101 |
msgid "logged in users"
|
102 |
msgstr "zalogowani użytkownicy"
|
103 |
|
104 |
+
#: ../includes/settings.php:51
|
105 |
msgid "guests"
|
106 |
msgstr "goście"
|
107 |
|
108 |
+
#: ../includes/settings.php:52
|
109 |
msgid "selected user roles"
|
110 |
msgstr "wybrane role użytkowników"
|
111 |
|
112 |
+
#: ../includes/settings.php:56
|
113 |
msgid "before the content"
|
114 |
msgstr "przed treścią"
|
115 |
|
116 |
+
#: ../includes/settings.php:57
|
117 |
msgid "after the content"
|
118 |
msgstr "po treści"
|
119 |
|
120 |
+
#: ../includes/settings.php:58
|
121 |
msgid "manual"
|
122 |
msgstr "ręcznie"
|
123 |
|
124 |
+
#: ../includes/settings.php:62
|
125 |
msgid "icon"
|
126 |
msgstr "ikona"
|
127 |
|
128 |
+
#: ../includes/settings.php:63
|
129 |
msgid "label"
|
130 |
msgstr "etykieta"
|
131 |
|
132 |
+
#: ../includes/settings.php:68
|
133 |
msgid "General"
|
134 |
msgstr "Ogólne"
|
135 |
|
136 |
+
#: ../includes/settings.php:74
|
137 |
msgid "Display"
|
138 |
msgstr "Wyświetlanie"
|
139 |
|
140 |
+
#: ../includes/settings.php:129 ../includes/settings.php:141
|
141 |
+
#: ../includes/settings.php:153
|
142 |
msgid "Post Views Counter"
|
143 |
msgstr "Licznik odwiedzin"
|
144 |
|
145 |
+
#: ../includes/settings.php:155
|
146 |
msgid "Need support?"
|
147 |
msgstr "Potrzebujesz pomocy?"
|
148 |
|
149 |
+
#: ../includes/settings.php:156
|
150 |
msgid ""
|
151 |
"If you are having problems with this plugin, please talk about them in the"
|
152 |
msgstr "Jeśli masz jakieś problemy z tą wtyczką, powiedz o nich"
|
153 |
|
154 |
+
#: ../includes/settings.php:156
|
155 |
msgid "Support forum"
|
156 |
msgstr "Forum pomocy"
|
157 |
|
158 |
+
#: ../includes/settings.php:158
|
159 |
msgid "Do you like this plugin?"
|
160 |
msgstr "Lubisz tę wtyczkę?"
|
161 |
|
162 |
+
#: ../includes/settings.php:159
|
163 |
msgid "Rate it 5"
|
164 |
msgstr "Oceń ją na 5"
|
165 |
|
166 |
+
#: ../includes/settings.php:159
|
167 |
msgid "on WordPress.org"
|
168 |
msgstr "na WordPress.org"
|
169 |
|
170 |
+
#: ../includes/settings.php:160
|
171 |
msgid "Blog about it & link to the"
|
172 |
msgstr "Napisz o niej i dodaj link"
|
173 |
|
174 |
+
#: ../includes/settings.php:160
|
175 |
msgid "plugin page"
|
176 |
msgstr "do strony wtyczki"
|
177 |
|
178 |
+
#: ../includes/settings.php:161
|
179 |
msgid "Check out our other"
|
180 |
msgstr "Sprawdż nasze inne"
|
181 |
|
182 |
+
#: ../includes/settings.php:161
|
183 |
msgid "WordPress plugins"
|
184 |
msgstr "wtyczki do WordPressa"
|
185 |
|
186 |
+
#: ../includes/settings.php:164
|
187 |
msgid "Created by"
|
188 |
msgstr "Stworzone przez"
|
189 |
|
190 |
+
#: ../includes/settings.php:180
|
191 |
msgid "Reset to defaults"
|
192 |
msgstr "Resetuj do domyślnych"
|
193 |
|
194 |
+
#: ../includes/settings.php:196
|
195 |
msgid "General settings"
|
196 |
msgstr "Ustawienia ogólne"
|
197 |
|
198 |
+
#: ../includes/settings.php:197
|
199 |
msgid "Post Types Count"
|
200 |
msgstr "Własne typy wpisów"
|
201 |
|
202 |
+
#: ../includes/settings.php:198
|
203 |
msgid "Counter Mode"
|
204 |
msgstr "Tryb pracy licznika"
|
205 |
|
206 |
+
#: ../includes/settings.php:199
|
207 |
msgid "Post Views Column"
|
208 |
msgstr "Kolumna z liczbą odwiedzin"
|
209 |
|
210 |
+
#: ../includes/settings.php:200
|
211 |
msgid "Restrict Edit"
|
212 |
msgstr "Ograniczenie edycji"
|
213 |
|
214 |
+
#: ../includes/settings.php:201
|
215 |
msgid "Time Between Counts"
|
216 |
msgstr "Czas między zliczaniem"
|
217 |
|
218 |
+
#: ../includes/settings.php:202
|
219 |
msgid "Reset Data Interval"
|
220 |
msgstr "Czas resetowania danych"
|
221 |
|
222 |
+
#: ../includes/settings.php:203
|
223 |
msgid "Flush Object Cache Interval"
|
224 |
msgstr "Czas czyszczenia cache"
|
225 |
|
226 |
+
#: ../includes/settings.php:204
|
227 |
msgid "Exclude Visitors"
|
228 |
msgstr "Wykluczanie odwiedzających"
|
229 |
|
230 |
+
#: ../includes/settings.php:205
|
231 |
msgid "Exclude IPs"
|
232 |
msgstr "Wykluczanie IP"
|
233 |
|
234 |
+
#: ../includes/settings.php:206
|
235 |
msgid "WP-PostViews"
|
236 |
msgstr "WP-PostViews"
|
237 |
|
238 |
+
#: ../includes/settings.php:207
|
239 |
msgid "Deactivation"
|
240 |
msgstr "Deaktywacja wtyczki"
|
241 |
|
242 |
+
#: ../includes/settings.php:211
|
243 |
msgid "Display settings"
|
244 |
msgstr "Ustawienia wyświetlania"
|
245 |
|
246 |
+
#: ../includes/settings.php:212
|
247 |
msgid "Post Views Label"
|
248 |
msgstr "Etykieta licznika"
|
249 |
|
250 |
+
#: ../includes/settings.php:213
|
251 |
msgid "Post Types Display"
|
252 |
msgstr "Wyświetlanie licznika"
|
253 |
|
254 |
+
#: ../includes/settings.php:214
|
255 |
msgid "Restrict Display"
|
256 |
msgstr "Ograniczenia wyświetlania"
|
257 |
|
258 |
+
#: ../includes/settings.php:215
|
259 |
msgid "Position"
|
260 |
msgstr "Pozycja"
|
261 |
|
262 |
+
#: ../includes/settings.php:216
|
263 |
msgid "Display Style"
|
264 |
msgstr "Styl wyświetlania"
|
265 |
|
266 |
+
#: ../includes/settings.php:217
|
267 |
msgid "Icon Class"
|
268 |
msgstr "Klasa ikony"
|
269 |
|
270 |
+
#: ../includes/settings.php:228
|
271 |
msgid "Enter the label for the post views counter field."
|
272 |
msgstr "Wpisz etykietę jaka będzie wyświetlana w liczniku odwiedzin wpisu."
|
273 |
|
274 |
+
#: ../includes/settings.php:246
|
275 |
msgid "Select post types for which post views will be counted."
|
276 |
msgstr "Wybierz typy wpisów dla których będzie włączone zliczanie."
|
277 |
|
278 |
+
#: ../includes/settings.php:263
|
279 |
msgid "Select post types for which post views will be displayed."
|
280 |
msgstr "Wybierz typy wpisów dla których licznik będzie wyświetlony."
|
281 |
|
282 |
+
#: ../includes/settings.php:282
|
283 |
msgid ""
|
284 |
"Select the method of collecting post views data. If you are using any of the "
|
285 |
"caching plugins select Javascript."
|
287 |
"Wybierz metodę gromadzenia danych. Jeśli używaż jakiejkolwiek wtyczki do "
|
288 |
"cachowania wybierz Javascript."
|
289 |
|
290 |
+
#: ../includes/settings.php:292
|
291 |
msgid ""
|
292 |
"Enable to display post views count column for each of the selected post "
|
293 |
"types."
|
294 |
msgstr "Włącz aby wyświetlić kolumnę z liczbą odsłon."
|
295 |
|
296 |
+
#: ../includes/settings.php:312
|
297 |
msgid "Enter the time between single user visit count."
|
298 |
msgstr "Określ czas pomiędzy zliczaniem wizyt poszczególnego użytkownika."
|
299 |
|
300 |
+
#: ../includes/settings.php:332
|
301 |
msgid ""
|
302 |
"Delete single day post views data older than specified above. Enter 0 "
|
303 |
"(number zero) if you want to preserve your data regardless of its age."
|
305 |
"Usuwanie dziennych danych o liczbie wpisów po określonym powyżej czasie. "
|
306 |
"Wpisz 0 jeśli chcesz przetrzymywać te dane bez ograniczeń."
|
307 |
|
308 |
+
#: ../includes/settings.php:352
|
309 |
msgid ""
|
310 |
"How often to flush cached view counts from the object cache into the "
|
311 |
"database. This feature is used only if a persistent object cache is detected "
|
324 |
"jeśli cachowanie obiektowe nie będzie dostępne lub cache zostanie "
|
325 |
"wyczyszczony w trakcie trwania wybranego okresu."
|
326 |
|
327 |
+
#: ../includes/settings.php:369 ../includes/settings.php:512
|
328 |
msgid "Use it to hide the post views counter from selected type of visitors."
|
329 |
msgstr ""
|
330 |
"Użyj tego aby ograniczyć wyświetlanie licznika do określonych typów "
|
331 |
"użytkowników."
|
332 |
|
333 |
+
#: ../includes/settings.php:376 ../includes/settings.php:519
|
334 |
msgid "Use it to hide the post views counter from selected user roles."
|
335 |
msgstr ""
|
336 |
"Użyj tego aby ograniczyć wyświetlanie licznika do określonych tról "
|
337 |
"użytkowników."
|
338 |
|
339 |
+
#: ../includes/settings.php:396 ../includes/settings.php:402
|
340 |
msgid "Remove"
|
341 |
msgstr "Usuń"
|
342 |
|
343 |
+
#: ../includes/settings.php:407
|
344 |
msgid "Add new"
|
345 |
msgstr "Dodaj nowy"
|
346 |
|
347 |
+
#: ../includes/settings.php:407
|
348 |
msgid "Add my current IP"
|
349 |
msgstr "Dodaj mój aktualny IP"
|
350 |
|
351 |
+
#: ../includes/settings.php:408
|
352 |
msgid "Enter the IP addresses to be excluded from post views count."
|
353 |
msgstr "Wpisz adresy IP, któe mają być wyłączone z działania licznika."
|
354 |
|
355 |
+
#: ../includes/settings.php:419
|
356 |
msgid "Import"
|
357 |
msgstr "Importuj"
|
358 |
|
359 |
+
#: ../includes/settings.php:420
|
360 |
msgid "Import post views data from WP-PostViews plugin."
|
361 |
msgstr "Importuj dane o liczbie odwiedzin z wtyczki WP-PostViews."
|
362 |
|
363 |
+
#: ../includes/settings.php:421
|
364 |
msgid "Override existing Post Views Counter data."
|
365 |
msgstr "Nadpisz istniejące dane Licznika odwiedzin."
|
366 |
|
367 |
+
#: ../includes/settings.php:432
|
368 |
msgid "Enable to restrict post views editing to admins only."
|
369 |
msgstr ""
|
370 |
"Włącz aby ograniczyć możliwość edycji liczby wpisów do administratorów."
|
371 |
|
372 |
+
#: ../includes/settings.php:442
|
373 |
msgid "Enable to delete all plugin data on deactivation."
|
374 |
msgstr "Włącz aby usunąć wszystkie dane wtyczki podczas deaktywacji"
|
375 |
|
376 |
+
#: ../includes/settings.php:461
|
377 |
msgid ""
|
378 |
"Select where would you like to display the post views counter. Use [post-"
|
379 |
"views] shortcode for manual display."
|
381 |
"Wybierz w którym miejscu chcesz wyświetlać licznik odwiedzin. Użyj skrótu "
|
382 |
"[post-views] aby wyświetlić licznik ręcznie."
|
383 |
|
384 |
+
#: ../includes/settings.php:480
|
385 |
msgid "Choose how to display the post views counter."
|
386 |
msgstr "Wybierz w jaki sposób chcesz wyświetlać licznik."
|
387 |
|
388 |
+
#: ../includes/settings.php:491
|
389 |
#, php-format
|
390 |
msgid ""
|
391 |
"Enter the post views icon class. Any of the <a href=\"%s\" target=\"_blank"
|
394 |
"Wpisz klasę CSS ikony. Każda z ikond typu <a href=\"%s\" target=\"_blank"
|
395 |
"\">Dashicons</a> może być tutaj zastosowana."
|
396 |
|
397 |
+
#: ../includes/settings.php:550
|
398 |
+
msgid "Post views data imported succesfully."
|
399 |
+
msgstr "Dane dotyczące liczby odwiedzin zostały zaimportowane pomyślnie."
|
400 |
|
401 |
+
#: ../includes/settings.php:552
|
402 |
+
msgid "There was no post views data to import."
|
403 |
+
msgstr "Nie znaleziono danych do zaimportowania,"
|
404 |
|
405 |
+
#: ../includes/settings.php:710
|
406 |
msgid "General settings restored to defaults."
|
407 |
msgstr "Ustawienia zostały przywrócone do domyślnych."
|
408 |
|
409 |
+
#: ../includes/settings.php:714
|
410 |
msgid "Display settings restored to defaults."
|
411 |
msgstr "Ustawienia wyświetlania została przywrócone do domyślnych."
|
412 |
|
413 |
+
#: ../includes/widgets.php:38 ../includes/widgets.php:48
|
414 |
msgid "Most Viewed Posts"
|
415 |
msgstr "Najczęściej oglądane wpisy"
|
416 |
|
417 |
+
#: ../includes/widgets.php:39
|
418 |
msgid "Displays a list of the most viewed posts"
|
419 |
msgstr "Wyświetla listę najczęściej oglądanych wpisów"
|
420 |
|
421 |
+
#: ../includes/widgets.php:56
|
422 |
msgid "No Posts found"
|
423 |
msgstr "Brak wpisów"
|
424 |
|
425 |
+
#: ../includes/widgets.php:60
|
426 |
msgid "Ascending"
|
427 |
msgstr "Rosnąco"
|
428 |
|
429 |
+
#: ../includes/widgets.php:61
|
430 |
msgid "Descending"
|
431 |
msgstr "Malejąco"
|
432 |
|
433 |
+
#: ../includes/widgets.php:98
|
434 |
msgid "Title"
|
435 |
msgstr "Tytuł"
|
436 |
|
437 |
+
#: ../includes/widgets.php:102
|
438 |
msgid "Post Types"
|
439 |
msgstr "Typy wpisów"
|
440 |
|
441 |
+
#: ../includes/widgets.php:115
|
442 |
msgid "Number of posts to show"
|
443 |
msgstr "Liczba wpisów do wyświetlenia"
|
444 |
|
445 |
+
#: ../includes/widgets.php:119
|
446 |
msgid "No posts message"
|
447 |
msgstr "Treść braku wpisów"
|
448 |
|
449 |
+
#: ../includes/widgets.php:123
|
450 |
msgid "Order"
|
451 |
msgstr "Kolejność"
|
452 |
|
453 |
+
#: ../includes/widgets.php:135
|
454 |
msgid "Display post views?"
|
455 |
msgstr "Wyświetlanie liczby odsłon?"
|
456 |
|
457 |
+
#: ../includes/widgets.php:137
|
458 |
msgid "Display post excerpt?"
|
459 |
msgstr "Wyświetlanie wypisu?"
|
460 |
|
461 |
+
#: ../includes/widgets.php:139
|
462 |
msgid "Display post thumbnail?"
|
463 |
msgstr "WYświetlanie miniatury?"
|
464 |
|
465 |
+
#: ../includes/widgets.php:142
|
466 |
msgid "Thumbnail size"
|
467 |
msgstr "WIelkość miniatury"
|
468 |
|
469 |
+
#: ../post-views-counter.php:280
|
470 |
msgid "Are you sure you want to reset these settings to defaults?"
|
471 |
msgstr "Czy jesteś pewny, że chcesz zresetować ustawienia do domyślnych?"
|
472 |
|
473 |
+
#: ../post-views-counter.php:323
|
474 |
msgid "Support"
|
475 |
msgstr "Forum pomocy"
|
476 |
|
477 |
+
#: ../post-views-counter.php:342
|
478 |
msgid "Settings"
|
479 |
msgstr "Ustawienia"
|
480 |
|
481 |
+
#~ msgid "WP-PostViews data imported succesfully."
|
482 |
+
#~ msgstr "Dane z wtyczki WP-PostViews zostały zaimportowane pomyślnie."
|
483 |
+
|
484 |
+
#~ msgid "There was no data to import."
|
485 |
+
#~ msgstr "Niestety, nie znaleziono danych do zaimportowania."
|
486 |
+
|
487 |
#~ msgid "Select post types"
|
488 |
#~ msgstr "Wybierz typy wpisów"
|
489 |
|
languages/post-views-counter.pot
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: Post Views Counter\n"
|
5 |
-
"POT-Creation-Date:
|
6 |
"PO-Revision-Date: 2015-04-08 18:59+0100\n"
|
7 |
"Last-Translator: Bartosz Arendt <info@dfactory.eu>\n"
|
8 |
"Language-Team: dFactory <info@dfactory.eu>\n"
|
@@ -10,7 +10,7 @@ msgstr ""
|
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
-
"X-Generator: Poedit 1.8.
|
14 |
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;esc_attr__;esc_attr_e;"
|
15 |
"esc_html__;esc_html_e\n"
|
16 |
"X-Poedit-Basepath: .\n"
|
@@ -18,280 +18,290 @@ msgstr ""
|
|
18 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
19 |
"X-Poedit-SearchPath-0: ..\n"
|
20 |
|
21 |
-
#: ../includes/columns.php:
|
22 |
-
#: ../includes/columns.php:
|
|
|
|
|
23 |
msgid "Post Views"
|
24 |
msgstr ""
|
25 |
|
26 |
-
#: ../includes/columns.php:
|
27 |
msgid "Edit"
|
28 |
msgstr ""
|
29 |
|
30 |
-
#: ../includes/columns.php:
|
31 |
msgid "Adjust the views count for this post."
|
32 |
msgstr ""
|
33 |
|
34 |
-
#: ../includes/columns.php:
|
35 |
msgid "OK"
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: ../includes/columns.php:
|
39 |
msgid "Cancel"
|
40 |
msgstr ""
|
41 |
|
42 |
-
#: ../includes/cron.php:
|
43 |
msgid "Post Views Counter reset daily counts interval"
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: ../includes/cron.php:
|
47 |
msgid "Post Views Counter cache flush interval"
|
48 |
msgstr ""
|
49 |
|
50 |
-
#: ../includes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
msgid "No Posts"
|
52 |
msgstr ""
|
53 |
|
54 |
-
#: ../includes/settings.php:
|
55 |
msgid "PHP"
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: ../includes/settings.php:
|
59 |
msgid "JavaScript"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: ../includes/settings.php:
|
63 |
msgid "minutes"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: ../includes/settings.php:
|
67 |
msgid "hours"
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: ../includes/settings.php:
|
71 |
msgid "days"
|
72 |
msgstr ""
|
73 |
|
74 |
-
#: ../includes/settings.php:
|
75 |
msgid "weeks"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: ../includes/settings.php:
|
79 |
msgid "months"
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: ../includes/settings.php:
|
83 |
msgid "years"
|
84 |
msgstr ""
|
85 |
|
86 |
-
#: ../includes/settings.php:
|
87 |
msgid "robots"
|
88 |
msgstr ""
|
89 |
|
90 |
-
#: ../includes/settings.php:
|
91 |
msgid "logged in users"
|
92 |
msgstr ""
|
93 |
|
94 |
-
#: ../includes/settings.php:
|
95 |
msgid "guests"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: ../includes/settings.php:
|
99 |
msgid "selected user roles"
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: ../includes/settings.php:
|
103 |
msgid "before the content"
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: ../includes/settings.php:
|
107 |
msgid "after the content"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: ../includes/settings.php:
|
111 |
msgid "manual"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: ../includes/settings.php:
|
115 |
msgid "icon"
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: ../includes/settings.php:
|
119 |
msgid "label"
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: ../includes/settings.php:
|
123 |
msgid "General"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: ../includes/settings.php:
|
127 |
msgid "Display"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: ../includes/settings.php:
|
131 |
-
#: ../includes/settings.php:
|
132 |
msgid "Post Views Counter"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: ../includes/settings.php:
|
136 |
msgid "Need support?"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: ../includes/settings.php:
|
140 |
msgid ""
|
141 |
"If you are having problems with this plugin, please talk about them in the"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: ../includes/settings.php:
|
145 |
msgid "Support forum"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: ../includes/settings.php:
|
149 |
msgid "Do you like this plugin?"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: ../includes/settings.php:
|
153 |
msgid "Rate it 5"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: ../includes/settings.php:
|
157 |
msgid "on WordPress.org"
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: ../includes/settings.php:
|
161 |
msgid "Blog about it & link to the"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: ../includes/settings.php:
|
165 |
msgid "plugin page"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: ../includes/settings.php:
|
169 |
msgid "Check out our other"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: ../includes/settings.php:
|
173 |
msgid "WordPress plugins"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: ../includes/settings.php:
|
177 |
msgid "Created by"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: ../includes/settings.php:
|
181 |
msgid "Reset to defaults"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: ../includes/settings.php:
|
185 |
msgid "General settings"
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: ../includes/settings.php:
|
189 |
msgid "Post Types Count"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: ../includes/settings.php:
|
193 |
msgid "Counter Mode"
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: ../includes/settings.php:
|
197 |
msgid "Post Views Column"
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: ../includes/settings.php:
|
201 |
msgid "Restrict Edit"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: ../includes/settings.php:
|
205 |
msgid "Time Between Counts"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: ../includes/settings.php:
|
209 |
msgid "Reset Data Interval"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: ../includes/settings.php:
|
213 |
msgid "Flush Object Cache Interval"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: ../includes/settings.php:
|
217 |
msgid "Exclude Visitors"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: ../includes/settings.php:
|
221 |
msgid "Exclude IPs"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: ../includes/settings.php:
|
225 |
msgid "WP-PostViews"
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: ../includes/settings.php:
|
229 |
msgid "Deactivation"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: ../includes/settings.php:
|
233 |
msgid "Display settings"
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: ../includes/settings.php:
|
237 |
msgid "Post Views Label"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: ../includes/settings.php:
|
241 |
msgid "Post Types Display"
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: ../includes/settings.php:
|
245 |
msgid "Restrict Display"
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: ../includes/settings.php:
|
249 |
msgid "Position"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: ../includes/settings.php:
|
253 |
msgid "Display Style"
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: ../includes/settings.php:
|
257 |
msgid "Icon Class"
|
258 |
msgstr ""
|
259 |
|
260 |
-
#: ../includes/settings.php:
|
261 |
msgid "Enter the label for the post views counter field."
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: ../includes/settings.php:
|
265 |
msgid "Select post types for which post views will be counted."
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: ../includes/settings.php:
|
269 |
msgid "Select post types for which post views will be displayed."
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: ../includes/settings.php:
|
273 |
msgid ""
|
274 |
"Select the method of collecting post views data. If you are using any of the "
|
275 |
"caching plugins select Javascript."
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: ../includes/settings.php:
|
279 |
msgid ""
|
280 |
"Enable to display post views count column for each of the selected post "
|
281 |
"types."
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: ../includes/settings.php:
|
285 |
msgid "Enter the time between single user visit count."
|
286 |
msgstr ""
|
287 |
|
288 |
-
#: ../includes/settings.php:
|
289 |
msgid ""
|
290 |
"Delete single day post views data older than specified above. Enter 0 "
|
291 |
"(number zero) if you want to preserve your data regardless of its age."
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: ../includes/settings.php:
|
295 |
msgid ""
|
296 |
"How often to flush cached view counts from the object cache into the "
|
297 |
"database. This feature is used only if a persistent object cache is detected "
|
@@ -303,147 +313,147 @@ msgid ""
|
|
303 |
"interval."
|
304 |
msgstr ""
|
305 |
|
306 |
-
#: ../includes/settings.php:
|
307 |
msgid "Use it to hide the post views counter from selected type of visitors."
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: ../includes/settings.php:
|
311 |
msgid "Use it to hide the post views counter from selected user roles."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: ../includes/settings.php:
|
315 |
msgid "Remove"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: ../includes/settings.php:
|
319 |
msgid "Add new"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: ../includes/settings.php:
|
323 |
msgid "Add my current IP"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: ../includes/settings.php:
|
327 |
msgid "Enter the IP addresses to be excluded from post views count."
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: ../includes/settings.php:
|
331 |
msgid "Import"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: ../includes/settings.php:
|
335 |
msgid "Import post views data from WP-PostViews plugin."
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: ../includes/settings.php:
|
339 |
msgid "Override existing Post Views Counter data."
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: ../includes/settings.php:
|
343 |
msgid "Enable to restrict post views editing to admins only."
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: ../includes/settings.php:
|
347 |
msgid "Enable to delete all plugin data on deactivation."
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: ../includes/settings.php:
|
351 |
msgid ""
|
352 |
"Select where would you like to display the post views counter. Use [post-"
|
353 |
"views] shortcode for manual display."
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: ../includes/settings.php:
|
357 |
msgid "Choose how to display the post views counter."
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: ../includes/settings.php:
|
361 |
#, php-format
|
362 |
msgid ""
|
363 |
"Enter the post views icon class. Any of the <a href=\"%s\" target=\"_blank"
|
364 |
"\">Dashicons</a> classes are available."
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: ../includes/settings.php:
|
368 |
-
msgid "
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: ../includes/settings.php:
|
372 |
-
msgid "There was no data to import."
|
373 |
msgstr ""
|
374 |
|
375 |
-
#: ../includes/settings.php:
|
376 |
msgid "General settings restored to defaults."
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: ../includes/settings.php:
|
380 |
msgid "Display settings restored to defaults."
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: ../includes/widgets.php:
|
384 |
msgid "Most Viewed Posts"
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: ../includes/widgets.php:
|
388 |
msgid "Displays a list of the most viewed posts"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: ../includes/widgets.php:
|
392 |
msgid "No Posts found"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: ../includes/widgets.php:
|
396 |
msgid "Ascending"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: ../includes/widgets.php:
|
400 |
msgid "Descending"
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: ../includes/widgets.php:
|
404 |
msgid "Title"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: ../includes/widgets.php:
|
408 |
msgid "Post Types"
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: ../includes/widgets.php:
|
412 |
msgid "Number of posts to show"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: ../includes/widgets.php:
|
416 |
msgid "No posts message"
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: ../includes/widgets.php:
|
420 |
msgid "Order"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: ../includes/widgets.php:
|
424 |
msgid "Display post views?"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: ../includes/widgets.php:
|
428 |
msgid "Display post excerpt?"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: ../includes/widgets.php:
|
432 |
msgid "Display post thumbnail?"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: ../includes/widgets.php:
|
436 |
msgid "Thumbnail size"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: ../post-views-counter.php:
|
440 |
msgid "Are you sure you want to reset these settings to defaults?"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: ../post-views-counter.php:
|
444 |
msgid "Support"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: ../post-views-counter.php:
|
448 |
msgid "Settings"
|
449 |
msgstr ""
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: Post Views Counter\n"
|
5 |
+
"POT-Creation-Date: 2016-02-12 10:50+0100\n"
|
6 |
"PO-Revision-Date: 2015-04-08 18:59+0100\n"
|
7 |
"Last-Translator: Bartosz Arendt <info@dfactory.eu>\n"
|
8 |
"Language-Team: dFactory <info@dfactory.eu>\n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Generator: Poedit 1.8.7\n"
|
14 |
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;esc_attr__;esc_attr_e;"
|
15 |
"esc_html__;esc_html_e\n"
|
16 |
"X-Poedit-Basepath: .\n"
|
18 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
19 |
"X-Poedit-SearchPath-0: ..\n"
|
20 |
|
21 |
+
#: ../includes/columns.php:59 ../includes/columns.php:194
|
22 |
+
#: ../includes/columns.php:200 ../includes/columns.php:272
|
23 |
+
#: ../includes/dashboard.php:28 ../includes/dashboard.php:87
|
24 |
+
#: ../includes/dashboard.php:97 ../includes/dashboard.php:107
|
25 |
msgid "Post Views"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: ../includes/columns.php:68
|
29 |
msgid "Edit"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: ../includes/columns.php:72
|
33 |
msgid "Adjust the views count for this post."
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: ../includes/columns.php:76
|
37 |
msgid "OK"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: ../includes/columns.php:77
|
41 |
msgid "Cancel"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: ../includes/cron.php:52
|
45 |
msgid "Post Views Counter reset daily counts interval"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: ../includes/cron.php:57
|
49 |
msgid "Post Views Counter cache flush interval"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: ../includes/dashboard.php:60 ../includes/dashboard.php:63
|
53 |
+
msgid "You do not have permission to access this page."
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: ../includes/dashboard.php:121
|
57 |
+
msgid "Total Views"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: ../includes/functions.php:132
|
61 |
msgid "No Posts"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: ../includes/settings.php:35
|
65 |
msgid "PHP"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: ../includes/settings.php:36
|
69 |
msgid "JavaScript"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: ../includes/settings.php:40
|
73 |
msgid "minutes"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: ../includes/settings.php:41
|
77 |
msgid "hours"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: ../includes/settings.php:42
|
81 |
msgid "days"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: ../includes/settings.php:43
|
85 |
msgid "weeks"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: ../includes/settings.php:44
|
89 |
msgid "months"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: ../includes/settings.php:45
|
93 |
msgid "years"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: ../includes/settings.php:49
|
97 |
msgid "robots"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: ../includes/settings.php:50
|
101 |
msgid "logged in users"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: ../includes/settings.php:51
|
105 |
msgid "guests"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: ../includes/settings.php:52
|
109 |
msgid "selected user roles"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: ../includes/settings.php:56
|
113 |
msgid "before the content"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: ../includes/settings.php:57
|
117 |
msgid "after the content"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: ../includes/settings.php:58
|
121 |
msgid "manual"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: ../includes/settings.php:62
|
125 |
msgid "icon"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: ../includes/settings.php:63
|
129 |
msgid "label"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: ../includes/settings.php:68
|
133 |
msgid "General"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: ../includes/settings.php:74
|
137 |
msgid "Display"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: ../includes/settings.php:129 ../includes/settings.php:141
|
141 |
+
#: ../includes/settings.php:153
|
142 |
msgid "Post Views Counter"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: ../includes/settings.php:155
|
146 |
msgid "Need support?"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: ../includes/settings.php:156
|
150 |
msgid ""
|
151 |
"If you are having problems with this plugin, please talk about them in the"
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: ../includes/settings.php:156
|
155 |
msgid "Support forum"
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: ../includes/settings.php:158
|
159 |
msgid "Do you like this plugin?"
|
160 |
msgstr ""
|
161 |
|
162 |
+
#: ../includes/settings.php:159
|
163 |
msgid "Rate it 5"
|
164 |
msgstr ""
|
165 |
|
166 |
+
#: ../includes/settings.php:159
|
167 |
msgid "on WordPress.org"
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: ../includes/settings.php:160
|
171 |
msgid "Blog about it & link to the"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: ../includes/settings.php:160
|
175 |
msgid "plugin page"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: ../includes/settings.php:161
|
179 |
msgid "Check out our other"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: ../includes/settings.php:161
|
183 |
msgid "WordPress plugins"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: ../includes/settings.php:164
|
187 |
msgid "Created by"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: ../includes/settings.php:180
|
191 |
msgid "Reset to defaults"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: ../includes/settings.php:196
|
195 |
msgid "General settings"
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: ../includes/settings.php:197
|
199 |
msgid "Post Types Count"
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: ../includes/settings.php:198
|
203 |
msgid "Counter Mode"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: ../includes/settings.php:199
|
207 |
msgid "Post Views Column"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: ../includes/settings.php:200
|
211 |
msgid "Restrict Edit"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: ../includes/settings.php:201
|
215 |
msgid "Time Between Counts"
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: ../includes/settings.php:202
|
219 |
msgid "Reset Data Interval"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: ../includes/settings.php:203
|
223 |
msgid "Flush Object Cache Interval"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: ../includes/settings.php:204
|
227 |
msgid "Exclude Visitors"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: ../includes/settings.php:205
|
231 |
msgid "Exclude IPs"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: ../includes/settings.php:206
|
235 |
msgid "WP-PostViews"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: ../includes/settings.php:207
|
239 |
msgid "Deactivation"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: ../includes/settings.php:211
|
243 |
msgid "Display settings"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: ../includes/settings.php:212
|
247 |
msgid "Post Views Label"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: ../includes/settings.php:213
|
251 |
msgid "Post Types Display"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: ../includes/settings.php:214
|
255 |
msgid "Restrict Display"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: ../includes/settings.php:215
|
259 |
msgid "Position"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: ../includes/settings.php:216
|
263 |
msgid "Display Style"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: ../includes/settings.php:217
|
267 |
msgid "Icon Class"
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: ../includes/settings.php:228
|
271 |
msgid "Enter the label for the post views counter field."
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: ../includes/settings.php:246
|
275 |
msgid "Select post types for which post views will be counted."
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: ../includes/settings.php:263
|
279 |
msgid "Select post types for which post views will be displayed."
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: ../includes/settings.php:282
|
283 |
msgid ""
|
284 |
"Select the method of collecting post views data. If you are using any of the "
|
285 |
"caching plugins select Javascript."
|
286 |
msgstr ""
|
287 |
|
288 |
+
#: ../includes/settings.php:292
|
289 |
msgid ""
|
290 |
"Enable to display post views count column for each of the selected post "
|
291 |
"types."
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: ../includes/settings.php:312
|
295 |
msgid "Enter the time between single user visit count."
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: ../includes/settings.php:332
|
299 |
msgid ""
|
300 |
"Delete single day post views data older than specified above. Enter 0 "
|
301 |
"(number zero) if you want to preserve your data regardless of its age."
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: ../includes/settings.php:352
|
305 |
msgid ""
|
306 |
"How often to flush cached view counts from the object cache into the "
|
307 |
"database. This feature is used only if a persistent object cache is detected "
|
313 |
"interval."
|
314 |
msgstr ""
|
315 |
|
316 |
+
#: ../includes/settings.php:369 ../includes/settings.php:512
|
317 |
msgid "Use it to hide the post views counter from selected type of visitors."
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: ../includes/settings.php:376 ../includes/settings.php:519
|
321 |
msgid "Use it to hide the post views counter from selected user roles."
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: ../includes/settings.php:396 ../includes/settings.php:402
|
325 |
msgid "Remove"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: ../includes/settings.php:407
|
329 |
msgid "Add new"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: ../includes/settings.php:407
|
333 |
msgid "Add my current IP"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: ../includes/settings.php:408
|
337 |
msgid "Enter the IP addresses to be excluded from post views count."
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: ../includes/settings.php:419
|
341 |
msgid "Import"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: ../includes/settings.php:420
|
345 |
msgid "Import post views data from WP-PostViews plugin."
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: ../includes/settings.php:421
|
349 |
msgid "Override existing Post Views Counter data."
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: ../includes/settings.php:432
|
353 |
msgid "Enable to restrict post views editing to admins only."
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: ../includes/settings.php:442
|
357 |
msgid "Enable to delete all plugin data on deactivation."
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: ../includes/settings.php:461
|
361 |
msgid ""
|
362 |
"Select where would you like to display the post views counter. Use [post-"
|
363 |
"views] shortcode for manual display."
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: ../includes/settings.php:480
|
367 |
msgid "Choose how to display the post views counter."
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: ../includes/settings.php:491
|
371 |
#, php-format
|
372 |
msgid ""
|
373 |
"Enter the post views icon class. Any of the <a href=\"%s\" target=\"_blank"
|
374 |
"\">Dashicons</a> classes are available."
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: ../includes/settings.php:550
|
378 |
+
msgid "Post views data imported succesfully."
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: ../includes/settings.php:552
|
382 |
+
msgid "There was no post views data to import."
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: ../includes/settings.php:710
|
386 |
msgid "General settings restored to defaults."
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: ../includes/settings.php:714
|
390 |
msgid "Display settings restored to defaults."
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: ../includes/widgets.php:38 ../includes/widgets.php:48
|
394 |
msgid "Most Viewed Posts"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: ../includes/widgets.php:39
|
398 |
msgid "Displays a list of the most viewed posts"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: ../includes/widgets.php:56
|
402 |
msgid "No Posts found"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: ../includes/widgets.php:60
|
406 |
msgid "Ascending"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: ../includes/widgets.php:61
|
410 |
msgid "Descending"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: ../includes/widgets.php:98
|
414 |
msgid "Title"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: ../includes/widgets.php:102
|
418 |
msgid "Post Types"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: ../includes/widgets.php:115
|
422 |
msgid "Number of posts to show"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: ../includes/widgets.php:119
|
426 |
msgid "No posts message"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: ../includes/widgets.php:123
|
430 |
msgid "Order"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: ../includes/widgets.php:135
|
434 |
msgid "Display post views?"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: ../includes/widgets.php:137
|
438 |
msgid "Display post excerpt?"
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: ../includes/widgets.php:139
|
442 |
msgid "Display post thumbnail?"
|
443 |
msgstr ""
|
444 |
|
445 |
+
#: ../includes/widgets.php:142
|
446 |
msgid "Thumbnail size"
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: ../post-views-counter.php:280
|
450 |
msgid "Are you sure you want to reset these settings to defaults?"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: ../post-views-counter.php:323
|
454 |
msgid "Support"
|
455 |
msgstr ""
|
456 |
|
457 |
+
#: ../post-views-counter.php:342
|
458 |
msgid "Settings"
|
459 |
msgstr ""
|
post-views-counter.php
CHANGED
@@ -1,370 +1,369 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Plugin Name: Post Views Counter
|
4 |
-
Description: Forget WP-PostViews. Display how many times a post, page or custom post type had been viewed in a simple, fast and reliable way.
|
5 |
-
Version: 1.
|
6 |
-
Author: dFactory
|
7 |
-
Author URI: http://www.dfactory.eu/
|
8 |
-
Plugin URI: http://www.dfactory.eu/plugins/post-views-counter/
|
9 |
-
License: MIT License
|
10 |
-
License URI: http://opensource.org/licenses/MIT
|
11 |
-
Text Domain: post-views-counter
|
12 |
-
Domain Path: /languages
|
13 |
-
|
14 |
-
Post Views Counter
|
15 |
-
Copyright (C) 2014-
|
16 |
-
|
17 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
18 |
-
|
19 |
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
20 |
-
|
21 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22 |
-
*/
|
23 |
-
|
24 |
-
// exit if accessed directly
|
25 |
-
if ( ! defined( 'ABSPATH' ) )
|
26 |
-
exit;
|
27 |
-
|
28 |
-
if ( ! class_exists( 'Post_Views_Counter' ) ) :
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Post Views Counter final class.
|
32 |
-
*
|
33 |
-
* @class Post_Views_Counter
|
34 |
-
* @version 1.
|
35 |
-
*/
|
36 |
-
final class Post_Views_Counter {
|
37 |
-
|
38 |
-
private static $instance;
|
39 |
-
public $
|
40 |
-
public $
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
'
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
'
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
'
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
'
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
'
|
65 |
-
'
|
66 |
-
|
67 |
-
|
68 |
-
'
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
*
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
self::$instance
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
self::$instance->
|
112 |
-
self::$instance->
|
113 |
-
self::$instance->
|
114 |
-
self::$instance->
|
115 |
-
self::$instance->
|
116 |
-
self::$instance->
|
117 |
-
self::$instance->
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
*
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
define( '
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
*
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
142 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
143 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
144 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
145 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
146 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
147 |
-
include_once( POST_VIEWS_COUNTER_PATH . 'includes/
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
*
|
153 |
-
*
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
'
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
add_action( '
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
add_filter( '
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
add_option( '
|
199 |
-
add_option( '
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
delete_option( '
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
'
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
*
|
357 |
-
*
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
Post_Views_Counter();
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Post Views Counter
|
4 |
+
Description: Forget WP-PostViews. Display how many times a post, page or custom post type had been viewed in a simple, fast and reliable way.
|
5 |
+
Version: 1.2.0
|
6 |
+
Author: dFactory
|
7 |
+
Author URI: http://www.dfactory.eu/
|
8 |
+
Plugin URI: http://www.dfactory.eu/plugins/post-views-counter/
|
9 |
+
License: MIT License
|
10 |
+
License URI: http://opensource.org/licenses/MIT
|
11 |
+
Text Domain: post-views-counter
|
12 |
+
Domain Path: /languages
|
13 |
+
|
14 |
+
Post Views Counter
|
15 |
+
Copyright (C) 2014-2016, Digital Factory - info@digitalfactory.pl
|
16 |
+
|
17 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
18 |
+
|
19 |
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
20 |
+
|
21 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22 |
+
*/
|
23 |
+
|
24 |
+
// exit if accessed directly
|
25 |
+
if ( ! defined( 'ABSPATH' ) )
|
26 |
+
exit;
|
27 |
+
|
28 |
+
if ( ! class_exists( 'Post_Views_Counter' ) ) :
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Post Views Counter final class.
|
32 |
+
*
|
33 |
+
* @class Post_Views_Counter
|
34 |
+
* @version 1.2.0
|
35 |
+
*/
|
36 |
+
final class Post_Views_Counter {
|
37 |
+
|
38 |
+
private static $instance;
|
39 |
+
public $options;
|
40 |
+
public $defaults = array(
|
41 |
+
'general' => array(
|
42 |
+
'post_types_count' => array( 'post' ),
|
43 |
+
'counter_mode' => 'php',
|
44 |
+
'post_views_column' => true,
|
45 |
+
'time_between_counts' => array(
|
46 |
+
'number' => 24,
|
47 |
+
'type' => 'hours'
|
48 |
+
),
|
49 |
+
'reset_counts' => array(
|
50 |
+
'number' => 30,
|
51 |
+
'type' => 'days'
|
52 |
+
),
|
53 |
+
'flush_interval' => array(
|
54 |
+
'number' => 0,
|
55 |
+
'type' => 'minutes'
|
56 |
+
),
|
57 |
+
'exclude' => array(
|
58 |
+
'groups' => array(),
|
59 |
+
'roles' => array()
|
60 |
+
),
|
61 |
+
'exclude_ips' => array(),
|
62 |
+
'restrict_edit_views' => false,
|
63 |
+
'deactivation_delete' => false,
|
64 |
+
'cron_run' => true,
|
65 |
+
'cron_update' => true
|
66 |
+
),
|
67 |
+
'display' => array(
|
68 |
+
'label' => 'Post Views:',
|
69 |
+
'post_types_display' => array( 'post' ),
|
70 |
+
'restrict_display' => array(
|
71 |
+
'groups' => array(),
|
72 |
+
'roles' => array()
|
73 |
+
),
|
74 |
+
'position' => 'after',
|
75 |
+
'display_style' => array(
|
76 |
+
'icon' => true,
|
77 |
+
'text' => true
|
78 |
+
),
|
79 |
+
'link_to_post' => true,
|
80 |
+
'icon_class' => 'dashicons-chart-bar'
|
81 |
+
),
|
82 |
+
'version' => '1.2.0'
|
83 |
+
);
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Disable object clone.
|
87 |
+
*/
|
88 |
+
private function __clone() {}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Disable unserializing of the class.
|
92 |
+
*/
|
93 |
+
private function __wakeup() {}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Main Post_Views_Counter instance,
|
97 |
+
* Insures that only one instance of Post_Views_Counter exists in memory at one time.
|
98 |
+
*
|
99 |
+
* @return object
|
100 |
+
*/
|
101 |
+
public static function instance() {
|
102 |
+
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Post_Views_Counter ) ) {
|
103 |
+
self::$instance = new Post_Views_Counter;
|
104 |
+
self::$instance->define_constants();
|
105 |
+
|
106 |
+
add_action( 'plugins_loaded', array( self::$instance, 'load_textdomain' ) );
|
107 |
+
|
108 |
+
self::$instance->includes();
|
109 |
+
self::$instance->update = new Post_Views_Counter_Update();
|
110 |
+
self::$instance->settings = new Post_Views_Counter_Settings();
|
111 |
+
self::$instance->query = new Post_Views_Counter_Query();
|
112 |
+
self::$instance->cron = new Post_Views_Counter_Cron();
|
113 |
+
self::$instance->counter = new Post_Views_Counter_Counter();
|
114 |
+
self::$instance->columns = new Post_Views_Counter_Columns();
|
115 |
+
self::$instance->frontend = new Post_Views_Counter_Frontend();
|
116 |
+
self::$instance->dashboard = new Post_Views_Counter_Dashboard();
|
117 |
+
self::$instance->widgets = new Post_Views_Counter_Widgets();
|
118 |
+
}
|
119 |
+
return self::$instance;
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Setup plugin constants.
|
124 |
+
*
|
125 |
+
* @return void
|
126 |
+
*/
|
127 |
+
private function define_constants() {
|
128 |
+
define( 'POST_VIEWS_COUNTER_URL', plugins_url( '', __FILE__ ) );
|
129 |
+
define( 'POST_VIEWS_COUNTER_PATH', plugin_dir_path( __FILE__ ) );
|
130 |
+
define( 'POST_VIEWS_COUNTER_REL_PATH', dirname( plugin_basename( __FILE__ ) ) . '/' );
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Include required files
|
135 |
+
*
|
136 |
+
* @return void
|
137 |
+
*/
|
138 |
+
private function includes() {
|
139 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/update.php' );
|
140 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/settings.php' );
|
141 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/columns.php' );
|
142 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/query.php' );
|
143 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/cron.php' );
|
144 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/counter.php' );
|
145 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/frontend.php' );
|
146 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/dashboard.php' );
|
147 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/widgets.php' );
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Class constructor.
|
152 |
+
*
|
153 |
+
* @return void
|
154 |
+
*/
|
155 |
+
public function __construct() {
|
156 |
+
register_activation_hook( __FILE__, array( $this, 'activation' ) );
|
157 |
+
register_deactivation_hook( __FILE__, array( $this, 'deactivation' ) );
|
158 |
+
|
159 |
+
// settings
|
160 |
+
$this->options = array(
|
161 |
+
'general' => array_merge( $this->defaults['general'], get_option( 'post_views_counter_settings_general', $this->defaults['general'] ) ),
|
162 |
+
'display' => array_merge( $this->defaults['display'], get_option( 'post_views_counter_settings_display', $this->defaults['display'] ) )
|
163 |
+
);
|
164 |
+
|
165 |
+
// actions
|
166 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts_styles' ) );
|
167 |
+
add_action( 'wp_loaded', array( $this, 'load_pluggable_functions' ), 10 );
|
168 |
+
|
169 |
+
// filters
|
170 |
+
add_filter( 'plugin_row_meta', array( $this, 'plugin_extend_links' ), 10, 2 );
|
171 |
+
add_filter( 'plugin_action_links', array( $this, 'plugin_settings_link' ), 10, 2 );
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Plugin activation function.
|
176 |
+
*/
|
177 |
+
public function activation() {
|
178 |
+
global $wpdb, $charset_collate;
|
179 |
+
|
180 |
+
// required for dbdelta
|
181 |
+
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
182 |
+
|
183 |
+
// create post views table
|
184 |
+
dbDelta( '
|
185 |
+
CREATE TABLE IF NOT EXISTS ' . $wpdb->prefix . 'post_views (
|
186 |
+
id bigint unsigned NOT NULL,
|
187 |
+
type tinyint(1) unsigned NOT NULL,
|
188 |
+
period varchar(8) NOT NULL,
|
189 |
+
count bigint unsigned NOT NULL,
|
190 |
+
PRIMARY KEY (type, period, id),
|
191 |
+
UNIQUE INDEX id_period (id, period) USING BTREE,
|
192 |
+
INDEX type_period_count (type, period, count) USING BTREE
|
193 |
+
) ' . $charset_collate . ';'
|
194 |
+
);
|
195 |
+
|
196 |
+
// add default options
|
197 |
+
add_option( 'post_views_counter_settings_general', $this->defaults['general'], '', 'no' );
|
198 |
+
add_option( 'post_views_counter_settings_display', $this->defaults['display'], '', 'no' );
|
199 |
+
add_option( 'post_views_counter_version', $this->defaults['version'], '', 'no' );
|
200 |
+
|
201 |
+
// schedule cache flush
|
202 |
+
$this->schedule_cache_flush();
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Plugin deactivation function.
|
207 |
+
*/
|
208 |
+
public function deactivation() {
|
209 |
+
// delete default options
|
210 |
+
if ( $this->options['general']['deactivation_delete'] ) {
|
211 |
+
delete_option( 'post_views_counter_settings_general' );
|
212 |
+
delete_option( 'post_views_counter_settings_display' );
|
213 |
+
}
|
214 |
+
|
215 |
+
// remove schedule
|
216 |
+
wp_clear_scheduled_hook( 'pvc_reset_counts' );
|
217 |
+
remove_action( 'pvc_reset_counts', array( Post_Views_Counter()->cron, 'reset_counts' ) );
|
218 |
+
|
219 |
+
$this->remove_cache_flush();
|
220 |
+
}
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Schedule cache flushing if it's not already scheduled.
|
224 |
+
*/
|
225 |
+
public function schedule_cache_flush( $forced = true ) {
|
226 |
+
if ( $forced || ! wp_next_scheduled( 'pvc_flush_cached_counts' ) ) {
|
227 |
+
wp_schedule_event( time(), 'post_views_counter_flush_interval', 'pvc_flush_cached_counts' );
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Remove scheduled cache flush and the corresponding action.
|
233 |
+
*/
|
234 |
+
public function remove_cache_flush() {
|
235 |
+
wp_clear_scheduled_hook( 'pvc_flush_cached_counts' );
|
236 |
+
remove_action( 'pvc_flush_cached_counts', array( Post_Views_Counter()->cron, 'flush_cached_counts' ) );
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Load text domain.
|
241 |
+
*/
|
242 |
+
public function load_textdomain() {
|
243 |
+
load_plugin_textdomain( 'post-views-counter', false, POST_VIEWS_COUNTER_REL_PATH . 'languages/' );
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Load pluggable template functions.
|
248 |
+
*/
|
249 |
+
public function load_pluggable_functions() {
|
250 |
+
include_once( POST_VIEWS_COUNTER_PATH . 'includes/functions.php' );
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Enqueue admin scripts and styles.
|
255 |
+
*/
|
256 |
+
public function admin_scripts_styles( $page ) {
|
257 |
+
wp_register_style(
|
258 |
+
'pvc-admin', POST_VIEWS_COUNTER_URL . '/css/admin.css'
|
259 |
+
);
|
260 |
+
|
261 |
+
wp_register_script(
|
262 |
+
'pvc-admin-settings', POST_VIEWS_COUNTER_URL . '/js/admin-settings.js', array( 'jquery' ), $this->defaults['version']
|
263 |
+
);
|
264 |
+
|
265 |
+
wp_register_script(
|
266 |
+
'pvc-admin-post', POST_VIEWS_COUNTER_URL . '/js/admin-post.js', array( 'jquery' ), $this->defaults['version']
|
267 |
+
);
|
268 |
+
|
269 |
+
wp_register_script(
|
270 |
+
'pvc-admin-quick-edit', POST_VIEWS_COUNTER_URL . '/js/admin-quick-edit.js', array( 'jquery', 'inline-edit-post' ), $this->defaults['version']
|
271 |
+
);
|
272 |
+
|
273 |
+
// load on PVC settings page
|
274 |
+
if ( $page === 'settings_page_post-views-counter' ) {
|
275 |
+
|
276 |
+
wp_enqueue_script( 'pvc-admin-settings' );
|
277 |
+
|
278 |
+
wp_localize_script(
|
279 |
+
'pvc-admin-settings', 'pvcArgsSettings', array(
|
280 |
+
'resetToDefaults' => __( 'Are you sure you want to reset these settings to defaults?', 'post-views-counter' )
|
281 |
+
)
|
282 |
+
);
|
283 |
+
|
284 |
+
wp_enqueue_style( 'pvc-admin' );
|
285 |
+
|
286 |
+
// load on single post page
|
287 |
+
} elseif ( $page === 'post.php' || $page === 'post-new.php' ) {
|
288 |
+
|
289 |
+
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
290 |
+
|
291 |
+
global $post_type;
|
292 |
+
|
293 |
+
if ( ! in_array( $post_type, (array) $post_types ) )
|
294 |
+
return;
|
295 |
+
|
296 |
+
wp_enqueue_style( 'pvc-admin' );
|
297 |
+
wp_enqueue_script( 'pvc-admin-post' );
|
298 |
+
} elseif ( $page === 'edit.php' ) {
|
299 |
+
$post_types = Post_Views_Counter()->options['general']['post_types_count'];
|
300 |
+
|
301 |
+
global $post_type;
|
302 |
+
|
303 |
+
if ( ! in_array( $post_type, (array) $post_types ) )
|
304 |
+
return;
|
305 |
+
|
306 |
+
wp_enqueue_style( 'pvc-admin' );
|
307 |
+
wp_enqueue_script( 'pvc-admin-quick-edit' );
|
308 |
+
}
|
309 |
+
}
|
310 |
+
|
311 |
+
/**
|
312 |
+
* Add links to plugin support forum.
|
313 |
+
*/
|
314 |
+
public function plugin_extend_links( $links, $file ) {
|
315 |
+
|
316 |
+
if ( ! current_user_can( 'install_plugins' ) )
|
317 |
+
return $links;
|
318 |
+
|
319 |
+
$plugin = plugin_basename( __FILE__ );
|
320 |
+
|
321 |
+
if ( $file == $plugin ) {
|
322 |
+
return array_merge(
|
323 |
+
$links, array( sprintf( '<a href="http://www.dfactory.eu/support/forum/post-views-counter/" target="_blank">%s</a>', __( 'Support', 'post-views-counter' ) ) )
|
324 |
+
);
|
325 |
+
}
|
326 |
+
|
327 |
+
return $links;
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Add link to settings page.
|
332 |
+
*/
|
333 |
+
public function plugin_settings_link( $links, $file ) {
|
334 |
+
if ( ! is_admin() || ! current_user_can( 'manage_options' ) )
|
335 |
+
return $links;
|
336 |
+
|
337 |
+
static $plugin;
|
338 |
+
|
339 |
+
$plugin = plugin_basename( __FILE__ );
|
340 |
+
|
341 |
+
if ( $file == $plugin ) {
|
342 |
+
$settings_link = sprintf( '<a href="%s">%s</a>', admin_url( 'options-general.php' ) . '?page=post-views-counter', __( 'Settings', 'post-views-counter' ) );
|
343 |
+
|
344 |
+
array_unshift( $links, $settings_link );
|
345 |
+
}
|
346 |
+
|
347 |
+
return $links;
|
348 |
+
}
|
349 |
+
|
350 |
+
}
|
351 |
+
|
352 |
+
endif; // end if class_exists check
|
353 |
+
|
354 |
+
/**
|
355 |
+
* Initialise Post Views Counter.
|
356 |
+
*
|
357 |
+
* @return object
|
358 |
+
*/
|
359 |
+
function Post_Views_Counter() {
|
360 |
+
static $instance;
|
361 |
+
|
362 |
+
// first call to instance() initializes the plugin
|
363 |
+
if ( $instance === null || ! ( $instance instanceof Post_Views_Counter ) )
|
364 |
+
$instance = Post_Views_Counter::instance();
|
365 |
+
|
366 |
+
return $instance;
|
367 |
+
}
|
368 |
+
|
|
|
369 |
Post_Views_Counter();
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: dfactory
|
|
3 |
Donate link: http://www.dfactory.eu/
|
4 |
Tags: counter, hits, postviews, post views, views, count
|
5 |
Requires at least: 4.0.0
|
6 |
-
Tested up to: 4.4
|
7 |
-
Stable tag: 1.
|
8 |
License: MIT License
|
9 |
License URI: http://opensource.org/licenses/MIT
|
10 |
|
@@ -21,6 +21,7 @@ For more information, check out plugin page at [dFactory](http://www.dfactory.eu
|
|
21 |
* Option to select post types for which post views will be counted and displayed.
|
22 |
* 2 methods of collecting post views data: PHP and Javascript, for greater flexibility
|
23 |
* Possibility to manually set views count for each post
|
|
|
24 |
* Capability to query posts according to its views count
|
25 |
* Option to set time between counts
|
26 |
* Excluding counts from visitors: bots, logged in users, selected user roles
|
@@ -67,6 +68,10 @@ No questions yet.
|
|
67 |
|
68 |
== Changelog ==
|
69 |
|
|
|
|
|
|
|
|
|
70 |
= 1.1.4 =
|
71 |
* Fix: Dashicons link broken.
|
72 |
* Tweak: Confirmed WordPress 4.4 compatibility.
|
@@ -129,6 +134,5 @@ Initial release
|
|
129 |
|
130 |
== Upgrade Notice ==
|
131 |
|
132 |
-
= 1.
|
133 |
-
*
|
134 |
-
* Tweak: Confirmed WordPress 4.4 compatibility.
|
3 |
Donate link: http://www.dfactory.eu/
|
4 |
Tags: counter, hits, postviews, post views, views, count
|
5 |
Requires at least: 4.0.0
|
6 |
+
Tested up to: 4.4.2
|
7 |
+
Stable tag: 1.2.0
|
8 |
License: MIT License
|
9 |
License URI: http://opensource.org/licenses/MIT
|
10 |
|
21 |
* Option to select post types for which post views will be counted and displayed.
|
22 |
* 2 methods of collecting post views data: PHP and Javascript, for greater flexibility
|
23 |
* Possibility to manually set views count for each post
|
24 |
+
* Dashboard post views stats widget
|
25 |
* Capability to query posts according to its views count
|
26 |
* Option to set time between counts
|
27 |
* Excluding counts from visitors: bots, logged in users, selected user roles
|
68 |
|
69 |
== Changelog ==
|
70 |
|
71 |
+
= 1.2.0 =
|
72 |
+
* New: Dashboard post views stats widget.
|
73 |
+
* Fix: A couple of typos in method names.
|
74 |
+
|
75 |
= 1.1.4 =
|
76 |
* Fix: Dashicons link broken.
|
77 |
* Tweak: Confirmed WordPress 4.4 compatibility.
|
134 |
|
135 |
== Upgrade Notice ==
|
136 |
|
137 |
+
= 1.2.0 =
|
138 |
+
* New: Dashboard post views stats widget.
|
|