예제 #1
0
파일: piket.py 프로젝트: Ranovan7/upb-flask
def piket_index():
    waduk = Bendungan.query.order_by(Bendungan.wil_sungai, Bendungan.id).all()

    sampling, end = day_range(request.values.get('sampling'))
    data = {
        '1': [],
        '2': [],
        '3': []
    }
    count = 1
    for w in waduk:
        piket_banjir = PiketBanjir.query.filter(
                                        and_(
                                            PiketBanjir.sampling >= sampling,
                                            PiketBanjir.sampling <= end),
                                        PiketBanjir.obj_type == 'bendungan',
                                        PiketBanjir.obj_id == w.id
                                    ).first()

        data[w.wil_sungai].append({
            'no': count,
            'bendungan': w,
            'piket_banjir': piket_banjir or {}
        })
        count += 1

    return render_template('piket/index.html',
                            sampling=sampling,
                            bends=data,
                            wil_sungai=wil_sungai)
예제 #2
0
def kegiatan():
    # date = request.values.get('sampling')
    # now = datetime.datetime.now() + datetime.timedelta(hours=7)
    # def_date = date if date else now.strftime("%Y-%m-%d")
    # sampling = datetime.datetime.strptime(def_date, "%Y-%m-%d")
    # end = sampling + datetime.timedelta(hours=23, minutes=55)
    sampling, end = day_range(request.values.get('sampling'))

    kegiatan = Kegiatan.query.filter(
                                and_(
                                    Kegiatan.sampling >= sampling,
                                    Kegiatan.sampling <= end)
                                ).order_by(Kegiatan.c_date).all()
    data = {}
    for keg in kegiatan:
        if keg.bendungan_id not in data:
            data[keg.bendungan_id] = {
                'bend': keg.bendungan,
                'kegiatan': {}
            }

        if keg.petugas not in data[keg.bendungan_id]['kegiatan']:
            data[keg.bendungan_id]['kegiatan'][keg.petugas] = []

        data[keg.bendungan_id]['kegiatan'][keg.petugas].append(keg)

    return render_template('bendungan/kegiatan.html',
                            data=data,
                            sampling=sampling)
예제 #3
0
def embung_harian():
    ''' Harian Embung '''
    sampling, end = day_range(request.values.get('sampling'))

    embung = Embung.query.filter(Embung.is_verified == '1').order_by(
        Embung.wil_sungai, Embung.id).all()
    kegiatan = KegiatanEmbung.query.filter(
        KegiatanEmbung.sampling == sampling.strftime('%Y-%m-%d')).all()
    all_fotos = Foto.query.filter(Foto.obj_type == "kegiatan_embung",
                                  Foto.obj_id.in_([k.id
                                                   for k in kegiatan])).all()
    fotos = {k.id: {} for k in kegiatan}
    for f in all_fotos:
        length = len(f.keterangan)
        tag = f.keterangan[:length - 1]
        fotos[f.obj_id][tag] = f

    embung_a = {'1': {}, '2': {}, '3': {}, '4': {}}
    embung_b = {'1': {}, '2': {}, '3': {}, '4': {}}
    wilayah = wil_sungai
    wilayah['4'] = "Lain-Lain"
    count_a = 0
    count_b = 0
    for e in embung:
        if e.jenis == 'a':
            count_a += 1
            embung_a[e.wil_sungai or '4'][e.id] = {
                'embung': e,
                'kegiatan': [],
                'count': count_a
            }
        elif e.jenis == 'b':
            count_b += 1
            embung_b[e.wil_sungai or '4'][e.id] = {
                'embung': e,
                'kegiatan': [],
                'count': count_b
            }
    for keg in kegiatan:
        if keg.embung_id in embung_a[keg.embung.wil_sungai or '4']:
            embung_a[keg.embung.wil_sungai
                     or '4'][keg.embung_id]['kegiatan'].append(keg)
        elif keg.embung_id in embung_b[keg.embung.wil_sungai or '4']:
            embung_b[keg.embung.wil_sungai
                     or '4'][keg.embung_id]['kegiatan'].append(keg)
    return render_template('embung/harian.html',
                           sampling=sampling,
                           wil_sungai=wilayah,
                           embung_a=embung_a,
                           embung_b=embung_b,
                           fotos=fotos)
