質問編集履歴

6

画像が反映されない

2022/01/12 08:20

投稿

syobon_gun
syobon_gun

スコア1

test CHANGED
File without changes
test CHANGED
@@ -348,7 +348,7 @@
348
348
  ```
349
349
 
350
350
 
351
- ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/962c0110-8f10-44d8-b6a6-62762277eb4b.png)
351
+ ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/b88ee2f6-c48e-4d4c-be3d-6121d996cc7f.png)
352
352
 
353
353
  ### 補足情報(FW/ツールのバージョンなど)
354
354
  VScode

5

画像の更新

2022/01/12 07:31

投稿

syobon_gun
syobon_gun

スコア1

test CHANGED
File without changes
test CHANGED
@@ -345,7 +345,7 @@
345
345
  return i;
346
346
  };
347
347
  }
348
-
348
+ ```
349
349
 
350
350
 
351
351
  ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/962c0110-8f10-44d8-b6a6-62762277eb4b.png)

4

画像の更新

2022/01/12 07:30

投稿

syobon_gun
syobon_gun

スコア1

test CHANGED
File without changes
test CHANGED
@@ -346,9 +346,9 @@
346
346
  };
347
347
  }
348
348
 
349
+
350
+
349
351
  ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/962c0110-8f10-44d8-b6a6-62762277eb4b.png)
350
-
351
- ```
352
352
 
353
353
  ### 補足情報(FW/ツールのバージョンなど)
354
354
  VScode

3

画像の更新

2022/01/12 07:29

投稿

syobon_gun
syobon_gun

スコア1

test CHANGED
File without changes
test CHANGED
@@ -346,10 +346,9 @@
346
346
  };
347
347
  }
348
348
 
349
-
349
+ ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/962c0110-8f10-44d8-b6a6-62762277eb4b.png)
350
350
 
351
351
  ```
352
- ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/381330fa-6a36-4749-a0ce-e3b9c2448d21.png)
353
352
 
354
353
  ### 補足情報(FW/ツールのバージョンなど)
355
354
  VScode

2

2022/01/12 07:28

投稿

syobon_gun
syobon_gun

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,717 +1,356 @@
1
1
  ### 前提・実現したいこと
2
-
3
2
  create-react-appを使ってカレンダーアプリを作っています。カレンダーの表示や予定の登録削除はできるのですが、日付を範囲選択した際に出てほしい予定の登録の画面が常に表示されてしまいます。エラーなどは特にでていないのですがなぜこうなるかわかりません。ご助言お願いします
4
3
 
5
4
 
6
5
 
7
6
 
