| 
									
										
										
										
											2018-11-24 14:44:56 +01:00
										 |  |  | import treeService from '../services/tree.js'; | 
					
						
							|  |  |  | import treeUtils from "../services/tree_utils.js"; | 
					
						
							| 
									
										
										
										
											2019-02-10 15:33:56 +01:00
										 |  |  | import utils from "../services/utils.js"; | 
					
						
							|  |  |  | import protectedSessionHolder from "../services/protected_session_holder.js"; | 
					
						
							| 
									
										
										
										
											2018-11-24 14:44:56 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | const $dialog = $("#export-dialog"); | 
					
						
							|  |  |  | const $form = $("#export-form"); | 
					
						
							|  |  |  | const $noteTitle = $dialog.find(".note-title"); | 
					
						
							|  |  |  | const $subtreeFormats = $("#export-subtree-formats"); | 
					
						
							|  |  |  | const $singleFormats = $("#export-single-formats"); | 
					
						
							|  |  |  | const $subtreeType = $("#export-type-subtree"); | 
					
						
							|  |  |  | const $singleType = $("#export-type-single"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function showDialog(defaultType) { | 
					
						
							|  |  |  |     if (defaultType === 'subtree') { | 
					
						
							|  |  |  |         $subtreeType.prop("checked", true).change(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else if (defaultType === 'single') { | 
					
						
							|  |  |  |         $singleType.prop("checked", true).change(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         throw new Error("Unrecognized type " + defaultType); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     glob.activeDialog = $dialog; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $dialog.modal(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const currentNode = treeService.getCurrentNode(); | 
					
						
							|  |  |  |     const noteTitle = await treeUtils.getNoteTitle(currentNode.data.noteId); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $noteTitle.html(noteTitle); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $form.submit(() => { | 
					
						
							|  |  |  |     const exportType = $dialog.find("input[name='export-type']:checked").val(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-24 20:58:38 +01:00
										 |  |  |     if (!exportType) { | 
					
						
							|  |  |  |         // this shouldn't happen as we always choose default export type
 | 
					
						
							|  |  |  |         alert("Choose export type first please"); | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const exportFormat = exportType === 'subtree' | 
					
						
							|  |  |  |         ? $("input[name=export-subtree-format]:checked").val() | 
					
						
							|  |  |  |         : $("input[name=export-single-format]:checked").val(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-24 14:44:56 +01:00
										 |  |  |     const currentNode = treeService.getCurrentNode(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-10 15:33:56 +01:00
										 |  |  |     exportBranch(currentNode.data.branchId, exportType, exportFormat); | 
					
						
							| 
									
										
										
										
											2018-11-24 14:44:56 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     $dialog.modal('hide'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return false; | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-10 15:33:56 +01:00
										 |  |  | function exportBranch(branchId, type, format) { | 
					
						
							|  |  |  |     const url = utils.getHost() + `/api/notes/${branchId}/export/${type}/${format}?protectedSessionId=` + encodeURIComponent(protectedSessionHolder.getProtectedSessionId()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     utils.download(url); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-24 14:44:56 +01:00
										 |  |  | $('input[name=export-type]').change(function () { | 
					
						
							|  |  |  |     if (this.value === 'subtree') { | 
					
						
							|  |  |  |         if ($("input[name=export-subtree-format]:checked").length === 0) { | 
					
						
							|  |  |  |             $("input[name=export-subtree-format]:first").prop("checked", true); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $subtreeFormats.slideDown(); | 
					
						
							|  |  |  |         $singleFormats.slideUp(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         if ($("input[name=export-single-format]:checked").length === 0) { | 
					
						
							|  |  |  |             $("input[name=export-single-format]:first").prop("checked", true); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $subtreeFormats.slideUp(); | 
					
						
							|  |  |  |         $singleFormats.slideDown(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default { | 
					
						
							|  |  |  |     showDialog | 
					
						
							|  |  |  | }; |