2022-04-01 04:29:09 +08:00
|
|
|
import { defineStore } from 'pinia'
|
|
|
|
import {
|
|
|
|
GET_ALL_WORKSHEET_TEMPLATES, GET_ALL_WORKSHEETS, GET_WORKSHEET_BY_UID
|
|
|
|
} from '../graphql/worksheet.queries';
|
2022-06-19 15:21:50 +08:00
|
|
|
import {
|
|
|
|
WORKSHEET_UPDATE
|
|
|
|
} from '../graphql/worksheet.mutations';
|
|
|
|
|
2022-06-19 04:29:47 +08:00
|
|
|
import { GET_ANALYSIS_RESULTS_FOR_WS_ASSIGN } from '../graphql/analyses.queries';
|
2022-04-01 04:29:09 +08:00
|
|
|
import { parseData, keysToCamel, addListsUnique } from '../utils';
|
|
|
|
import { IAnalysisResult } from '../models/analysis';
|
|
|
|
import { IWorkSheetTemplate, IWorkSheet, IReserved } from '../models/worksheet';
|
|
|
|
|
|
|
|
|
2022-04-04 02:54:31 +08:00
|
|
|
import { useApiUtil } from '../composables'
|
2022-04-01 04:29:09 +08:00
|
|
|
|
2022-06-19 15:21:50 +08:00
|
|
|
const { withClientQuery, withClientMutation } = useApiUtil()
|
2022-04-01 04:29:09 +08:00
|
|
|
|
|
|
|
export const useWorksheetStore = defineStore('worksheet', {
|
|
|
|
state: () => {
|
|
|
|
return {
|
|
|
|
workSheetTemplates: [],
|
2022-04-15 16:32:24 +08:00
|
|
|
fetchingWorkSheetTemplates: false,
|
2022-04-01 04:29:09 +08:00
|
|
|
workSheets: [],
|
2022-04-15 16:32:24 +08:00
|
|
|
fetchingWorkSheets: false,
|
2022-04-01 04:29:09 +08:00
|
|
|
workSheet: undefined,
|
|
|
|
workSheetCount: 0,
|
|
|
|
workSheetPageInfo: undefined,
|
2022-06-19 04:29:47 +08:00
|
|
|
fetchingAnalysisResults: false,
|
|
|
|
analysisResults: [], // for WS Assign
|
|
|
|
analysisResultCount: 0,
|
|
|
|
analysisResultPageInfo: undefined,
|
2022-04-01 04:29:09 +08:00
|
|
|
} as {
|
|
|
|
workSheetTemplates: IWorkSheetTemplate[];
|
2022-04-15 16:32:24 +08:00
|
|
|
fetchingWorkSheetTemplates: boolean;
|
2022-04-01 04:29:09 +08:00
|
|
|
workSheets: IWorkSheet[];
|
2022-04-15 16:32:24 +08:00
|
|
|
fetchingWorkSheets: boolean;
|
2022-04-01 04:29:09 +08:00
|
|
|
workSheet?: IWorkSheet;
|
|
|
|
workSheetCount: number;
|
|
|
|
workSheetPageInfo?: any;
|
2022-06-19 04:29:47 +08:00
|
|
|
fetchingAnalysisResults?: boolean;
|
|
|
|
analysisResults: IAnalysisResult[];
|
|
|
|
analysisResultCount: number;
|
|
|
|
analysisResultPageInfo?: any;
|
2022-04-01 04:29:09 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
getters: {
|
|
|
|
getWorkSheetTemplates: (state) => state.workSheetTemplates,
|
|
|
|
getWorkSheets: (state) => sortWorksheets(state.workSheets),
|
|
|
|
getWorkSheet: (state) => state.workSheet,
|
|
|
|
getWorkSheetByUid: (state) => (uid: number) => state.workSheets?.find(ws => ws.uid === uid),
|
|
|
|
getWorkSheetCount: (state) => state.workSheetCount,
|
|
|
|
getWorkSheetPageInfo: (state) => state.workSheetPageInfo,
|
2022-06-19 04:29:47 +08:00
|
|
|
getAnalysisResults: (state) => state.analysisResults,
|
|
|
|
getAnalysisResultCount: (state) => state.analysisResultCount,
|
|
|
|
getAnalysisResultPageInfo: (state) => state.analysisResultPageInfo,
|
2022-04-01 04:29:09 +08:00
|
|
|
},
|
|
|
|
actions: {
|
|
|
|
|
|
|
|
// WorkSheet Templates
|
|
|
|
async fetchWorkSheetTemplates(){
|
2022-04-15 16:32:24 +08:00
|
|
|
this.fetchingWorkSheetTemplates = true;
|
2022-04-04 02:54:31 +08:00
|
|
|
await withClientQuery(GET_ALL_WORKSHEET_TEMPLATES, {}, "worksheetTemplateAll")
|
2022-04-01 04:29:09 +08:00
|
|
|
.then(payload => {
|
2022-04-15 16:32:24 +08:00
|
|
|
this.fetchingWorkSheetTemplates = false;
|
2022-04-01 04:29:09 +08:00
|
|
|
payload?.forEach((template: IWorkSheetTemplate) => {
|
|
|
|
const data: any = template.reserved;
|
|
|
|
const reserved = Object.entries(parseData(data)) as any[];
|
|
|
|
let new_res: IReserved[] = [];
|
|
|
|
reserved?.forEach(item => new_res.push(keysToCamel(item[1]) as IReserved || {}));
|
|
|
|
template.reserved = new_res;
|
|
|
|
});
|
|
|
|
this.workSheetTemplates = payload;
|
2022-04-15 16:32:24 +08:00
|
|
|
}).catch(err => this.fetchingWorkSheetTemplates = false);
|
2022-04-01 04:29:09 +08:00
|
|
|
},
|
|
|
|
updateWorksheetTemplate(payload){
|
|
|
|
const index = this.workSheetTemplates.findIndex(x => x.uid === payload.uid);
|
|
|
|
const data: any = payload.reserved;
|
|
|
|
const reserved = Object.entries(parseData(data)) as any[];
|
|
|
|
let new_res: IReserved[] = [];
|
|
|
|
reserved?.forEach(item => new_res.push(item[1] as IReserved || {}));
|
|
|
|
payload.reserved = new_res;
|
|
|
|
this.workSheetTemplates[index] = payload;
|
|
|
|
},
|
|
|
|
addWorksheetTemplate(payload ){
|
|
|
|
const data: any = payload.reserved;
|
|
|
|
const reserved = Object.entries(parseData(data)) as any[];
|
|
|
|
let new_res: IReserved[] = [];
|
|
|
|
reserved?.forEach(item => new_res.push(item[1] as IReserved || {}));
|
|
|
|
payload.reserved = new_res;
|
2022-04-09 22:57:06 +08:00
|
|
|
this.workSheetTemplates?.push(payload);
|
2022-04-01 04:29:09 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
// WorkSheets
|
|
|
|
async fetchWorkSheets(params){
|
2022-04-15 16:32:24 +08:00
|
|
|
this.fetchingWorkSheets = true;
|
2022-04-04 02:54:31 +08:00
|
|
|
await withClientQuery(GET_ALL_WORKSHEETS, params, undefined)
|
2022-04-01 04:29:09 +08:00
|
|
|
.then(payload => {
|
2022-04-15 16:32:24 +08:00
|
|
|
this.fetchingWorkSheets = false;
|
2022-04-01 04:29:09 +08:00
|
|
|
const page = payload.worksheetAll
|
|
|
|
const worksheets = page.items;
|
|
|
|
if(params.filterAction){
|
|
|
|
this.workSheets = [];
|
|
|
|
this.workSheets = worksheets;
|
|
|
|
} else {
|
|
|
|
this.workSheets = addListsUnique(this.workSheets, worksheets, "uid");
|
|
|
|
}
|
2022-04-11 17:46:07 +08:00
|
|
|
this.workSheetCount = page?.totalCount;
|
|
|
|
this.workSheetPageInfo = page?.pageInfo;
|
2022-04-15 16:32:24 +08:00
|
|
|
}).catch(err => this.fetchingWorkSheets = false);
|
2022-04-01 04:29:09 +08:00
|
|
|
},
|
2022-04-09 22:57:06 +08:00
|
|
|
async fetchWorksheetByUid(worksheetUid: number){
|
|
|
|
await withClientQuery(GET_WORKSHEET_BY_UID, { worksheetUid }, "worksheetByUid")
|
2022-04-01 04:29:09 +08:00
|
|
|
.then(payload => this.workSheet = sortAnalysisResults(payload));
|
|
|
|
},
|
|
|
|
addWorksheet(payload){
|
2022-04-09 22:57:06 +08:00
|
|
|
payload.worksheets?.forEach(worksheet => this.workSheets?.unshift(worksheet))
|
2022-04-01 04:29:09 +08:00
|
|
|
},
|
|
|
|
removeWorksheet(){
|
|
|
|
this.workSheet = undefined
|
|
|
|
},
|
2022-06-19 15:21:50 +08:00
|
|
|
async updateWorksheet(payload){
|
|
|
|
await withClientMutation(WORKSHEET_UPDATE, payload, "updateWorksheet")
|
|
|
|
.then(payload => {
|
|
|
|
});
|
|
|
|
},
|
2022-04-09 22:57:06 +08:00
|
|
|
updateWorksheetResultsStatus(payload){
|
|
|
|
payload?.forEach(result => {
|
|
|
|
this.workSheet?.analysisResults.forEach((wsResult, index) => {
|
|
|
|
if(wsResult?.uid == result.uid) {
|
|
|
|
wsResult.status = result.status;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
2022-04-14 03:01:13 +08:00
|
|
|
backgroundProcessing(payload, worksheetUid: any){
|
|
|
|
payload?.forEach(result => {
|
|
|
|
this.workSheet?.analysisResults.forEach((wsResult, index) => {
|
|
|
|
if(wsResult?.uid == result.uid) {
|
|
|
|
wsResult.status = "processing";
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
if(worksheetUid){
|
|
|
|
if(this.workSheet?.uid === worksheetUid){
|
|
|
|
this.workSheet!.state = "processing";
|
|
|
|
}
|
|
|
|
const index = this.workSheets.findIndex(x => x.uid === worksheetUid);
|
|
|
|
if(index > -1) {
|
|
|
|
this.workSheets[index].state = "processing";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2022-06-19 04:29:47 +08:00
|
|
|
|
|
|
|
// Analyses for WS Assign
|
|
|
|
async fetchForWorkSheetsAssign(params){
|
|
|
|
this.fetchingAnalysisResults = true;
|
|
|
|
await withClientQuery(GET_ANALYSIS_RESULTS_FOR_WS_ASSIGN, params, undefined)
|
|
|
|
.then(payload => {
|
|
|
|
this.fetchingAnalysisResults = false;
|
|
|
|
const page = payload.analysisResultsForWsAssign
|
|
|
|
const results = page.items;
|
|
|
|
if(params.filterAction){
|
|
|
|
this.analysisResults = [];
|
|
|
|
this.analysisResults = results;
|
|
|
|
} else {
|
|
|
|
this.analysisResults = results; // addListsUnique(this.analysisResults, results, "uid");
|
|
|
|
}
|
|
|
|
this.analysisResultCount = page?.totalCount;
|
|
|
|
this.analysisResultPageInfo = page?.pageInfo;
|
|
|
|
}).catch(err => this.fetchingAnalysisResults = false);
|
|
|
|
},
|
2022-04-01 04:29:09 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
function sortAnalysisResults(ws: any): IWorkSheet {
|
|
|
|
ws.analysisResults = ws?.analysisResults?.sort((a: IAnalysisResult, b: IAnalysisResult) => {
|
|
|
|
if(a.worksheetPosition === b.worksheetPosition) {
|
|
|
|
return (a?.uid || 0) > (b?.uid || 0) ? 1 : -1;
|
|
|
|
}
|
|
|
|
return (a?.worksheetPosition || 0) > (b?.worksheetPosition || 1) ? 1 : -1
|
|
|
|
});
|
|
|
|
return ws;
|
|
|
|
}
|
|
|
|
|
|
|
|
function sortWorksheets(ws: IWorkSheet[]): IWorkSheet[] {
|
|
|
|
return ws?.sort((a: IWorkSheet, b: IWorkSheet) => (a?.uid || 0) < (b?.uid || 0) ? 1 : -1);
|
|
|
|
}
|