Allow HODL transaction to define nLockTime in blockheight or date/time

it still has a small UX quirks: the radio buttons dont get restored correctly after page reload
This commit is contained in:
Daniel Weigl 2016-07-03 19:28:47 +02:00
parent cad1f6e98b
commit 8ac9f4207d
2 changed files with 41 additions and 5 deletions

View file

@ -408,7 +408,16 @@
</div>
</div>
<p>Enter the date and time required to release the coins: </p>
<p id="timeLockedRbTypeBox">
Enter the
<input type="radio" id="timeLockedRbTypeDate" name="timeLockedRbType" value="date" checked="checked">
<label for="timeLockedRbTypeDate">date and time</label>
or
<input type="radio" id="timeLockedRbTypeBlockHeight" name="timeLockedRbType" value="blockheight">
<label for="timeLockedRbTypeBlockHeight">blockheight</label>
required to release the coins:
</p>
<div class="row">
<div class='col-md-6'>
<div class="form-group">
@ -418,6 +427,9 @@
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div class='input-group hidden' id='timeLockedBlockHeight'>
<input type='text' id='timeLockedBlockHeightVal' class="form-control" placeholder="Blockheight" />
</div>
</div>
</div>
</div>

View file

@ -369,6 +369,16 @@ $(document).ready(function() {
format: "MM/DD/YYYY HH:mm",
});
$('#timeLockedRbTypeBox input').change(function(){
if ($('#timeLockedRbTypeDate').is(':checked')){
$('#timeLockedDateTimePicker').show();
$('#timeLockedBlockHeight').hide();
} else {
$('#timeLockedDateTimePicker').hide();
$('#timeLockedBlockHeight').removeClass('hidden').show();
}
});
$("#newTimeLockedAddress").click(function(){
$("#timeLockedData").removeClass('show').addClass('hidden').fadeOut();
@ -380,14 +390,28 @@ $(document).ready(function() {
$('#timeLockedPubKey').parent().addClass('has-error');
}
var date = $('#timeLockedDateTimePicker').data("DateTimePicker").date();
if(!date || !date.isValid()) {
$('#timeLockedDateTimePicker').parent().addClass('has-error');
var nLockTime = -1;
if ($('#timeLockedRbTypeDate').is(':checked')){
// by date
var date = $('#timeLockedDateTimePicker').data("DateTimePicker").date();
if(!date || !date.isValid()) {
$('#timeLockedDateTimePicker').parent().addClass('has-error');
}
nLockTime = date.unix()
if (nLockTime < 500000000) {
$('#timeLockedDateTimePicker').parent().addClass('has-error');
}
} else {
nLockTime = parseInt($('#timeLockedBlockHeightVal').val(), 10);
if (nLockTime >= 500000000) {
$('#timeLockedDateTimePicker').parent().addClass('has-error');
}
}
if(($("#timeLockedPubKey").parent().hasClass('has-error')==false) && $("#timeLockedDateTimePicker").parent().hasClass('has-error')==false){
try {
var hodl = coinjs.simpleHodlAddress($("#timeLockedPubKey").val(), date.unix());
var hodl = coinjs.simpleHodlAddress($("#timeLockedPubKey").val(), nLockTime);
$("#timeLockedData .address").val(hodl['address']);
$("#timeLockedData .script").val(hodl['redeemScript']);
$("#timeLockedData .scriptUrl").val(document.location.origin+''+document.location.pathname+'?verify='+hodl['redeemScript']+'#verify');