見出し画像

TWSNMP FC:自動発見画面に入力チェックを組み込む

今朝は猫が4時に起こしてくれましたが眠くて二度寝しようとすると、また騒いで起こしにきてくれました。かみさんが起きてお世話しましたが、またやってきて私を起こしました。
昨日は、ひたすらテーブル形式で表示する画面にCSVのエクスポート機能を組み込みました。同じソースコードを繰り返しコピー&ペーストして、少し修正する作業でしたが大量にあるので腕がいたくなりました。
さて今朝は自動発見の画面に

を使って入力チェックする機能を組み込みました。チェックするのは、開始IPと終了IPで以下のルールです。

・必須
・IPアドレス形式である
・終了IPは開始IP以降のアドレス
      startIPRules: [
       (v) => !!v || '開始IPは必須です。',
       (v) =>
         /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/.test(
           v
         ) || 'IPアドレスを指定してください。',
     ],
     endIPRules: [
       (v) => !!v || '終了IPは必須です。',
       (v) =>
         /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/.test(
           v
         ) || 'IPアドレスを指定してください。',
       (v) => {
         return this.cmpIP(v) || '開始IP以降のアドレスを指定してください。'
       },
     ],
    cmpIP(b) {
     const aa = this.discover.Conf.StartIP.split('.')
     const ba = b.split('.')
     if (aa.length !== 4 || ba.length !== 4) {
       return false
     }
     for (let i = 0; i < 4; i++) {
       if (aa[i] * 1 > ba[i] * 1) {
         return false
       }
     }
     return true
   },

のようなソースコードでルールを実現しました。
結果

画像1

のようになりました。今日の開発は、

です。入力チェックを組み込む場所も沢山あるので、また腕が痛くなりそうです。明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。