78 changed files with 1806 additions and 518 deletions
@ -0,0 +1,83 @@ |
|||
<template> |
|||
<w-dialog ref="dialogRef" width="960px" height="760px" :title="`${curveTypeRef} - ${detailRef?.modelName}(${detailRef?.modelId})`" :can-maximize="false"> |
|||
<div class="px-2"> |
|||
<w-grid |
|||
v-if="'ROC' === curveTypeRef" |
|||
:checkbox-selection="false" |
|||
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/roc?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
|||
:pageable="true" |
|||
:toolbar-actions="['refresh', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'scoreCutOffPoint', label: $t('io.sc.engine.mv.result.curve.scoreCutOffPoint'), align: 'right' }, |
|||
{ width: 100, name: 'dd', label: $t('io.sc.engine.mv.result.curve.roc.dd'), align: 'right' }, |
|||
{ width: 100, name: 'dn', label: $t('io.sc.engine.mv.result.curve.roc.dn'), align: 'right' }, |
|||
{ width: 100, name: 'nd', label: $t('io.sc.engine.mv.result.curve.roc.nd'), align: 'right' }, |
|||
{ width: 100, name: 'nn', label: $t('io.sc.engine.mv.result.curve.roc.nn'), align: 'right' }, |
|||
{ width: 100, name: 'td', label: $t('io.sc.engine.mv.result.curve.roc.td'), align: 'right' }, |
|||
{ width: 100, name: 'tn', label: $t('io.sc.engine.mv.result.curve.roc.tn'), align: 'right' }, |
|||
{ width: 100, name: 'x', label: $t('io.sc.engine.mv.result.curve.roc.x'), align: 'right' }, |
|||
{ width: 100, name: 'y', label: $t('io.sc.engine.mv.result.curve.roc.y'), align: 'right' }, |
|||
]" |
|||
></w-grid> |
|||
<w-grid |
|||
v-if="'CAP' === curveTypeRef" |
|||
:checkbox-selection="false" |
|||
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/cap?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
|||
:pageable="true" |
|||
:toolbar-actions="['refresh', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'scoreCutOffPoint', label: $t('io.sc.engine.mv.result.curve.scoreCutOffPoint'), align: 'right' }, |
|||
{ width: 100, name: 'ts', label: $t('io.sc.engine.mv.result.curve.cap.ts'), align: 'right' }, |
|||
{ width: 100, name: 'tt', label: $t('io.sc.engine.mv.result.curve.cap.tt'), align: 'right' }, |
|||
{ width: 100, name: 'tds', label: $t('io.sc.engine.mv.result.curve.cap.tds'), align: 'right' }, |
|||
{ width: 100, name: 'tdt', label: $t('io.sc.engine.mv.result.curve.cap.tdt'), align: 'right' }, |
|||
{ width: 100, name: 'x', label: $t('io.sc.engine.mv.result.curve.cap.x'), align: 'right' }, |
|||
{ width: 100, name: 'y', label: $t('io.sc.engine.mv.result.curve.cap.y'), align: 'right' }, |
|||
]" |
|||
></w-grid> |
|||
<w-grid |
|||
v-if="'KS' === curveTypeRef" |
|||
:checkbox-selection="false" |
|||
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/ks?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
|||
:pageable="true" |
|||
:toolbar-actions="['refresh', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 80, name: 'scoreCutOffPoint', label: $t('io.sc.engine.mv.result.curve.scoreCutOffPoint'), align: 'right' }, |
|||
{ width: 100, name: 'n', label: $t('io.sc.engine.mv.result.curve.ks.n'), align: 'right' }, |
|||
{ width: 100, name: 'tn', label: $t('io.sc.engine.mv.result.curve.ks.tn'), align: 'right' }, |
|||
{ width: 100, name: 'd', label: $t('io.sc.engine.mv.result.curve.ks.d'), align: 'right' }, |
|||
{ width: 100, name: 'td', label: $t('io.sc.engine.mv.result.curve.ks.td'), align: 'right' }, |
|||
{ width: 100, name: 'y1', label: $t('io.sc.engine.mv.result.curve.ks.y1'), align: 'right' }, |
|||
{ width: 100, name: 'y2', label: $t('io.sc.engine.mv.result.curve.ks.y2'), align: 'right' }, |
|||
]" |
|||
></w-grid> |
|||
</div> |
|||
</w-dialog> |
|||
</template> |
|||
<script setup lang="ts"> |
|||
import { ref, computed } from 'vue'; |
|||
import { Environment } from 'platform-core'; |
|||
|
|||
const dialogRef = ref(); |
|||
const curveTypeRef = ref(); |
|||
const detailRef = ref(); |
|||
|
|||
const open = (curveType: string, detail: any) => { |
|||
curveTypeRef.value = curveType; |
|||
detailRef.value = detail; |
|||
dialogRef.value.show(); |
|||
}; |
|||
|
|||
const close = () => { |
|||
dialogRef.value.hide(); |
|||
}; |
|||
|
|||
const title = computed(() => { |
|||
return curveTypeRef.value; |
|||
}); |
|||
|
|||
defineExpose({ |
|||
open, |
|||
close, |
|||
}); |
|||
</script> |
@ -1,119 +1,160 @@ |
|||
<template> |
|||
<w-grid |
|||
:title="$t('menu.engine.mv.result')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="true" |
|||
:data-url="Environment.apiContextPath('/api/mv/result')" |
|||
:pageable="false" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 150, name: 'validateDate', label: $t('io.sc.engine.mv.result.grid.entity.validateDate') }, |
|||
{ |
|||
width: 200, |
|||
name: 'runtimeParameters', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.runtimeParameters'), |
|||
format: (value) => { |
|||
let result = ''; |
|||
for (const item of value) { |
|||
result += |
|||
$t('io.sc.engine.mv.result.grid.entity.runtimeParameters.' + item.name) + ':' + (Tools.isUndefinedOrNull(item.value) ? '' : item.value) + '<br/>'; |
|||
} |
|||
return result; |
|||
}, |
|||
}, |
|||
{ width: 100, name: 'modelId', label: $t('io.sc.engine.mv.result.grid.entity.modelId') }, |
|||
{ width: 120, name: 'modelName', label: $t('io.sc.engine.mv.result.grid.entity.modelName') }, |
|||
{ width: 100, name: 'executeMode', label: $t('io.sc.engine.mv.result.grid.entity.executeMode') }, |
|||
{ width: 100, name: 'totalSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.totalSampleCount'), align: 'right' }, |
|||
{ width: 100, name: 'defaultSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.defaultSampleCount'), align: 'right' }, |
|||
{ |
|||
width: 900, |
|||
name: 'discrimination', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.discrimination'), |
|||
columns: [ |
|||
{ |
|||
name: 'total', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.total'), |
|||
columns: [ |
|||
{ width: 100, name: 'auc', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|||
{ width: 100, name: 'ar', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|||
{ width: 100, name: 'ks', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|||
], |
|||
}, |
|||
{ |
|||
name: 'quantitative', |
|||
label: $t('quantitative'), |
|||
columns: [ |
|||
{ width: 100, name: 'aucQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|||
{ width: 100, name: 'arQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|||
{ width: 100, name: 'ksQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|||
], |
|||
<div> |
|||
<w-grid |
|||
:ref="gridRef" |
|||
:title="$t('menu.engine.mv.result')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="false" |
|||
:data-url="Environment.apiContextPath('/api/mv/result')" |
|||
:pageable="false" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="[ |
|||
'refresh', |
|||
'separator', |
|||
{ |
|||
name: 'detail', |
|||
label: $t('detail'), |
|||
icon: 'bi-display', |
|||
click: (selecteds) => { |
|||
if (selecteds && selecteds.length > 0) { |
|||
const selected = selecteds[0]; |
|||
resultDetailDialogRef.open(selected); |
|||
} |
|||
}, |
|||
{ |
|||
name: 'qualitative', |
|||
label: $t('qualitative'), |
|||
columns: [ |
|||
{ width: 100, name: 'aucQualitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|||
{ width: 100, name: 'arQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|||
{ width: 100, name: 'ksQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|||
], |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
width: 200, |
|||
name: 'stability', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.stability'), |
|||
columns: [ |
|||
{ width: 100, name: 'svd', label: $t('io.sc.engine.mv.result.grid.entity.svd') }, |
|||
{ width: 100, name: 'psi', label: $t('io.sc.engine.mv.result.grid.entity.psi') }, |
|||
], |
|||
}, |
|||
{ |
|||
width: 200, |
|||
name: 'scaleValidate', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.scaleValidate'), |
|||
columns: [ |
|||
{ width: 100, name: 'chiSquare', label: $t('io.sc.engine.mv.result.grid.entity.chiSquare') }, |
|||
{ width: 100, name: 'binomial', label: $t('io.sc.engine.mv.result.grid.entity.binomial') }, |
|||
], |
|||
}, |
|||
]" |
|||
:editor="{ |
|||
dialog: { |
|||
width: '600px', |
|||
height: '300px', |
|||
}, |
|||
form: { |
|||
colsNum: 1, |
|||
fields: [ |
|||
{ name: 'significanceLevel', label: $t('significanceLevel'), type: 'text' }, |
|||
{ name: 'confidenceLevel', label: $t('confidenceLevel'), type: 'text' }, |
|||
{ name: 'zUpper', label: $t('zUpper'), type: 'text' }, |
|||
{ name: 'zLower', label: $t('zLower'), type: 'text' }, |
|||
], |
|||
}, |
|||
}" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'id', label: $t('id') }, |
|||
{ name: 'significanceLevel', label: $t('significanceLevel') }, |
|||
{ name: 'confidenceLevel', label: $t('confidenceLevel') }, |
|||
{ name: 'zUpper', label: $t('zUpper') }, |
|||
{ name: 'zLower', label: $t('zLower') }, |
|||
{ name: 'creator', label: $t('creator') }, |
|||
{ name: 'createDate', label: $t('createDate') }, |
|||
{ name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
}, |
|||
'separator', |
|||
'view', |
|||
'separator', |
|||
'export', |
|||
]" |
|||
:columns="[ |
|||
{ width: 150, name: 'validateDate', label: $t('io.sc.engine.mv.result.grid.entity.validateDate') }, |
|||
{ width: 150, name: 'modelId', label: $t('io.sc.engine.mv.result.grid.entity.modelId') }, |
|||
{ width: 200, name: 'modelName', label: $t('io.sc.engine.mv.result.grid.entity.modelName') }, |
|||
{ width: 100, name: 'executeMode', label: $t('io.sc.engine.mv.result.grid.entity.executeMode') }, |
|||
{ width: 100, name: 'totalSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.totalSampleCount'), align: 'right' }, |
|||
{ width: 100, name: 'defaultSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.defaultSampleCount'), align: 'right' }, |
|||
{ |
|||
width: 900, |
|||
name: 'discrimination', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.discrimination'), |
|||
columns: [ |
|||
{ |
|||
name: 'total', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.total'), |
|||
columns: [ |
|||
{ width: 100, name: 'auc', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|||
{ width: 100, name: 'ar', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|||
{ width: 100, name: 'ks', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|||
], |
|||
}, |
|||
{ |
|||
name: 'quantitative', |
|||
label: $t('quantitative'), |
|||
columns: [ |
|||
{ width: 100, name: 'aucQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|||
{ width: 100, name: 'arQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|||
{ width: 100, name: 'ksQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|||
], |
|||
}, |
|||
{ |
|||
name: 'qualitative', |
|||
label: $t('qualitative'), |
|||
columns: [ |
|||
{ width: 100, name: 'aucQualitative', label: $t('io.sc.engine.mv.result.grid.entity.auc') }, |
|||
{ width: 100, name: 'arQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ar') }, |
|||
{ width: 100, name: 'ksQualitative', label: $t('io.sc.engine.mv.result.grid.entity.ks') }, |
|||
], |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
width: 200, |
|||
name: 'stability', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.stability'), |
|||
columns: [ |
|||
{ width: 100, name: 'svd', label: $t('io.sc.engine.mv.result.grid.entity.svd') }, |
|||
{ width: 100, name: 'psi', label: $t('io.sc.engine.mv.result.grid.entity.psi') }, |
|||
], |
|||
}, |
|||
{ |
|||
width: 200, |
|||
name: 'scaleValidate', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.scaleValidate'), |
|||
columns: [ |
|||
{ width: 100, name: 'chiSquare', label: $t('io.sc.engine.mv.result.grid.entity.chiSquare'), align: 'center', format: passOrNotFormater }, |
|||
{ width: 100, name: 'binomial', label: $t('io.sc.engine.mv.result.grid.entity.binomial'), align: 'center', format: passOrNotFormater }, |
|||
], |
|||
}, |
|||
]" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'validateDate', label: $t('io.sc.engine.mv.result.grid.entity.validateDate') }, |
|||
{ |
|||
name: 'runtimeParameters', |
|||
label: $t('io.sc.engine.mv.result.grid.entity.runtimeParameters'), |
|||
format: (value) => { |
|||
let result = ''; |
|||
for (const item of value) { |
|||
result += |
|||
$t('io.sc.engine.mv.result.grid.entity.runtimeParameters.' + item.name) + |
|||
':' + |
|||
(Tools.isUndefinedOrNull(item.value) ? '' : item.value) + |
|||
'<br/>'; |
|||
} |
|||
return result; |
|||
}, |
|||
}, |
|||
{ name: 'modelId', label: $t('io.sc.engine.mv.result.grid.entity.modelId') }, |
|||
{ name: 'modelName', label: $t('io.sc.engine.mv.result.grid.entity.modelName') }, |
|||
{ name: 'executeMode', label: $t('io.sc.engine.mv.result.grid.entity.executeMode') }, |
|||
{ name: 'totalSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.totalSampleCount') }, |
|||
{ name: 'defaultSampleCount', label: $t('io.sc.engine.mv.result.grid.entity.defaultSampleCount') }, |
|||
{ name: 'auc', label: $t('io.sc.engine.mv.result.grid.entity.total.auc') }, |
|||
{ name: 'ar', label: $t('io.sc.engine.mv.result.grid.entity.total.ar') }, |
|||
{ name: 'ks', label: $t('io.sc.engine.mv.result.grid.entity.total.ks') }, |
|||
{ name: 'aucQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.quantitative.auc') }, |
|||
{ name: 'arQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.quantitative.ar') }, |
|||
{ name: 'ksQuantitative', label: $t('io.sc.engine.mv.result.grid.entity.quantitative.ks') }, |
|||
{ name: 'aucQualitative', label: $t('io.sc.engine.mv.result.grid.entity.qualitative.auc') }, |
|||
{ name: 'arQualitative', label: $t('io.sc.engine.mv.result.grid.entity.qualitative.ar') }, |
|||
{ name: 'ksQualitative', label: $t('io.sc.engine.mv.result.grid.entity.qualitative.ks') }, |
|||
{ name: 'svd', label: $t('io.sc.engine.mv.result.grid.entity.svd') }, |
|||
{ name: 'psi', label: $t('io.sc.engine.mv.result.grid.entity.psi') }, |
|||
{ name: 'chiSquare', label: $t('io.sc.engine.mv.result.grid.entity.chiSquare'), format: Formater.none() }, |
|||
{ name: 'binomial', label: $t('io.sc.engine.mv.result.grid.entity.binomial'), format: Formater.none() }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
<ResultDetailDialog ref="resultDetailDialogRef"></ResultDetailDialog> |
|||
</div> |
|||
</template> |
|||
<script setup lang="ts"> |
|||
import { ref } from 'vue'; |
|||
import { Environment, Tools, Formater } from 'platform-core'; |
|||
import ResultDetailDialog from './ResultDetailDialog.vue'; |
|||
|
|||
const gridRef = ref(); |
|||
const resultDetailDialogRef = ref(); |
|||
|
|||
const passOrNotFormater = (value) => { |
|||
if (Tools.isUndefinedOrNull(value)) { |
|||
return ''; |
|||
} |
|||
if (value === 'PASS') { |
|||
return { |
|||
componentType: 'QIcon', |
|||
attrs: { name: 'bi-check-circle', size: '20px', color: 'green' }, |
|||
}; |
|||
} else { |
|||
return { |
|||
componentType: 'QIcon', |
|||
attrs: { name: 'bi-x-circle', size: '20px', color: 'red' }, |
|||
}; |
|||
} |
|||
}; |
|||
</script> |
|||
|
@ -0,0 +1,271 @@ |
|||
<template> |
|||
<w-dialog ref="dialogRef" :title="detailRef?.modelName + '(' + detailRef?.modelId + ')'" :can-maximize="false" :maximized="true"> |
|||
<div class="px-2"> |
|||
<q-tabs v-model="selectedTabRef" inline-label align="left" :breakpoint="0" no-caps @update:model-value="tabChanged"> |
|||
<q-tab name="discrimination" icon="bi-people" :label="$t('io.sc.engine.mv.result.grid.entity.discrimination')" /> |
|||
<q-tab name="stability" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.result.grid.entity.stability')" /> |
|||
<q-tab name="scaleValidate" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.result.grid.entity.scaleValidate')" /> |
|||
</q-tabs> |
|||
|
|||
<q-tab-panels v-model="selectedTabRef" animated swipeable keep-alive> |
|||
<q-tab-panel name="discrimination" class="px-0"> |
|||
<div style="height: 50px"></div> |
|||
<div class="row"> |
|||
<div class="col-4"> |
|||
<div id="rocEchart" style="width: 100%; height: 300px"></div> |
|||
<div class="row justify-center"> |
|||
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'ROC' })" @click="showData('ROC')" /> |
|||
</div> |
|||
</div> |
|||
<div class="col-4"> |
|||
<div id="capEchart" style="width: 100%; height: 300px"></div> |
|||
<div class="row justify-center"> |
|||
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'CAP' })" @click="showData('CAP')" /> |
|||
</div> |
|||
</div> |
|||
<div class="col-4"> |
|||
<div id="ksEchart" style="width: 100%; height: 300px"></div> |
|||
<div class="row justify-center"> |
|||
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'KS' })" @click="showData('KS')" /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<h3>{{ $t('io.sc.engine.mv.result.curve.references') }}:</h3> |
|||
<table width="100%" style="border-collapse: collapse"> |
|||
<tr> |
|||
<th class="referenceTh">{{ $t('io.sc.engine.mv.performance') }}</th> |
|||
<th class="referenceTh">ROC (AUC = {{ detailRef.auc }})</th> |
|||
<th class="referenceTh">CAP (AR = {{ detailRef.ar }})</th> |
|||
<th class="referenceTh">KS (KS = {{ detailRef.ks }})</th> |
|||
</tr> |
|||
<tr v-for="(level, index) in referenceLevels" :key="index"> |
|||
<td class="referenceTd">{{ level }}</td> |
|||
<td :class="valueInRange(detailRef.auc, referenceValues.auc[index]) ? 'referenceTd highlight' : 'referenceTd'"> |
|||
{{ referenceValues.auc[index].label }} |
|||
</td> |
|||
<td :class="valueInRange(detailRef.ar, referenceValues.ar[index]) ? 'referenceTd highlight' : 'referenceTd'"> |
|||
{{ referenceValues.ar[index].label }} |
|||
</td> |
|||
<td :class="valueInRange(detailRef.ks, referenceValues.ks[index]) ? 'referenceTd highlight' : 'referenceTd'"> |
|||
{{ referenceValues.ks[index].label }} |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
</q-tab-panel> |
|||
<q-tab-panel name="stability" class="px-0"> |
|||
<div style="height: 50px"></div> |
|||
<div class="row"> |
|||
<div class="col-4"> |
|||
<div id="psiEchart" style="width: 100%; height: 300px"></div> |
|||
<div class="row justify-center"> |
|||
<q-btn color="primary" no-caps flat :label="$t('io.sc.engine.mv.result.curve.viewData', { type: 'ROC' })" @click="showData('ROC')" /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</q-tab-panel> |
|||
<q-tab-panel name="scaleValidate" class="px-0"> |
|||
<div class="row"> |
|||
<div class="col-5 pr-2"> |
|||
<w-grid |
|||
:checkbox-selection="false" |
|||
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/roc?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
|||
:pageable="true" |
|||
:toolbar-actions="['refresh', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'level', label: $t('io.sc.engine.mv.result.chiSquare.level'), align: 'right' }, |
|||
{ width: 100, name: 'pd', label: $t('io.sc.engine.mv.result.chiSquare.pd'), align: 'right' }, |
|||
{ width: 100, name: 'count', label: $t('io.sc.engine.mv.result.chiSquare.count'), align: 'right' }, |
|||
{ width: 100, name: 'defaultCount', label: $t('io.sc.engine.mv.result.chiSquare.defaultCount'), align: 'right' }, |
|||
{ width: 100, name: 'chiSquare', label: $t('io.sc.engine.mv.result.chiSquare.chiSquare'), align: 'right' }, |
|||
]" |
|||
></w-grid> |
|||
</div> |
|||
<div class="col-7 pl-2"> |
|||
<w-grid |
|||
:checkbox-selection="false" |
|||
:fetch-data-url="Environment.apiContextPath('/api/mv/sc/roc?modelId=' + detailRef.modelId + '&validateDate=' + detailRef.validateDate)" |
|||
:pageable="true" |
|||
:toolbar-actions="['refresh', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'level', label: $t('io.sc.engine.mv.result.binomial.level'), align: 'right' }, |
|||
{ width: 100, name: 'pd', label: $t('io.sc.engine.mv.result.binomial.pd'), align: 'right' }, |
|||
{ width: 100, name: 'count', label: $t('io.sc.engine.mv.result.binomial.count'), align: 'right' }, |
|||
{ width: 100, name: 'defaultCount', label: $t('io.sc.engine.mv.result.binomial.defaultCount'), align: 'right' }, |
|||
{ width: 100, name: 'ndAvg', label: $t('io.sc.engine.mv.result.binomial.ndAvg'), align: 'right' }, |
|||
{ width: 100, name: 'ndSd', label: $t('io.sc.engine.mv.result.binomial.ndSd'), align: 'right' }, |
|||
{ width: 100, name: 'sl', label: $t('io.sc.engine.mv.result.binomial.sl'), align: 'right' }, |
|||
{ width: 100, name: 'cl', label: $t('io.sc.engine.mv.result.binomial.cl'), align: 'right' }, |
|||
{ width: 100, name: 'zUpper', label: $t('io.sc.engine.mv.result.binomial.zUpper'), align: 'right' }, |
|||
{ width: 100, name: 'zLower', label: $t('io.sc.engine.mv.result.binomial.zLower'), align: 'right' }, |
|||
{ width: 100, name: 'dUpper', label: $t('io.sc.engine.mv.result.binomial.dUpper'), align: 'right' }, |
|||
{ width: 100, name: 'dLower', label: $t('io.sc.engine.mv.result.binomial.dLower'), align: 'right' }, |
|||
{ width: 100, name: 'leUpper', label: $t('io.sc.engine.mv.result.binomial.leUpper'), align: 'right' }, |
|||
{ width: 100, name: 'geLower', label: $t('io.sc.engine.mv.result.binomial.geLower'), align: 'right' }, |
|||
]" |
|||
></w-grid> |
|||
</div> |
|||
</div> |
|||
</q-tab-panel> |
|||
</q-tab-panels> |
|||
</div> |
|||
<CurveDataDialog ref="curveDataDialogRef"></CurveDataDialog> |
|||
</w-dialog> |
|||
</template> |
|||
<script setup lang="ts"> |
|||
import { ref, nextTick, computed } from 'vue'; |
|||
import { useI18n } from 'vue-i18n'; |
|||
import * as echarts from 'echarts'; |
|||
import { axios, Environment } from 'platform-core'; |
|||
import CurveDataDialog from './CurveDataDialog.vue'; |
|||
|
|||
const { t } = useI18n(); |
|||
|
|||
const referenceValues = { |
|||
auc: [ |
|||
{ label: '[0.00 - 0.65)', from: 0, to: 0.65 }, |
|||
{ label: '[0.65 - 0.75)', from: 0.65, to: 0.75 }, |
|||
{ label: '[0.75 - 0.80)', from: 0.75, to: 0.8 }, |
|||
{ label: '[0.80 - 0.85)', from: 0.8, to: 0.85 }, |
|||
{ label: '[0.85 - 0.90)', from: 0.85, to: 0.9 }, |
|||
{ label: '[0.90 - 1.00)', from: 0.9, to: 1 }, |
|||
], |
|||
ar: [ |
|||
{ label: '[0.0 - 0.3)', from: 0, to: 0.3 }, |
|||
{ label: '[0.3 - 0.5)', from: 0.3, to: 0.5 }, |
|||
{ label: '[0.5 - 0.6)', from: 0.5, to: 0.6 }, |
|||
{ label: '[0.6 - 0.7)', from: 0.6, to: 0.7 }, |
|||
{ label: '[0.7 - 0.8)', from: 0.7, to: 0.8 }, |
|||
{ label: '[0.8 - 1.0)', from: 0.8, to: 1 }, |
|||
], |
|||
ks: [ |
|||
{ label: '[0.00 - 0.20)', from: 0, to: 0.2 }, |
|||
{ label: '[0.20 - 0.40)', from: 0.2, to: 0.4 }, |
|||
{ label: '[0.40 - 0.50)', from: 0.4, to: 0.5 }, |
|||
{ label: '[0.50 - 0.60)', from: 0.5, to: 0.6 }, |
|||
{ label: '[0.60 - 0.75)', from: 0.6, to: 0.75 }, |
|||
{ label: '[0.75 - 1.00)', from: 0.75, to: 1 }, |
|||
], |
|||
}; |
|||
const referenceLevels = computed(() => { |
|||
return [ |
|||
t('io.sc.platform.core.enums.GoodLevel.POOR'), |
|||
t('io.sc.platform.core.enums.GoodLevel.MEDIUM'), |
|||
t('io.sc.platform.core.enums.GoodLevel.GOOD'), |
|||
t('io.sc.platform.core.enums.GoodLevel.VERY_GOOD'), |
|||
t('io.sc.platform.core.enums.GoodLevel.EXCELLENT'), |
|||
t('io.sc.platform.core.enums.GoodLevel.PERFECT'), |
|||
]; |
|||
}); |
|||
|
|||
const dialogRef = ref(); |
|||
const detailRef = ref(); |
|||
const selectedTabRef = ref('discrimination'); |
|||
const curveDataDialogRef = ref(); |
|||
|
|||
let rocEchart; |
|||
let capEchart; |
|||
let ksEchart; |
|||
let psiEchart; |
|||
const open = (detail: any) => { |
|||
detailRef.value = detail; |
|||
dialogRef.value.show(); |
|||
tabChanged(); |
|||
}; |
|||
|
|||
const tabChanged = () => { |
|||
nextTick(() => { |
|||
if ('discrimination' === selectedTabRef.value) { |
|||
if (!rocEchart) { |
|||
rocEchart = echarts.init(document.getElementById('rocEchart')); |
|||
} |
|||
axios |
|||
.get(Environment.apiContextPath('/api/mv/sc/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
|||
.then((response) => { |
|||
rocEchart?.setOption(response.data); |
|||
rocEchart?.resize(); |
|||
}); |
|||
|
|||
if (!capEchart) { |
|||
capEchart = echarts.init(document.getElementById('capEchart')); |
|||
} |
|||
axios |
|||
.get(Environment.apiContextPath('/api/mv/sc/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
|||
.then((response) => { |
|||
capEchart?.setOption(response.data); |
|||
capEchart?.resize(); |
|||
}); |
|||
|
|||
if (!ksEchart) { |
|||
ksEchart = echarts.init(document.getElementById('ksEchart')); |
|||
} |
|||
axios |
|||
.get(Environment.apiContextPath('/api/mv/sc/ks/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
|||
.then((response) => { |
|||
ksEchart?.setOption(response.data); |
|||
ksEchart?.resize(); |
|||
}); |
|||
} else if ('stability' === selectedTabRef.value) { |
|||
if (!psiEchart) { |
|||
psiEchart = echarts.init(document.getElementById('psiEchart')); |
|||
} |
|||
axios |
|||
.get(Environment.apiContextPath('/api/mv/st/psi/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) |
|||
.then((response) => { |
|||
psiEchart?.setOption(response.data); |
|||
psiEchart?.resize(); |
|||
}); |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
const close = () => { |
|||
dialogRef.value.hide(); |
|||
if (rocEchart) { |
|||
rocEchart.dispose(); |
|||
} |
|||
if (capEchart) { |
|||
capEchart.dispose(); |
|||
} |
|||
if (ksEchart) { |
|||
ksEchart.dispose(); |
|||
} |
|||
}; |
|||
|
|||
const valueInRange = (value, config) => { |
|||
if (value >= config.from && value < config.to) { |
|||
return true; |
|||
} |
|||
return false; |
|||
}; |
|||
|
|||
const showData = (type: string) => { |
|||
curveDataDialogRef.value.open(type, detailRef.value); |
|||
}; |
|||
|
|||
defineExpose({ |
|||
open, |
|||
close, |
|||
}); |
|||
</script> |
|||
|
|||
<style> |
|||
.referenceTh { |
|||
border: 1px solid gray; |
|||
padding-top: 0px; |
|||
padding-right: 10px; |
|||
padding-bottom: 0px; |
|||
padding-left: 10px; |
|||
} |
|||
|
|||
.referenceTd { |
|||
border: 1px solid gray; |
|||
padding-top: 0px; |
|||
padding-right: 10px; |
|||
padding-bottom: 0px; |
|||
padding-left: 10px; |
|||
} |
|||
|
|||
.highlight { |
|||
background-color: bisque; |
|||
} |
|||
</style> |
@ -1,169 +1,131 @@ |
|||
<template> |
|||
<q-tabs v-model="selectedTabRef" inline-label align="left" :breakpoint="0" no-caps> |
|||
<q-tab name="goodSample" icon="bi-people" :label="$t('io.sc.engine.mv.sample.tabs.goodSample')" /> |
|||
<q-tab name="scoreRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.scoreRecord')" /> |
|||
<q-tab name="defaultRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.defaultRecord')" /> |
|||
</q-tabs> |
|||
<div> |
|||
<q-tabs v-model="selectedTabRef" inline-label align="left" :breakpoint="0" no-caps> |
|||
<q-tab name="sample" icon="bi-people" :label="$t('io.sc.engine.mv.sample.tabs.sample')" /> |
|||
<q-tab name="scoreRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.scoreRecord')" /> |
|||
<q-tab name="defaultRecord" icon="bi-diagram-3" :label="$t('io.sc.engine.mv.sample.tabs.defaultRecord')" /> |
|||
</q-tabs> |
|||
|
|||
<q-tab-panels v-model="selectedTabRef" animated swipeable keep-alive> |
|||
<q-tab-panel name="goodSample" class="px-0"> |
|||
<w-grid |
|||
:title="$t('io.sc.engine.mv.config.binomial.grid.title')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="true" |
|||
:data-url="Environment.apiContextPath('/api/mv/sample/goodSample')" |
|||
:pageable="false" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|||
{ width: 100, name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|||
{ width: 120, name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|||
{ width: 120, name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|||
{ width: 100, name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, |
|||
]" |
|||
:editor="{ |
|||
dialog: { |
|||
width: '600px', |
|||
height: '300px', |
|||
}, |
|||
form: { |
|||
colsNum: 1, |
|||
fields: [ |
|||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel'), type: 'text' }, |
|||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel'), type: 'text' }, |
|||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper'), type: 'text' }, |
|||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower'), type: 'text' }, |
|||
], |
|||
}, |
|||
}" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'id', label: $t('id') }, |
|||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|||
{ name: 'creator', label: $t('creator') }, |
|||
{ name: 'createDate', label: $t('createDate') }, |
|||
{ name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
</q-tab-panel> |
|||
<q-tab-panel name="scoreRecord" class="px-0"> |
|||
<w-grid |
|||
:title="$t('io.sc.engine.mv.config.binomial.grid.title')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="true" |
|||
:data-url="Environment.apiContextPath('/api/mv/sample/scoreRecord')" |
|||
:pageable="true" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|||
{ width: 100, name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|||
{ width: 120, name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|||
{ width: 120, name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|||
{ width: 100, name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, |
|||
]" |
|||
:editor="{ |
|||
dialog: { |
|||
width: '600px', |
|||
height: '300px', |
|||
}, |
|||
form: { |
|||
colsNum: 1, |
|||
fields: [ |
|||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel'), type: 'text' }, |
|||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel'), type: 'text' }, |
|||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper'), type: 'text' }, |
|||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower'), type: 'text' }, |
|||
], |
|||
}, |
|||
}" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'id', label: $t('id') }, |
|||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|||
{ name: 'creator', label: $t('creator') }, |
|||
{ name: 'createDate', label: $t('createDate') }, |
|||
{ name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
</q-tab-panel> |
|||
<q-tab-panel name="defaultRecord" class="px-0"> |
|||
<w-grid |
|||
:title="$t('io.sc.engine.mv.config.binomial.grid.title')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="true" |
|||
:data-url="Environment.apiContextPath('/api/mv/config/binomial')" |
|||
:pageable="false" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|||
{ width: 100, name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|||
{ width: 120, name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|||
{ width: 120, name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|||
{ width: 100, name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, |
|||
]" |
|||
:editor="{ |
|||
dialog: { |
|||
width: '600px', |
|||
height: '300px', |
|||
}, |
|||
form: { |
|||
colsNum: 1, |
|||
fields: [ |
|||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel'), type: 'text' }, |
|||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel'), type: 'text' }, |
|||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper'), type: 'text' }, |
|||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower'), type: 'text' }, |
|||
], |
|||
}, |
|||
}" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'id', label: $t('id') }, |
|||
{ name: 'significanceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.significanceLevel') }, |
|||
{ name: 'confidenceLevel', label: $t('io.sc.engine.mv.config.binomial.grid.entity.confidenceLevel') }, |
|||
{ name: 'zUpper', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zUpper') }, |
|||
{ name: 'zLower', label: $t('io.sc.engine.mv.config.binomial.grid.entity.zLower') }, |
|||
{ name: 'creator', label: $t('creator') }, |
|||
{ name: 'createDate', label: $t('createDate') }, |
|||
{ name: 'lastModifier', label: $t('lastModifier') }, |
|||
{ name: 'lastModifyDate', label: $t('lastModifyDate') }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
</q-tab-panel> |
|||
</q-tab-panels> |
|||
<q-tab-panels v-model="selectedTabRef" animated swipeable keep-alive> |
|||
<q-tab-panel name="sample" class="px-0"> |
|||
<w-grid |
|||
:title="$t('io.sc.engine.mv.sample.sample.grid.title')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="false" |
|||
:data-url="Environment.apiContextPath('/api/mv/sample')" |
|||
:pageable="true" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'customId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customId') }, |
|||
{ width: 100, name: 'customName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customName') }, |
|||
{ width: 120, name: 'modelId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelId') }, |
|||
{ width: 120, name: 'modelName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelName') }, |
|||
{ width: 110, name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.defaultConfirmDate'), format: Formater.dateOnly() }, |
|||
{ width: 90, name: 'pd', label: $t('io.sc.engine.mv.sample.sample.grid.entity.pd'), align: 'right' }, |
|||
{ width: 90, name: 'score', label: $t('io.sc.engine.mv.sample.sample.grid.entity.score'), align: 'right' }, |
|||
{ width: 90, name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQuantitative'), align: 'right' }, |
|||
{ width: 90, name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQualitative'), align: 'right' }, |
|||
{ width: 60, name: 'level', label: $t('io.sc.engine.mv.sample.sample.grid.entity.level'), align: 'right' }, |
|||
{ width: 110, name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.beginDate'), format: Formater.dateOnly() }, |
|||
{ width: 110, name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.endDate'), format: Formater.dateOnly() }, |
|||
]" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'customId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customId') }, |
|||
{ name: 'customName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.customName') }, |
|||
{ name: 'modelId', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelId') }, |
|||
{ name: 'modelName', label: $t('io.sc.engine.mv.sample.sample.grid.entity.modelName') }, |
|||
{ name: 'pd', label: $t('io.sc.engine.mv.sample.sample.grid.entity.pd') }, |
|||
{ name: 'score', label: $t('io.sc.engine.mv.sample.sample.grid.entity.score') }, |
|||
{ name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQuantitative') }, |
|||
{ name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreQualitative') }, |
|||
{ name: 'level', label: $t('io.sc.engine.mv.sample.sample.grid.entity.level') }, |
|||
{ name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreBeginDate'), format: Formater.none() }, |
|||
{ name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.scoreEndDate'), format: Formater.none() }, |
|||
{ name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.sample.grid.entity.defaultConfirmDate'), format: Formater.none() }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
</q-tab-panel> |
|||
<q-tab-panel name="scoreRecord" class="px-0"> |
|||
<w-grid |
|||
:title="$t('io.sc.engine.mv.sample.scoreRecord.grid.title')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="false" |
|||
:data-url="Environment.apiContextPath('/api/mv/sample/scoreRecord')" |
|||
:pageable="true" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'customId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customId') }, |
|||
{ width: 100, name: 'customName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customName') }, |
|||
{ width: 120, name: 'modelId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelId') }, |
|||
{ width: 150, name: 'modelName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelName') }, |
|||
{ width: 90, name: 'pd', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.pd'), align: 'right' }, |
|||
{ width: 90, name: 'score', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.score'), align: 'right' }, |
|||
{ width: 90, name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQuantitative'), align: 'right' }, |
|||
{ width: 90, name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQualitative'), align: 'right' }, |
|||
{ width: 60, name: 'level', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.level'), align: 'right' }, |
|||
{ width: 110, name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreBeginDate'), format: Formater.dateOnly() }, |
|||
{ width: 110, name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreEndDate'), format: Formater.dateOnly() }, |
|||
]" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'customId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customId') }, |
|||
{ name: 'customName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.customName') }, |
|||
{ name: 'modelId', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelId') }, |
|||
{ name: 'modelName', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.modelName') }, |
|||
{ name: 'pd', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.pd') }, |
|||
{ name: 'score', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.score') }, |
|||
{ name: 'scoreQuantitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQuantitative') }, |
|||
{ name: 'scoreQualitative', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreQualitative') }, |
|||
{ name: 'level', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.level') }, |
|||
{ name: 'scoreBeginDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreBeginDate'), format: Formater.none() }, |
|||
{ name: 'scoreEndDate', label: $t('io.sc.engine.mv.sample.scoreRecord.grid.entity.scoreEndDate'), format: Formater.none() }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
</q-tab-panel> |
|||
<q-tab-panel name="defaultRecord" class="px-0"> |
|||
<w-grid |
|||
:title="$t('io.sc.engine.mv.sample.defaultRecord.grid.title')" |
|||
:config-button="true" |
|||
selection="multiple" |
|||
:checkbox-selection="false" |
|||
:data-url="Environment.apiContextPath('/api/mv/sample/defaultRecord')" |
|||
:pageable="true" |
|||
:toolbar-configure="{ noIcon: false }" |
|||
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" |
|||
:columns="[ |
|||
{ width: 100, name: 'customId', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.customId') }, |
|||
{ width: 100, name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate') }, |
|||
]" |
|||
:viewer="{ |
|||
panel: { |
|||
columnNum: 1, |
|||
fields: [ |
|||
{ name: 'customId', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.customId') }, |
|||
{ name: 'defaultConfirmDate', label: $t('io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate') }, |
|||
], |
|||
}, |
|||
}" |
|||
></w-grid> |
|||
</q-tab-panel> |
|||
</q-tab-panels> |
|||
</div> |
|||
</template> |
|||
<script setup lang="ts"> |
|||
import { ref } from 'vue'; |
|||
import { Environment, Formater } from 'platform-core'; |
|||
|
|||
const selectedTabRef = ref('goodSample'); |
|||
const selectedTabRef = ref('sample'); |
|||
</script> |
|||
|
@ -1,4 +1,4 @@ |
|||
package io.sc.engine.mv.controller.core; |
|||
package io.sc.engine.mv.controller.coe; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.CoeBinomialHistory; |
|||
import io.sc.engine.mv.jpa.repository.CoeBinomialHistoryRepository; |
@ -1,4 +1,4 @@ |
|||
package io.sc.engine.mv.controller.core; |
|||
package io.sc.engine.mv.controller.coe; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.CoeChiSquareHistory; |
|||
import io.sc.engine.mv.jpa.repository.CoeChiSquareHistoryRepository; |
@ -0,0 +1,21 @@ |
|||
package io.sc.engine.mv.controller.sample; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
|||
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
|||
import io.sc.engine.mv.jpa.repository.DefaultRecordRepository; |
|||
import io.sc.engine.mv.service.sample.DefaultRecordService; |
|||
import io.sc.engine.mv.vo.DefaultRecordVo; |
|||
import io.sc.platform.mvc.controller.support.RestCrudController; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* 评分记录控制器 |
|||
* @author wangshaoping |
|||
* |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("/api/mv/sample/defaultRecord") |
|||
public class DefaultRecordWebController extends RestCrudController<DefaultRecordVo, DefaultRecord, DefaultRecordId, DefaultRecordRepository, DefaultRecordService> { |
|||
|
|||
} |
@ -0,0 +1,79 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
public class Axis { |
|||
private int gridIndex; |
|||
private String name; |
|||
private String nameLocation; |
|||
private int nameGap; |
|||
private boolean smooth; |
|||
private boolean boundaryGap; |
|||
private AxisTick axisTick =new AxisTick(); |
|||
private List<Object> data =new ArrayList<>(); |
|||
|
|||
public int getGridIndex() { |
|||
return gridIndex; |
|||
} |
|||
|
|||
public void setGridIndex(int gridIndex) { |
|||
this.gridIndex = gridIndex; |
|||
} |
|||
|
|||
public String getName() { |
|||
return name; |
|||
} |
|||
|
|||
public void setName(String name) { |
|||
this.name = name; |
|||
} |
|||
|
|||
public String getNameLocation() { |
|||
return nameLocation; |
|||
} |
|||
|
|||
public void setNameLocation(String nameLocation) { |
|||
this.nameLocation = nameLocation; |
|||
} |
|||
|
|||
public int getNameGap() { |
|||
return nameGap; |
|||
} |
|||
|
|||
public void setNameGap(int nameGap) { |
|||
this.nameGap = nameGap; |
|||
} |
|||
|
|||
public boolean isSmooth() { |
|||
return smooth; |
|||
} |
|||
|
|||
public void setSmooth(boolean smooth) { |
|||
this.smooth = smooth; |
|||
} |
|||
|
|||
public boolean isBoundaryGap() { |
|||
return boundaryGap; |
|||
} |
|||
|
|||
public void setBoundaryGap(boolean boundaryGap) { |
|||
this.boundaryGap = boundaryGap; |
|||
} |
|||
|
|||
public AxisTick getAxisTick() { |
|||
return axisTick; |
|||
} |
|||
|
|||
public void setAxisTick(AxisTick axisTick) { |
|||
this.axisTick = axisTick; |
|||
} |
|||
|
|||
public List<Object> getData() { |
|||
return data; |
|||
} |
|||
|
|||
public void setData(List<Object> data) { |
|||
this.data = data; |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
public class AxisTick { |
|||
private int interval; |
|||
|
|||
public int getInterval() { |
|||
return interval; |
|||
} |
|||
|
|||
public void setInterval(int interval) { |
|||
this.interval = interval; |
|||
} |
|||
} |
@ -0,0 +1,22 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
public class Grid { |
|||
private boolean show =true; |
|||
private boolean containLabel =true; |
|||
|
|||
public boolean isShow() { |
|||
return show; |
|||
} |
|||
|
|||
public void setShow(boolean show) { |
|||
this.show = show; |
|||
} |
|||
|
|||
public boolean getContainLabel() { |
|||
return containLabel; |
|||
} |
|||
|
|||
public void setContainLabel(boolean containLabel) { |
|||
this.containLabel = containLabel; |
|||
} |
|||
} |
@ -0,0 +1,25 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
public class Legend { |
|||
private int top; |
|||
private List<Object> data =new ArrayList<>(); |
|||
|
|||
public int getTop() { |
|||
return top; |
|||
} |
|||
|
|||
public void setTop(int top) { |
|||
this.top = top; |
|||
} |
|||
|
|||
public List<Object> getData() { |
|||
return data; |
|||
} |
|||
|
|||
public void setData(List<Object> data) { |
|||
this.data = data; |
|||
} |
|||
} |
@ -0,0 +1,79 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
public class Option { |
|||
private boolean animation; |
|||
private Title title =new Title(); |
|||
private Grid grid =new Grid(); |
|||
private Legend legend =new Legend(); |
|||
private Tooltip tooltip =new Tooltip(); |
|||
private Axis xAxis =new Axis(); |
|||
private Axis yAxis=new Axis(); |
|||
private List<Series> series =new ArrayList<>(); |
|||
|
|||
public boolean isAnimation() { |
|||
return animation; |
|||
} |
|||
|
|||
public void setAnimation(boolean animation) { |
|||
this.animation = animation; |
|||
} |
|||
|
|||
public Title getTitle() { |
|||
return title; |
|||
} |
|||
|
|||
public void setTitle(Title title) { |
|||
this.title = title; |
|||
} |
|||
|
|||
public Grid getGrid() { |
|||
return grid; |
|||
} |
|||
|
|||
public void setGrid(Grid grid) { |
|||
this.grid = grid; |
|||
} |
|||
|
|||
public Legend getLegend() { |
|||
return legend; |
|||
} |
|||
|
|||
public void setLegend(Legend legend) { |
|||
this.legend = legend; |
|||
} |
|||
|
|||
public Tooltip getTooltip() { |
|||
return tooltip; |
|||
} |
|||
|
|||
public void setTooltip(Tooltip tooltip) { |
|||
this.tooltip = tooltip; |
|||
} |
|||
|
|||
public Axis getxAxis() { |
|||
return xAxis; |
|||
} |
|||
|
|||
public void setxAxis(Axis xAxis) { |
|||
this.xAxis = xAxis; |
|||
} |
|||
|
|||
public Axis getyAxis() { |
|||
return yAxis; |
|||
} |
|||
|
|||
public void setyAxis(Axis yAxis) { |
|||
this.yAxis = yAxis; |
|||
} |
|||
|
|||
public List<Series> getSeries() { |
|||
return series; |
|||
} |
|||
|
|||
public void setSeries(List<Series> series) { |
|||
this.series = series; |
|||
} |
|||
} |
@ -0,0 +1,43 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
public class Series { |
|||
private String name; |
|||
private String type; |
|||
private int barWidth; |
|||
private List<Object> data=new ArrayList<>(); |
|||
|
|||
public String getName() { |
|||
return name; |
|||
} |
|||
|
|||
public void setName(String name) { |
|||
this.name = name; |
|||
} |
|||
|
|||
public String getType() { |
|||
return type; |
|||
} |
|||
|
|||
public void setType(String type) { |
|||
this.type = type; |
|||
} |
|||
|
|||
public int getBarWidth() { |
|||
return barWidth; |
|||
} |
|||
|
|||
public void setBarWidth(int barWidth) { |
|||
this.barWidth = barWidth; |
|||
} |
|||
|
|||
public List<Object> getData() { |
|||
return data; |
|||
} |
|||
|
|||
public void setData(List<Object> data) { |
|||
this.data = data; |
|||
} |
|||
} |
@ -0,0 +1,22 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
public class Title { |
|||
private String text; |
|||
private String left; |
|||
|
|||
public String getText() { |
|||
return text; |
|||
} |
|||
|
|||
public void setText(String text) { |
|||
this.text = text; |
|||
} |
|||
|
|||
public String getLeft() { |
|||
return left; |
|||
} |
|||
|
|||
public void setLeft(String left) { |
|||
this.left = left; |
|||
} |
|||
} |
@ -0,0 +1,4 @@ |
|||
package io.sc.engine.mv.echart; |
|||
|
|||
public class Tooltip { |
|||
} |
@ -0,0 +1,52 @@ |
|||
package io.sc.engine.mv.jpa.entity; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
|||
import io.sc.engine.mv.jpa.entity.id.ScoreRecordId; |
|||
import io.sc.engine.mv.vo.DefaultRecordVo; |
|||
import io.sc.engine.mv.vo.ScoreRecordVo; |
|||
import io.sc.platform.orm.entity.BaseEntity; |
|||
|
|||
import javax.persistence.*; |
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 评分记录实体类 |
|||
* |
|||
*/ |
|||
@Entity |
|||
@Table(name="MV_DEFAULT_RECORD") |
|||
@IdClass(DefaultRecordId.class) |
|||
public class DefaultRecord extends BaseEntity<DefaultRecordVo> { |
|||
@Id |
|||
@Column(name="FD_CUSTOM_ID") |
|||
private String customId; |
|||
|
|||
@Id |
|||
@Column(name="FD_DEFAULT_CONFIRM_DATE") |
|||
private Date defaultConfirmDate; |
|||
|
|||
@Override |
|||
public DefaultRecordVo toVo() { |
|||
DefaultRecordVo vo =new DefaultRecordVo(); |
|||
vo.setCustomId(this.getCustomId()); |
|||
vo.setDefaultConfirmDate(this.getDefaultConfirmDate()); |
|||
return vo; |
|||
} |
|||
|
|||
public String getCustomId() { |
|||
return customId; |
|||
} |
|||
|
|||
public void setCustomId(String customId) { |
|||
this.customId = customId; |
|||
} |
|||
|
|||
public Date getDefaultConfirmDate() { |
|||
return defaultConfirmDate; |
|||
} |
|||
|
|||
public void setDefaultConfirmDate(Date defaultConfirmDate) { |
|||
this.defaultConfirmDate = defaultConfirmDate; |
|||
} |
|||
} |
@ -0,0 +1,39 @@ |
|||
package io.sc.engine.mv.jpa.entity.id; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import java.util.Objects; |
|||
|
|||
public class DefaultRecordId implements Serializable{ |
|||
private String customId; |
|||
private Date defaultConfirmDate; |
|||
|
|||
public String getCustomId() { |
|||
return customId; |
|||
} |
|||
|
|||
public void setCustomId(String customId) { |
|||
this.customId = customId; |
|||
} |
|||
|
|||
public Date getDefaultConfirmDate() { |
|||
return defaultConfirmDate; |
|||
} |
|||
|
|||
public void setDefaultConfirmDate(Date defaultConfirmDate) { |
|||
this.defaultConfirmDate = defaultConfirmDate; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
DefaultRecordId that = (DefaultRecordId) o; |
|||
return Objects.equals(customId, that.customId) && Objects.equals(defaultConfirmDate, that.defaultConfirmDate); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(customId, defaultConfirmDate); |
|||
} |
|||
} |
@ -0,0 +1,11 @@ |
|||
package io.sc.engine.mv.jpa.repository; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
|||
import io.sc.engine.mv.jpa.entity.ScoreRecord; |
|||
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
|||
import io.sc.engine.mv.jpa.entity.id.ScoreRecordId; |
|||
import io.sc.platform.orm.repository.DaoRepository; |
|||
|
|||
public interface DefaultRecordRepository extends DaoRepository<DefaultRecord, DefaultRecordId> { |
|||
|
|||
} |
@ -0,0 +1,9 @@ |
|||
package io.sc.engine.mv.service.sample; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
|||
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
|||
import io.sc.engine.mv.jpa.repository.DefaultRecordRepository; |
|||
import io.sc.platform.orm.service.DaoService; |
|||
|
|||
public interface DefaultRecordService extends DaoService<DefaultRecord, DefaultRecordId, DefaultRecordRepository> { |
|||
} |
@ -0,0 +1,12 @@ |
|||
package io.sc.engine.mv.service.sample.impl; |
|||
|
|||
import io.sc.engine.mv.jpa.entity.DefaultRecord; |
|||
import io.sc.engine.mv.jpa.entity.id.DefaultRecordId; |
|||
import io.sc.engine.mv.jpa.repository.DefaultRecordRepository; |
|||
import io.sc.engine.mv.service.sample.DefaultRecordService; |
|||
import io.sc.platform.orm.service.impl.DaoServiceImpl; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
public class DefaultRecordServiceImpl extends DaoServiceImpl<DefaultRecord, DefaultRecordId, DefaultRecordRepository> implements DefaultRecordService { |
|||
} |
@ -0,0 +1,29 @@ |
|||
package io.sc.engine.mv.vo; |
|||
|
|||
import io.sc.platform.orm.api.vo.AuditorVo; |
|||
import io.sc.platform.orm.api.vo.BaseVo; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
|
|||
|
|||
public class DefaultRecordVo extends BaseVo { |
|||
private String customId; |
|||
private Date defaultConfirmDate; |
|||
|
|||
public String getCustomId() { |
|||
return customId; |
|||
} |
|||
|
|||
public void setCustomId(String customId) { |
|||
this.customId = customId; |
|||
} |
|||
|
|||
public Date getDefaultConfirmDate() { |
|||
return defaultConfirmDate; |
|||
} |
|||
|
|||
public void setDefaultConfirmDate(Date defaultConfirmDate) { |
|||
this.defaultConfirmDate = defaultConfirmDate; |
|||
} |
|||
} |
@ -1,2 +1,11 @@ |
|||
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=Import From Score Record |
|||
io.sc.engine.mv.ModelType.MANUAL=Manual |
|||
io.sc.engine.mv.ModelType.MANUAL=Manual |
|||
|
|||
io.sc.engine.mv.ExecuteMode.MANUAL=Manual |
|||
io.sc.engine.mv.ExecuteMode.BATCH=Batch |
|||
|
|||
io.sc.engine.mv.ScaleType.SINGLE=Single |
|||
io.sc.engine.mv.ScaleType.MULTIPLE=Multiple |
|||
|
|||
io.sc.engine.mv.CoeResult.PASS=Pass |
|||
io.sc.engine.mv.CoeResult.NOT_PASS=Not Pass |
@ -1,2 +1,11 @@ |
|||
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=\u5F9E\u8A55\u5206\u8A18\u9304\u8868\u4E2D\u5C0E\u5165 |
|||
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u5275\u5EFA |
|||
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u5275\u5EFA |
|||
|
|||
io.sc.engine.mv.ExecuteMode.MANUAL=\u624B\u5DE5 |
|||
io.sc.engine.mv.ExecuteMode.BATCH=\u8DD1\u6279 |
|||
|
|||
io.sc.engine.mv.ScaleType.SINGLE=\u55AE\u500B |
|||
io.sc.engine.mv.ScaleType.MULTIPLE=\u591A\u500B |
|||
|
|||
io.sc.engine.mv.CoeResult.PASS=\u901A\u904E |
|||
io.sc.engine.mv.CoeResult.NOT_PASS=\u672A\u901A\u904E |
@ -1,2 +1,11 @@ |
|||
io.sc.engine.mv.ModelType.IMPORT_FROM_SCORE_RECORD=\u4ECE\u8BC4\u5206\u8BB0\u5F55\u8868\u4E2D\u5BFC\u5165 |
|||
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u521B\u5EFA |
|||
io.sc.engine.mv.ModelType.MANUAL=\u624B\u5DE5\u521B\u5EFA |
|||
|
|||
io.sc.engine.mv.ExecuteMode.MANUAL=\u624B\u5DE5 |
|||
io.sc.engine.mv.ExecuteMode.BATCH=\u8DD1\u6279 |
|||
|
|||
io.sc.engine.mv.ScaleType.SINGLE=\u5355\u4E2A |
|||
io.sc.engine.mv.ScaleType.MULTIPLE=\u591A\u4E2A |
|||
|
|||
io.sc.engine.mv.CoeResult.PASS=\u901A\u8FC7 |
|||
io.sc.engine.mv.CoeResult.NOT_PASS=\u672A\u901A\u8FC7 |
@ -0,0 +1,73 @@ |
|||
# executor |
|||
io.sc.engine.mv.executor.DatabaseInitExecutor.name=\u6578\u64DA\u5EAB\u521D\u59CB\u5316\u57F7\u884C\u5668 |
|||
io.sc.engine.mv.executor.DatabaseInitExecutor.description=\u5728\u6A21\u578B\u9A57\u8B49\u57F7\u884C\u524D\u5C0D\u6578\u64DA\u5EAB\u9032\u884C\u5FC5\u8981\u7684\u521D\u59CB\u5316\u64CD\u4F5C |
|||
|
|||
io.sc.engine.mv.executor.ResultExecutor.name=\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u57F7\u884C\u5668 |
|||
io.sc.engine.mv.executor.ResultExecutor.description=\u5C07\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u5B58\u5165\u9A57\u8B49\u7D50\u679C\u6B77\u53F2\u8868\u4E2D,\u4E26\u5C07\u57F7\u884C\u74B0\u5883\u548C\u53C3\u6578\u4FDD\u5B58 |
|||
|
|||
io.sc.engine.mv.executor.ResultInitExecutor.name=\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u521D\u59CB\u5316\u57F7\u884C\u5668 |
|||
io.sc.engine.mv.executor.ResultInitExecutor.description=\u6E05\u7A7A\u4E0A\u4E00\u6B21\u904B\u884C\u7684\u6A21\u578B\u9A57\u8B49\u7D50\u679C,\u70BA\u672C\u6B21\u6A21\u578B\u9A57\u8B49\u7D50\u679C\u6E96\u5099\u521D\u59CB\u5316\u74B0\u5883 |
|||
|
|||
io.sc.engine.mv.executor.SampleCountExecutor.name=\u6A23\u672C\u6578\u64DA\u7D71\u8A08\u57F7\u884C\u5668 |
|||
io.sc.engine.mv.executor.SampleCountExecutor.description=\u7D71\u8A08\u5408\u683C\u6A23\u672C\u7684\u500B\u6578\u548C\u9055\u7D04\u6A23\u672C\u500B\u6578 |
|||
|
|||
io.sc.engine.mv.executor.SampleExecutor.name=\u5408\u683C\u6A23\u672C\u8655\u7406\u57F7\u884C\u5668 |
|||
io.sc.engine.mv.executor.SampleExecutor.description=\u751F\u6210\u5408\u683C\u6A23\u672C\u96C6 |
|||
|
|||
io.sc.engine.mv.executor.ScCapExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,CAP \u66F2\u7DDA\u57F7\u884C\u5668(\u7E3D\u9AD4) |
|||
io.sc.engine.mv.executor.ScCapExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 CAP \u66F2\u7DDA(\u7E3D\u9AD4),\u540C\u6642\u8A08\u7B97 AR \u503C(\u7E3D\u9AD4) |
|||
|
|||
io.sc.engine.mv.executor.ScCapQualitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,CAP \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u6027) |
|||
io.sc.engine.mv.executor.ScCapQualitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 CAP \u66F2\u7DDA(\u5B9A\u6027),\u540C\u6642\u8A08\u7B97 AR \u503C(\u5B9A\u6027) |
|||
|
|||
io.sc.engine.mv.executor.ScCapQuantitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,CAP \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u91CF) |
|||
io.sc.engine.mv.executor.ScCapQuantitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 CAP \u66F2\u7DDA(\u5B9A\u91CF),\u540C\u6642\u8A08\u7B97 AR \u503C(\u5B9A\u91CF) |
|||
|
|||
io.sc.engine.mv.executor.ScKsExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,KS \u66F2\u7DDA\u57F7\u884C\u5668(\u7E3D\u9AD4) |
|||
io.sc.engine.mv.executor.ScKsExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 KS \u66F2\u7DDA(\u7E3D\u9AD4),\u540C\u6642\u8A08\u7B97 KS \u503C(\u7E3D\u9AD4) |
|||
|
|||
io.sc.engine.mv.executor.ScKsQualitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,KS \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u6027) |
|||
io.sc.engine.mv.executor.ScKsQualitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 KS \u66F2\u7DDA(\u5B9A\u6027),\u540C\u6642\u8A08\u7B97 KS \u503C(\u5B9A\u6027) |
|||
|
|||
io.sc.engine.mv.executor.ScKsQuantitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,KS \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u91CF) |
|||
io.sc.engine.mv.executor.ScKsQuantitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 KS \u66F2\u7DDA(\u5B9A\u91CF),\u540C\u6642\u8A08\u7B97 KS \u503C(\u5B9A\u91CF) |
|||
|
|||
io.sc.engine.mv.executor.ScRocExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,ROC \u66F2\u7DDA\u57F7\u884C\u5668(\u7E3D\u9AD4) |
|||
io.sc.engine.mv.executor.ScRocExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 ROC \u66F2\u7DDA(\u7E3D\u9AD4),\u540C\u6642\u8A08\u7B97 AUC \u503C(\u7E3D\u9AD4) |
|||
|
|||
io.sc.engine.mv.executor.ScRocQualitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,ROC \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u6027) |
|||
io.sc.engine.mv.executor.ScRocQualitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 ROC \u66F2\u7DDA(\u5B9A\u6027),\u540C\u6642\u8A08\u7B97 AUC \u503C(\u5B9A\u6027) |
|||
|
|||
io.sc.engine.mv.executor.ScRocQuantitativeExecutor.name=\u6A21\u578B\u5340\u5206\u80FD\u529B\u9A57\u8B49,ROC \u66F2\u7DDA\u57F7\u884C\u5668(\u5B9A\u91CF) |
|||
io.sc.engine.mv.executor.ScRocQuantitativeExecutor.description=\u9A57\u8B49\u6A21\u578B\u5340\u5206\u80FD\u529B,\u751F\u6210 ROC \u66F2\u7DDA(\u5B9A\u91CF),\u540C\u6642\u8A08\u7B97 AUC \u503C(\u5B9A\u91CF) |
|||
|
|||
io.sc.engine.mv.executor.StPsiExecutor.name=\u6A21\u578B\u7A69\u5B9A\u6027\u9A57\u8B49,\u6A23\u672C\u7FA4\u9AD4\u7A69\u5B9A\u6027\u5831\u544A\u57F7\u884C\u5668 |
|||
io.sc.engine.mv.executor.StPsiExecutor.description=\u751F\u6210\u6A23\u672C\u7FA4\u9AD4\u7A69\u5B9A\u6027\u5831\u544A,\u540C\u6642\u8A08\u7B97 PSI \u503C |
|||
|
|||
io.sc.engine.mv.executor.CoeChiSquareExecutor.name=\u6A21\u578B\u4F30\u503C\u6E96\u78BA\u6027\u9A57\u8B49(\u5361\u65B9\u6AA2\u9A57) |
|||
io.sc.engine.mv.executor.CoeChiSquareExecutor.description=\u8A08\u7B97\u5361\u65B9\u6AA2\u9A57\u503C |
|||
|
|||
io.sc.engine.mv.executor.CoeBinomialExecutor.name=\u6A21\u578B\u4F30\u503C\u6E96\u78BA\u6027\u9A57\u8B49(\u4E8C\u9805\u6AA2\u9A57) |
|||
io.sc.engine.mv.executor.CoeBinomialExecutor.description=\u4E8C\u9805\u6AA2\u9A57\u503C |
|||
|
|||
io.sc.engine.mv.performance=\u6A21\u578B\u8868\u73FE |
|||
io.sc.engine.mv.performance.random=\u96A8\u6A5F\u6A21\u578B\u8868\u73FE |
|||
io.sc.engine.mv.performance.perfect=\u5B8C\u7F8E\u6A21\u578B\u8868\u73FE |
|||
io.sc.engine.mv.curve.roc.title=ROC \u66F2\u7DDA |
|||
io.sc.engine.mv.curve.roc.xAxis.title=\u8AA4\u8B66\u7387 |
|||
io.sc.engine.mv.curve.roc.yAxis.title=\u547D\u4E2D\u7387 |
|||
io.sc.engine.mv.curve.roc.series.title=\u6A21\u578B\u8868\u73FE |
|||
io.sc.engine.mv.curve.cap.title=CAP \u66F2\u7DDA |
|||
io.sc.engine.mv.curve.cap.xAxis.title=\u6A23\u672C\u500B\u6578\u767E\u5206\u6BD4 |
|||
io.sc.engine.mv.curve.cap.yAxis.title=\u9055\u7D04\u6A23\u672C\u500B\u6578\u767E\u5206\u6BD4 |
|||
io.sc.engine.mv.curve.cap.series.title=\u6A21\u578B\u8868\u73FE |
|||
io.sc.engine.mv.curve.ks.title=KS \u66F2\u7DDA |
|||
io.sc.engine.mv.curve.ks.xAxis.title=\u8A55\u5206 |
|||
io.sc.engine.mv.curve.ks.yAxis.title=\u6A23\u672C\u5360\u6BD4 |
|||
io.sc.engine.mv.curve.ks.series1.title=\u6B63\u5E38\u6A23\u672C\u5360\u6BD4 |
|||
io.sc.engine.mv.curve.ks.series2.title=\u9055\u7D04\u6A23\u672C\u5360\u6BD4 |
|||
io.sc.engine.mv.curve.psi.title=PSI \u67F1\u72C0\u5716 |
|||
io.sc.engine.mv.curve.psi.xAxis.title=\u5206\u6578\u6BB5 |
|||
io.sc.engine.mv.curve.psi.yAxis.title=\u6A23\u672C\u6578 |
|||
io.sc.engine.mv.curve.psi.series1.title=\u54A8\u8A62\u5EFA\u6A21\u6642 |
|||
io.sc.engine.mv.curve.psi.series2.title=\u6A21\u578B\u61C9\u7528\u6642 |
@ -0,0 +1,10 @@ |
|||
package io.sc.platform.core.enums; |
|||
|
|||
public enum GoodLevel { |
|||
POOR, |
|||
MEDIUM, |
|||
GOOD, |
|||
VERY_GOOD, |
|||
EXCELLENT, |
|||
PERFECT; |
|||
} |
@ -1,5 +1,5 @@ |
|||
dependencies { |
|||
api( |
|||
project(":io.sc.platform.core"), |
|||
project(":io.sc.platform.coe"), |
|||
) |
|||
} |
|||
|
@ -1,6 +1,6 @@ |
|||
dependencies { |
|||
api( |
|||
project(":io.sc.platform.core"), |
|||
project(":io.sc.platform.coe"), |
|||
project(":io.sc.platform.orm.api"), |
|||
) |
|||
} |
|||
|
@ -1,5 +1,5 @@ |
|||
dependencies { |
|||
api( |
|||
project(":io.sc.platform.job.core"), |
|||
project(":io.sc.platform.job.coe"), |
|||
) |
|||
} |
|||
|
@ -1,5 +1,5 @@ |
|||
dependencies { |
|||
api( |
|||
"com.github.oshi:oshi-core:${oshi_version}", |
|||
"com.github.oshi:oshi-coe:${oshi_version}", |
|||
) |
|||
} |
|||
|
@ -1,7 +1,7 @@ |
|||
dependencies { |
|||
api( |
|||
"com.fasterxml.jackson.core:jackson-annotations:${jackson_version}", |
|||
"com.fasterxml.jackson.core:jackson-core:${jackson_version}", |
|||
"com.fasterxml.jackson.core:jackson-databind:${jackson_version}", |
|||
"com.fasterxml.jackson.coe:jackson-annotations:${jackson_version}", |
|||
"com.fasterxml.jackson.coe:jackson-coe:${jackson_version}", |
|||
"com.fasterxml.jackson.coe:jackson-databind:${jackson_version}", |
|||
) |
|||
} |
|||
|
Loading…
Reference in new issue