[webform-list] Abstract out grid_list
This commit is contained in:
parent
b2d1f00e50
commit
93fd9dfce9
2 changed files with 52 additions and 52 deletions
50
frappe/website/js/grid_list.js
Normal file
50
frappe/website/js/grid_list.js
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import DataTable from 'frappe-datatable';
|
||||
|
||||
export default function make_datatable(container, doctype) {
|
||||
let web_list_start = 0;
|
||||
const web_list_page_length = 20;
|
||||
let web_list_datatable;
|
||||
|
||||
return new Promise(resolve => {
|
||||
frappe.call({
|
||||
method: 'frappe.website.doctype.web_form.web_form.get_in_list_view_fields',
|
||||
args: { doctype },
|
||||
callback: (r) => {
|
||||
const docfields = r.message;
|
||||
|
||||
frappe.call({
|
||||
method: 'frappe.client.get_list',
|
||||
args: { doctype, fields: docfields.map(df => df.fieldname) },
|
||||
callback: (r) => {
|
||||
const data = r.message || [];
|
||||
|
||||
web_list_datatable = new DataTable(container + ' .results', {
|
||||
columns: docfields.map(df => ({ name: df.label, id: df.fieldname })),
|
||||
data,
|
||||
layout: 'fluid'
|
||||
});
|
||||
|
||||
$(container + ' .btn-more').on('click', () => {
|
||||
web_list_start += web_list_page_length;
|
||||
frappe.call({
|
||||
method: 'frappe.client.get_list',
|
||||
args: {
|
||||
doctype,
|
||||
fields: docfields.map(df => df.fieldname),
|
||||
limit_start: web_list_start
|
||||
},
|
||||
callback: (r) => {
|
||||
const data = r.message || [];
|
||||
|
||||
web_list_datatable.appendRows(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
resolve(web_list_datatable);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
import WebForm from './webform';
|
||||
import DataTable from 'frappe-datatable';
|
||||
import make_datatable from './grid_list';
|
||||
|
||||
frappe.ready(function() {
|
||||
if(web_form_settings.is_list) {
|
||||
$('body').show();
|
||||
if($('.web-form-list').length) {
|
||||
make_datatable('.web-form-list .results', web_form_settings.web_form_doctype);
|
||||
make_datatable('.web-form-list', web_form_settings.web_form_doctype);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -162,53 +162,3 @@ frappe.ready(function() {
|
|||
}
|
||||
});
|
||||
});
|
||||
|
||||
window.web_list_start = 0;
|
||||
window.web_list_page_length = 20;
|
||||
window.web_list_datatable;
|
||||
|
||||
|
||||
window.make_datatable = function make_datatable(container, doctype) {
|
||||
return new Promise(resolve => {
|
||||
frappe.call({
|
||||
method: 'frappe.website.doctype.web_form.web_form.get_in_list_view_fields',
|
||||
args: { doctype },
|
||||
callback: (r) => {
|
||||
const docfields = r.message;
|
||||
|
||||
frappe.call({
|
||||
method: 'frappe.client.get_list',
|
||||
args: { doctype, fields: docfields.map(df => df.fieldname) },
|
||||
callback: (r) => {
|
||||
const data = r.message || [];
|
||||
|
||||
window.web_list_datatable = new DataTable(container, {
|
||||
columns: docfields.map(df => ({ name: df.label, id: df.fieldname })),
|
||||
data,
|
||||
layout: 'fluid'
|
||||
});
|
||||
|
||||
$(".web-form-list .btn-more").on('click', () => {
|
||||
window.web_list_start += window.web_list_page_length;
|
||||
frappe.call({
|
||||
method: 'frappe.client.get_list',
|
||||
args: {
|
||||
doctype,
|
||||
fields: docfields.map(df => df.fieldname),
|
||||
limit_start: window.web_list_start
|
||||
},
|
||||
callback: (r) => {
|
||||
const data = r.message || [];
|
||||
|
||||
window.web_list_datatable.appendRows(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
resolve(window.web_list_datatable);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue