2018-08-01 08:39:07 +00:00
|
|
|
export default class SubPage {
|
|
|
|
constructor(parent, options) {
|
|
|
|
this.$parent = $(parent);
|
|
|
|
this.make_wrapper(options);
|
|
|
|
|
2018-08-19 19:48:41 +00:00
|
|
|
// generic action handler
|
|
|
|
this.$wrapper.on('click', '[data-action]', e => {
|
|
|
|
const $target = $(e.currentTarget);
|
|
|
|
const action = $target.data().action;
|
|
|
|
|
|
|
|
if (action && this[action]) {
|
|
|
|
this[action].apply(this, $target);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2018-08-01 08:39:07 +00:00
|
|
|
// handle broken images after every render
|
|
|
|
if (this.render) {
|
|
|
|
this._render = this.render.bind(this);
|
|
|
|
|
|
|
|
this.render = (...args) => {
|
|
|
|
this._render(...args);
|
|
|
|
frappe.dom.handle_broken_images(this.$wrapper);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
make_wrapper() {
|
|
|
|
const page_name = frappe.get_route()[1];
|
|
|
|
this.$wrapper = $(`<div class="marketplace-page" data-page-name="${page_name}">`).appendTo(this.$parent);
|
|
|
|
this.hide();
|
|
|
|
}
|
|
|
|
|
|
|
|
empty() {
|
|
|
|
this.$wrapper.empty();
|
|
|
|
}
|
|
|
|
|
|
|
|
show() {
|
|
|
|
this.refresh();
|
|
|
|
this.$wrapper.show();
|
|
|
|
}
|
|
|
|
|
|
|
|
hide() {
|
|
|
|
this.$wrapper.hide();
|
|
|
|
}
|
2018-08-13 16:06:07 +00:00
|
|
|
}
|