예제 #4
0
def bendungan_volume():
    if request.values.get('sampling'):
        param = request.values.get('sampling').replace('/', '-')
    else:
        param = datetime.datetime.now().strftime("%Y-%m-%d")
    sampling, end = day_range(param)

    result = []
    bendungan = Bendungan.query.all()
    for bend in bendungan:
        if bend.volume <= 0:
            continue

        daily = ManualDaily.query.filter(
            and_(ManualDaily.sampling >= sampling,
                 ManualDaily.sampling <= end),
            ManualDaily.bendungan_id == bend.id).first()

        tma = ManualTma.query.filter(
            ManualTma.sampling == f"{sampling.strftime('%Y-%m-%d')} 06:00:00",
            ManualTma.bendungan_id == bend.id).first()

        rotw = Rencana.query.filter(Rencana.sampling >= sampling,
                                    Rencana.po_tma > 0).order_by(
                                        Rencana.sampling).first()

        result.append({
            "id":
            bend.id,
            "sampling":
            sampling.strftime("%Y-%m-%d %H:%M:%S"),
            "name":
            " ".join([s.title() for s in bend.nama.split("_")]),
            "kab":
            bend.kab,
            "wil":
            bend.wil_sungai,
            "volume_potensial":
            bend.volume,
            "volume_real":
            tma.vol if tma else 0,
            "volume_rotw":
            rotw.po_vol if rotw else 0,
        })

    result = sorted(result,
                    key=lambda x: x['volume_real'] / x['volume_potensial'],
                    reverse=True)

    return jsonify(result)
예제 #5
0
def operasi_harian_embung():
    all_embung = Embung.query.filter(Embung.is_verified == '1').order_by(
        Embung.wil_sungai, Embung.id).all()
    sampling, end = day_range(request.values.get('sampling'))

    all_daily = ManualDailyEmbung.query.filter(
        and_(ManualDailyEmbung.sampling >= sampling,
             ManualDailyEmbung.sampling <= end)).all()
    all_tma = ManualTmaEmbung.query.filter(
        and_(ManualTmaEmbung.sampling >= sampling,
             ManualTmaEmbung.sampling <= end)).all()

    all_periodik = {'tma': {}, 'daily': {}}
    for d in all_daily:
        all_periodik['daily'][d.embung_id] = d
    for t in all_tma:
        all_periodik['tma'][t.embung_id] = t

    embung_a = {'1': {}, '2': {}, '3': {}, '4': {}}
    embung_b = {'1': {}, '2': {}, '3': {}, '4': {}}
    wilayah = wil_sungai
    wilayah['4'] = "Lain-Lain"
    count_a = 0
    count_b = 0
    for e in all_embung:
        if e.jenis == 'a':
            count_a += 1
            embung_a[e.wil_sungai or '4'][e.id] = {
                'embung': e,
                'daily': all_periodik['daily'].get(e.id, None),
                'tma': all_periodik['tma'].get(e.id, None),
                'no': count_a
            }
        elif e.jenis == 'b':
            count_b += 1
            embung_b[e.wil_sungai or '4'][e.id] = {
                'embung': e,
                'daily': all_periodik['daily'].get(e.id, None),
                'tma': all_periodik['tma'].get(e.id, None),
                'no': count_b
            }
    embung = {'b': embung_b, 'a': embung_a}

    return render_template('operasi/index_embung.html',
                           csrf=generate_csrf(),
                           embung=embung,
                           sampling=sampling,
                           wil_sungai=wil_sungai)
