Commit e831c259b6512c1f24f6f3c231a86f35408ce227
1 parent
065611f7
Exists in
master
and in
1 other branch
- links in the sidebar start new topic
Showing
5 changed files
with
18 additions
and
8 deletions
Show diff stats
BUGS.md
1 | 1 | |
2 | 2 | BUGS: |
3 | 3 | |
4 | -- topicos no sidebar devem ser links para iniciar um topico acessivel. os inacessiveis devem estar inactivos. | |
5 | 4 | - tabs em textarea nao funcionam correctamente (insere 1 espaco em vez de 4) |
6 | 5 | - reportar comentarios após submeter. |
6 | +- os topicos locked devem estar inactivos no sidebar. | |
7 | 7 | - textarea deve mostrar no html os valores iniciais de ans, se existir |
8 | 8 | - detect questions in questions.yaml without ref -> error ou generate default. |
9 | 9 | - error if demo.yaml has no topics |
... | ... | @@ -21,6 +21,7 @@ TODO: |
21 | 21 | |
22 | 22 | FIXED: |
23 | 23 | |
24 | +- topicos no sidebar devem ser links para iniciar um topico acessivel. | |
24 | 25 | - logs inicio de topico |
25 | 26 | - indicar o topico actual no sidebar |
26 | 27 | - reload da página rebenta o estado. | ... | ... |
app.py
... | ... | @@ -141,6 +141,11 @@ class LearnApp(object): |
141 | 141 | |
142 | 142 | return q['grade'] |
143 | 143 | |
144 | + # ------------------------------------------------------------------------ | |
145 | + # Start new topic | |
146 | + # ------------------------------------------------------------------------ | |
147 | + def start_topic(self, uid, topic): | |
148 | + self.online[uid]['state'].start_topic(topic) | |
144 | 149 | |
145 | 150 | # ------------------------------------------------------------------------ |
146 | 151 | # Fill db table 'Topic' with topics from the graph if not already there. | ... | ... |
knowledge.py
... | ... | @@ -39,13 +39,15 @@ class Knowledge(object): |
39 | 39 | # Start a new topic. If not provided, selects the first with level < 0.8 |
40 | 40 | # If all levels > 0.8, will stay in the last one forever... |
41 | 41 | # ------------------------------------------------------------------------ |
42 | - def start_topic(self, topic=None): | |
43 | - if topic is None: | |
42 | + def start_topic(self, topic=''): | |
43 | + print(f'knowledge.start_topic "{topic}"') | |
44 | + if not topic: | |
44 | 45 | for topic in self.topic_sequence: |
45 | 46 | unlocked = topic in self.state |
46 | 47 | needs_work = unlocked and self.state[topic]['level'] < 0.8 |
47 | 48 | factory = self.depgraph.node[topic]['factory'] |
48 | - if needs_work and factory: | |
49 | + print(f'{topic}, unlocked={unlocked}, needs_work={needs_work}') | |
50 | + if factory and (not unlocked or needs_work): | |
49 | 51 | break |
50 | 52 | # logger.info(f'{self.student} skipped topic "{topic}"') |
51 | 53 | else: |
... | ... | @@ -53,7 +55,7 @@ class Knowledge(object): |
53 | 55 | # FIXME if factory is empty??? |
54 | 56 | |
55 | 57 | self.current_topic = topic |
56 | - logger.info(f'User "{self.student}" topic set to "{topic}"') | |
58 | + logger.info(f'User "{self.student}" topic = "{topic}"') | |
57 | 59 | |
58 | 60 | # generate question instances for current topic |
59 | 61 | questionlist = self.depgraph.node[topic]['questions'] | ... | ... |
serve.py
... | ... | @@ -120,6 +120,8 @@ class LearnHandler(BaseHandler): |
120 | 120 | @tornado.web.authenticated |
121 | 121 | def get(self): |
122 | 122 | uid = self.current_user |
123 | + topic = self.get_query_argument('topic', default='') | |
124 | + self.learn.start_topic(uid, topic) | |
123 | 125 | self.render('learn.html', |
124 | 126 | uid=uid, |
125 | 127 | name=self.learn.get_student_name(uid), |
... | ... | @@ -204,7 +206,7 @@ class QuestionHandler(BaseHandler): |
204 | 206 | } |
205 | 207 | |
206 | 208 | @tornado.web.authenticated |
207 | - def get(self): | |
209 | + def get(self, topic=''): | |
208 | 210 | self.write(self.new_question(self.current_user)) |
209 | 211 | |
210 | 212 | # handles answer posted | ... | ... |
templates/topics.html
... | ... | @@ -8,14 +8,14 @@ |
8 | 8 | {% if t[0] == current_topic %} |
9 | 9 | <li class="active"> <!-- class="active" class="disabled" --> |
10 | 10 | |
11 | - <a> {{ gettopicname(t[0]) }}<br> | |
11 | + <a href="#"> {{ gettopicname(t[0]) }}<br> | |
12 | 12 | {{ round(t[1]*5)*'<i class="fa fa-star text-success" aria-hidden="true"></i>' + round(5-t[1]*5)*'<i class="fa fa-star-o" aria-hidden="true"></i>' }} |
13 | 13 | </a> |
14 | 14 | |
15 | 15 | {% else %} |
16 | 16 | <li> <!-- class="active" class="disabled" --> |
17 | 17 | |
18 | - <a href="#"> {{ gettopicname(t[0]) }}<br> | |
18 | + <a href="/?topic={{ t[0] }}"> {{ gettopicname(t[0]) }}<br> | |
19 | 19 | {{ round(t[1]*5)*'<i class="fa fa-star text-success" aria-hidden="true"></i>' + round(5-t[1]*5)*'<i class="fa fa-star-o" aria-hidden="true"></i>' }} |
20 | 20 | </a> |
21 | 21 | ... | ... |