From 1bf57da6f3e34fd264b0762c3754ad2f21d07bb6 Mon Sep 17 00:00:00 2001
From: akavm <max.henze@student.uni-halle.de>
Date: Sat, 19 Dec 2020 13:35:15 +0100
Subject: [PATCH] Iteration

---
 week03/app/controllers/modules.js             |  4 +
 week03/app/router.js                          |  1 +
 week03/app/routes/modules.js                  | 92 +++++++++++++++++++
 week03/app/styles/app.scss                    | 10 ++
 week03/app/templates/modules.hbs              | 55 +++++++++++
 week03/tests/unit/controllers/modules-test.js | 12 +++
 week03/tests/unit/routes/modules-test.js      | 11 +++
 7 files changed, 185 insertions(+)
 create mode 100644 week03/app/controllers/modules.js
 create mode 100644 week03/app/routes/modules.js
 create mode 100644 week03/app/templates/modules.hbs
 create mode 100644 week03/tests/unit/controllers/modules-test.js
 create mode 100644 week03/tests/unit/routes/modules-test.js

diff --git a/week03/app/controllers/modules.js b/week03/app/controllers/modules.js
new file mode 100644
index 0000000..cec9059
--- /dev/null
+++ b/week03/app/controllers/modules.js
@@ -0,0 +1,4 @@
+import Controller from '@ember/controller';
+
+export default class ModulesController extends Controller {
+}
diff --git a/week03/app/router.js b/week03/app/router.js
index 83186bc..039e702 100644
--- a/week03/app/router.js
+++ b/week03/app/router.js
@@ -8,4 +8,5 @@ export default class Router extends EmberRouter {
 
 Router.map(function() {
   this.route('login');
+  this.route('modules');
 });
diff --git a/week03/app/routes/modules.js b/week03/app/routes/modules.js
new file mode 100644
index 0000000..4c01cab
--- /dev/null
+++ b/week03/app/routes/modules.js
@@ -0,0 +1,92 @@
+import Route from '@ember/routing/route';
+
+export default class ModulesRoute extends Route {
+    model() {
+        return [
+          {
+            code: 'INF.06528.01',
+            name: 'Cient-seitige Web-Anwendungen',
+            actions: {
+                'delete': {
+                    title: 'Delete this module',
+                    icon: 'mdi mdi-delete warning'
+                }
+            },
+            sections: {
+                'dates': {
+                    title: 'Show all dates',
+                    icon: 'mdi mdi-calendar-clock'
+                },
+                'documents': {
+                    title: 'Show all documents',
+                    icon: 'mdi mdi-file-document-box-multiple-outline'
+                },
+                'excercises': {
+                    title: 'Show all excercises',
+                    icon: 'mdi mdi-test-tube'
+                },
+                'participants': {
+                    title: 'Show all participants',
+                    icon: 'mdi mdi-account-multiple'
+                }
+            }
+          },
+          {
+            code: 'INF.05370.01',
+            name: 'Informatik in den Geistes- und Kulturwissenschaften',
+            actions: {
+                'delete': {
+                    title: 'Delete this module',
+                    icon: 'mdi mdi-delete warning'
+                }
+            },
+            sections: {
+                'dates': {
+                    title: 'Show all dates',
+                    icon: 'mdi mdi-calendar-clock'
+                },
+                'documents': {
+                    title: 'Show all documents',
+                    icon: 'mdi mdi-file-document-box-multiple-outline'
+                },
+                'excercises': {
+                    title: 'Show all excercises',
+                    icon: 'mdi mdi-test-tube'
+                },
+                'participants': {
+                    title: 'Show all participants',
+                    icon: 'mdi mdi-account-multiple'
+                }
+            }  
+          },
+          {
+            code: 'INF.06450.01',
+            name: 'eHumanities Grundlagen',
+            actions: {
+                'delete': {
+                    title: 'Delete this module',
+                    icon: 'mdi mdi-delete warning'
+                }
+            },
+            sections: {
+                'dates': {
+                    title: 'Show all dates',
+                    icon: 'mdi mdi-calendar-clock'
+                },
+                'documents': {
+                    title: 'Show all documents',
+                    icon: 'mdi mdi-file-document-box-multiple-outline'
+                },
+                'excercises': {
+                    title: 'Show all excercises',
+                    icon: 'mdi mdi-test-tube'
+                },
+                'participants': {
+                    title: 'Show all participants',
+                    icon: 'mdi mdi-account-multiple'
+                }
+            }  
+          }
+        ]
+      }
+}
diff --git a/week03/app/styles/app.scss b/week03/app/styles/app.scss
index 9d645da..0f11a7f 100644
--- a/week03/app/styles/app.scss
+++ b/week03/app/styles/app.scss
@@ -28,4 +28,14 @@ ul[role="menu"] {
            }
        }
    }
