PluginProbe
Poll Maker by AYS – Versus Polls, Anonymous Polls, Image Polls / 6.4.2
Poll Maker by AYS – Versus Polls, Anonymous Polls, Image Polls v6.4.2
6.5.1 6.5.0 6.4.9 6.4.8 6.4.7 6.4.6 6.4.5 6.4.4 6.4.3 6.4.2 6.4.1 6.4.0 6.3.9 6.3.8 6.3.7 6.3.6 6.3.5 6.3.4 6.3.3 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.6.5 All 154 releases
poll-maker / admin / partials / results / poll-maker-ays-each-results-display.php

poll-maker-ays-each-results-display.php in Poll Maker by AYS – Versus Polls, Anonymous Polls, Image Polls 6.4.2, at admin/partials/results/poll-maker-ays-each-results-display.php

353 lines 16.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 global $wpdb;
3 $poll_id = isset($_GET['poll']) ? intval($_GET['poll']) : null;
4 if($poll_id === null){
5 wp_redirect( admin_url('admin.php') . '?page=' . $this->plugin_name . '-ays-results' );
6 }
7
8 if (isset($_REQUEST['ays_poll_tab_results'])) {
9 $ays_poll_tab = sanitize_text_field($_REQUEST['ays_poll_tab_results']);
10 } else {
11 $ays_poll_tab = 'tab2';
12 }
13 ?>
14 <script>
15 (function ($) {
16 $('#adminmenu').find('li>a[href$="poll-maker-ays-results"]')
17 .addClass('current')
18 .parent()
19 .addClass('current')
20 .parent().parent()
21 .removeClass('wp-not-current-submenu').addClass('wp-has-current-submenu').addClass('wp-menu-open')
22 .find('a.wp-has-submenu')
23 .removeClass('wp-not-current-submenu').addClass('wp-has-current-submenu').addClass('wp-menu-open');
24 })(jQuery)
25 </script>
26 <div class="wrap ays_polls_each_results_list_table">
27 <div class="ays-poll-heading-box">
28 <div class="ays-poll-wordpress-user-manual-box">
29 <a href="https://ays-pro.com/wordpress-poll-maker-user-manual" target="_blank" style="text-decoration: none;font-size: 13px;">
30 <i class="ays_poll_fas ays_fa_file_text"></i>
31 <span style="margin-left: 3px;text-decoration: underline;"><?php echo esc_html__("View Documentation", "poll-maker"); ?></span>
32 </a>
33 </div>
34 </div>
35 <h1 class="wp-heading-inline">
36 <div class="ays-poll-each-results-heading-inline">
37 <?php
38 global $wpdb;
39 $poll_id = isset($_GET['poll']) ? intval($_GET['poll']) : null;
40 if($poll_id === null){
41 wp_redirect( admin_url('admin.php') . '?page=' . $this->plugin_name . '-ays-results' );
42 }
43
44 $polls_table = $wpdb->prefix . 'ayspoll_polls';
45 $sql = "SELECT * FROM {$polls_table} WHERE id =". $poll_id;
46 $poll = $wpdb->get_row( $sql, 'ARRAY_A' );
47
48 $user_id = get_current_user_id();
49
50 echo sprintf('<a href="?page=%s" class="forArrow"><img src="' . esc_url(POLL_MAKER_AYS_ADMIN_URL) . '/images/icons/arrow-left.svg"></a>', esc_attr(rtrim($_REQUEST['page'], '-each')));
51 echo esc_html(stripslashes($_GET['title']));
52 ?>
53 </div>
54 </h1>
55 <div class="nav-tab-wrapper">
56 <a href="#poststuff" class="nav-tab <?php echo ($ays_poll_tab == 'tab2') ? 'nav-tab-active' : ''; ?>" data-tab="tab2"><?php echo esc_html__('Results', "poll-maker"); ?></a>
57 <a href="#statistics" class="ays-poll-google-chart nav-tab <?php echo ($ays_poll_tab == 'tab1') ? 'nav-tab-active' : ''; ?>" data-tab="tab1"><?php echo esc_html__('Statistics', "poll-maker"); ?></a>
58 </div>
59 <div id="poststuff" class="ays-poll-tab-content <?php echo ($ays_poll_tab == 'tab2') ? 'ays-poll-tab-content-active' : ''; ?>">
60 <div id="post-body" class="metabox-holder">
61 <div id="post-body-content">
62 <div class="meta-box-sortables ui-sortable">
63 <form method="post">
64 <input type="hidden" name="ays_poll_tab_results" value="<?php echo htmlentities($ays_poll_tab); ?>" id="ays_poll_active_tab_settings">
65 <?php
66 $this->each_results_obj->prepare_items();
67 $search =esc_html__("Search" , "poll-maker");
68 $this->each_results_obj->search_box($search, $this->plugin_name);
69 $this->each_results_obj->display();
70 ?>
71 </form>
72 </div>
73 </div>
74 </div>
75 <br class="clear">
76 </div>
77 <div id="statistics" class="ays-poll-tab-content <?php echo ($ays_poll_tab == 'tab1') ? 'ays-poll-tab-content-active' : ''; ?>">
78 <div class="results-apm" id="<?php echo 'pollResultId-' . $poll_id ?>">
79 </div>
80 </div>
81 <div id="ays-results-modal" class="ays-modal">
82 <div class="ays-modal-content">
83 <div class="ays-poll-preloader">
84 <img class="loader" src="<?php echo esc_url(POLL_MAKER_AYS_ADMIN_URL); ?>/images/loaders/tail-spin.svg">
85 </div>
86 <div class="ays-modal-header">
87 <h2><?php echo esc_html__("Details report", "poll-maker"); ?></h2>
88 <span class="ays-close" id="ays-close-results">&times;</span>
89 </div>
90 <div class="ays-modal-body" id="ays-results-body">
91 <table id="ays-results-table">
92 </table>
93 </div>
94 </div>
95 </div>
96 </div>
97
98 <script>
99 (function ($) {
100 String.prototype.stripSlashes = function () {
101 return this.replace(/\\(.)/mg, "$1");
102 }
103
104 <?php
105 $poll_id = absint($_GET['poll']);
106 $current_tab = $ays_poll_tab == 'tab1' ? 1 : 2;
107 $chart_data = $this->each_results_obj->get_poll_data_chart($poll_id);
108 ?>
109
110 var pageTab = <?php echo $current_tab ?>;
111
112 var pollId = <?php echo ($poll_id) ?>;
113 var chart_data = <?php echo !empty($chart_data) ? json_encode($chart_data) : 0 ?>;
114 var resultStatistics = $('#pollResultId-' + pollId);
115
116 var votesSum = 0;
117 var votesMax = 0;
118 var answer;
119 for ( answer in chart_data) {
120 votesSum = Math.abs(chart_data[answer].votes) + votesSum;
121 if (+chart_data[answer].votes > votesMax) {
122 votesMax = +chart_data[answer].votes;
123 }
124 }
125 var answer2 = chart_data;
126
127 var widths = [];
128 for (var i = 0; i < chart_data.length; i++) {
129 var answer = answer2[i];
130 widths[i] = {};
131 var width = (answer.votes * 100 / votesSum).toFixed(0);
132 widths[i].width = width;
133 widths[i].index = i;
134 }
135
136 var showChartType = chart_data[0]['show_chart_type'];
137 var barChartType = (typeof showChartType != "undefined" && showChartType !== null && showChartType.length > 0 && showChartType != "") ? showChartType.replace(/"/g, '') : "default_bar_chart";
138
139 if(barChartType == 'google_bar_chart') {
140 var chartHeight = typeof chart_data[0]['show_chart_type_google_height'] != "undefined" && chart_data[0]['show_chart_type_google_height'] !== null && chart_data[0]['show_chart_type_google_height'].length > 0 && chart_data[0]['show_chart_type_google_height'] != '' ? chart_data[0]['show_chart_type_google_height'] : 400;
141 var aysBarChartData = new Array(['', '']);
142 for (var tox in widths) {
143 var chartRealVotes = +answer2[widths[tox].index].votes;
144 var answerTextVal = answer2[widths[tox].index].answer;
145 answerTextVal = answerTextVal.replace(/\\/g, '');
146 aysBarChartData.push([
147 answerTextVal,
148 parseInt(chartRealVotes)
149 ]);
150 }
151
152 google.charts.load('current', {packages: ['corechart', 'bar']});
153 google.charts.setOnLoadCallback(drawBasic);
154
155 function drawBasic() {
156 var data = google.visualization.arrayToDataTable(aysBarChartData);
157
158 var groupData = google.visualization.data.group(
159 data,
160 [{column: 0, modifier: function () {return 'total'}, type:'string'}],
161 [{column: 1, aggregation: google.visualization.data.sum, type: 'number'}]
162 );
163
164 var formatPercent = new google.visualization.NumberFormat({
165 pattern: '#%'
166 });
167
168 var formatShort = new google.visualization.NumberFormat({
169 pattern: 'short'
170 });
171
172 var view = new google.visualization.DataView(data);
173 view.setColumns([0, 1, {
174 calc: function (dt, row) {
175 if( groupData.getValue(0, 1) == 0 ){
176 return amount;
177 }
178 var amount = formatShort.formatValue(dt.getValue(row, 1));
179 var percent = formatPercent.formatValue(dt.getValue(row, 1) / groupData.getValue(0, 1));
180 return amount + ' (' + percent + ')';
181 },
182 type: 'string',
183 role: 'annotation'
184 }]);
185 var options = {
186 maxWidth: '100%',
187 height: chartHeight,
188 legend: { position: 'none' },
189 axes: {
190 x: {
191 0: { side: 'bottom'}
192 }
193 },
194 bars: 'horizontal',
195 bar: { groupWidth: "90%" },
196 };
197
198 var chart = new google.visualization.BarChart(document.getElementById('pollResultId-' + pollId));
199 if (pageTab == 1) {
200 chart.draw(view,options);
201 resizeChart(chart, data, options);
202 } else {
203 var statisticsTab = document.querySelector("a[href='#statistics']");
204 statisticsTab.addEventListener('click', function() {
205 chart.draw(view,options);
206 resizeChart(chart, data, options);
207 })
208 }
209 }
210
211 } else if(barChartType == "default_bar_chart") {
212 for (var i = 0; i < chart_data.length; i++) {
213 var answer = chart_data;
214
215 var starIcons = '<i class="ays_poll_far ays_poll_fa-star"></i>';
216 var emojiIcons = [
217 '<i class="ays_poll_far ays_poll_fa-dizzy"></i>',
218 '<i class="ays_poll_far ays_poll_fa-smile"></i>',
219 '<i class="ays_poll_far ays_poll_fa-meh"></i>',
220 '<i class="ays_poll_far ays_poll_fa-frown"></i>',
221 '<i class="ays_poll_far ays_poll_fa-tired"></i>',
222 ];
223 var handIcons = [
224 '<i class="ays_poll_far ays_poll_fa-thumbs-up"></i>',
225 '<i class="ays_poll_far ays_poll_fa-thumbs-down"></i>'
226 ];
227
228 // var percentColor = chart_data[0]['main_color'].replace(/"/g, '');
229 // var resultColorsRgba = chart_data[0]['result_in_rgba'];
230 var pollType = chart_data[0]['type'].replace(/"/g, '');
231 var pollViewType = chart_data[0]['view_type'].replace(/"/g, '');
232 var enableImageShowing = (chart_data[0]['show_answer_images'] != null) ?chart_data[0]['show_answer_images'].replace(/"/g, '') : '';
233
234 var answerDiv = $('<div class="answer-title flex-apm"></div>')
235 var answerBar = $('<div class="answer-percent" data-percent="'+widths[i].width+'"></div>');
236
237 // if (resultColorsRgba) {
238 // answerBar.attr('style', 'background-color:'+hexToRgba(percentColor)+' !important; border: 1px solid ' + percentColor +' !important;');
239 // }
240 // else{
241 // answerBar.attr('style', 'background-color:'+percentColor);
242 // }
243
244 answerBar.css({
245 width: '1%'
246 });
247
248 var answerText = '';
249 var pollShowAnswerImage = false;
250 switch (pollType) {
251 case 'choosing':
252 pollShowAnswerImage = (enableImageShowing == "on") ? true : false;
253 if(pollShowAnswerImage){
254 var answerImage = typeof answer[widths[i].index].answer_img != "undefined" || typeof (answer[widths[i].index].answer_img) != "" ? answer[widths[i].index].answer_img : "";
255 var answerImageBox = $("<div class='ays-poll-answers-image-box-empty-image'></div>");
256 var answerImageIsEmptyClass = "ays-poll-answers-box-no-image";
257 if(answerImage != ""){
258 answerImageIsEmptyClass = "ays-poll-answers-box";
259 answerImageBox = $("<div class='ays-poll-answers-image-box'><img src="+answerImage+" class='ays-poll-answers-current-image'></div>");
260 }
261 var answerTextAndPercent = $("<div class='ays-poll-answer-text-and-percent-box'></div>");
262 var answerMainDiv = $('<div class='+answerImageIsEmptyClass+'></div>');
263 }
264
265 answerText = $('<span class="answer-text"></span>');
266 var htmlstr = htmlstr = answer[widths[i].index].answer.stripSlashes();
267
268 answerText.html(htmlstr);
269 break;
270 case 'rating':
271 switch (pollViewType) {
272 case 'emoji':
273 answerText = emojiIcons[chart_data.length / 2 + 1.5 - widths[i].index];
274 break;
275
276 case 'star':
277 for (var j = 0; j <= widths[i].index; j++) {
278 answerText += starIcons;
279 }
280 break;
281 }
282 answerText = $('<span class="answer-text">'+answerText+'</span>');
283 break;
284 case 'voting':
285 switch (pollViewType) {
286 case 'hand':
287 answerText = handIcons[widths[i].index];
288 break;
289
290 case 'emoji':
291 answerText = emojiIcons[2 * widths[i].index + 1];
292 break;
293 }
294 answerText = $('<span class="answer-text">'+answerText+'</span>');
295 break;
296 }
297
298 var answerVotes = $('<span class="answer-votes"></span>');
299 answerVotes.text(answer[widths[i].index].votes);
300
301 if(!pollShowAnswerImage){
302 answerDiv.append(answerText).append(answerVotes).appendTo(resultStatistics);
303 $(resultStatistics).append(answerBar);
304 }
305 else{
306 answerMainDiv.appendTo(resultStatistics);
307 answerTextAndPercent.appendTo(answerMainDiv);
308 answerDiv.append(answerText).append(answerVotes).appendTo(answerTextAndPercent);
309 }
310 answerBar.appendTo(answerTextAndPercent);
311 }
312 resultStatistics.find('.answer-percent').each(function () {
313 var percent = $(this).attr('data-percent');
314 $(this).css({
315 width: (percent || 1) + '%'
316 });
317 var aaa = $(this);
318 aaa.text(percent > 5 ? percent + '%' : '');
319 });
320
321 resultStatistics.parents('.ays_poll_category-container').find('.ays-poll-next-btn').prop('disabled', false);
322 var vvv = resultStatistics.parents('.ays_poll_category-container').data("var");
323 window['showNext'+vvv] = true;
324
325 if (typeof(window['catIndex'+vvv]) !== 'undefined') {
326 if (typeof(window['pollsGlobalPool'+vvv]) !== 'undefined') {
327 if (window['catIndex'+vvv] == window['pollsGlobalPool'+vvv].length-1) {
328 resultStatistics.parents('.ays_poll_category-container').find('.ays-poll-next-btn').prop('disabled', true);
329 }
330 }
331 if (window['catIndex'+vvv] == 0 && resultStatistics.parents('.ays_poll_category-container').find('.results-apm').length > 0) {
332 resultStatistics.parents('.ays_poll_category-container').find('.ays-poll-previous-btn').prop('disabled', true);
333 }
334 }
335 }
336
337 function hexToRgba(hex, alfa) {
338 var c;
339 if (alfa == null) {
340 alfa = 1;
341 }
342 if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
343 c= hex.substring(1).split('');
344 if(c.length== 3){
345 c= [c[0], c[0], c[1], c[1], c[2], c[2]];
346 }
347 c= '0x'+c.join('');
348 return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+','+alfa+')';
349 }
350 }
351
352 })(jQuery);
353 </script>