예제 #6
0
def index():
    ''' Home Bendungan '''
    waduk = Bendungan.query.order_by(Bendungan.wil_sungai, Bendungan.id).all()

    sampling, end = day_range(request.values.get('sampling'))
    data = {
        '1': [],
        '2': [],
        '3': []
    }
    count = 1
    for w in waduk:
        daily = ManualDaily.query.filter(
                                    and_(
                                        extract('month', ManualDaily.sampling) == sampling.month,
                                        extract('year', ManualDaily.sampling) == sampling.year,
                                        extract('day', ManualDaily.sampling) == sampling.day),
                                    ManualDaily.bendungan_id == w.id
                                    ).first()
        vnotch = ManualVnotch.query.filter(
                                    and_(
                                        extract('month', ManualVnotch.sampling) == sampling.month,
                                        extract('year', ManualVnotch.sampling) == sampling.year,
                                        extract('day', ManualVnotch.sampling) == sampling.day),
                                    ManualVnotch.bendungan_id == w.id
                                    ).first()
        tma = ManualTma.query.filter(
                                    and_(
                                        extract('month', ManualTma.sampling) == sampling.month,
                                        extract('year', ManualTma.sampling) == sampling.year,
                                        extract('day', ManualTma.sampling) == sampling.day),
                                    ManualTma.bendungan_id == w.id
                                    ).all()
        alert = BendungAlert.query.filter(and_(
                                        extract('month', BendungAlert.sampling) == sampling.month,
                                        extract('year', BendungAlert.sampling) == sampling.year,
                                        extract('day', BendungAlert.sampling) == sampling.day),
                                    BendungAlert.bendungan_id == w.id
                                    ).order_by(BendungAlert.sampling.desc()).all()
        ch_t = CurahHujanTerkini.query.filter(and_(
                                        extract('month', CurahHujanTerkini.sampling) == sampling.month,
                                        extract('year', CurahHujanTerkini.sampling) == sampling.year,
                                        extract('day', CurahHujanTerkini.sampling) == sampling.day),
                                    CurahHujanTerkini.bendungan_id == w.id
                                    ).order_by(CurahHujanTerkini.sampling.desc()).first()

        tma_d = {
            '6': None,
            '12': None,
            '18': None,
        }
        vol = None
        kondisi = ""
        flood = 0
        time = ""
        for t in tma:
            vol = t.vol/1000000 if t.vol else vol
            if t.tma:
                spill = t.tma - w.muka_air_normal
                if spill >= flood:
                    flood = spill
                    time = t.sampling.strftime("%H:%M:%S")
            tma_d[f"{t.sampling.hour}"] = None if not t.tma else "{:,.2f}".format(t.tma)

        for al in alert[::-1]:
            spill = al.tma - w.muka_air_normal
            if spill >= flood:
                flood = spill
                time = al.sampling.strftime("%H:%M:%S")

        if round(flood, 2) > 0:
            kondisi = f"<b>Normal</b><br><span style='color: red'>+{round(flood, 3)}</span> <small><i>{time}</i></small>"

        data[w.wil_sungai].append({
            'id': w.id,
            'no': count,
            'lokasi': w.lokasi,
            'nama': w.name,
            'kab': w.kab,
            'volume': "{:,.3f}".format(w.volume/1000000),
            'lbi': "{:,.2f}".format(w.lbi),
            'elev_puncak': "{:,.2f}".format(w.elev_puncak),
            'muka_air_normal': "{:,.2f}".format(w.muka_air_normal),
            'muka_air_min': "{:,.2f}".format(w.muka_air_min),
            'tma6': tma_d['6'],
            'tma12': tma_d['12'],
            'tma18': tma_d['18'],
            'vol': None if not vol else "{:,.3f}".format(vol),
            'intake_deb': None if not daily or not daily.intake_deb else "{:,.2f}".format(daily.intake_deb),
            'spillway_deb': None if not daily or not daily.spillway_deb else "{:,.2f}".format(daily.spillway_deb),
            'debit': None if not vnotch or not vnotch.vn1_deb else "{:,.2f}".format(vnotch.vn1_deb),
            'kondisi': kondisi or "Normal",
            'curahhujan': None if not ch_t else {'ch': ch_t.ch, 'time': ch_t.sampling},
            'tma_banjir': None if not alert else {'tma': alert[0].tma, 'time': alert[0].sampling}
        })
        count += 1

    return render_template('bendungan/index.html',
                            waduk=data,
                            wil_sungai=wil_sungai,
                            sampling=sampling)