+}
+
+/*
+ * Icon styles
+ */
+ .mdi.warning:link, .mdi.warning:visited {
+    color: get-color('alert');
+}
+.mdi.warning:hover, .mdi.warning:focus {
+    color: lighten(get-color('alert'), 10%);
 }
\ No newline at end of file
diff --git a/week03/app/templates/modules.hbs b/week03/app/templates/modules.hbs
new file mode 100644
index 0000000..8582987
--- /dev/null
+++ b/week03/app/templates/modules.hbs
@@ -0,0 +1,55 @@
+<main class="grid-container">
+  <div class="grid-x grid-padding-x">
+    <h1 class="cell">My Modules</h1>
+  </div>
+  <div class="grid-x grid-padding-x">
+    <nav class="cell shrink" aria-label="Modules">
+      <ul role="menu" aria-label="Modules">
+        <li><a href="" tabindex="0" role="menuitem" class="active">Current Semester</a></li>
+        <li><a href="" tabindex="-1" role="menuitem">Last Semester</a></li>
+        <li role="separator"></li>
+        <li><a href="" tabindex="-1" role="menuitem">Enroll in Module</a></li>
+      </ul>
+    </nav>
+    <section class="cell auto">
+        <table>
+          <thead>
+            <tr>
+              <th>Code</th>
+              <th>Name</th>
+              <th>Sections</th>
+              <th>Actions</th>
+            </tr>
+          </thead>
+          <tbody>
+            {{#each model as |module|}}
+            <tr>
+              <td><a href="">{{module.code}}</a></td>
+              <td><a href="">{{module.name}}</a></td>
+              <td>
+                <nav aria-label="Sections of {{module.name}}">
+                  <ul role="menu" class="horizontal" aria-label="Sections">
+                    {{#each-in module.sections as |section display|}}
+                        <li><a href="" role="menuitem" aria-label={{display.title}} title={{display.title}} class={{display.icon}} tabindex="0"></a></li>
+                    {{/each-in}}
+                  </ul>
+                </nav>
+              </td>
+              <td>
+                <nav aria-label="Actions for {{module.name}}">
+                  <ul role="menu" class="horizontal" aria-label="Actions">
+                    {{#each-in module.actions as |action display|}}
+                        <li><a href="" role="menuitem" aria-label={{display.title}} title={{display.title}} class={{display.icon}} tabindex="0"></a></li>
+                    {{/each-in}}
+                  </ul>
+                </nav>
+              </td>
+            </tr>
+            {{/each}}
+          </tbody>
+        </table>
+    </section>
+  </div>
+</main>
+
+{{outlet}}
\ No newline at end of file
diff --git a/week03/tests/unit/controllers/modules-test.js b/week03/tests/unit/controllers/modules-test.js
new file mode 100644
index 0000000..a0101af
--- /dev/null
+++ b/week03/tests/unit/controllers/modules-test.js
@@ -0,0 +1,12 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'ember-qunit';
+
+module('Unit | Controller | modules', function(hooks) {
+  setupTest(hooks);
+
+  // TODO: Replace this with your real tests.
+  test('it exists', function(assert) {
+    let controller = this.owner.lookup('controller:modules');
+    assert.ok(controller);
+  });
+});
diff --git a/week03/tests/unit/routes/modules-test.js b/week03/tests/unit/routes/modules-test.js
new file mode 100644
index 0000000..6130f1f
--- /dev/null
+++ b/week03/tests/unit/routes/modules-test.js
@@ -0,0 +1,11 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'ember-qunit';
+
+module('Unit | Route | modules', function(hooks) {
+  setupTest(hooks);
+
+  test('it exists', function(assert) {
+    let route = this.owner.lookup('route:modules');
+    assert.ok(route);
+  });
+});
-- 
GitLab