From f172f3aa6211bf05a816b56f8921acfedd55fb49 Mon Sep 17 00:00:00 2001 From: Dohyung Ahn Date: Thu, 17 Feb 2022 14:49:12 +0900 Subject: [PATCH] fix: prevent missing view error on toggling popup options (fix #699) (#1025) --- package-lock.json | 20 +++++++++---------- package.json | 2 +- src/css/weekday.styl | 14 ------------- src/js/common/floatingLayer.js | 2 +- src/js/factory/monthView.js | 8 ++++---- src/js/factory/weekView.js | 6 +++--- src/js/theme/theme.js | 2 ++ src/js/view/layout.js | 7 +------ src/js/view/template/week/dayGridSchedule.hbs | 2 +- src/js/view/week/dayGridSchedule.js | 6 +----- 10 files changed, 24 insertions(+), 45 deletions(-) diff --git a/package-lock.json b/package-lock.json index 876aff0b2..6f7118823 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,7 @@ "jsdoc": "^3.5.5", "karma": "^6.3.14", "karma-chrome-launcher": "^2.2.0", - "karma-cli": "^1.0.1", + "karma-cli": "^2.0.0", "karma-coverage": "^2.0.3", "karma-fixture": "^0.2.6", "karma-html2js-preprocessor": "^1.1.0", @@ -7371,18 +7371,18 @@ } }, "node_modules/karma-cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", - "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", "dev": true, "dependencies": { - "resolve": "^1.1.6" + "resolve": "^1.3.3" }, "bin": { "karma": "bin/karma" }, "engines": { - "node": "0.10 || 0.12 || 4 || 5 || 6" + "node": ">= 6" } }, "node_modules/karma-coverage": { @@ -20756,12 +20756,12 @@ } }, "karma-cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", - "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", "dev": true, "requires": { - "resolve": "^1.1.6" + "resolve": "^1.3.3" } }, "karma-coverage": { diff --git a/package.json b/package.json index f42a5338d..fe6ff9591 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "jsdoc": "^3.5.5", "karma": "^6.3.14", "karma-chrome-launcher": "^2.2.0", - "karma-cli": "^1.0.1", + "karma-cli": "^2.0.0", "karma-coverage": "^2.0.3", "karma-fixture": "^0.2.6", "karma-html2js-preprocessor": "^1.1.0", diff --git a/src/css/weekday.styl b/src/css/weekday.styl index fa4c0c686..c4b0daf55 100644 --- a/src/css/weekday.styl +++ b/src/css/weekday.styl @@ -24,7 +24,6 @@ margin-left: 2px +prefix-classes(weekday) - .container, .grid, .grid-line height: 100% @@ -38,11 +37,6 @@ .border border-top: 1px solid #ddd - .container - position: relative - &>div - height: 100% - .grid-line position: absolute padding: 3px @@ -57,10 +51,6 @@ line-height: 27px text-align: center - .grid-date-title - line-height: 27px - margin-right: 5px - .grid-more-schedules float: right display: inline-block @@ -85,10 +75,6 @@ font-size: 12px overflow-y: scroll - .schedules-height-span - width: 1px - margin-left: -1px - .schedule-block position: absolute diff --git a/src/js/common/floatingLayer.js b/src/js/common/floatingLayer.js index 81917e087..2703f44ae 100644 --- a/src/js/common/floatingLayer.js +++ b/src/js/common/floatingLayer.js @@ -13,7 +13,7 @@ var config = require('../config'), * @constructor * @extends {View} * @param {object} options - options for floating layer module - * @param {HTMLElement} container - parent continer for floating layer + * @param {HTMLElement} container - parent container for floating layer */ function FloatingLayer(options, container) { var sibling = container[FloatingLayer.PROP_KEY], diff --git a/src/js/factory/monthView.js b/src/js/factory/monthView.js index fc766e906..1b2014462 100644 --- a/src/js/factory/monthView.js +++ b/src/js/factory/monthView.js @@ -127,7 +127,7 @@ function createMonthView(baseController, layoutContainer, dragHandler, options) // binding popup for schedule detail if (options.useDetailPopup) { - detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars); + detailView = new ScheduleDetailPopup(layoutContainer); onShowDetailPopup = function(eventData) { var scheduleId = eventData.schedule.calendarId; eventData.calendar = common.find(baseController.calendars, function(calendar) { @@ -209,11 +209,11 @@ function createMonthView(baseController, layoutContainer, dragHandler, options) }); }); - if (options.useCreationPopup && options.useDetailPopup) { + if (options.useCreationPopup && options.useDetailPopup && createView && detailView) { createView.off('beforeUpdateSchedule', onUpdateSchedule); } - if (options.useCreationPopup) { + if (options.useCreationPopup && createView) { if (creationHandler) { creationHandler.off('beforeCreateSchedule', onShowCreationPopup); } @@ -221,7 +221,7 @@ function createMonthView(baseController, layoutContainer, dragHandler, options) createView.destroy(); } - if (options.useDetailPopup) { + if (options.useDetailPopup && detailView) { clickHandler.off('clickSchedule', onShowDetailPopup); detailView.off('beforeUpdateSchedule', onUpdateSchedule); detailView.off('beforeDeleteSchedule', onDeleteSchedule); diff --git a/src/js/factory/weekView.js b/src/js/factory/weekView.js index 135a3a2b1..d4bd9b9d5 100644 --- a/src/js/factory/weekView.js +++ b/src/js/factory/weekView.js @@ -258,7 +258,7 @@ module.exports = function(baseController, layoutContainer, dragHandler, options, // binding popup for schedule detail if (options.useDetailPopup) { - detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars); + detailView = new ScheduleDetailPopup(layoutContainer); onShowDetailPopup = function(eventData) { var scheduleId = eventData.schedule.calendarId; eventData.calendar = common.find(baseController.calendars, function(calendar) { @@ -320,12 +320,12 @@ module.exports = function(baseController, layoutContainer, dragHandler, options, }); }); - if (options.useCreationPopup) { + if (options.useCreationPopup && createView) { createView.off('beforeCreateSchedule', onSaveNewSchedule); createView.destroy(); } - if (options.useDetailPopup) { + if (options.useDetailPopup && detailView) { detailView.off('beforeDeleteSchedule', onDeleteSchedule); detailView.destroy(); } diff --git a/src/js/theme/theme.js b/src/js/theme/theme.js index f45fb60b3..dee31e433 100644 --- a/src/js/theme/theme.js +++ b/src/js/theme/theme.js @@ -11,6 +11,8 @@ var common = require('../common/common'); /** * Theme manager + * + * @constructor * @param {object} customTheme - custom theme */ function Theme(customTheme) { diff --git a/src/js/view/layout.js b/src/js/view/layout.js index f81030c97..e54af241b 100644 --- a/src/js/view/layout.js +++ b/src/js/view/layout.js @@ -20,19 +20,14 @@ var View = require('./view'); function Layout(container, theme) { container = domutil.appendHTMLElement('div', container, config.classname('layout')); - /** - * @type {HTMLElement} - */ - this.container = container; + View.call(this, container); - /*eslint-disable*/ /** * @type {Collection} Child view collection. */ this.children = new Collection(function(childView) { return childView.viewName; }); - /* eslint-enable*/ /** * @type {Theme} diff --git a/src/js/view/template/week/dayGridSchedule.hbs b/src/js/view/template/week/dayGridSchedule.hbs index c6cfbeb08..cc43a8413 100644 --- a/src/js/view/template/week/dayGridSchedule.hbs +++ b/src/js/view/template/week/dayGridSchedule.hbs @@ -1,4 +1,4 @@ -
+
{{#each matrices ~}} {{#each this ~}} {{! matrix }} {{#each this ~}} {{! column }} diff --git a/src/js/view/week/dayGridSchedule.js b/src/js/view/week/dayGridSchedule.js index 0e099517a..9525482c7 100644 --- a/src/js/view/week/dayGridSchedule.js +++ b/src/js/view/week/dayGridSchedule.js @@ -17,7 +17,7 @@ var mmax = Math.max; * make create easy. * @param {number} [options.scheduleHeight=18] - height of each schedule block. * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block. - * @param {HTMLDIVElement} container - DOM element to use container for this + * @param {HTMLDivElement} container - DOM element to use container for this * view. */ function DayGridSchedule(options, container) { @@ -69,10 +69,6 @@ DayGridSchedule.prototype._getMinHeight = function(maxScheduleInDay) { var contentHeight = (maxScheduleInDay * opt.scheduleHeight) + ((maxScheduleInDay - 1) * opt.scheduleGutter); - // if (this.collapsed && this.aboutMe.maxHeight >= contentHeight + opt.containerBottomGutter) { - // contentHeight += opt.containerBottomGutter; - // } - return contentHeight; };