
dash-stack orginally was tought as Python Flask project. After some heatet argument and strong considiration we have decided to move the project to Django. This commit is the initial commit for moving project to Django. Change-Id: Id28e3cf1dafbed7dd647b1020376bae893f5c3a2 Signed-off-by: Paarhati Ozkasgarli <ozkasgarli@gmail.com>
178 lines
8.9 KiB
JavaScript
178 lines
8.9 KiB
JavaScript
/*
|
|
Input Mask plugin extensions
|
|
http://github.com/RobinHerbots/jquery.inputmask
|
|
Copyright (c) 2010 - 2014 Robin Herbots
|
|
Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
|
|
Version: 0.0.0
|
|
|
|
Optional extensions on the jquery.inputmask base
|
|
*/
|
|
(function ($) {
|
|
//number aliases
|
|
$.extend($.inputmask.defaults.aliases, {
|
|
'decimal': {
|
|
mask: "~",
|
|
placeholder: "",
|
|
repeat: "*",
|
|
greedy: false,
|
|
numericInput: false,
|
|
isNumeric: true,
|
|
digits: "*", //number of fractionalDigits
|
|
groupSeparator: "",//",", // | "."
|
|
radixPoint: ".",
|
|
groupSize: 3,
|
|
autoGroup: false,
|
|
allowPlus: true,
|
|
allowMinus: true,
|
|
//todo
|
|
integerDigits: "*", //number of integerDigits
|
|
defaultValue: "",
|
|
prefix: "",
|
|
suffix: "",
|
|
|
|
//todo
|
|
getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account
|
|
var calculatedLength = buffer.length;
|
|
|
|
if (!greedy) {
|
|
if (repeat == "*") {
|
|
calculatedLength = currentBuffer.length + 1;
|
|
} else if (repeat > 1) {
|
|
calculatedLength += (buffer.length * (repeat - 1));
|
|
}
|
|
}
|
|
|
|
var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);
|
|
var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);
|
|
var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, "g"), "").replace(new RegExp(escapedRadixPoint), ""),
|
|
groupOffset = currentBufferStr.length - strippedBufferStr.length;
|
|
return calculatedLength + groupOffset;
|
|
},
|
|
postFormat: function (buffer, pos, reformatOnly, opts) {
|
|
if (opts.groupSeparator == "") return pos;
|
|
var cbuf = buffer.slice(),
|
|
radixPos = $.inArray(opts.radixPoint, buffer);
|
|
if (!reformatOnly) {
|
|
cbuf.splice(pos, 0, "?"); //set position indicator
|
|
}
|
|
var bufVal = cbuf.join('');
|
|
if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) {
|
|
var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);
|
|
bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), '');
|
|
var radixSplit = bufVal.split(opts.radixPoint);
|
|
bufVal = radixSplit[0];
|
|
var reg = new RegExp('([-\+]?[\\d\?]+)([\\d\?]{' + opts.groupSize + '})');
|
|
while (reg.test(bufVal)) {
|
|
bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');
|
|
bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);
|
|
}
|
|
if (radixSplit.length > 1)
|
|
bufVal += opts.radixPoint + radixSplit[1];
|
|
}
|
|
buffer.length = bufVal.length; //align the length
|
|
for (var i = 0, l = bufVal.length; i < l; i++) {
|
|
buffer[i] = bufVal.charAt(i);
|
|
}
|
|
var newPos = $.inArray("?", buffer);
|
|
if (!reformatOnly) buffer.splice(newPos, 1);
|
|
|
|
return reformatOnly ? pos : newPos;
|
|
},
|
|
regex: {
|
|
number: function (opts) {
|
|
var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);
|
|
var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);
|
|
var digitExpression = isNaN(opts.digits) ? opts.digits : '{0,' + opts.digits + '}';
|
|
var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : "";
|
|
return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)(" + escapedRadixPoint + "\\d" + digitExpression + ")?$");
|
|
}
|
|
},
|
|
onKeyDown: function (e, buffer, opts) {
|
|
var $input = $(this), input = this;
|
|
if (e.keyCode == opts.keyCode.TAB) {
|
|
var radixPosition = $.inArray(opts.radixPoint, buffer);
|
|
if (radixPosition != -1) {
|
|
var masksets = $input.data('_inputmask')['masksets'];
|
|
var activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex'];
|
|
for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex]["_buffer"], masksets[activeMasksetIndex]["greedy"], masksets[activeMasksetIndex]["repeat"], buffer, opts) ; i++) {
|
|
if (buffer[radixPosition + i] == undefined || buffer[radixPosition + i] == "") buffer[radixPosition + i] = "0";
|
|
}
|
|
input._valueSet(buffer.join(''));
|
|
}
|
|
} else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) {
|
|
opts.postFormat(buffer, 0, true, opts);
|
|
input._valueSet(buffer.join(''));
|
|
return true;
|
|
}
|
|
},
|
|
definitions: {
|
|
'~': { //real number
|
|
validator: function (chrs, buffer, pos, strict, opts) {
|
|
if (chrs == "") return false;
|
|
if (!strict && pos <= 1 && buffer[0] === '0' && new RegExp("[\\d-]").test(chrs) && buffer.join('').length == 1) { //handle first char
|
|
buffer[0] = "";
|
|
return { "pos": 0 };
|
|
}
|
|
|
|
var cbuf = strict ? buffer.slice(0, pos) : buffer.slice();
|
|
|
|
cbuf.splice(pos, 0, chrs);
|
|
var bufferStr = cbuf.join('');
|
|
|
|
//strip groupseparator
|
|
var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);
|
|
bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, "g"), '');
|
|
|
|
var isValid = opts.regex.number(opts).test(bufferStr);
|
|
if (!isValid) {
|
|
//let's help the regex a bit
|
|
bufferStr += "0";
|
|
isValid = opts.regex.number(opts).test(bufferStr);
|
|
if (!isValid) {
|
|
//make a valid group
|
|
var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator);
|
|
for (var i = bufferStr.length - lastGroupSeparator; i <= 3; i++) {
|
|
bufferStr += "0";
|
|
}
|
|
|
|
isValid = opts.regex.number(opts).test(bufferStr);
|
|
if (!isValid && !strict) {
|
|
if (chrs == opts.radixPoint) {
|
|
isValid = opts.regex.number(opts).test("0" + bufferStr + "0");
|
|
if (isValid) {
|
|
buffer[pos] = "0";
|
|
pos++;
|
|
return { "pos": pos };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isValid != false && !strict && chrs != opts.radixPoint) {
|
|
var newPos = opts.postFormat(buffer, pos, false, opts);
|
|
return { "pos": newPos };
|
|
}
|
|
|
|
return isValid;
|
|
},
|
|
cardinality: 1,
|
|
prevalidator: null
|
|
}
|
|
},
|
|
insertMode: true,
|
|
autoUnmask: false
|
|
},
|
|
'integer': {
|
|
regex: {
|
|
number: function (opts) {
|
|
var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);
|
|
var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : "";
|
|
return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)$");
|
|
}
|
|
},
|
|
alias: "decimal"
|
|
}
|
|
});
|
|
})(jQuery);
|