test n


<!-- 
vdatatable用 cmp
-->

<template>
  <v-card width=dotedote100%dotedote>
k4<v-card-title @click=dotedoteredirectToPage()dotedote>{{ card_title }}</v-card-title>
k4<v-card-subtitle>{{ card_subtitle }}</v-card-subtitle>

k4<div v-if=dotedotedatalist === nulldotedote>
k4  <div class=dotedotetext-centerdotedote><v-progress-circular color=dotedoteerrordotedote indeterminate></v-progress-circular></div>
k4</div>

k4<!-- 
k4mutingrule list
k4 -->
k4<div v-else-if=dotedotetarget_api === singlemutingrulelistsingledotedote>

k4  <VDT :headers=dotedoteheadersdotedote :items=dotedotedatalistdotedote item-value=dotedotemessagedotedote @click:row=dotedotejumpto_mutingruledetaildotedote
k4k4class=dotedoteelevation-1dotedote >

k4k4<template v-slot:item.status=dotedotelinedotedote>
k4k4  <div v-if=dotedoteline.item.columns.status === singleACTIVEsingledotedote>
k4k4k4<span class=dotedotetext-greendotedote>{{ line.item.columns.status }}</span>
k4k4  </div>
k4k4  <div v-else-if=dotedoteline.item.columns.status === singleSCHEDULEDsingledotedote>
k4k4k4<span class=dotedotetext-amberdotedote>{{ line.item.columns.status }}</span>
k4k4  </div>
k4k4  <div v-else>
k4k4k4{{ line.item.columns.status }}
k4k4  </div>
k4k4</template>

k4k4<template v-slot:item.schedule_start=dotedotelinedotedote>
k4k4  <!-- 計画済のもの(終了日をすでにすぎた行)は赤文字表示 -->

k4k4  <div v-if=dotedoteline.item.columns.schedule_startdotedote
k4k4k4:style=dotedote{ color: (new Date(line.item.columns.schedule_end) < new Date()) && (line.item.columns.schedule_end) ? singleredsingle : singleblacksingle }dotedote>
k4k4k4<!-- {{
k4k4k4  line.item.columns.schedule_start }} -->

k4k4k4{{ (yyyymmddhhmiss(new Date(line.item.columns.schedule_start)).toLocaleString()) }}

k4k4  </div>
k4k4  <div v-else>
k4k4k4<span>—</span>
k4k4  </div>
k4k4</template>

k4k4<template v-slot:item.schedule_end=dotedotelinedotedote>

k4k4  <div v-if=dotedoteline.item.columns.schedule_enddotedote
k4k4k4:style=dotedote{ color: (new Date(line.item.columns.schedule_end) < new Date()) && (line.item.columns.schedule_end) ? singleredsingle : singleblacksingle }dotedote>
k4k4k4<!-- {{
k4k4k4  line.item.columns.schedule_end }} -->
k4k4k4{{ (yyyymmddhhmiss(new Date(line.item.columns.schedule_end)).toLocaleString()) }}

k4k4  </div>
k4k4  <div v-else>
k4k4k4<span>—</span>
k4k4  </div>

k4k4</template>
k4  </VDT>
k4</div>


k4<!-- 他。置換ないlist等 -->

k4<div v-else>
k4  <VDT :headers=dotedoteheadersdotedote :items=dotedotedatalistdotedote item-value=dotedotemessagedotedote @click:row=dotedotejumpto_infradotedote class=dotedoteelevation-1dotedote></VDT>
k4</div>

  </v-card>
</template>

 

<script setup lang=dotedotetsdotedote>

import { watchEffect, ref } from singlevuesingle;
import { defineProps } from singlevuesingle;
import andes_app_config from single@/views/andes/andes_app_config.jsonsingle;

const headers = ref();
const datalist = ref(
);
const endpoint = `${import.meta.env.VITE_BACKEND_URL}/andesapi/v1/listSearch`