예제 #7
0
파일: piket.py 프로젝트: Ranovan7/upb-flask
def piket_banjir_csv():
    waduk = Bendungan.query.order_by(Bendungan.wil_sungai, Bendungan.id).all()
    sampling, end = day_range(request.values.get('sampling'))

    pre_csv = []
    pre_csv.append(['REKAPITULASI LAPORAN PIKET'])
    pre_csv.append(['PETUGAS UNIT PENGELOLA BENDUNGAN'])
    pre_csv.append(['BALAI BESAR WILAYAH SUNGAI BENGAWAN SOLO'])
    pre_csv.append(["Hari/Tanggal", get_hari_tanggal(sampling)])
    pre_csv.append(['Waktu', '20.35 WIB'])
    pre_csv.append([
        'No','Nama Bendungan','Cuaca Terkini','Curah Hujan Terkini (mm)','Durasi Hujan','Elevasi Normal (meter)','Volume Waduk Normal (Juta m3)','TMA Terkini (meter)','Volume Waduk Terkini (Juta m3)','Tinggi Limpasan Spillway (cm)','Debit Limpasan Spillway (m3/detik)','Tampungan Waduk Saat Ini (%)','Kondisi Visual Bendungan','Nama Petugas Piket'
    ])

    data = {
        '1': [],
        '2': [],
        '3': []
    }
    count = 1
    for w in waduk:
        piket_banjir = PiketBanjir.query.filter(
                                        and_(
                                            PiketBanjir.sampling >= sampling,
                                            PiketBanjir.sampling <= end),
                                        PiketBanjir.obj_type == 'bendungan',
                                        PiketBanjir.obj_id == w.id
                                    ).first()

        data[w.wil_sungai].append({
            'no': count,
            'bendungan': w,
            'piket_banjir': piket_banjir or {}
        })
        count += 1

    for wil, da in data.items():
        pre_csv.append([wil_sungai[wil]])
        for d in da:
            pre_csv.append([
                d['no'], d['bendungan'].name,
                None if not d['piket_banjir'] else d['piket_banjir'].cuaca.title(),
                None if not d['piket_banjir'] else d['piket_banjir'].ch,
                None if not d['piket_banjir'] else d['piket_banjir'].durasi,
                d['bendungan'].muka_air_normal,
                round(d['bendungan'].volume/1000000, 2),
                None if not d['piket_banjir'] else d['piket_banjir'].tma,
                None if not d['piket_banjir'] else round(d['piket_banjir'].volume/1000000, 2),
                None if not d['piket_banjir'] else d['piket_banjir'].spillway_tma,
                None if not d['piket_banjir'] else d['piket_banjir'].spillway_deb,
                None if not d['piket_banjir'] else d['piket_banjir'].volume_percent,
                None if not d['piket_banjir'] else d['piket_banjir'].kondisi,
                None if not d['piket_banjir'] else d['piket_banjir'].petugas
            ])
    output = io.StringIO()
    writer = csv.writer(output, delimiter='\t')
    for l in pre_csv:
        writer.writerow(l)
    output.seek(0)

    return Response(output,
                    mimetype="text/csv",
                    headers={
                        "Content-Disposition": f"attachment;filename=rekap_laporan_piket-{sampling.strftime('%d %B %Y')}.csv"
                    })
예제 #8
0
def bendungan_periodic():
    if request.values.get('sampling'):
        param = request.values.get('sampling').replace('/', '-')
    else:
        param = datetime.datetime.now().strftime("%Y-%m-%d")
    sampling, end = day_range(param)
    # print(f"{sampling} to {end}")

    result = []
    bendungan = Bendungan.query.all()
    for bend in bendungan:
        daily = ManualDaily.query.filter(
            and_(ManualDaily.sampling >= sampling,
                 ManualDaily.sampling <= end),
            ManualDaily.bendungan_id == bend.id).first()
        if not daily:
            continue
        vnotch = ManualVnotch.query.filter(
            and_(ManualVnotch.sampling >= sampling,
                 ManualVnotch.sampling <= end),
            ManualVnotch.bendungan_id == bend.id).first()
        tma = ManualTma.query.filter(
            and_(ManualTma.sampling >= sampling, ManualTma.sampling <= end),
            ManualTma.bendungan_id == bend.id).all()
        piezo = ManualPiezo.query.filter(
            and_(ManualPiezo.sampling >= sampling,
                 ManualPiezo.sampling <= end),
            ManualPiezo.bendungan_id == bend.id).first()
        tma_d = {
            '6': {
                'tma': None,
                'vol': None
            },
            '12': {
                'tma': None,
                'vol': None
            },
            '18': {
                'tma': None,
                'vol': None
            },
        }
        for t in tma:
            tma_d[f"{t.sampling.hour}"]['tma'] = None if not t.tma else round(
                t.tma, 2)
            tma_d[f"{t.sampling.hour}"]['vol'] = None if not t.vol else round(
                t.vol, 2)
        result.append({
            "sampling": sampling.strftime("%Y-%m-%d %H:%M:%S"),
            "tma6": tma_d['6']['tma'],
            "tma12": tma_d['12']['tma'],
            "tma18": tma_d['18']['tma'],
            "vol6": tma_d['6']['vol'],
            "vol12": tma_d['12']['vol'],
            "vol18": tma_d['18']['vol'],
            "name": bend.nama,
            "curahhujan": daily.ch if daily else None,
            "intake_q": daily.intake_deb if daily else None,
            "inflow_v": daily.inflow_vol if daily else None,
            "inflow_q": daily.inflow_deb if daily else None,
            "intake_v": daily.intake_vol if daily else None,
            "spillway_v": daily.spillway_vol if daily else None,
            "spillway_q": daily.spillway_deb if daily else None,
            "a1": piezo.p1a if piezo else None,
            "a2": piezo.p2a if piezo else None,
            "a3": piezo.p3a if piezo else None,
            "a4": piezo.p4a if piezo else None,
            "a5": piezo.p5a if piezo else None,
            "b1": piezo.p1b if piezo else None,
            "b2": piezo.p2b if piezo else None,
            "b3": piezo.p3b if piezo else None,
            "b4": piezo.p4b if piezo else None,
            "b5": piezo.p5b if piezo else None,
            "c1": piezo.p1c if piezo else None,
            "c2": piezo.p2c if piezo else None,
            "c3": piezo.p3c if piezo else None,
            "c4": piezo.p4c if piezo else None,
            "c5": piezo.p5c if piezo else None,
            "vnotch_q1": vnotch.vn1_deb if vnotch else None,
            "vnotch_q2": vnotch.vn2_deb if vnotch else None,
            "vnotch_q3": vnotch.vn3_deb if vnotch else None,
            "vnotch_tin1": vnotch.vn1_tma if vnotch else None,
            "vnotch_tin2": vnotch.vn2_tma if vnotch else None,
            "vnotch_tin3": vnotch.vn3_tma if vnotch else None
        })
    return jsonify(result)
예제 #9
0
def bendungan_harian_csv():
    waduk = Bendungan.query.order_by(Bendungan.wil_sungai, Bendungan.id).all()
    sampling, end = day_range(request.values.get('sampling'))

    pre_csv = []
    pre_csv.append(['Data Operasi Harian Bendungan'])
    pre_csv.append([sampling.strftime("%d %B %Y")])
    pre_csv.append([
        'no', 'nama', 'curahhujan', 'tma6', 'vol6', 'tma12', 'vol12', 'tma18',
        'vol18', 'inflow_q', 'intake_q', 'spillway_q', 'vnotch_tin1',
        'vnotch_q1', 'piezo_1a', 'piezo_1b', 'piezo_1c', 'piezo_2a',
        'piezo_2b', 'piezo_2c', 'piezo_3a', 'piezo_3b', 'piezo_3c', 'piezo_4a',
        'piezo_4b', 'piezo_4c', 'piezo_5a', 'piezo_5b', 'piezo_5c'
    ])
    count = 1
    for w in waduk:
        daily = ManualDaily.query.filter(
            and_(ManualDaily.sampling >= sampling,
                 ManualDaily.sampling <= end),
            ManualDaily.bendungan_id == w.id).first()
        vnotch = ManualVnotch.query.filter(
            and_(ManualVnotch.sampling >= sampling,
                 ManualVnotch.sampling <= end),
            ManualVnotch.bendungan_id == w.id).first()
        tma = ManualTma.query.filter(
            and_(ManualTma.sampling >= sampling, ManualTma.sampling <= end),
            ManualTma.bendungan_id == w.id).all()
        piezo = ManualPiezo.query.filter(
            and_(ManualPiezo.sampling >= sampling,
                 ManualPiezo.sampling <= end),
            ManualPiezo.bendungan_id == w.id).first()

        tma_d = {
            '6': {
                'tma': None,
                'vol': None
            },
            '12': {
                'tma': None,
                'vol': None
            },
            '18': {
                'tma': None,
                'vol': None
            },
        }
        for t in tma:
            tma_d[f"{t.sampling.hour}"]['tma'] = None if not t.tma else round(
                t.tma, 2)
            tma_d[f"{t.sampling.hour}"]['vol'] = None if not t.vol else round(
                t.vol, 2)

        pre_csv.append([
            count, w.name, None if not daily else daily.ch, tma_d['6']['tma'],
            tma_d['6']['vol'], tma_d['12']['tma'], tma_d['12']['vol'],
            tma_d['18']['tma'], tma_d['18']['vol'],
            None if not daily else daily.inflow_deb,
            None if not daily else daily.intake_deb,
            None if not daily else daily.spillway_deb,
            None if not vnotch else vnotch.vn1_tma,
            None if not vnotch else vnotch.vn1_deb,
            None if not piezo else piezo.p1a, None if not piezo else piezo.p1b,
            None if not piezo else piezo.p1c, None if not piezo else piezo.p2a,
            None if not piezo else piezo.p2b, None if not piezo else piezo.p2c,
            None if not piezo else piezo.p3a, None if not piezo else piezo.p3b,
            None if not piezo else piezo.p3c, None if not piezo else piezo.p4a,
            None if not piezo else piezo.p4b, None if not piezo else piezo.p4c,
            None if not piezo else piezo.p5a, None if not piezo else piezo.p5b,
            None if not piezo else piezo.p5c
        ])
        count += 1
    output = io.StringIO()
    writer = csv.writer(output, delimiter='\t')
    for l in pre_csv:
        writer.writerow(l)
    output.seek(0)

    return Response(
        output,
        mimetype="text/csv",
        headers={
            "Content-Disposition":
            f"attachment;filename=operasi_harian_bendungan-{sampling.strftime('%d %B %Y')}.csv"
        })