8
-
9
-
10
-
11
-
12
-
13
7
  ```ここに言語を入力
14
8
 
15
-
16
-
17
9
  render() {
18
-
19
- return (
10
+ return (
20
-
21
11
  <div>
22
-
23
12
  {this.renderCover()}
24
-
25
13
  {this.renderForm()}
26
-
27
14
  <div className="container">
28
-
29
15
  <FullCalendar
30
-
31
16
  locale="ja"
32
-
33
17
  defaultView="timeGridWeek"
34
-
35
18
  slotDuration="00:30:00"
36
-
37
19
  selectable={true}
38
-
39
20
  allDaySlot={false}
40
-
41
21
  // navLinks={true}
42
-
43
22
  titleFormat={{
44
-
45
23
  year: "numeric",
46
-
47
24
  month: "short",
48
-
49
25
  day: "numeric",
50
-
51
26
  }}
52
-
53
27
  header={{
54
-
55
28
  start: 'title',
56
-
57
29
  center: 'prev, next, today',
58
-
59
30
  end: 'dayGridMonth,timeGridWeek,'
60
-
61
31
  }}
62
-
63
32
  businessHours={{
64
-
65
33
  daysOfWeek: [1, 2, 3, 4, 5],
66
-
67
34
  startTime: "0:00",
68
-
69
35
  endTime: "24:00",
70
-
71
36
  }}
72
-
73
37
  plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}
74
-
75
38
  ref={this.ref}
76
-
77
39
  weekends={true}
78
-
79
40
  events={this.myEvents}
80
-
81
41
  eventClick={this.handleClick}
82
-
83
42
  select={this.handleSelect}
84
-
85
43
  eventMouseEnter={this.handleMouseEnt}
86
-
87
44
  eventMouseLeave={this.handleMouseLev}
88
-
89
45
  eventDragStart={this.handleDragStart}
90
-
91
46
  eventDrop={this.handleDrop}
92
-
93
47
  eventResize={this.handleResize}
94
-
95
48
  dateClick={this.handledateClick}
96
-
97
49
  eventRender={this.handleRender}
98
-
99
50
  />
100
-
101
51
  </div>
102
-
103
52
  </div>
104
-
105
- );
53
+ );
106
-
107
- }
54
+ }
108
-
109
-
110
55
 
111
56
  handleSelect = (selectInfo) => {
112
-
113
57
  let start = new Date(selectInfo.start);
114
-
115
58
  let end = new Date(selectInfo.end);
116
-
117
59
  start.setHours(start.getHours());
118
-
119
60
  end.setHours(end.getHours());
120
61
 
121
-
122
-
123
62
  this.setState({ inputTitle: "" });
124
-
125
63
  this.setState({ inputMemo: "" });
126
-
127
64
  this.setState({ isInputTitle: false });
128
-
129
65
  this.setState({ inputStart: start });
130
-
131
66
  this.setState({ inputEnd: end });
132
-
133
67
  this.setState({ isChange: false });
134
-
135
68
  this.setState({ formInview: true });
136
-
137
- };
69
+ };
138
-
139
-
140
70
 
141
71
  handleClick = (info) => {
142
-
143
72
  this.selEventID = info.event.id;
144
-
145
73
  const selEvent = this.myEvents[info.event.id];
146
-
147
74
  const title = selEvent.title;
148
-
149
75
  const memo = selEvent.memo;
150
-
151
76
  const start = new Date(selEvent.start);
152
-
153
77
  const end = new Date(selEvent.end);
154
78
 
155
-
156
-
157
79
  this.setState({ inputTitle: title });
158
-
159
80
  this.setState({ inputMemo: memo });
160
-
161
81
  this.setState({ isInputTitle: true });
162
-
163
82
  this.setState({ inputStart: start });
164
-
165
83
  this.setState({ inputEnd: end });
166
-
167
84
  this.setState({ isChange: true });
168
-
169
85
  this.setState({ formInview: true });
170
-
171
- };
86
+ };
172
-
173
-
174
87
 
175
88
  renderCover() {
176
-
177
- return (
89
+ return (
178
-
179
90
  <div
180
-
181
91
  onClick={() => {
182
-
183
92
  this.setState({ formInview: false });
184
-
185
93
  }}
186
-
187
94
  className={
188
-
189
95
  this.state.formInview
190
-
191
96
  ? "container__cover inview"
192
-
193
97
  : "container__cover "
194
-
195
98
  }
196
-
197
99
  ></div>
198
-
199
- );
100
+ );
200
-
201
- }
101
+ }
202
-
203
-
204
-
205
102
 
206
103
 
207
104
  renderForm() {
208
-
209
- return (
105
+ return (
210
-
211
106
  <div
212
-
213
107
  className={
214
-
215
108
  this.state.formInview ? "container__form inview" : "container__form"
216
-
217
109
  }
218
-
219
110
  >
220
-
221
111
  <form>
222
-
223
112
  {this.state.isChange === false ? (
224
-
225
113
  <div className="container__form__header">予定を入力</div>
226
-
227
114
  ) : (
228
-
229
115
  <div className="container__form__header">予定を変更</div>
230
-
231
116
  )}
232
117
 
233
-
234
-
235
118
  <div>{this.renderTitle()}</div>
236
-
237
119
  <div>{this.renderStartTime()}</div>
238
-
239
120
  <div>{this.renderEndTime()}</div>
240
-
241
121
  <div>{this.renderMemo()}</div>
242
-
243
122
  <div>{this.renderBtn()}</div>
244
-
245
123
  </form>
246
-
247
124
  </div>
248
-
249
- );
125
+ );
250
-
251
- }
126
+ }
252
-
253
127
  renderTitle() {
254
-
255
- return (
128
+ return (
256
-
257
129
  <React.Fragment>
258
-
259
130
  <p className="container__form__label">タイトル</p>
260
-
261
131
  <input
262
-
263
132
  className="container__form__title"
264
-
265
133
  type="text"
266
-
267
134
  value={this.state.inputTitle}
268
-
269
135
  onChange={(e) => {
270
-
271
136
  this.setState({ inputTitle: e.target.value });
272
137
 
273
-
274
-
275
138
  if (e.target.value === "") {
276
-
277
139
  this.setState({ isInputTitle: false });
278
-
279
140
  } else {
280
-
281
141
  this.setState({ isInputTitle: true });
282
-
283
142
  }
284
-
285
143
  }}
286
-
287
144
  />
288
-
289
145
  </React.Fragment>
290
-
291
- );
146
+ );
292
-
293
- }
147
+ }
294
-
295
148
  renderMemo() {
296
-
297
- return (
149
+ return (
298
-
299
150
  <React.Fragment>
300
-
301
151
  <p className="container__form__label">メモ</p>
302
-
303
152
  <textarea
304
-
305
153
  className="container__form__memo"
306
-
307
154
  rows="3"
308
-
309
155
  value={this.state.inputMemo}
310
-
311
156
  onChange={(e) => {
312
-
313
157
  this.setState({ inputMemo: e.target.value });
314
-
315
158
  }}
316
-
317
159
  />
318
-
319
160
  </React.Fragment>
320
-
321
- );
161
+ );
322
-
323
- }
162
+ }
324
-
325
163
  renderStartTime() {
326
-
327
- return (
164
+ return (
328
-
329
165
  <React.Fragment>
330
-
331
166
  <p className="container__form__label">開始日時</p>
332
-
333
167
  <DatePicker
334
-
335
168
  className="container__form__datetime"
336
-
337
169
  locale="ja"
338
-
339
170
  dateFormat="yyyy/MM/d HH:mm"
340
-
341
171
  selected={this.state.inputStart}
342
-
343
172
  showTimeSelect
344
-
345
173
  timeFormat="HH:mm"
346
-
347
174
  timeIntervals={15}
348
-
349
175
  todayButton="today"
350
-
351
176
  onChange={(time) => {
352
-
353
177
  this.setState({ inputStart: time });
354
-
355
178
  }}
356
-
357
179
  />
358
-
359
180
  </React.Fragment>
360
-
361
- );
181
+ );
362
-
363
- }
182
+ }
364
-
365
183
  renderEndTime() {
366
-
367
- return (
184
+ return (
368
-
369
185
  <React.Fragment>
370
-
371
186
  <p className="container__form__label">終了日時</p>
372
-
373
187
  <DatePicker
374
-
375
188
  className="container__form__datetime"
376
-
377
189
  locale="ja"
378
-
379
190
  dateFormat="yyyy/MM/d HH:mm"
380
-
381
191
  selected={this.state.inputEnd}
382
-
383
192
  showTimeSelect
384
-
385
193
  timeFormat="HH:mm"
386
-
387
194
  timeIntervals={10}
388
-
389
195
  todayButton="today"
390
-
391
196
  onChange={(time) => {
392
-
393
197
  this.setState({ inputEnd: time });
394
-
395
198
  }}
396
-
397
199
  />
398
-
399
200
  </React.Fragment>
400
-
401
- );
201
+ );
402
-
403
- }
202
+ }
404
-
405
203
  renderBtn() {
406
-
407
- return (
204
+ return (
408
-
409
205
  <div>
410
-
411
206
  {this.state.isChange === false ? (
412
-
413
207
  <div>
414
-
415
208
  <input
416
-
417
209
  className="container__form__btn_cancel"
418
-
419
210
  type="button"
420
-
421
211
  value="キャンセル"
422
-
423
212
  onClick={() => {
424
-
425
213
  this.setState({ formInview: false });
426
-
427
214
  }}
428
-
429
215
  />
430
-
431
216
  <input
432
-
433
217
  className="container__form__btn_save"
434
-
435
218
  type="button"
436
-
437
219
  value="保存"
438
-
439
220
  disabled={!this.state.isInputTitle}
440
-
441
221
  onClick={this.onAddEvent}
442
-
443
222
  />
444
-
445
223
  </div>
446
-
447
224
  ) : (
448
-
449
225
  <div>
450
-
451
226
  <input
452
-
453
227
  className="container__form__btn_delete"
454
-
455
228
  type="button"
456
-
457
229
  value="削除"
458
-
459
230
  onClick={this.onDeleteEvent}
460
-
461
231
  />
462
-
463
232
  <input
464
-
465
233
  className="container__form__btn_save"
466
-
467
234
  type="button"
468
-
469
235
  value="変更"
470
-
471
236
  onClick={this.onChangeEvent}
472
-
473
237
  />
474
-
475
238
  </div>
476
-
477
239
  )}
478
-
479
240
  </div>
480
-
481
- );
241
+ );
482
-
483
- }
242
+ }
484
-
485
243
 
486
-
487
244
  getdoubleDigestNumer(number) {
488
-
489
245
  return ("0" + number).slice(-2);
490
-
491
- }
246
+ }
492
-
493
247
  changeDateToString(dt) {
494
-
495
248
  const year = dt.getFullYear();
496
-
497
249
  const month = this.getdoubleDigestNumer(dt.getMonth() + 1);
498
-
499
250
  const date = this.getdoubleDigestNumer(dt.getDate());
500
-
501
251
  const hour = this.getdoubleDigestNumer(dt.getHours());
502
-
503
252
  const minutes = this.getdoubleDigestNumer(dt.getMinutes());
504
253
 
505
-
506
-
507
254
  const retDate = `${year}-${month}-${date} ${hour}:${minutes}:00`;
508
-
509
255
  return retDate;
510
-
511
- }
256
+ }
512
-
513
257
  onAddEvent() {
514
-
515
258
  const starttime = this.changeDateToString(this.state.inputStart);
516
-
517
259
  const endtime = this.changeDateToString(this.state.inputEnd);
518
260
 
519
-
520
-
521
261
  if (starttime >= endtime) {
522
-
523
262
  alert("開始時間と終了時間を確認してください。");
524
-
525
263
  return;
526
-
527
- }
264
+ }
528
-
529
265
  const event = {
530
-
531
266
  title: this.state.inputTitle,
532
-
533
267
  memo: this.state.inputMemo,
534
-
535
268
  start: starttime,
536
-
537
269
  end: endtime,
538
-
539
270
  };
540
-
541
271
  if (this.addEvent(event) === true) {
542
-
543
272
  window.alert("設定しました");
544
-
545
273
  this.setState({ formInview: false });
546
-
547
- }
274
+ }
548
-
549
- }
275
+ }
550
-
551
276
  onChangeEvent(values) {
552
-
553
277
  if (window.confirm("変更しますか?")) {
554
-
555
278
  const starttime = this.changeDateToString(this.state.inputStart);
556
-
557
279
  const endtime = this.changeDateToString(this.state.inputEnd);
558
280
 
559
-
560
-
561
281
  if (starttime >= endtime) {
562
-
563
282
  alert("開始時間と終了時間を確認してください。");
564
-
565
283
  return;
566
-
567
284
  }
568
285
 
569
-
570
-
571
286
  const event = {
572
-
573
287
  title: this.state.inputTitle,
574
-
575
288
  memo: this.state.inputMemo,
576
-
577
289
  start: starttime,
578
-
579
290
  end: endtime,
580
-
581
291
  id: this.selEventID,
582
-
583
292
  };
584
-
585
293
  if (this.changeEvent(event) === true) {
586
-
587
294
  window.alert("イベントを変更しました。");
588
-
589
295
  this.setState({ formInview: false });
590
-
591
296
  }
592
-
593
297
  } else {
594
-
595
298
  return;
596
-
597
- }
299
+ }
598
-
599
- }
300
+ }
600
-
601
301
  onDeleteEvent(values) {
602
-
603
302
  if (window.confirm("削除しますか?")) {
604
-
605
303
  if (this.selEventID < this.EVENT_SEL_NON) {
606
-
607
304
  let EventID = this.selEventID;
608
-
609
305
  let delevent = this.ref.current.getApi().getEventById(EventID);
610
-
611
306
  delevent.remove();
612
-
613
307
  this.selEventID = this.EVENT_SEL_NON;
614
-
615
308
  this.myEvents[EventID].isDel = true;
616
-
617
309
  }
618
-
619
310
  this.setState({ formInview: false });
620
-
621
311
  alert("イベントを削除しました。");
622
-
623
312
  } else {
624
-
625
313
  return;
626
-
627
- }
314
+ }
628
-
629
- }
315
+ }
630
-
631
316
  addEvent = (ev, col) => {
632
-
633
317
  ev.id = this.getID();
634
-
635
318
  this.myEvents.push(ev);
636
-
637
319
  this.ref.current.getApi().addEvent(ev);
638
320
 
639
-
640
-
641
321
  return true;
642
-
643
- };
322
+ };
644
-
645
323
  changeEvent = (ev, col = "red") => {
646
-
647
324
  this.myEvents[ev.id].title = ev.title;
648
-
649
325
  this.myEvents[ev.id].memo = ev.memo;
650
-
651
326
  this.myEvents[ev.id].start = ev.start;
652
-
653
327
  this.myEvents[ev.id].end = ev.end;
654
328
 
655
-
656
-
657
329
  this.ref.current.getApi().getEventById(ev.id).remove();
658
-
659
330
  this.ref.current.getApi().addEvent(this.myEvents[ev.id]);
660
331
 
661
-
662
-
663
332
  return true;
664
-
665
- };
333
+ };
666
-
667
334
  sortEventID = (a, b) => {
668
-
669
335
  return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
670
-
671
- };
336
+ };
672
-
673
337
  getID = () => {
674
-
675
338
  this.myEvents.sort(this.sortEventID);
676
-
677
339
  let i;
678
-
679
340
  for (i = 0; i < this.myEvents.length; i++) {
680
-
681
341
  if (this.myEvents[i].id !== i) {
682
-
683
342
  break;
684
-
685
343
  }
686
-
687
- }
344
+ }
688
-
689
345
  return i;
690
-
691
- };
346
+ };
692
-
693
347
  }
694
348
 
695
349
 
696
350
 
697
-
698
-
699
-
700
-
701
351
  ```
702
-
703
-
704
-
705
- ![イメージ説明](e918a4e9d1fe72ed0feb7ac3915f05ac.png)
352
+ ![イメージ説明](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/381330fa-6a36-4749-a0ce-e3b9c2448d21.png)
706
-
707
-
708
-
709
-
710
-
711
-
712
353
 
713
354
  ### 補足情報(FW/ツールのバージョンなど)
714
-
715
355
  VScode
716
-
717
356
  create-react-app

1

React.jsのタグを追加しました。

2022/01/11 14:34

投稿

syobon_gun
syobon_gun

スコア1

test CHANGED
File without changes
test CHANGED
File without changes