[controls] Barcode Control (#4335)
* [start] display barcode based on input * [wip] * [barcode] use set_value * parse and set * remove quagga * [barcode] set in db * [fix] set height * cleanup * remove from build.json, require instead * [fix] declare JsBarcode global in .eslintrc
This commit is contained in:
parent
3c8689e4a2
commit
1e253b9d13
10 changed files with 52 additions and 8 deletions
|
|
@ -119,7 +119,6 @@
|
||||||
"getCookies": true,
|
"getCookies": true,
|
||||||
"get_url_arg": true,
|
"get_url_arg": true,
|
||||||
"QUnit": true,
|
"QUnit": true,
|
||||||
"Snap": true,
|
"JsBarcode": true
|
||||||
"mina": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@
|
||||||
"no_copy": 0,
|
"no_copy": 0,
|
||||||
"oldfieldname": "fieldtype",
|
"oldfieldname": "fieldtype",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nText\nText Editor\nTime\nSignature",
|
"options": "Attach\nAttach Image\nBarcode\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nText\nText Editor\nTime\nSignature",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 0,
|
"print_hide": 0,
|
||||||
"print_hide_if_no_value": 0,
|
"print_hide_if_no_value": 0,
|
||||||
|
|
@ -1364,7 +1364,7 @@
|
||||||
"issingle": 0,
|
"issingle": 0,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2017-08-29 15:30:55.489568",
|
"modified": "2017-10-07 19:20:15.888708",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Core",
|
"module": "Core",
|
||||||
"name": "DocField",
|
"name": "DocField",
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ docfield_properties = {
|
||||||
|
|
||||||
allowed_fieldtype_change = (('Currency', 'Float', 'Percent'), ('Small Text', 'Data'),
|
allowed_fieldtype_change = (('Currency', 'Float', 'Percent'), ('Small Text', 'Data'),
|
||||||
('Text', 'Data'), ('Text', 'Text Editor', 'Code', 'Signature'), ('Data', 'Select'),
|
('Text', 'Data'), ('Text', 'Text Editor', 'Code', 'Signature'), ('Data', 'Select'),
|
||||||
('Text', 'Small Text'))
|
('Text', 'Small Text'), ('Text', 'Data', 'Barcode'))
|
||||||
|
|
||||||
allowed_fieldtype_for_options_change = ('Read Only', 'HTML', 'Select',)
|
allowed_fieldtype_for_options_change = ('Read Only', 'HTML', 'Select',)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
"no_copy": 0,
|
"no_copy": 0,
|
||||||
"oldfieldname": "fieldtype",
|
"oldfieldname": "fieldtype",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSignature\nSmall Text\nTable\nText\nText Editor\nTime",
|
"options": "Attach\nAttach Image\nBarcode\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSignature\nSmall Text\nTable\nText\nText Editor\nTime",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 0,
|
"print_hide": 0,
|
||||||
"print_hide_if_no_value": 0,
|
"print_hide_if_no_value": 0,
|
||||||
|
|
@ -1202,7 +1202,7 @@
|
||||||
"issingle": 0,
|
"issingle": 0,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2017-07-06 17:24:03.665171",
|
"modified": "2017-10-11 06:45:20.172291",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Custom",
|
"module": "Custom",
|
||||||
"name": "Customize Form Field",
|
"name": "Customize Form Field",
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ type_map = {
|
||||||
,'Attach Image':('text', '')
|
,'Attach Image':('text', '')
|
||||||
,'Signature': ('longtext', '')
|
,'Signature': ('longtext', '')
|
||||||
,'Color': ('varchar', varchar_len)
|
,'Color': ('varchar', varchar_len)
|
||||||
|
,'Barcode': ('longtext', '')
|
||||||
}
|
}
|
||||||
|
|
||||||
default_columns = ['name', 'creation', 'modified', 'modified_by', 'owner',
|
default_columns = ['name', 'creation', 'modified', 'modified_by', 'owner',
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@
|
||||||
"public/js/frappe/form/controls/button.js",
|
"public/js/frappe/form/controls/button.js",
|
||||||
"public/js/frappe/form/controls/html.js",
|
"public/js/frappe/form/controls/html.js",
|
||||||
"public/js/frappe/form/controls/heading.js",
|
"public/js/frappe/form/controls/heading.js",
|
||||||
"public/js/frappe/form/controls/autocomplete.js"
|
"public/js/frappe/form/controls/autocomplete.js",
|
||||||
|
"public/js/frappe/form/controls/barcode.js"
|
||||||
],
|
],
|
||||||
"js/dialog.min.js": [
|
"js/dialog.min.js": [
|
||||||
"public/js/frappe/dom.js",
|
"public/js/frappe/dom.js",
|
||||||
|
|
|
||||||
|
|
@ -440,6 +440,9 @@ fieldset[disabled] .form-control {
|
||||||
top: 26px;
|
top: 26px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.barcode-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.video-modal .modal-dialog {
|
.video-modal .modal-dialog {
|
||||||
width: 700px;
|
width: 700px;
|
||||||
|
|
|
||||||
34
frappe/public/js/frappe/form/controls/barcode.js
Normal file
34
frappe/public/js/frappe/form/controls/barcode.js
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
frappe.ui.form.ControlBarcode = frappe.ui.form.ControlData.extend({
|
||||||
|
make_wrapper() {
|
||||||
|
// Create the elements for barcode area
|
||||||
|
this._super();
|
||||||
|
|
||||||
|
let $input_wrapper = this.$wrapper.find('.control-input-wrapper');
|
||||||
|
this.barcode_area = $(`<div class="barcode-wrapper border"><svg height=80></svg></div>`);
|
||||||
|
frappe.require("assets/frappe/js/lib/JsBarcode.all.min.js", () => {
|
||||||
|
this.barcode_area.appendTo($input_wrapper);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
parse(value) {
|
||||||
|
// Parse raw value
|
||||||
|
return this.get_barcode_html(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_formatted_input(value) {
|
||||||
|
// Set values to display
|
||||||
|
const svg = value;
|
||||||
|
const barcode_value = $(svg).attr('data-barcode-value');
|
||||||
|
|
||||||
|
this.$input.val(barcode_value);
|
||||||
|
this.barcode_area.html(svg);
|
||||||
|
},
|
||||||
|
|
||||||
|
get_barcode_html(value) {
|
||||||
|
// Get svg
|
||||||
|
const svg = this.barcode_area.find('svg')[0];
|
||||||
|
JsBarcode(svg, value, {height: 40});
|
||||||
|
$(svg).attr('data-barcode-value', value);
|
||||||
|
return this.barcode_area.html();
|
||||||
|
}
|
||||||
|
});
|
||||||
2
frappe/public/js/lib/JsBarcode.all.min.js
vendored
Normal file
2
frappe/public/js/lib/JsBarcode.all.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -245,6 +245,10 @@ textarea.form-control {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.barcode-wrapper {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.video-modal .modal-dialog {
|
.video-modal .modal-dialog {
|
||||||
width: 700px;
|
width: 700px;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue