Skip to content
This repository was archived by the owner on Aug 27, 2018. It is now read-only.

Commit a4c86b3

Browse files
committed
Add delete lesson dialog
1 parent 36721d0 commit a4c86b3

File tree

7 files changed

+135
-9
lines changed

7 files changed

+135
-9
lines changed

3-panel/src/helpers/MenuManager/index.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ export default class MenuManager {
122122
static setMenuItems () {
123123
const app = window.app
124124
const menu = app.getMenu()
125-
126125
const postDialog = app.elements.postDialog
127126
const postsPage = app.getPostsPage()
128127

@@ -147,7 +146,6 @@ export default class MenuManager {
147146
*/
148147
static setPostMenuItems () {
149148
const app = window.app
150-
151149
const menu = app.elements.postItemMenu
152150
const dialog = app.elements.deletePostDialog
153151

@@ -174,9 +172,7 @@ export default class MenuManager {
174172
*/
175173
static setCategoryMenuItems () {
176174
const app = window.app
177-
178175
const menu = app.elements.categoryMenu
179-
180176
const gallery = app.getGalleryPage()
181177

182178
const items = [
@@ -209,7 +205,6 @@ export default class MenuManager {
209205

210206
static setPicturesMenuItems () {
211207
const app = window.app
212-
213208
const menu = app.elements.picturesMenu
214209

215210
const items = [
@@ -223,4 +218,20 @@ export default class MenuManager {
223218

224219
menu.setItems(items)
225220
}
221+
222+
static setLessonsPlanSubjectMenu () {
223+
const app = window.app
224+
const menu = app.elements.lessonsPlanSubjectMenu
225+
226+
const items = [
227+
{
228+
text: 'Usuń',
229+
onClick: function () {
230+
app.elements.deleteLessonDialog.elements.dialog.toggle(true)
231+
}
232+
}
233+
]
234+
235+
menu.setItems(items)
236+
}
226237
}

3-panel/src/views/App/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import DeleteCategoryDialog from '../Pages/Gallery/components/DeleteCategoryDial
1515
import DeletePicturesDialog from '../Pages/Gallery/components/DeletePicturesDialog'
1616

1717
import AddLessonDialog from '../Pages/LessonsPlan/components/AddLessonDialog'
18+
import DeleteLessonDialog from '../Pages/LessonsPlan/components/DeleteLessonDialog'
1819

1920
import NavigationDrawer from './components/NavigationDrawer/index'
2021
import Toolbar from './components/Toolbar'
@@ -416,6 +417,7 @@ export default class App extends Component {
416417
<Menu ref='postItemMenu' className='toolbar-menu' mobile='true' />
417418
<Menu ref='categoryMenu' className='toolbar-menu' mobile='true' />
418419
<Menu ref='picturesMenu' className='toolbar-menu' mobile='true' />
420+
<Menu ref='lessonsPlanSubjectMenu' className='toolbar-menu' mobile='true' />
419421
<Dialog ref='deletePostsDialog' title='Jesteś pewny(a)?'>
420422
Nie będzie można ich odzyskać.
421423
</Dialog>
@@ -427,6 +429,7 @@ export default class App extends Component {
427429
<DeleteCategoryDialog ref='deleteCategoryDialog' />
428430
<DeletePicturesDialog ref='deletePicturesDialog' />
429431
<AddLessonDialog ref='addLessonDialog' />
432+
<DeleteLessonDialog ref='deleteLessonDialog' />
430433
<ErrorDialog ref='errorDialog' />
431434
<TimePicker ref='timePicker' onConfirm={(hour, minutes, isAM) => { this.getLessonsPlanPage().onTimePickerConfirm(hour, minutes, isAM) }} />
432435
<Snackbar ref='deletePostsSnackbar' text='Pomyślnie usunięto posty' />
@@ -437,6 +440,7 @@ export default class App extends Component {
437440
<Snackbar ref='deleteCategorySnackbar' text='Pomyślnie usunięto kategorię' />
438441
<Snackbar ref='addPicturesSnackbar' text='Pomyślnie dodano zdjęcia' />
439442
<Snackbar ref='deletePicturesSnackbar' text='Pomyślnie usunięto zdjęcia' />
443+
<Snackbar ref='deleteLessonSnackbar' text='Pomyślnie usunięto lekcję' />
440444
<Tooltip ref='viewTooltip' text='Przełącz na liste' />
441445
<Tooltip ref='showPicturesTooltip' text='Pokaż zdjęcia' />
442446
<Tooltip ref='uploadButtonTooltip' text='Najlepiej w proporcjach 16:9' />
@@ -453,6 +457,7 @@ export default class App extends Component {
453457
MenuManager.setPostMenuItems()
454458
MenuManager.setCategoryMenuItems()
455459
MenuManager.setPicturesMenuItems()
460+
MenuManager.setLessonsPlanSubjectMenu()
456461
DialogManager.setDeletePostsDialogItems()
457462
DialogManager.setDeletePostDialogItems()
458463

@@ -483,7 +488,8 @@ export default class App extends Component {
483488
this.elements.menu,
484489
this.elements.postItemMenu,
485490
this.elements.categoryMenu,
486-
this.elements.picturesMenu
491+
this.elements.picturesMenu,
492+
this.elements.lessonsPlanSubjectMenu
487493
]
488494

489495
for (var i = 0; i < menus.length; i++) {

3-panel/src/views/App/styles.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ a {
116116
min-height: 205px;
117117
}
118118

119+
&.delete-lesson-dialog .material-dialog {
120+
min-height: 183px;
121+
}
122+
119123
& .material-preloader {
120124
display: block
121125
}

3-panel/src/views/Pages/LessonsPlan/components/Day/components/Subject/index.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Component from '../../../../../../../helpers/Component'
2+
import MenuManager from '../../../../../../../helpers/MenuManager'
23

34
export default class Subject extends Component {
45
beforeRender () {
@@ -47,6 +48,16 @@ export default class Subject extends Component {
4748
}
4849
}
4950

51+
onMenuIconClick = (e) => {
52+
const app = window.app
53+
const menu = app.elements.lessonsPlanSubjectMenu
54+
const lessonsPlanPage = this.props.getLessonsPlanPage()
55+
56+
document.removeEventListener('click', app.onClick)
57+
MenuManager.toggle(true, menu, e.target, false)
58+
lessonsPlanPage.clickedLesson = this
59+
}
60+
5061
/**
5162
* On menu icon mouse down.
5263
* Makes ripple.
@@ -90,7 +101,7 @@ export default class Subject extends Component {
90101
this.props.name
91102
}
92103
</div>
93-
<div className='menu-icon ripple-icon' ref='menuIcon' onMouseDown={this.onMenuIconMouseDown} onTouchStart={this.onMenuIconTouchStart} />
104+
<div className='menu-icon ripple-icon' ref='menuIcon' onClick={this.onMenuIconClick} onMouseDown={this.onMenuIconMouseDown} onTouchStart={this.onMenuIconTouchStart} />
94105
</div>
95106
)
96107
}

3-panel/src/views/Pages/LessonsPlan/components/Day/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export default class Day extends Component {
5151
*/
5252
addSubject (name) {
5353
const subject = (
54-
<Subject name={name} getDay={() => { return this }} />
54+
<Subject name={name} getDay={() => { return this }} getLessonsPlanPage={() => { return this.props.getLessonsPlanPage() }} />
5555
)
5656

5757
this.renderComponents(subject, this.subjectsContainer)
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import Component from '../../../../../helpers/Component'
2+
import DialogManager from '../../../../../helpers/DialogManager'
3+
4+
import Dialog from '../../../../../imports/materialdesign/components/Dialog'
5+
6+
import Preloader from '../../../../../imports/materialdesign/components/Preloader'
7+
8+
export default class DeleteLessonDialog extends Component {
9+
beforeRender () {
10+
this.day = null
11+
}
12+
13+
/**
14+
* Gets root.
15+
* @return {DOMElement} root
16+
*/
17+
getRoot () {
18+
return this.elements.root
19+
}
20+
21+
/**
22+
* Sets dialog action buttons.
23+
*/
24+
setDialogItems () {
25+
const dialog = this.elements.dialog
26+
27+
const items = [
28+
{
29+
text: 'USUŃ',
30+
onClick: this.onDeleteButtonClick
31+
},
32+
{
33+
text: 'ANULUJ',
34+
onClick: function () {
35+
dialog.toggle(false)
36+
}
37+
}
38+
]
39+
40+
dialog.setItems(items)
41+
}
42+
43+
onDeleteButtonClick = (e) => {
44+
const app = window.app
45+
46+
const root = this.getRoot()
47+
const dialog = this.elements.dialog
48+
const lessonsPlanPage = app.getLessonsPlanPage()
49+
50+
const clickedLesson = lessonsPlanPage.clickedLesson
51+
const day = clickedLesson.props.getDay()
52+
const dayIndex = lessonsPlanPage.days.indexOf(day)
53+
const lessonIndex = day.subjects.indexOf(clickedLesson)
54+
55+
if (lessonIndex < 0) {
56+
console.log('Index is less than 0')
57+
}
58+
59+
root.classList.add('enabled-preloader')
60+
61+
setTimeout(function () {
62+
root.classList.remove('enabled-preloader')
63+
64+
lessonsPlanPage.lessonsPlan.plan[dayIndex].subjects.splice(lessonIndex, 1)
65+
lessonsPlanPage.lessonsPlanCopy = JSON.parse(JSON.stringify(lessonsPlanPage.lessonsPlan))
66+
67+
for (var i = 0; i < lessonsPlanPage.days.length; i++) {
68+
lessonsPlanPage.toggleActionButtons(false, lessonsPlanPage.days[i].actionButtons)
69+
}
70+
71+
day.addSubjects()
72+
app.elements.deleteLessonSnackbar.toggle(true)
73+
dialog.toggle(false)
74+
}, 1000)
75+
}
76+
77+
render () {
78+
return (
79+
<div className='input-dialog delete-lesson-dialog' ref='root'>
80+
<Dialog title='Czy napewno chcesz usunąć tą lekcję?' ref='dialog'>
81+
<div className='text'>
82+
Nie będzie można tego cofnąć.
83+
<br />Zapisze to również jakie kolwiek zmiany w planie.
84+
</div>
85+
<Preloader />
86+
</Dialog>
87+
</div>
88+
)
89+
}
90+
91+
afterRender () {
92+
this.setDialogItems()
93+
}
94+
}

3-panel/src/views/Pages/LessonsPlan/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export default class LessonsPlanPage extends Component {
2525
]
2626

2727
this.days = []
28-
2928
this.editedTime = null
29+
this.clickedLesson = null
3030
}
3131

3232
/**

0 commit comments

Comments
 (0)