()
| 135 | }; |
| 136 | |
| 137 | export const useOperationLog = () => { |
| 138 | const logs = ref<OperationLoggerItem[]>([]); |
| 139 | |
| 140 | const levelColors = { |
| 141 | info: "blue", |
| 142 | warning: "orange", |
| 143 | error: "red", |
| 144 | unknown: "gray" |
| 145 | }; |
| 146 | |
| 147 | const fetchData = async () => { |
| 148 | const { execute } = getOperationLog(); |
| 149 | const data = await execute(); |
| 150 | logs.value = data.value?.reverse() || []; |
| 151 | }; |
| 152 | |
| 153 | const generateTextByItem = (item: OperationLoggerItem) => { |
| 154 | const handler = renderMap[item.type]; |
| 155 | if (!handler) return t("TXT_CODE_43df9305"); |
| 156 | const { text, data } = handler(item as any); |
| 157 | let i = 0; |
| 158 | return text.replace(/\<\<\s*[\w_]+\s*\>\>/g, () => data[i++] ?? "--"); |
| 159 | }; |
| 160 | |
| 161 | const getColorByLevel = (level: OperationLoggerItem["operation_level"]) => { |
| 162 | return levelColors[level] ?? levelColors.unknown; |
| 163 | }; |
| 164 | |
| 165 | const formattedLogs = computed(() => { |
| 166 | return logs.value.map((item) => { |
| 167 | return { |
| 168 | ...item, |
| 169 | color: getColorByLevel(item.operation_level), |
| 170 | text: generateTextByItem(item) |
| 171 | }; |
| 172 | }); |
| 173 | }); |
| 174 | |
| 175 | return { fetchData, logs, getColorByLevel, generateTextByItem, formattedLogs }; |
| 176 | }; |
nothing calls this directly
no test coverage detected