今のコロナウイルスの状況を中二病(厨二病?)的に整理してみた。

中国武漢で発生した新型コロナウイルス感染症。

瞬く間に世界中に広がり、パンデミック状態になりました。

ここで、世界に突きつけられた選択肢は以下の二つでした。

  1. コロナウイルスに感染して死ぬ。
  2. 経済的(お金が無くなる)に死ぬ。

どっちを選択しても結局は死んでしまう。

ある国(ニュージーランド等)は①での死を嫌って、コロナウイルスに感染するのを国境で防ごうとしました。

また、ある国(ブラジル等)は②での死を嫌って、マスクなんて不要、いつも通り生活しようと訴えました。

果たして、選択肢は上の二つしか無いのでしょうか?

もし、第三の選択肢があったら、中二病的に嬉しくないっすか?

いや、ラノベに親しんでいる人達がいたら、①、②とは異なる、第三の選択肢を探して頑張る姿の方がカッコイイっすよね?

いや、もはや、ラノベの定石ですよね。

①を回避しようと訴える人達は、主に医療関係の人達で、

②を回避しようと訴える人達は、主に事業者関係の人達です。

今、日本が目指しているのは、①でも②でもない、第三の選択肢です。

言うなれば、コロナウイルスで死なない、経済的にも死なない結末を目指して、頑張っています。

特に頑張っているのは、三権分立の、行政に当たる部分(決められた予算を執行する機関)です。

そのリーダーが総理大臣であり、その下に国務大臣がいて、都道府県の知事がいて、市町村の長がいます。

彼らは、今、第三の選択肢、①でも②でもない第三の選択肢、どうするのが正解なのかを、頑張って探しています。

いろんなしがらみを抱えつつも、現在進行中の状態なのです。

果たして、世界の未来はどうなっていくのでしょうか。

【ダイエット支援】【食事管理】データ削除ダイアログ処理を作成する。

前回までの状況はこちら

最新ソースはこちら(gitHub)

https://github.com/takishita2nd/diet-mng

データ削除処理を作成していきます。

まずはDeleteをクリックしたときの処理。

やり方はEditと同じです。

EatingDetailComponent.vue

        onClickDelete: function(timezone, id) {
            var deleteData = {};
            this.datalists[timezone].forEach(element => {
                if(element.id == id){
                    deleteData.id = id;
                    deleteData.date = this.date;
                    deleteData.item = element.item;
                    deleteData.timezone = timezone + 1;
                    deleteData.protein = element.protein;
                    deleteData.liqid = element.liqid;
                    deleteData.carbo = element.carbo;
                    deleteData.calorie = element.calorie;
                    return true;
                }
            });
            this.$refs.deleteDialog.dataSet(deleteData);
            this.showDeleteDialogContent = true;
        },

ダイアログ処理は体重管理のものを流用しています。

EatingDeleteDialogComponent.vue

<template>
    <div>
        <div id="overlay" v-show="show">
            <div id="content">
                <p v-if="error_flg == true" class="error">
                    <ui>
                        <li v-for="error in errors">{{ error }}</li>
                    </ui>
                </p>
                <table class="edit">
                    <tbody>
                        <tr>
                            <td>日付</td>
                            <td>{{contents.date}}</td>
                        </tr>
                        <tr>
                            <td>品名</td>
                            <td>{{contents.item}}</td>
                        </tr>
                        <tr>
                            <td>時間帯</td>
                            <td>{{contents.time}}</td>
                        </tr>
                        <tr>
                            <td>タンパク質</td>
                            <td>{{contents.protein}}</td>
                        </tr>
                        <tr>
                            <td>脂質</td>
                            <td>{{contents.liqid}}</td>
                        </tr>
                        <tr>
                            <td>炭水化物</td>
                            <td>{{contents.carbo}}</td>
                        </tr>
                        <tr>
                            <td>カロリー</td>
                            <td>{{contents.calorie}}</td>
                        </tr>
                    </tbody>
                </table>
                <p id="command">
                    <button @click="clickDelete">削除</button>
                    <button @click="closeModal">閉じる</button>
                </p>
            </div>
        </div>
    </div>
</template>
<script>
export default {
    props: ['show'],
    data() {
        return {
            errors: [],
            error_flg: [],
            param: {},
            contents: {},
        };
    },
    created: function() {
    },
    methods: {
        dataSet: function(data) {
            this.contents = data;
            switch(this.contents.timezone) {
                case 1:
                    this.contents.time = "朝";
                    break;
                case 2:
                    this.contents.time = "昼";
                    break;
                case 3:
                    this.contents.time = "夜";
                    break;
                case 4:
                    this.contents.time = "間食";
                    break;
            }
        },
        clickDelete: function() {
            var self = this;
            this.param.contents = this.contents;
            axios.post('/api/eating/delete', this.param).then(function(response){
                self.closeModal();
                self.$emit('update');
            }).catch(function(error){
                self.error_flg = true;
                self.errors = error.response.data.errors;
            });
        },
        closeModal: function() {
            this.$parent.showDeleteDialogContent = false;
        },
    }
}
</script>

次はAPIの処理です。

これも体重管理の処理とほぼ同じ。

ApiController.php

    /**
     * データを一件削除する
     */
    public function delete(Request $request)
    {
        $this->eatingManagement->delete(Auth::user(),  $request->contents['id']);

        return response()->json();
    }
EatingManagementRepository.php

    /**
     * データを一件削除する
     */
    public function delete($user, $id)
    {
        $model = $user->EatingManagements()->where('id', $id)->first();
        $timezone = $model->timezones()->first();

        $this->detachToUser($model, $user);
        $this->detachToTimezone($model, $timezone);
        $model->delete();
    }

違いはtimezoneテーブルとのリンクを削除する処理が増えたぐらいで、やっていることはそんなに難しくないです。

すんなり完成しました。

これでCURD処理一通り完成したので、次回はグラフ処理を作成していこうと思います。