見出し画像

うつ病記録アプリを作ってみる【6回目】

#うつ病 #鬱病 #HTML #javascript #WEBアプリ #うつ病記録アプリ

前回はこちらから

クリック位置に応じた入力欄を表示させます

入力欄のHTML

<body>
    <main>
        <svg width="1000px" height="1000px" viewBox="0 0 1000 1000"
            <title>Accessing Content in SVG</title>
        </svg>

        <div class="term_area">
            <select name="year">
                <option value="2023">2023</option>
                <option value="2022">2022</option>
            </select>

            <select name="month">
                <option value="01">1</option>
                <option value="02">2</option>
                <option value="03">3</option>
                <option value="04">4</option>
                <option value="05">5</option>
                <option value="06">6</option>
                <option value="07">7</option>
                <option value="08">8</option>
                <option value="09">9</option>
                <option value="10">10</option>
                <option value="11">11</option>
                <option value="12">12</option>
            </select>
        </div>

        <!-- 追加 -->
        <div class="set_active_area">
            <label>開始:<input type="datetime-local" name="start_date"></label>
            <label>終了:<input type="datetime-local" name="end_date"></label>
            <select name="act">
                <option value="act_01">睡眠</option>
                <option value="act_02">勤務</option>
                <option value="act_03">運動</option>
            </select>
            <button class="set_active">保存</button>
            <button class="cancel_active">キャンセル</button>
        </div>        
    </main>
</body>

cssを設定する

    .set_active_area{
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%,-50%);
        background: #CCC;

        /* display: flex;
        flex-wrap: wrap; */

        width: 60%;

        padding: 30px;

        display: none;
    }

    .set_active_area.on{
        display: flex;
        flex-wrap: wrap;
    }

    .set_active_area label{
        width: 80%;
    }

    .set_active_area selec t{
         width: 80%;
    } 

    .set_active_area button{
        width: 40%;
    } 

javascript追加しやす

    svg.addEventListener("click",function(e){

            ~~~~ 略 ~~~~

            //**開始時刻設定**
            //datetime-local型(2022-05-21T20:40)にする
            var set_year = document.querySelector('select[name="year"]').value
            var set_month = document.querySelector('select[name="month"]').value
            var set_day = ("0" + click_day).slice(-2)
            var set_start_hour =("0" +  click_hour).slice(-2)
            var set_start_minute =("0" +  click_minute).slice(-2)

            var str_start_date = set_year + "-" + set_month + "-" +  set_day + "T" + set_start_hour + ":" + set_start_minute

            //htmlにセット
            var start_input_item = document.querySelector( ".set_active_area input[name='start_date']")
            start_input_item.value = str_start_date

            //**終了時刻設定**
            //デフォルトは60分後を設定する
            var start_date = new Date(str_start_date)
            var end_date = new Date(str_start_date)
            end_date.setMinutes(start_date.getMinutes() + 60);

            //datetime-local型にする
            var set_end_year = end_date.getFullYear()
            var set_end_month = ("0" +(end_date.getMonth() + 1)).slice(-2)
            var set_end_day = ("0" + end_date.getDate()).slice(-2)
            var set_end_hour = ("0" + end_date.getHours()).slice(-2)
            var set_end_minute = ("0" + end_date.getMinutes()).slice(-2)
            
            var str_end_date = set_end_year + "-" + set_end_month + "-" +  set_end_day + "T" + set_end_hour + ":" + set_end_minute

            //htmlにセット
            var end_input_item = document.querySelector( ".set_active_area input[name='end_date']")
            end_input_item.value = str_end_date

            //**行動設定領域表示**
            var set_active_area = document.querySelector(".set_active_area")
            set_active_area.classList.add("on");
        })

結果

最初の画像の表示がされまう

次回、DB構築します


いいなと思ったら応援しよう!