first commit
This commit is contained in:
parent
c8faaf3a9e
commit
db15d385b1
40
README.md
40
README.md
|
@ -1,3 +1,43 @@
|
|||
# rolls-calculator-template
|
||||
|
||||
Single page template for Wordpress GeneratePress theme that contains a javascript code and form to allow calculate rolls
|
||||
|
||||
## CSS
|
||||
|
||||
Add this css code to style.css into Wordpress child theme:
|
||||
|
||||
```
|
||||
.gb-container-rolls {
|
||||
max-width: 1200px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
margin-top:80px;
|
||||
margin-bottom: 80px;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.gb-inner-rolls {
|
||||
width:50%;
|
||||
}
|
||||
|
||||
input.error-data-roll {
|
||||
border:1px solid red;
|
||||
}
|
||||
|
||||
input.data-roll {
|
||||
margin-bottom:20px;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
#errorrolls {
|
||||
color:red;
|
||||
}
|
||||
|
||||
#resultrolls {
|
||||
font-size:24px;
|
||||
margin-top:20px;
|
||||
text-align: center;
|
||||
}
|
||||
```
|
||||
|
|
|
@ -0,0 +1,212 @@
|
|||
<?php
|
||||
/**
|
||||
* The template used for displaying page content in single-roll.php
|
||||
*
|
||||
* @package GeneratePress
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
?>
|
||||
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> <?php generate_do_microdata( 'article' ); ?>>
|
||||
<div class="inside-article">
|
||||
<?php
|
||||
/**
|
||||
* generate_before_content hook.
|
||||
*
|
||||
* @since 0.1
|
||||
*
|
||||
* @hooked generate_featured_page_header_inside_single - 10
|
||||
*/
|
||||
do_action( 'generate_before_content' );
|
||||
|
||||
if ( generate_show_entry_header() ) :
|
||||
?>
|
||||
|
||||
<header class="entry-header">
|
||||
<?php
|
||||
/**
|
||||
* generate_before_page_title hook.
|
||||
*
|
||||
* @since 2.4
|
||||
*/
|
||||
do_action( 'generate_before_page_title' );
|
||||
|
||||
if ( generate_show_title() ) {
|
||||
$params = generate_get_the_title_parameters();
|
||||
|
||||
the_title( $params['before'], $params['after'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* generate_after_page_title hook.
|
||||
*
|
||||
* @since 2.4
|
||||
*/
|
||||
do_action( 'generate_after_page_title' );
|
||||
?>
|
||||
</header>
|
||||
|
||||
<?php
|
||||
endif;
|
||||
|
||||
/**
|
||||
* generate_after_entry_header hook.
|
||||
*
|
||||
* @since 0.1
|
||||
*
|
||||
* @hooked generate_post_image - 10
|
||||
*/
|
||||
do_action( 'generate_after_entry_header' );
|
||||
|
||||
$itemprop = '';
|
||||
|
||||
if ( 'microdata' === generate_get_schema_type() ) {
|
||||
$itemprop = ' itemprop="text"';
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="entry-content"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
|
||||
<div class="gb-container gb-container-rolls">
|
||||
<div class="gb-inside-container gb-inner-rolls">
|
||||
<p>
|
||||
<b>Calcular mi cantidad de papel pintado.</b> Determina el número de rollos necesarios para tus paredes:
|
||||
</p>
|
||||
<?php
|
||||
the_content();?>
|
||||
<script>
|
||||
jQuery(document).ready(function($) {
|
||||
|
||||
$("#getrolls").click(function(){
|
||||
$("#resultrolls").empty();
|
||||
$("#errorrolls").text("");
|
||||
$("#widthwall").removeClass("error-data-roll")
|
||||
$("#heightwall").removeClass("error-data-roll")
|
||||
$("#widthroll").removeClass("error-data-roll")
|
||||
$("#heightroll").removeClass("error-data-roll")
|
||||
$("#caseroll").removeClass("error-data-roll")
|
||||
var dataErrors = false;
|
||||
var wWidth = $("#widthwall").val();
|
||||
if(isNaN(wWidth) || wWidth === 0 || wWidth === "") {
|
||||
dataErrors = true;
|
||||
$("#widthwall").addClass("error-data-roll")
|
||||
}
|
||||
var wHeight = $("#heightwall").val();
|
||||
if(isNaN(wHeight) || wHeight === 0 || wHeight === "") {
|
||||
dataErrors = true;
|
||||
$("#heightwall").addClass("error-data-roll")
|
||||
}
|
||||
var rWidth = $("#widthroll").val();
|
||||
if(isNaN(rWidth) || rWidth === 0 || rWidth === "") {
|
||||
dataErrors = true;
|
||||
$("#widthroll").addClass("error-data-roll")
|
||||
}
|
||||
var rHeight = $("#heightroll").val();
|
||||
if(isNaN(rHeight) || rHeight === 0 || rHeight === "") {
|
||||
dataErrors = true;
|
||||
$("#heightroll").addClass("error-data-roll")
|
||||
}
|
||||
var rCase = $("#caseroll").val();
|
||||
if(isNaN(rCase) || rCase === "") {
|
||||
dataErrors = true;
|
||||
$("#caseroll").addClass("error-data-roll")
|
||||
}
|
||||
|
||||
if(dataErrors) {
|
||||
$("#errorrolls").text("Hay errores en los datos introducidos");
|
||||
} else {
|
||||
wWidth = wWidth * 100; //to cm
|
||||
wHeight = wHeight * 100; //to cm
|
||||
rHeight = rHeight * 100; //to cm
|
||||
rWidth = Number(rWidth);
|
||||
rCase = Number(rCase);
|
||||
|
||||
var rolls = (rHeight >= wHeight) ? getRollsIfHeightWallLessThanRoll(wWidth, wHeight, rWidth, rHeight, rCase) :
|
||||
getRollsIfHeightWallGreaterThanRoll(wWidth, wHeight, rWidth, rHeight, rCase)
|
||||
|
||||
$("#resultrolls").append("Necesitas <b>" + rolls + "</b> rollos");
|
||||
}
|
||||
});
|
||||
|
||||
function getRollsIfHeightWallGreaterThanRoll(wWidth, wHeight, rWidth, rHeight, rCase) {
|
||||
//obtenemos rollos para la altura
|
||||
var rolls = Math.ceil(wHeight / rHeight);
|
||||
//contamos rollos para la anchura de pared y los sumamos a los previos
|
||||
return Math.trunc(wWidth / rWidth) + rolls
|
||||
}
|
||||
|
||||
function getRollsIfHeightWallLessThanRoll(wWidth, wHeight, rWidth, rHeight, rCase) {
|
||||
//obtenemos tiras para la altura
|
||||
var tiras = Math.trunc(rHeight / wHeight);
|
||||
var numTiras = 0;
|
||||
if(rCase > 0) {
|
||||
let accHeight = 0;
|
||||
for(let i = 1; i <= tiras; i++) {
|
||||
if(i === 1) accHeight = accHeight + wHeight
|
||||
else accHeight = accHeight + wHeight + rCase
|
||||
//update tiras with case
|
||||
if(accHeight > rHeight) {
|
||||
numTiras = i-1;
|
||||
break;
|
||||
}
|
||||
else numTiras = i
|
||||
}
|
||||
}
|
||||
//calcular rollos ancho
|
||||
var coveredWidth = numTiras * rWidth;
|
||||
return Math.ceil(wWidth / coveredWidth)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<label for="width-wall">Ancho de la pared (en m):</label><br>
|
||||
<small>Anchura total de las paredes que desea empapelar.</small>
|
||||
<input type="number" step="0.01" min="0.01" id="widthwall" placeholder="Ejemplo: 3.5" class="data-roll"/><br>
|
||||
|
||||
<label for="height-wall">Altura de la pared (en m):</label><br>
|
||||
<small>Altura total desde el suelo hasta el techo (descontado el rodapié y/o la moldura).</small>
|
||||
<input type="number" step="0.01" min="0.01" id="heightwall" placeholder="Ejemplo: 2.4" class="data-roll"/><br>
|
||||
|
||||
<label for="height-roll">Longitud del rollo (en m):</label><br>
|
||||
<small>datos incluidos en la hoja de descripción del producto.</small>
|
||||
<input type="number" step="0.01" min="0.01" id="heightroll" placeholder="Ejemplo: 10" class="data-roll"/><br>
|
||||
|
||||
<label for="width-roll">Anchura del rollo (en cm):</label><br>
|
||||
<small>datos incluidos en la hoja de descripción del producto.</small>
|
||||
<input type="number" step="1" min="1" id="widthroll" placeholder="Ejemplo: 53" class="data-roll"/><br>
|
||||
|
||||
<label for="case-roll">Case o Rapport del rollo (en cm):</label><br>
|
||||
<small>Repetición del patrón: datos incluidos en la hoja de descripción del producto.</small>
|
||||
<input type="number" step="1" min="1" id="caseroll" placeholder="Ejemplo: 64" class="data-roll"/><br>
|
||||
|
||||
<input type="button" value="Calcular" id="getrolls"/><br>
|
||||
<div id="resultrolls">
|
||||
|
||||
</div>
|
||||
<div id="errorrolls">
|
||||
|
||||
</div>
|
||||
<?php
|
||||
wp_link_pages(
|
||||
array(
|
||||
'before' => '<div class="page-links">' . __( 'Pages:', 'generatepress' ),
|
||||
'after' => '</div>',
|
||||
)
|
||||
);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* generate_after_content hook.
|
||||
*
|
||||
* @since 0.1
|
||||
*/
|
||||
do_action( 'generate_after_content' );
|
||||
?>
|
||||
|
||||
</div>
|
||||
</article>
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
/*
|
||||
Template Name: Roll
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
get_header(); ?>
|
||||
|
||||
<div id="primary" <?php generate_do_element_classes( 'content' ); ?>>
|
||||
<main id="main" <?php generate_do_element_classes( 'main' ); ?>>
|
||||
<?php
|
||||
/**
|
||||
* generate_before_main_content hook.
|
||||
*
|
||||
* @since 0.1
|
||||
*/
|
||||
do_action( 'generate_before_main_content' );
|
||||
|
||||
if ( generate_has_default_loop() ) {
|
||||
while ( have_posts() ) :
|
||||
|
||||
the_post();
|
||||
|
||||
get_template_part( 'content', 'roll' );
|
||||
|
||||
endwhile;
|
||||
} ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* generate_after_main_content hook.
|
||||
*
|
||||
* @since 0.1
|
||||
*/
|
||||
do_action( 'generate_after_main_content' );
|
||||
?>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* generate_after_primary_content_area hook.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
do_action( 'generate_after_primary_content_area' );
|
||||
|
||||
generate_construct_sidebars();
|
||||
|
||||
get_footer();
|
Loading…
Reference in New Issue