wasilak/notes-manager

View on GitHub
libs/web/static/app/components/note.js

Summary

Maintainability
A
0 mins
Test Coverage
/* jslint node: true */
/* jshint -W117 */
/* global angular */
/* global marked */
/* global markdownlint */
 
"use strict";
 
angular.module("app").component("note",
{
bindings: {
note: '<',
aiEnabled: '<'
},
Function `controller` has 5 arguments (exceeds 4 allowed). Consider refactoring.
controller: function ($scope, $rootScope, $stateParams, ApiService, $state) {
var vm = this;
 
vm.noteOriginal = false;
vm.loader = false;
 
vm.saveNote = function () {
vm.loader = true;
ApiService.saveNote(vm.note).then(function (result) {
// some kind of message, i.e. growl
vm.note = result;
$rootScope.notifications.push('Note saved');
vm.loader = false;
$state.go('list_note', { uuid: vm.note.response.id });
});
};
 
vm.aiEnabledCheck = function () {
vm.loader = true;
ApiService.aiEnabled().then(function (result) {
console.error(result);
return result.response.enabled
});
};
 
vm.aiReWriteNote = function () {
vm.loader = true;
ApiService.aiReWriteNote(vm.noteOriginal).then(function (result) {
console.log(result);
Identical blocks of code found in 2 locations. Consider refactoring.
if (!result.success) {
vm.note = vm.noteOriginal
$rootScope.notifications.push('AIRewrite error (' + result.response.code + '): ' + result.response.message);
} else {
vm.note.response.title = result.response.rewritten.title;
vm.note.response.content = result.response.rewritten.content;
vm.note.response.tags = result.response.rewritten.tags;
}
vm.loader = false;
});
};
 
vm.restoreOriginal = function () {
vm.loader = true;
vm.note = JSON.parse(JSON.stringify(vm.noteOriginal));
vm.loader = false;
};
 
vm.saveButtonDisabled = function () {
return angular.equals(vm.note, vm.noteOriginal);
};
 
vm.aiRewriteButtonDisabled = function () {
return vm.note.response.content.length === 0;
};
 
vm.deleteNote = function () {
var confirmed = confirm("Are you sure?");
 
if (confirmed) {
vm.loader = true;
 
// eslint-disable-next-line no-unused-vars
ApiService.deleteNote(vm.note.response.id).then(function (result) {
$rootScope.notifications.push('Note deleted');
vm.loader = false;
$state.go('list', {}, { reload: true });
});
} else {
vm.loader = false;
}
};
 
vm.loadItems = function (query) {
return ApiService.getTags(query);
};
 
vm.breakpoints = [];
 
$scope.$watch('$ctrl.aiEnabled.response', function (current, original) {
console.log("vm.aiEnabled", vm.aiEnabled.response.enabled);
vm.isAiEnabled = vm.aiEnabled.response.enabled;
});
 
// eslint-disable-next-line no-unused-vars
$scope.$watch('$ctrl.note.response', function (current, original) {
vm.errorMessage = false;
$rootScope.$state.current.data.title = current.title + " [[edit]]";
vm.breakpoints = [];
try {
 
// making a copy of original model in order to detect changes and to be able to enable/disable save button
if (!vm.noteOriginal) {
vm.noteOriginal = JSON.parse(JSON.stringify(vm.note));
}
// vm.outputText = marked.parse(current.content);
let markdownlintOptions = {
"config": {
"MD041": false,
"MD013": false,
"MD034": false,
// "MD031": false,
// "MD032": false
},
"strings": {
"content": current.content
}
}
 
let lintResult = markdownlint.sync(markdownlintOptions)
 
vm.lintResult = lintResult.toString().replace(/\r\n|\r|\n/g, '<br>');
vm.outputText = marked.parse(current.content);
 
for (let id in lintResult.content) {
vm.breakpoints.push(lintResult.content[id].lineNumber - 1);
}
 
} catch (err) {
vm.errorMessage = err.message;
}
}, true);
},
templateUrl: "/static/app/views/note.html"
}
);