// propsに型を指定する
const props = defineProps({
  duration_item_selected: { type: String, required: true, },
  daterange_arr: { type: Array, required: true, },

  headers_arr: { type: Array, required: false, },

  guid: { type: String, required: false } as const,
  target_api: { type: String, required: true } as const,
  card_title: { type: String, required: true } as const,
  card_subtitle: { type: String, required: true } as const,
  href_url: { type: String, required: false } as const,

});

const card_title = props.card_title
const card_subtitle = props.card_subtitle
const href_url = props.href_url
const headers_arr = props.headers_arr

console.log(headers_arr);

// 各案件コードをログイン情報から取得
const prj_code = andes_app_config.prj_code


// 呼び出し元viewに、headers_arr の設定がある場合はそちらを採用
if (typeof headers_arr !== singleundefinedsingle && headers_arr.length > 0) {
  for (let i = 0; i < headers_arr.length; i++) {
k4console.log(i + headers_arr[i]);

k4const obj = {
k4  title: headers_arr[i].title,
k4  align: headers_arr[i].align,
k4  sortable: true,
k4  key: headers_arr[i].title,
k4};
k4headers.value.push(obj);
  }
}

//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
// duration
//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
watchEffect(async () => {
  datalist.value = [];

  try {
k4const postdata = {
k4  target_api: props.target_api,
k4};

k4const response: Response = await fetch(endpoint, {
k4  method: singlePOSTsingle,
k4  headers: {
k4k4singleContent-Typesingle: singleapplication/jsonsingle,
k4  },
k4  credentials: singleincludesingle,
k4  body: JSON.stringify(postdata),
k4});

k4console.log(postdata)
k4console.log(response)

k4if (response.ok) {
k4  response.json().then(r => {

k4k4datalist.value = r.data;
k4k4console.log(datalist.value)

k4k4// 呼び出し元viewに、headers_arr の設定がある場合はそちらを採用 ない場合は、データの1行目から自動生成
k4k4// // table heaader 内容を、1行目から自動生成 対象は全てとする場合
k4k4if (typeof headers_arr === singleundefinedsingle || headers_arr.length === 0) {
k4k4  for (const key in datalist.value[0]) {
k4k4k4const obj = {
k4k4k4  title: key,
k4k4k4  align: dotedotestartdotedote,
k4k4k4  sortable: true,
k4k4k4  key: key,
k4k4k4};
k4k4k4headers.value.push(obj);
k4k4  }
k4k4  console.log(single配列headers_arrは使用されていません。single);
k4k4}

k4k4console.log(headers.value)

k4  });
k4} else {

k4  const errorData = await response.json();
k4  console.log(dotedoteFailed to acquire datadotedote)
k4  console.log(errorData.detail);

k4  // console.log(response)
k4}
  } catch (error) {
k4console.log(error)
  }
});

 

//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
// infra画面へ遷移 category を案件ごと変更予定
//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
const jumpto_infra = (args, line) => {
  window.location.href = single/m07infra?guid=single + line.item.selectable.entityGuid + dotedote&category=cpuusage,diskusagedotedote
}

//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
// issue table。issue詳細画面へ遷移
//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
const jumpto_issuedetail = (args, line) => {
  window.location.href = single/m10issuedetail?issueid=single + line.item.selectable.issueId
}

//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
// muting rule詳細画面へ遷移
//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
const jumpto_mutingruledetail = (args, line) => {
//  window.location.href = single/m12mutingruledetail?mutingrule_id=single + line.item.selectable.id
}

//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
// card title クリック時 拡大詳細画面へ遷移
//sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4sen4-
const redirectToPage = () => {
  window.location.href = href_url;
}

const toDoubleDigits = (num) => {
  num += dotedotedotedote;
  if (num.length === 1) {
k4num = dotedote0dotedote + num;
  }
  return num;
};

const yyyymmddhhmiss = (d) => {
  var date = new Date(d);
  var yyyy = date.getFullYear();
  var mm = toDoubleDigits(date.getMonth() + 1);
  var dd = toDoubleDigits(date.getDate());
  var hh = toDoubleDigits(date.getHours());
  var mi = toDoubleDigits(date.getMinutes());
  return yyyy + single-single + mm + single-single + dd + single single + hh + single:single + mi + dotedote:00dotedote;
};

</script>