From 3c239f559526490cc330494ee0dd10032b428bfa Mon Sep 17 00:00:00 2001 From: educoder_weapp Date: Sun, 20 Oct 2019 12:02:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=8F=98=E9=A1=B5=E9=9D=A2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/class.js | 4 ++- model/presence.js | 6 ++++ model/studentclassmap.js | 17 +++++++++++ pages/classes/classes.js | 5 ++- pages/classroom/classroom.js | 56 ++++++++++++++++++---------------- pages/classroom/classroom.wxml | 4 +-- 6 files changed, 62 insertions(+), 30 deletions(-) create mode 100644 model/studentclassmap.js diff --git a/model/class.js b/model/class.js index 2da7d9f..b8d0e97 100644 --- a/model/class.js +++ b/model/class.js @@ -1,5 +1,5 @@ const AV = require('../lib/av-live-query-weapp-min'); -const Presence = require("./presence") +const Presence = require("./presence") class Class extends AV.Object{ get name(){ @@ -22,6 +22,8 @@ class Class extends AV.Object{ } enter() { this.leave(); + console.log("class.enter"); + console.log(AV.User.current()); this._presence = new Presence({ user: AV.User.current(), class: this diff --git a/model/presence.js b/model/presence.js index 129e0d4..a7add19 100644 --- a/model/presence.js +++ b/model/presence.js @@ -13,6 +13,12 @@ class Presence extends AV.Object{ get class(){ return this.get("class"); } + set isasking(value){ + this.set("isasking", value); + } + get isasking(){ + return this.get("isasking"); + } } AV.Object.register(Presence, "Presence"); diff --git a/model/studentclassmap.js b/model/studentclassmap.js new file mode 100644 index 0000000..ccecdda --- /dev/null +++ b/model/studentclassmap.js @@ -0,0 +1,17 @@ +const AV = require("../..//lib/av-live-query-weapp-min") + + +class StudentClassMap extends AV.Object{ + get class(){ + return this.get("class"); + } + set class(value){ + this.set("class", value); + } + get user(){ + return this.get("user"); + } + set user(value){ + this.set("user", value); + } +} \ No newline at end of file diff --git a/pages/classes/classes.js b/pages/classes/classes.js index aa29363..cfca575 100644 --- a/pages/classes/classes.js +++ b/pages/classes/classes.js @@ -37,7 +37,10 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad: function (options) { - login(); + login().then((user)=>{ + console.log(user); + console.log(AV.User.current()); + }); }, /** diff --git a/pages/classroom/classroom.js b/pages/classroom/classroom.js index 015e05d..f0ba9ec 100644 --- a/pages/classroom/classroom.js +++ b/pages/classroom/classroom.js @@ -11,6 +11,8 @@ Page({ student.objectId 该学生的主键,唯一 student.username 学生的用户名,是唯一,就像微信号一样 student.name 学生的姓名 + student.present 是否出席 + student.isasking :0:没有提问,1:提问,2:请回答 */ presence: null, students: [], @@ -18,15 +20,14 @@ Page({ class_id: null, data: { //以下数据的同步由该代码文件实现,数据的呈现由classroom.wxml实现 - //命名可能有点混乱...... - present_students: [], - // 出席的学生的用户名即上文提及的student.username,考虑弃用,建议替换为presen_stu_ids - present_stu_ids: [], //出席的学生的主键objectId students: [], // 该课程所有的学生, 元素类型见上文中的student - present_stus: [], //出席的学生,元素类型与students中的一样 - unpresent_students: [], //没有出席的学生的用户名,不建议使用该数据,弃用 - class_name: "",//课程名称 - class_id: "",//该课程的主键(编号) + current_user: null, //目前登陆的用户,类型为对象,属性有objectId,username, name + teacher: null, + //该课程教员,类型为对象 + //请在进入界面时判断用户是否为教员以给与权限或更改界面 + //属性如下:objectId, username, name + class_name: "", //课程名称 + class_id: "", //该课程的主键(编号) }, pull_present: function(){ @@ -36,31 +37,32 @@ Page({ query.include("user"); set_present = this.set_present.bind(this); return AV.Promise.all([query.find().then(set_present), query.subscribe()]).then(([presents, subscription])=>{ - this.subscription = subscription; - if(this.presenceUnbind) this.unbind(); - this.presenceUnbind = bind(subscription, presents, set_present); + this.PresentSubscription = subscription; + if(this.presentUnbind) this.presentUnbind(); + this.presentUnbind = bind(subscription, presents, set_present); }).catch(error=> console.error(error.message)); }, set_present: function(presents){ //console.log("set_present"); //console.log(presents); - var student_ids = presents.map((present)=>{ + var is_asking={}; + var present_stu_ids = presents.map((present)=>{ user = present.get("user"); - //console.log(user); - //console.log(typeof user); + is_asking[user.id]=present.get("isasking"); return user.id; - //return user.get("username"); }); - //console.log("student_ids:"+student_ids.toString()); - //console.log("students:"+this.students); - present_stus = this.students.filter(student=> student_ids.indexOf(student.id)>-1) - //console.log(present_stus); - present_stu_usernames = present_stus.map(stu => stu.get("username")); - present_stu_ids = present_stus.map(stu=>stu.id) - this.setData({ - present_stu_ids: present_stu_ids, - present_students: present_stu_usernames}); - this.setData(jsonify({present_stus})); + students = this.students.map((student)=>{ + if(present_stu_ids.indexOf(student.id)>-1){ + student.set("ispresent",true); + student.set("isasking", is_asking[student.id]); + }else{ + student.set("ispresent",false); + student.set("isasking", 0); + } + + return student; + }) + this.setData(jsonify({students})); return presents; }, @@ -119,6 +121,7 @@ Page({ onShow: function () { console.log("onShow"); console.log("enter class when onShow"); + console.log(AV.User.current()); this.class.enter(); }, @@ -136,7 +139,8 @@ Page({ onUnload: function () { this.class.leave(); console.log("onUnload"); - + this.PresentSubscription.unsubscribe(); + this.presentUnbind(); }, /** diff --git a/pages/classroom/classroom.wxml b/pages/classroom/classroom.wxml index 0213ae7..c2fd462 100644 --- a/pages/classroom/classroom.wxml +++ b/pages/classroom/classroom.wxml @@ -1,9 +1,9 @@ -pages/classroom/classroom.wxml +pages/classroom/classroom.wxml{{class_name}}{{class_id}} - {{student.username}} + {{student.username}} {{student.ispresent}} {{student.isasking}}