From 10134940644d59d50787ec5ccbedd8b05d102ff8 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sat, 9 Oct 2021 06:32:14 +0200
Subject: [PATCH] add permissions

---
 app/components/button/submit.hbs     |  6 +++---
 app/components/permission.hbs        |  8 ++++++++
 app/components/permission.js         | 17 +++++++++++++++++
 app/components/permissions/index.hbs |  3 +++
 app/components/permissions/index.js  | 10 ++++++++++
 app/components/role/add.hbs          |  4 ++++
 app/components/role/add.js           | 20 +++++++++++++++-----
 app/components/tag/new.hbs           | 18 +++++++++---------
 8 files changed, 69 insertions(+), 17 deletions(-)
 create mode 100644 app/components/permission.hbs
 create mode 100644 app/components/permission.js
 create mode 100644 app/components/permissions/index.hbs
 create mode 100644 app/components/permissions/index.js

diff --git a/app/components/button/submit.hbs b/app/components/button/submit.hbs
index b0a3088..8820442 100644
--- a/app/components/button/submit.hbs
+++ b/app/components/button/submit.hbs
@@ -7,20 +7,20 @@
   </LinkTo>
 {{else}}
   {{! render <button> based component }}
-  {{#if @enabled}}
+  {{#if @disabled}}
+    {{! render a disabled button }}
     <button
       class="btn btn-primary mx-2"
       type="button"
+      disabled
       {{on "click" @onClick}}>
         <i class="bi bi-check-lg"></i>
       {{this.text}}
     </button>
   {{else}}
-    {{! render a disabled button }}
     <button
       class="btn btn-primary mx-2"
       type="button"
-      disabled
       {{on "click" @onClick}}>
         <i class="bi bi-check-lg"></i>
       {{this.text}}
diff --git a/app/components/permission.hbs b/app/components/permission.hbs
new file mode 100644
index 0000000..ed12f9c
--- /dev/null
+++ b/app/components/permission.hbs
@@ -0,0 +1,8 @@
+  <div>
+    <Input
+      @type="checkbox"
+      @checked="{{@permission.isChecked}}"
+      {{on "change" (fn this.onChange @permission)}}
+    />
+    <span class="mx-1">{{@permission.name}}</span>
+  </div>
\ No newline at end of file
diff --git a/app/components/permission.js b/app/components/permission.js
new file mode 100644
index 0000000..d4b86ce
--- /dev/null
+++ b/app/components/permission.js
@@ -0,0 +1,17 @@
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { action } from '@ember/object';
+import { inject as service } from '@ember/service';
+
+
+class PermissionComponent extends Component {
+  @service store;
+
+  @action
+  onChange(permission, event) {
+    let checked = event.target.checked;
+    this.args.onChange(permission, checked);
+  }
+}
+
+export default PermissionComponent;
diff --git a/app/components/permissions/index.hbs b/app/components/permissions/index.hbs
new file mode 100644
index 0000000..01757cd
--- /dev/null
+++ b/app/components/permissions/index.hbs
@@ -0,0 +1,3 @@
+{{#each @permissions as |perm|}}
+  <Permission @permission={{perm}} @onChange={{@onChange}} />
+{{/each}}
diff --git a/app/components/permissions/index.js b/app/components/permissions/index.js
new file mode 100644
index 0000000..01d07a8
--- /dev/null
+++ b/app/components/permissions/index.js
@@ -0,0 +1,10 @@
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { inject as service } from '@ember/service';
+
+
+class PermissionsComponent extends Component {
+  @service store;
+}
+
+export default PermissionsComponent;
diff --git a/app/components/role/add.hbs b/app/components/role/add.hbs
index 1c6252f..da595df 100644
--- a/app/components/role/add.hbs
+++ b/app/components/role/add.hbs
@@ -6,6 +6,10 @@
     placeholder="Role's name" />
 </div>
 
+<Permissions
+  @permissions={{this.permissions}}
+  @onChange={{this.onChange}} />
+
 <div class="mb-3">
   <Button::Submit @onClick={{this.onSubmit}} />
   <Button::Cancel @route="roles"/>
diff --git a/app/components/role/add.js b/app/components/role/add.js
index a133ebd..be1f197 100644
--- a/app/components/role/add.js
+++ b/app/components/role/add.js
@@ -1,6 +1,7 @@
 import Component from '@glimmer/component';
 import { action } from '@ember/object';
 import { tracked } from '@glimmer/tracking';
+import { A } from '@ember/array';
 import { inject as service } from '@ember/service';
 
 
@@ -8,14 +9,22 @@ class AddRoleComponent extends Component {
   @service store;
   @service router;
 
-  @tracked dst_folder;
-  @tracked name;
-  @tracked match;
-  @tracked is_case_sensitive = false;
-  @tracked matching_alg;
+  @tracked name = "default name";
+  permissions = A([
+    {name: 'one', isChecked: true},
+    {name: 'two'}
+  ]);
+
+  @action
+  onChange(permission, checked) {
+    permission.isChecked = checked;
+  }
 
   @action
   onSubmit() {
+    console.log(this.name);
+    console.log(this.permissions);
+    /*
     let role;
 
     role = {
@@ -28,6 +37,7 @@ class AddRoleComponent extends Component {
     ).save();
 
     this.router.transitionTo('roles');
+    */
   }
 }
 
diff --git a/app/components/tag/new.hbs b/app/components/tag/new.hbs
index c35bca1..076d187 100644
--- a/app/components/tag/new.hbs
+++ b/app/components/tag/new.hbs
@@ -2,15 +2,15 @@
 
 
 {{#if this.form_visible}}
-    <form>
-        <div class="row my-2">
-            <div class="col-md-2">
-                <Tag::Item
-                    @name={{default_string this.new_name "preview"}}
-                    @fg_color={{this.new_fg_color}}
-                    @bg_color={{this.new_bg_color}} />
-            </div>
-        </div>
+  <form>
+    <div class="row my-2">
+      <div class="col-md-2">
+        <Tag::Item
+            @name={{default_string this.new_name "preview"}}
+            @fg_color={{this.new_fg_color}}
+            @bg_color={{this.new_bg_color}} />
+      </div>
+    </div>
 
         <div class="row mb-2">
             <div class="col-md-3">
-- 
GitLab