More improvements

This commit is contained in:
nikolark committed 2015-07-10 19:44:09 +02:00
1 parent 2d066a4740
commit 2709ae4639
7 files changed
+217 -29

No files matched your search

+92 -10
View File
@@ -1,40 +1,84 @@
var _dom;
function format_results(results) {
return nunjucks.render('search_results.html', {'results':results});
}
function set_field_state(field_element, state) {
var ok_span = '<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>';
var form_group = field_element.parent();
if(state === 'valid') {
form_group.addClass('has-success has-feedback');
if(!form_group.find('.form-control-feedback').length) {
form_group.append(ok_span); // Only add once
}
} else {
form_group.removeClass('has-success has-feedback');
form_group.find('.form-control-feedback').remove();
}
}
function validate_cardnumber(val) {
if(val.length === 0) {
return 'Card number should not be empty.';
}
if(val.length > 0 && val[0] != "1") {
return 'Card number should start with 1.';
}
if(val.length !== 9) {
return 'Card Number should be 9 digits long';
}
return '';
}
function validate_form() {
var errors = [];
/* TODO
- cardnumber should start with 1 and be 9 digits long
- cardnumber should not be empty
- cardnumber should be in the database
- phonenumber should be valid (python-phonenumbers)
- userid exists (optional)
*/
/* Check each fields validation state */
/* Checkout multifield validation state */
var cardno_val = _dom.cardNumber.val();
var cardno_invalid = validate_cardnumber(cardno_val);
if(cardno_invalid) {
errors.push(cardno_invalid);
}
console.log(cardno_invalid);
if(errors.length === 0) {
_dom.registerButton.removeAttr('disabled');
return true;
} else {
_dom.registerButton.attr('disabled','disabled');
}
_dom.registerButton.attr('disabled','disabled');
return false;
}
var _dom;
$(document).ready(function(){
_dom = {
results: $('.results-wrap'),
query: $('#id_query'),
phoneNumber: $('#id_phone_number'),
cardNumber: $('#id_card_number'),
registerButton: $('#register-submit-btn')
registerButton: $('#register-submit-btn'),
usernameField: $('#id_username')
};
var urls = {
insideUserApi: '/inside/user/'
insideUserApi: '/inside/user/',
insidePhoneNumberApi: '/inside/phonenumber/',
insideCardNumber: '/inside/cardnumber/'
};
/* Saerch as you type */
/* User search as you type */
_dom.query.on('keyup', function() {
var val = _dom.query.val();
var val = _dom.query.val().trim();
if(val === '') {
return;
}
$.getJSON(urls.insideUserApi, {q: val}, function(data) {
console.log(data);
if(data.results && data.results.length > 0) {
@@ -48,6 +92,36 @@ $(document).ready(function(){
}
});
});
/* Phonenumber as you type */
_dom.phoneNumber.on('keyup', function() {
var val = _dom.phoneNumber.val().trim();
if(val.length === 0) {
set_field_state(_dom.phoneNumber, '');
return 'Phonenumber number should not be empty.';
}
$.getJSON(urls.insidePhoneNumberApi, {q: val}, function(data) {
if(data.meta && data.meta.num_results == 1) {
set_field_state(_dom.phoneNumber, 'valid');
} else {
set_field_state(_dom.phoneNumber, '');
}
});
});
_dom.cardNumber.on('keyup', function() {
if(!validate_form('cardNumber')) {
return;
}
/* cardnumber should be in the database */
var val = _dom.cardNumber.val().trim();
$.getJSON(urls.insideCardNumber, {q: val}, function(data) {
if(data.result === 'valid') {
set_field_state(_dom.cardNumber, 'valid');
} else {
set_field_state(_dom.cardNumber, '');
}
});
});
/* On search result click */
_dom.results.on('click', '.search-result input', function(e){
@@ -60,4 +134,12 @@ $(document).ready(function(){
/* Default state disabled */
_dom.registerButton.attr('disabled','disabled');
/* Focus */
if(_dom.usernameField) {
_dom.usernameField.focus();
}
if(_dom.phoneNumber) {
_dom.phoneNumber.focus();
}
});
+1 -4
View File
@@ -22,6 +22,7 @@ body {
}
.search-result {
font-weight: normal;
line-height: 2;
.label {
font-size: 1em;
@@ -31,10 +32,6 @@ body {
color: #555;
}
[type=radio] {
zoom: 1.5;
position: relative;
top: 2px;
margin-right: 4px;
&:focus {
+92 -10
View File
@@ -1,40 +1,84 @@
var _dom;
function format_results(results) {
return nunjucks.render('search_results.html', {'results':results});
}
function set_field_state(field_element, state) {
var ok_span = '<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>';
var form_group = field_element.parent();
if(state === 'valid') {
form_group.addClass('has-success has-feedback');
if(!form_group.find('.form-control-feedback').length) {
form_group.append(ok_span); // Only add once
}
} else {
form_group.removeClass('has-success has-feedback');
form_group.find('.form-control-feedback').remove();
}
}
function validate_cardnumber(val) {
if(val.length === 0) {
return 'Card number should not be empty.';
}
if(val.length > 0 && val[0] != "1") {
return 'Card number should start with 1.';
}
if(val.length !== 9) {
return 'Card Number should be 9 digits long';
}
return '';
}
function validate_form() {
var errors = [];
/* TODO
- cardnumber should start with 1 and be 9 digits long
- cardnumber should not be empty
- cardnumber should be in the database
- phonenumber should be valid (python-phonenumbers)
- userid exists (optional)
*/
/* Check each fields validation state */
/* Checkout multifield validation state */
var cardno_val = _dom.cardNumber.val();
var cardno_invalid = validate_cardnumber(cardno_val);
if(cardno_invalid) {
errors.push(cardno_invalid);
}
console.log(cardno_invalid);
if(errors.length === 0) {
_dom.registerButton.removeAttr('disabled');
return true;
} else {
_dom.registerButton.attr('disabled','disabled');
}
_dom.registerButton.attr('disabled','disabled');
return false;
}
var _dom;
$(document).ready(function(){
_dom = {
results: $('.results-wrap'),
query: $('#id_query'),
phoneNumber: $('#id_phone_number'),
cardNumber: $('#id_card_number'),
registerButton: $('#register-submit-btn')
registerButton: $('#register-submit-btn'),
usernameField: $('#id_username')
};
var urls = {
insideUserApi: '/inside/user/'
insideUserApi: '/inside/user/',
insidePhoneNumberApi: '/inside/phonenumber/',
insideCardNumber: '/inside/cardnumber/'
};
/* Saerch as you type */
/* User search as you type */
_dom.query.on('keyup', function() {
var val = _dom.query.val();
var val = _dom.query.val().trim();
if(val === '') {
return;
}
$.getJSON(urls.insideUserApi, {q: val}, function(data) {
console.log(data);
if(data.results && data.results.length > 0) {
@@ -48,6 +92,36 @@ $(document).ready(function(){
}
});
});
/* Phonenumber as you type */
_dom.phoneNumber.on('keyup', function() {
var val = _dom.phoneNumber.val().trim();
if(val.length === 0) {
set_field_state(_dom.phoneNumber, '');
return 'Phonenumber number should not be empty.';
}
$.getJSON(urls.insidePhoneNumberApi, {q: val}, function(data) {
if(data.meta && data.meta.num_results == 1) {
set_field_state(_dom.phoneNumber, 'valid');
} else {
set_field_state(_dom.phoneNumber, '');
}
});
});
_dom.cardNumber.on('keyup', function() {
if(!validate_form('cardNumber')) {
return;
}
/* cardnumber should be in the database */
var val = _dom.cardNumber.val().trim();
$.getJSON(urls.insideCardNumber, {q: val}, function(data) {
if(data.result === 'valid') {
set_field_state(_dom.cardNumber, 'valid');
} else {
set_field_state(_dom.cardNumber, '');
}
});
});
/* On search result click */
_dom.results.on('click', '.search-result input', function(e){
@@ -60,4 +134,12 @@ $(document).ready(function(){
/* Default state disabled */
_dom.registerButton.attr('disabled','disabled');
/* Focus */
if(_dom.usernameField) {
_dom.usernameField.focus();
}
if(_dom.phoneNumber) {
_dom.phoneNumber.focus();
}
});
+1 -1
View File
@@ -1 +1 @@
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*,*:before,*:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.gLine truncated
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*,*:before,*:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.gLine truncated