Desktop markdown wiki app. Built with node, Electron Framework and AngularJS.

app-ctrl.js 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /**
  2. * @ngdoc function
  3. * @name domainManagerApp.controller:AboutCtrl
  4. * @description
  5. * # AboutCtrl
  6. * Controller of the domainManagerApp
  7. */
  8. angular.module('codexApp.index', [])
  9. .controller('AppCtrl', ['$scope', '$rootScope', '$state', '$location', 'FileService', 'PrefsService', function ($scope, $rootScope, $state, $location, FileService, PrefsService) {
  10. $scope.setView = function() {
  11. $scope.view = PrefsService.getCurrentView();
  12. switch ($scope.view) {
  13. case "All Notes":
  14. $scope.files = FileService.getAllNotes();
  15. break;
  16. case "All Files":
  17. $scope.files = FileService.getAllFiles();
  18. break;
  19. case "Notebooks":
  20. $scope.files = FileService.getFolders();
  21. break;
  22. case "Notebook":
  23. $scope.files = FileService.getFiles($scope.current_folder);
  24. break;
  25. }
  26. }
  27. $scope.setView();
  28. $rootScope.$on('window-view:change', function(){
  29. $scope.setView();
  30. });
  31. var remote = require('remote')
  32. var Menu = remote.require('menu')
  33. var MenuItem = remote.require('menu-item')
  34. // Build our new menu
  35. var menu = new Menu()
  36. menu.append(new MenuItem({
  37. label: "append",
  38. click: function() {
  39. // Trigger an alert when menu item is clicked
  40. alert('Deleted')
  41. }
  42. }))
  43. menu.append(new MenuItem({
  44. label: 'More Info...',
  45. click: function() {
  46. // Trigger an alert when menu item is clicked
  47. alert('Here is more information')
  48. }
  49. }))
  50. // Add the listener
  51. document.addEventListener('DOMContentLoaded', function () {
  52. document.querySelector('.js-context-menu').addEventListener('click', function (event) {
  53. menu.popup(remote.getCurrentWindow());
  54. })
  55. })
  56. var holder = document.getElementById('holder');
  57. holder.ondragover = function () {
  58. return false;
  59. };
  60. holder.ondragleave = holder.ondragend = function () {
  61. return false;
  62. };
  63. holder.ondrop = function (e) {
  64. e.preventDefault();
  65. var file = e.dataTransfer.files[0];
  66. console.log('File you dragged here is', file.path);
  67. document.getElementById('image-container').src = file.path
  68. return false;
  69. };
  70. $scope.openFile = function(file){
  71. console.log("openning " + file.type + " link: " + file.path);
  72. switch (file.type) {
  73. case "Markdown":
  74. FileService.setCurrentNote(file)
  75. $rootScope.$broadcast('main-window:note-view');
  76. $state.go("note-view");
  77. break;
  78. case "Folder":
  79. $scope.current_folder = file.path;
  80. PrefsService.setCurrentView("Notebook");
  81. $scope.setView();
  82. break;
  83. }
  84. }
  85. $rootScope.$on('file-service:files-loaded', function(){
  86. if(!$scope.$$phase) {
  87. $scope.$apply(function(){
  88. //$scope.itemSpacing();
  89. });
  90. } else {
  91. //$scope.itemSpacing();
  92. }
  93. })
  94. $rootScope.$on('$stateNotFound', function(event, unfoundState, fromState, fromParams){
  95. console.log(unfoundState.to); // "lazy.state"
  96. console.log(unfoundState.toParams); // {a:1, b:2}
  97. console.log(unfoundState.options); // {inherit:false} + default options
  98. })
  99. $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){
  100. console.log('Change state error'); // "lazy.state"
  101. console.log(error)
  102. console.log(toState)
  103. console.log(toParams)
  104. console.log(fromState)
  105. console.log(fromParams)
  106. })
  107. $scope.itemSpacing = function(){
  108. var items = document.getElementsByClassName("file-view-item");
  109. for (var i = 0; i < items.length; i++) {
  110. items[i].style.margin = "15px";
  111. }
  112. }
  113. $scope.isImage = function(file_type) {
  114. if(file_type != 'Image') { return true; }
  115. else { return false; }
  116. }
  117. $scope.getImageURL = function(img_url) {
  118. return "" + FileService.absoluteToRelativeURL(FileService.getNotesDir(), img_url)
  119. }
  120. }]);