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

image-view-ctrl.js 4.1KB

    /** * @ngdoc function * @name domainManagerApp.controller:AboutCtrl * @description * # AboutCtrl * Controller of the domainManagerApp */ angular.module('codexApp.imageView', []) .controller('ImageViewCtrl',['$scope', '$rootScope', '$state', 'FileService', function ($scope, $rootScope, $state, FileService) { var filesystem = require("fs"); console.log('-> Image View opened!') $scope.note = FileService.getCurrentNote(); $scope.container = "note-container"; $scope.image_path = $scope.note.path; $scope.fixRelativeURL = function(current_url, relative_url) { console.log("-> Fixing URL") console.log(" * Relative URL: " + relative_url) console.log(" * Note URL: " + current_url) // split urls and create arrays var current_path = current_url.split('/'); var relative_path = relative_url.split('/'); // remove the current note's filename from the url current_path.pop(); // count how many folders the relative path goes back and erase '..' var count = 0; for (var i = 0; i < relative_path.length; i++) { if(relative_path[i] == ".."){ count = count + 1; relative_path[i] = ""; } } // make the relative path a string again relative_path = relative_path.join('/'); // remove the same count of folders from the end of the current notes url for (var i = 0; i < count; i++) { current_path.pop(); } // make the current note's url a string again current_path = current_path.join('/'); // add a '/' if the relative url pointed to a file or folder above the current notes root if(count == 0){ var fixed_url = current_path + "/" + relative_path; } else { var fixed_url = current_path + relative_path; } // return the fixed relative url console.log(" * Fixed URL: " + fixed_url) return fixed_url; } $scope.absoluteToRelativeURL = function(current_url, absolute_url) { console.log("-> Converting absolute URL to relative") console.log(" * Absolute URL: " + absolute_url) console.log(" * Note URL: " + current_url) // split urls and create arrays var current_path = current_url.split('/'); var absolute_path = $scope.getUrlParts(absolute_url).pathname.split('/'); // remove the current note's filename from the url and the image filename from the url current_path.pop(); current_path.shift(); absolute_path.shift(); // count how many folders the current path has var current_path_count = 0; for (var i = 0; i < current_path.length; i++) { current_path_count = current_path_count + 1; } // count how many folders the absolute path has var absolute_path_count = 0; for (var i = 0; i < absolute_path.length; i++) { absolute_path_count = absolute_path_count + 1; } absolute_path_count = absolute_path_count - 1; console.log(" * Cleaned current URL (" + current_path_count + " parts): " + current_path.join('/')) console.log(" * Cleaned absolute URL (" + absolute_path_count + " parts): " + absolute_path.join('/')) dif = current_path_count - (absolute_path_count -1); for (var i = 0; i < absolute_path_count; i++) { absolute_path.shift(); } console.log(" * Modified current URL (" + current_path_count + " parts): " + current_path.join('/')) console.log(" * Modified absolute URL (" + absolute_path_count + " parts): " + absolute_path.join('/')) // make the relative path a string again var relative_path = absolute_path.join('/'); console.log(" * Converted relative URL: " + relative_path) return relative_path; } $scope.getUrlParts = function(url) { var a = document.createElement('a'); a.href = url; return { href: a.href, host: a.host, hostname: a.hostname, port: a.port, pathname: a.pathname, protocol: a.protocol, hash: a.hash, search: a.search }; } }]);