super-productivity/app-src/scripts/dialogs/simple-task-summary/simple-task-summary-c.js

126 lines
3.5 KiB
JavaScript

/**
* @ngdoc function
* @name superProductivity.controller:SimpleTaskSummaryCtrl
* @description
* # SimpleTaskSummaryCtrl
* Controller of the superProductivity
*/
(function () {
'use strict';
angular
.module('superProductivity')
.controller('SimpleTaskSummaryCtrl', SimpleTaskSummaryCtrl);
/* @ngInject */
function SimpleTaskSummaryCtrl($mdDialog, tasks, settings, TasksUtil, $scope, ParseDuration, SimpleToast, theme, finishDayFn) {
let vm = this;
vm.theme = theme;
// init clipboard button
// dirty but good enough for now
const clipboard = new window.Clipboard('#clipboard-btn');
clipboard.on('success', function (e) {
SimpleToast('SUCCESS', 'Copied to clipboard');
e.clearSelection();
});
vm.options = settings;
vm.finishDayFn = finishDayFn;
if (!vm.options.separateBy) {
vm.options.separateBy = '';
}
if (!vm.options.separateFieldsBy) {
vm.options.separateFieldsBy = '';
}
function formatTask(task) {
let taskTxt = '';
if (vm.options.showDate && task.dateStr) {
taskTxt += task.dateStr;
}
if (vm.options.showTitle) {
if (taskTxt.length > 0) {
taskTxt += vm.options.separateFieldsBy;
}
taskTxt += task.title;
}
if (vm.options.showTimeSpent) {
if (taskTxt.length > 0) {
taskTxt += vm.options.separateFieldsBy;
}
if (vm.options.isTimeSpentAsMilliseconds) {
taskTxt += task.timeSpent.asMilliseconds();
} else {
taskTxt += ParseDuration.toString(task.timeSpent);
}
}
taskTxt += vm.options.separateBy;
return taskTxt;
}
function createTasksText(tasks) {
let tasksTxt = '';
let newLineSeparator = '\n';
if (tasks) {
for (let i = 0; i < tasks.length; i++) {
let task = tasks[i];
if ((!vm.options.isListDoneOnly || task.isDone) && (!vm.options.isWorkedOnTodayOnly || TasksUtil.isWorkedOnToday(task))) {
tasksTxt += formatTask(task);
if (vm.options.isUseNewLine) {
tasksTxt += newLineSeparator;
}
}
if (vm.options.isListSubTasks && task.subTasks && task.subTasks.length > 0) {
for (let j = 0; j < task.subTasks.length; j++) {
let subTask = task.subTasks[j];
if ((!vm.options.isListDoneOnly || subTask.isDone) && (!vm.options.isWorkedOnTodayOnly || TasksUtil.isWorkedOnToday(subTask))) {
tasksTxt += formatTask(subTask);
if (vm.options.isUseNewLine) {
tasksTxt += newLineSeparator;
}
}
}
}
}
}
// cut off last separator
tasksTxt = tasksTxt.substring(0, tasksTxt.length - vm.options.separateBy.length);
if (vm.options.isUseNewLine) {
tasksTxt = tasksTxt.substring(0, tasksTxt.length - newLineSeparator.length);
}
if (vm.options.regExToRemove) {
vm.isInvalidRegEx = false;
try {
const regEx = new RegExp(vm.options.regExToRemove, 'g');
tasksTxt = tasksTxt.replace(regEx, '');
} catch (e) {
vm.isInvalidRegEx = true;
}
}
return tasksTxt;
}
vm.tasksTxt = createTasksText(tasks);
$scope.$watch('vm.options', () => {
vm.tasksTxt = createTasksText(tasks);
}, true);
vm.submit = () => {
$mdDialog.hide();
};
vm.cancel = () => {
$mdDialog.hide();
};
}
})();