Large diffs are not rendered by default.

@@ -28,5 +28,11 @@
"pug": "^2.0.0-rc.3",
"serve-favicon": "^2.4.3"
},
"devDependencies": {}
"devDependencies": {
"eslint": "^4.6.1",
"eslint-config-airbnb": "^15.1.0",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^6.0.2",
"eslint-plugin-react": "^7.3.0"
}
}
@@ -1,26 +1,32 @@
//--------------- BEGIN MODULE SCOPE VARIABLES ---------------

let
configMap = {
modalFadeTime: 200,
cardMoveOpacity: 0.8
},
jqueryMap = {},
// --------------- BEGIN MODULE SCOPE VARIABLES ---------------

timer,
setJqueryMap, categorySortable, modalResize,
modalCreateOpen, modalEditOpen, modalHideAndSeek, closeModals,
initModule;
const configMap = {
modalFadeTime: 200,
cardMoveOpacity: 0.8,
};

let jqueryMap;
let setJqueryMap;
let categorySortable;
let modalResize;
let modalCreateOpen;
let modalEditOpen;
let modalHideAndSeek;
let closeModals;
let initModule;

// let timer;

//---------------- END MODULE SCOPE VARIABLES ----------------
// ---------------- END MODULE SCOPE VARIABLES ----------------


//-------------------- BEGIN DOM METHODS ---------------------
// -------------------- BEGIN DOM METHODS ---------------------
// Begin DOM method /name/
// End DOM method /name/

