frappe.ready(() => { let self = this; setup_editor(); fetch_quiz_list(); $("#save-lesson").click((e) => { save_lesson(e); }); }); const setup_editor = () => { self.editor = new EditorJS({ holder: "lesson-content", tools: { youtube: YouTubeVideo, quiz: Quiz, }, }); }; const save_lesson = (e) => { self.editor.save().then((outputData) => { parse_lesson(outputData); }); }; const fetch_quiz_list = () => { frappe.call({ method: "lms.lms.doctype.lms_quiz.lms_quiz.get_user_quizzes", callback: (r) => { self.quiz_list = r.message; }, }); }; const parse_lesson = (data) => {}; class YouTubeVideo { static get toolbox() { return { title: "YouTube Video", }; } render() { let self = this; this.wrapper = document.createElement("div"); let youtubedialog = new frappe.ui.Dialog({ title: __("YouTube Video"), fields: [ { fieldname: "youtube", fieldtype: "Data", label: __("YouTube Video ID"), reqd: 1, }, ], primary_action_label: __("Insert"), primary_action(values) { youtubedialog.hide(); self.youtube = values.youtube; $(self.wrapper).html(` `); }, }); youtubedialog.show(); return this.wrapper; } save(block_content) { return { youtube: this.youtube, }; } } class Quiz { static get toolbox() { return { title: "Quiz", }; } render() { this.wrapper = document.createElement("div"); let self = this; let quizdialog = new frappe.ui.Dialog({ title: __("Select a Quiz"), fields: [ { fieldname: "quiz", fieldtype: "Link", label: __("Quiz"), reqd: 1, options: "LMS Quiz", }, ], primary_action_label: __("Insert"), primary_action(values) { self.quiz = values.quiz; quizdialog.hide(); $(self.wrapper).html( `