Skip to content

Commit

Permalink
add tab copy
Browse files Browse the repository at this point in the history
  • Loading branch information
as6325400 committed Jul 6, 2024
1 parent 5ffdf67 commit 4d792f1
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 62 deletions.
9 changes: 7 additions & 2 deletions src/components/pages/main/classTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,10 @@
</tr>
</thead>
<tbody v-if="show">
<tr v-for="row in TotalCourseData[activeIndex].classStorage" :key="row.id">
<tr
v-for="row in TotalCourseData[activeIndex]
.classStorage"
:key="row.id">
<courseCard
v-for="item in row"
:key="item.id"
Expand Down Expand Up @@ -179,7 +182,9 @@ const close_credit = () => store.dispatch("hidden_credit");
// let course_data = computed(() => store.state.course.classStorage);
// let courseList = computed(() => store.state.course.classListStorage);
// let credit = computed(() => store.state.course.credit);
let TotalCourseData = computed(() => store.state.course.TotalCourseData);
let TotalCourseData = computed(
() => store.state.course.TotalCourseData,
);
let activeIndex = computed(() => store.state.course.activeIndex);
const hidden = () => {
Expand Down
12 changes: 9 additions & 3 deletions src/components/pages/main/inputArea.vue
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,9 @@ const setSearchTimeMode = (flag) =>
store.dispatch("setTimeSearchMode", flag);
// let courseList = computed(() => store.state.course.classListStorage);
// let credit = computed(() => store.state.course.credit);
let TotalCourseData = computed(() => store.state.course.TotalCourseData);
let TotalCourseData = computed(
() => store.state.course.TotalCourseData,
);
let activeIndex = computed(() => store.state.course.activeIndex);
const searchSem = ref("選擇課表學期");
Expand Down Expand Up @@ -231,7 +233,9 @@ const getDisplayField = (item, optionId) => {
};
const filteredCourseList = computed(() => {
return TotalCourseData.value[activeIndex.value].classListStorage.map((item) => {
return TotalCourseData.value[
activeIndex.value
].classListStorage.map((item) => {
item["displayField1"] = getDisplayField(
item,
showListOptionDefault1.value,
Expand Down Expand Up @@ -268,7 +272,9 @@ onMounted(async () => {
searchSem.value = semList.value[semList.value.length - 1];
console.log(TotalCourseData.value[activeIndex.value]);
console.log(activeIndex.value);
let temp_list = _.cloneDeep(TotalCourseData.value[activeIndex.value].classListStorage);
let temp_list = _.cloneDeep(
TotalCourseData.value[activeIndex.value].classListStorage,
);
let update = false;
for (let i = 0; i < temp_list.length; i++) {
let obj = temp_list[i].courseData;
Expand Down
12 changes: 9 additions & 3 deletions src/functions/course_add.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ const env = import.meta.env;
// and return the status of the operation

export function classconflict(course: any) {
let table: Course[][] = store.state.course.TotalCourseData[store.state.course.activeIndex].classStorage;
let table: Course[][] =
store.state.course.TotalCourseData[store.state.course.activeIndex]
.classStorage;
let time = splittime(course.class_time);
for (let i = 0; i < time.length; i++) {
let weekDayIndex = WeekDayToInt[time[i][0]]; // 2 is the offset of the first two columns
Expand Down Expand Up @@ -53,7 +55,9 @@ function courseAdd(
// return the status of the operation
let activeIndex = store.state.course.activeIndex;
let TotalCourseData = store.state.course.TotalCourseData;
let table = _.cloneDeep(toRaw(TotalCourseData[activeIndex].classStorage));
let table = _.cloneDeep(
toRaw(TotalCourseData[activeIndex].classStorage),
);
let Uuid = uuidv4();
let course = new Course({
start_time: courseToTime[start],
Expand Down Expand Up @@ -104,7 +108,9 @@ function searchAdd(course_list: Course[]) {
// console.log(course_list);
let activeIndex = store.state.course.activeIndex;
let TotalCourseData = store.state.course.TotalCourseData;
let table = _.cloneDeep(toRaw(TotalCourseData[activeIndex].classStorage));
let table = _.cloneDeep(
toRaw(TotalCourseData[activeIndex].classStorage),
);
// put the list of courses into the table
for (let i = 0; i < course_list.length; i++) {
let course = course_list[i];
Expand Down
2 changes: 1 addition & 1 deletion src/functions/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -349,4 +349,4 @@ export function getArrayShape(array: any) {
}

return shape;
}
}
133 changes: 88 additions & 45 deletions src/store/course.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,23 +53,24 @@ function Transfer_class_list(data: any) {
}

// 僅回傳值
function OldDataTransfer() : Array<CourseData> {
function OldDataTransfer(): Array<CourseData> {
console.log("OldDataTransfer");
let courseTable: string | null = localStorage.getItem("courseTable");
let courseTable: string | null =
localStorage.getItem("courseTable");
let courseList: string | null = localStorage.getItem("courseList");
let creditL: string | null = localStorage.getItem("credit");
if(courseTable != null || courseList != null || creditL != null){
console.log("not null")
if (courseTable != null || courseList != null || creditL != null) {
console.log("not null");
localStorage.removeItem("courseTable");
localStorage.removeItem("courseList");
localStorage.removeItem("credit");
let TotalCourseData : Array<CourseData> = [];
let TotalCourseData: Array<CourseData> = [];
TotalCourseData.push({
name: "課表",
id: uuidv4(),
classStorage: rowspanize(Transfer(JSON.parse(courseTable!))),
classListStorage: Transfer_class_list(JSON.parse(courseList!)),
credit: Number(creditL)
credit: Number(creditL),
});
return TotalCourseData;
}
Expand All @@ -79,17 +80,15 @@ function OldDataTransfer() : Array<CourseData> {
id: uuidv4(),
classStorage: rowspanize(InitTable()),
classListStorage: [],
credit: 0
}
credit: 0,
},
];
}



const store: Module<State, any> = {
state: {
show: false,
TotalCourseData:[],
TotalCourseData: [],
show_ColorPick: false,
chooseCard: null,
cardMode: 0,
Expand All @@ -102,7 +101,7 @@ const store: Module<State, any> = {
runConflict: 0,
selectedYear: 113,
selectedSemester: 1,
activeIndex: 0
activeIndex: 0,
},
mutations: {
set_yearNsemester(state: State, data: Array<number>) {
Expand All @@ -126,17 +125,25 @@ const store: Module<State, any> = {
let TotalCourseData = localStorage.getItem("TotalCourseData");
// 無資料或者是僅有舊資料
console.log(TotalCourseData);
if(TotalCourseData === null){
if (TotalCourseData === null) {
console.log("initAll debug");
state.TotalCourseData = OldDataTransfer();
console.log(state.TotalCourseData);
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
return;
}
state.TotalCourseData = JSON.parse(TotalCourseData);
for(let i = 0; i < state.TotalCourseData.length; i++){
state.TotalCourseData[i].classStorage = rowspanize(Transfer(state.TotalCourseData[i].classStorage));
state.TotalCourseData[i].classListStorage = Transfer_class_list(state.TotalCourseData[i].classListStorage);
for (let i = 0; i < state.TotalCourseData.length; i++) {
state.TotalCourseData[i].classStorage = rowspanize(
Transfer(state.TotalCourseData[i].classStorage),
);
state.TotalCourseData[i].classListStorage =
Transfer_class_list(
state.TotalCourseData[i].classListStorage,
);
}
},
// initCourseFromLocalstorage(state: State) {
Expand All @@ -159,15 +166,22 @@ const store: Module<State, any> = {
// console.log(state.classStorage);
state.TotalCourseData[state.activeIndex].classStorage = data;
// console.log(state.classStorage);
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
clearCourse(state: State) {
// console.log("clear")
state.TotalCourseData[state.activeIndex].classStorage = rowspanize(InitTable());
state.TotalCourseData[state.activeIndex].classStorage =
rowspanize(InitTable());
state.TotalCourseData[state.activeIndex].classListStorage = [];
state.TotalCourseData[state.activeIndex].credit = 0;
state.chooseCard = null;
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
// state.classStorage = InitTable();
// rowspanize(state.classStorage);
// console.log(state.classStorage)
Expand Down Expand Up @@ -199,17 +213,23 @@ const store: Module<State, any> = {
// state.classListStorage = Transfer_class_list(data);
// },
addCourseList(state: State, Class: Course) {
state.TotalCourseData[state.activeIndex].classListStorage.push(Class);
state.TotalCourseData[state.activeIndex].classListStorage.push(
Class,
);
// state.classListStorage.push(Class);
// localStorage.setItem(
// "courseList",
// JSON.stringify(state.classListStorage),
// );
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
deleteCourseList(state: State, Class: Course) {
// let List = state.classListStorage;
let List = state.TotalCourseData[state.activeIndex].classListStorage;
let List =
state.TotalCourseData[state.activeIndex].classListStorage;
let temp: Array<Course> = [];
for (let i = 0; i < List.length; i++) {
if (List[i].getUuid() == Class.getUuid()) {
Expand All @@ -219,12 +239,16 @@ const store: Module<State, any> = {
}
}
// state.classListStorage = temp;
state.TotalCourseData[state.activeIndex].classListStorage = temp;
state.TotalCourseData[state.activeIndex].classListStorage =
temp;
// localStorage.setItem(
// "courseList",
// JSON.stringify(state.classListStorage),
// );
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
// initCredit(state: State) {
// let creditL: string | null = localStorage.getItem("credit");
Expand All @@ -240,7 +264,10 @@ const store: Module<State, any> = {
state.TotalCourseData[state.activeIndex].credit += delta;
// console.log(state.credit, delta)
// localStorage.setItem("credit", state.credit.toString());
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
changeShowColorPick(state: State, Bool: boolean) {
state.show_ColorPick = Bool;
Expand Down Expand Up @@ -278,58 +305,74 @@ const store: Module<State, any> = {
// "courseList",
// JSON.stringify(state.classListStorage),
// );
state.TotalCourseData[state.activeIndex].classListStorage = data;
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
state.TotalCourseData[state.activeIndex].classListStorage =
data;
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
setactiveIndex(state: State, index: number) {
state.activeIndex = index;
},
addTabs(state: State, id: string | null) {
if(id == null){
if (id == null) {
state.TotalCourseData.push({
name: `課表${state.TotalCourseData.length + 1}`,
id: uuidv4(),
classStorage: rowspanize(InitTable()),
classListStorage: [],
credit: 0
credit: 0,
});
state.activeIndex = state.TotalCourseData.length - 1;
}else{
} else {
console.log(state.TotalCourseData);
let length = state.TotalCourseData.length;
for(let i = 0; i < length; i++){
if(state.TotalCourseData[i].id == id){
state.TotalCourseData.push(_.cloneDeep(toRaw(state.TotalCourseData[i])));
for (let i = 0; i < length; i++) {
if (state.TotalCourseData[i].id == id) {
state.TotalCourseData.push(
_.cloneDeep(toRaw(state.TotalCourseData[i])),
);
state.activeIndex = state.TotalCourseData.length - 1;
state.TotalCourseData[state.activeIndex].id = uuidv4();
state.TotalCourseData[state.activeIndex].name = state.TotalCourseData[state.activeIndex].name + " copy";
state.TotalCourseData[state.activeIndex].id = uuidv4();
state.TotalCourseData[state.activeIndex].name =
state.TotalCourseData[state.activeIndex].name + " copy";
break;
}
}
console.log(state.TotalCourseData);
}
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
deleteTabs(state: State, id: string) {
let temp: Array<CourseData> = [];
for(let i = 0; i < state.TotalCourseData.length; i++){
if(state.TotalCourseData[i].id != id){
for (let i = 0; i < state.TotalCourseData.length; i++) {
if (state.TotalCourseData[i].id != id) {
temp.push(state.TotalCourseData[i]);
}
}
state.TotalCourseData = temp;
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
renameTabs(state: State, data: any) {
let id = data.id;
let name = data.name;
for(let i = 0; i < state.TotalCourseData.length; i++){
if(state.TotalCourseData[i].id == id){
for (let i = 0; i < state.TotalCourseData.length; i++) {
if (state.TotalCourseData[i].id == id) {
state.TotalCourseData[i].name = name;
}
}
localStorage.setItem("TotalCourseData", JSON.stringify(state.TotalCourseData));
}
localStorage.setItem(
"TotalCourseData",
JSON.stringify(state.TotalCourseData),
);
},
},
actions: {
set_yearNsemester(context: any, data: Array<number>) {
Expand Down Expand Up @@ -427,7 +470,7 @@ const store: Module<State, any> = {
},
renameTabs(context: any, data: any) {
context.commit("renameTabs", data);
}
},
},
};

Expand Down
Loading

0 comments on commit 4d792f1

Please sign in to comment.