// Begin DOM method /setJqueryMap/
setJqueryMap = function () {
setJqueryMap = () => {
jqueryMap = {
categoryBody: $('.c-column-field__category__body'),

@@ -38,49 +44,48 @@ setJqueryMap = function () {
modalEditCreatedAt: $('.editCreatedAt'),
modalEditDescription: $('.editDescription'),
modalEditID: $('#editID'),
modals: $('.js-modal')
modals: $('.js-modal'),
};
};
// End DOM method /setJqueryMap/

// Begin DOM method /categorySortable/
// Purpose: make category__body interactive with jQuery's sortable
//
categorySortable = function() {
categorySortable = () => {
jqueryMap.categoryBody.sortable({
connectWith: jqueryMap.categoryBody,
opacity: configMap.cardMoveOpacity,
stop: function(event, ui) {
stop: (event, ui) => {
console.log(ui.item.attr('data-todo'));
console.log(event.currentTarget);
// TODO 移動した先のカテゴリを取得する
// TODO 変更した内容をajaxでDBに保存する
}
},
});
};
// End DOM method /categorySortable/

// Begin DOM method /modalResize/
// Purpose: Resize the modal size every time opened
//
modalResize = function() {
let
h = $(window).height(),
w = $(window).width(),
mh = jqueryMap.modalField.outerHeight(),
mw = jqueryMap.modalField.outerWidth();
modalResize = () => {
let h = $(window).height();
let w = $(window).width();
let mh = jqueryMap.modalField.outerHeight();
let mw = jqueryMap.modalField.outerWidth();

jqueryMap.modalField.css({
"top": ((h-mh)/2) + "px",
"left": ((w-mw)/2) + "px"
top: `${((h - mh) / 2)}px`,
left: `${((w - mw) / 2)}px`,
});
};
// End DOM method /modalResize/

// Begin DOM method /modalHideAndSeek/
// Purpose: Hide unrelated modal content
//
modalHideAndSeek = function(targetContent) {
modalHideAndSeek = (targetContent) => {
$(`.js-modal-content:not(${targetContent})`).hide();
};
// End DOM method /modalHideAndSeek/
@@ -89,7 +94,7 @@ modalHideAndSeek = function(targetContent) {
// Begin DOM method /modalCreateOpen/
// Purpose: open edit modal
//
modalCreateOpen = function() {
modalCreateOpen = () => {
modalResize();
jqueryMap.modalBackground.fadeIn(configMap.modalFadeTime);
jqueryMap.modalField.fadeIn(configMap.modalFadeTime);
@@ -99,20 +104,19 @@ modalCreateOpen = function() {
// End DOM method /modalCreateOpen/

// Begin DOM method /modalEditOpen/
modalEditOpen = function() {
let
todo = $(this).data('todo'),
action = jqueryMap.modalEditForm.attr('action') + todo._id + '?_method=PUT';
modalEditOpen = () => {
let todo = $(this).data('todo');
let action = `${jqueryMap.modalEditForm.attr('action')}${todo._id}?_method=PUT`;

modalResize();
jqueryMap.modalBackground.fadeIn(configMap.modalFadeTime);
jqueryMap.modalField.fadeIn(configMap.modalFadeTime);
jqueryMap.modalEdit.fadeIn(configMap.modalFadeTime);
jqueryMap.modalContent
// jqueryMap.modalContent
modalHideAndSeek(jqueryMap.modalEditClass);
jqueryMap.modalEditForm.attr('action', action);
jqueryMap.modalEditTitle.html(todo.title);
jqueryMap.modalEditCreatedAt.html('Create at: '+todo.contents[0].createdAt);
jqueryMap.modalEditCreatedAt.html(`Create at: ${todo.contents[0].createdAt}`);
jqueryMap.modalEditDescription.html(todo.contents[0].description);
jqueryMap.modalEditID.attr('value', todo._id);
};
@@ -121,28 +125,28 @@ modalEditOpen = function() {
// Begin DOM method /closeModals/
// Purpose: close modal-related objects
//
closeModals = function(){
closeModals = () => {
jqueryMap.modals.fadeOut(configMap.modalFadeTime);
};
// End DOM method /closeModals/

//--------------------- END DOM METHODS ----------------------
// --------------------- END DOM METHODS ----------------------


//------------------- BEGIN PUBLIC METHODS -------------------
// ------------------- BEGIN PUBLIC METHODS -------------------
// Begin Public method /name/
// End Public method /name/

initModule = function() {
initModule = () => {
setJqueryMap();
categorySortable();
jqueryMap.modalCreateOpen.click(modalCreateOpen);
jqueryMap.modalEditOpen.click(modalEditOpen);
jqueryMap.modalBackground.click(closeModals);
};

//-------------------- END PUBLIC METHODS --------------------
// -------------------- END PUBLIC METHODS --------------------


//-------------------- INIT THIS MODULE ----------------------
// -------------------- INIT THIS MODULE ----------------------
initModule();
@@ -1,83 +1,86 @@

require('date-utils');

var express = require('express'),
router = express.Router(),
collection = require('../mongo'),
ObjectID = require('mongodb').ObjectID,
COL = 'todoLists',
dt = new Date(),
fdt = dt.toFormat('YYYY/MM/DD HH24:MI'),
const express = require('express');
const collection = require('../mongo');
const ObjectID = require('mongodb').ObjectID;
const assert = require('assert');

const router = express.Router();
const COL = 'todoLists';
const dt = new Date();
const fdt = dt.toFormat('YYYY/MM/DD HH24:MI');

assert = require('assert');
const dummy = 'dummy';

router.get('/', function(req, res) {
let categories = [],
todos = [];
router.get('/', (req, res) => {
const todos = [];
let categories;
collection(COL).findOne(
{docType: "categoryTable"},
{categories: 1},
function(err, result) {
{ docType: 'categoryTable' },
{ categories: 1 },
(err, result) => {
categories = result.categories;
for (let i=0; i<categories.length; i++) {
for (let i = 0; i < categories.length; i += 1) {
todos.push([]);
}
collection(COL).find({docType: "todo"}).toArray(function(err, result) {
result.forEach(function(val, idx, array) {
for (let i=0; i<categories.length; i++) {
if (categories[i]==val.categoryName) {
collection(COL).find({ docType: 'todo' }).toArray((err2, result2) => {
result.forEach((val, idx, array) => {
for (let i = 0; i < categories.length; i += 1) {
if (categories[i] === val.categoryName) {
todos[i].push(val);
}
};
}
});
res.render('todoLists/index', {
todos: todos,
categories: categories
todos,
categories,
});
});
}
},
);
});

router.post('/create', function(req, res) {
router.post('/create', (req, res) => {
collection(COL).insertOne({
docType: 'todo',
categoryName: req.body.categoryName,
title: req.body.title,
contents: [{
description: req.body.description,
status: "dummy",
status: dummy,
createdAt: fdt,
dueTime: "dummy",
dueTime: dummy,
}],
email: "dummy",
slack: "dummy"
}, function(err, result) {
email: dummy,
slack: dummy,
}, (err, result) => {
assert.equal(err, null);
res.redirect('/todoLists');
});
});

// TODO ↓作り直す。setの内容が変わっているはず
router.put('/:id', function(req, res) {
router.put('/:id', (req, res) => {
collection(COL).findOneAndUpdate({
_id: new ObjectID(req.body.id)
_id: new ObjectID(req.body.id),
}, {
$set: {
todo: req.body.todo,
description: req.body.description,
category: req.body.category
}
category: req.body.category,
},
}, {
upsert: true
}, function(err, result) {
upsert: true,
}, (err, result) => {
res.redirect('/todoLists');
})
});
});

router.delete('/:id', function(req, res) {
router.delete('/:id', (req, res) => {
collection(COL).deleteOne({
_id: new ObjectID(req.body.id)
}, function(err, result) {
_id: new ObjectID(req.body.id),
}, (err, result) => {
res.redirect('/todoLists');
});
});