예제 #10
0
def operasi_harian():
    sampling, end = day_range(request.values.get('sampling'))
    waduk = Bendungan.query.all()

    all_daily = {w.id: None for w in waduk}
    for d in query_with_sampling_range(ManualDaily, sampling, end):
        if d:
            all_daily[d.bendungan_id] = d

    all_vnotch = {w.id: None for w in waduk}
    for v in query_with_sampling_range(ManualVnotch, sampling, end):
        if v:
            all_vnotch[d.bendungan_id] = v

    all_piezo = {w.id: None for w in waduk}
    for p in query_with_sampling_range(ManualPiezo, sampling, end):
        if p:
            all_piezo[d.bendungan_id] = p

    all_tma = query_with_sampling_range(ManualTma, sampling, end)
    tma = {w.id: [] for w in waduk}
    for t in all_tma:
        tma[t.bendungan_id].append(t)

    fotos = Foto.query.filter(Foto.obj_type == "manual_tma",
                              Foto.obj_id.in_([t.id for t in all_tma])).all()
    fotos = {f.obj_id: f for f in fotos}

    data = {'1': [], '2': [], '3': []}
    count = 1
    for w in waduk:
        tma_d = {
            '6': {
                'tma': None,
                'vol': None,
                'foto': None
            },
            '12': {
                'tma': None,
                'vol': None,
                'foto': None
            },
            '18': {
                'tma': None,
                'vol': None,
                'foto': None
            },
        }

        # 4 lines of code below is querying something, find out what
        for t in tma[w.id]:
            tma_d[f"{t.sampling.hour}"]['tma'] = None if not t.tma else round(
                t.tma, 2)
            tma_d[f"{t.sampling.hour}"]['vol'] = None if not t.vol else round(
                t.vol, 2)
            tma_d[f"{t.sampling.hour}"][
                'foto'] = None if t.id not in fotos else fotos[t.id]

        daily = all_daily[w.id]
        vnotch = all_vnotch[w.id]
        piezo = all_piezo[w.id]
        data[w.wil_sungai].append({
            'no':
            count,
            'id':
            w.id,
            'nama':
            w.name,
            'volume':
            w.volume,
            'lbi':
            w.lbi,
            'elev_puncak':
            w.elev_puncak,
            'muka_air_max':
            w.muka_air_max,
            'muka_air_min':
            w.muka_air_min,
            'tma6':
            tma_d['6'],
            'tma12':
            tma_d['12'],
            'tma18':
            tma_d['18'],
            'inflow_deb':
            None if not daily else daily.inflow_deb,
            'intake_deb':
            None if not daily else daily.intake_deb,
            'intake_ket':
            "-" if not daily else daily.intake_ket,
            'spillway_deb':
            None if not daily else daily.spillway_deb,
            'curahhujan':
            None if not daily else daily.ch,
            'tinggi':
            None if not vnotch else vnotch.vn1_tma,
            'debit':
            None if not vnotch else vnotch.vn1_deb,
            'piezo':
            piezo
        })
        count += 1

    return render_template('operasi/index.html', bends=data, sampling=sampling)