Skip to content
Next
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Switch to GitLab Next
Sign in / Register
Toggle navigation
T
t3
Project
Project
Details
Activity
Releases
Cycle Analytics
Insights
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Security & Compliance
Security & Compliance
Dependency List
Packages
Packages
List
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Minds
t3
Commits
6bbbe394
Commit
6bbbe394
authored
8 hours ago
by
Mark Harding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(wip):
parent
33dc9982
master
No related merge requests found
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
664 additions
and
421 deletions
+664
-421
angular.json
app/angular.json
+1
-1
package-lock.json
app/package-lock.json
+19
-0
package.json
app/package.json
+2
-1
app.component.html
app/src/app/app.component.html
+33
-1
app.component.scss
app/src/app/app.component.scss
+66
-0
app.component.ts
app/src/app/app.component.ts
+11
-5
app.module.ts
app/src/app/app.module.ts
+12
-10
cy-style.json
app/src/app/modules/tree/cy-style.json
+167
-0
tree.component.html
app/src/app/modules/tree/tree.component.html
+3
-0
tree.component.ts
app/src/app/modules/tree/tree.component.ts
+14
-0
tree.module.ts
app/src/app/modules/tree/tree.module.ts
+8
-0
offlinedid.service.ts
app/src/app/modules/trust/offlinedid.service.ts
+0
-0
traversal.service.ts
app/src/app/modules/trust/traversal.service.ts
+21
-0
trust.component.html
app/src/app/modules/trust/trust.component.html
+92
-128
trust.component.scss
app/src/app/modules/trust/trust.component.scss
+141
-204
trust.component.ts
app/src/app/modules/trust/trust.component.ts
+41
-39
trust.module.ts
app/src/app/modules/trust/trust.module.ts
+7
-6
trust.service.ts
app/src/app/modules/trust/trust.service.ts
+25
-25
verification.service.ts
app/src/app/modules/uport/verification.service.ts
+1
-1
No files found.
app/angular.json
View file @
6bbbe394
...
...
@@ -32,7 +32,7 @@
"src/styles.scss"
,
"node_modules/material-design-icons/iconfont/material-icons.css"
],
"scripts"
:
[]
"scripts"
:
[
"node_modules/cytoscape/dist/cytoscape.min.js"
]
},
"configurations"
:
{
"production"
:
{
...
...
This diff is collapsed.
Click to expand it.
app/package-lock.json
View file @
6bbbe394
...
...
@@ -2703,6 +2703,15 @@
"integrity"
:
"sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk="
,
"dev"
:
true
},
"cytoscape"
:
{
"version"
:
"3.10.0"
,
"resolved"
:
"https://registry.npmjs.org/cytoscape/-/cytoscape-3.10.0.tgz"
,
"integrity"
:
"sha512-lWOnG4HJQD0cy+tCiBmbV/QRknInuZ8HvjcUifQZ7E4LWmKMvl6d5eP0LaaRLfBJAplXWcJfwc17ZJ/nwPeaYg=="
,
"requires"
:
{
"heap"
:
"^0.2.6"
,
"lodash.debounce"
:
"^4.0.8"
}
},
"d"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/d/-/d-1.0.1.tgz"
,
...
...
@@ -5253,6 +5262,11 @@
"minimalistic-assert"
:
"^1.0.1"
}
},
"heap"
:
{
"version"
:
"0.2.6"
,
"resolved"
:
"https://registry.npmjs.org/heap/-/heap-0.2.6.tgz"
,
"integrity"
:
"sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw="
},
"hmac-drbg"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
,
...
...
@@ -6645,6 +6659,11 @@
"integrity"
:
"sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
,
"dev"
:
true
},
"lodash.debounce"
:
{
"version"
:
"4.0.8"
,
"resolved"
:
"https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
,
"integrity"
:
"sha1-gteb/zCmfEAF/9XiUVMArZyk168="
},
"lodash.omit"
:
{
"version"
:
"4.5.0"
,
"resolved"
:
"https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz"
,
...
...
This diff is collapsed.
Click to expand it.
app/package.json
View file @
6bbbe394
...
...
@@ -20,8 +20,9 @@
"@angular/platform-browser-dynamic"
:
"~8.0.0"
,
"@angular/router"
:
"~8.0.0"
,
"crypto-browserify"
:
"^3.12.0"
,
"
material-design-icons"
:
"^3.0.1
"
,
"
cytoscape"
:
"^3.10.0
"
,
"ethr-did"
:
"^1.1.0"
,
"material-design-icons"
:
"^3.0.1"
,
"rxjs"
:
"~6.4.0"
,
"tslib"
:
"^1.9.0"
,
"uport-connect"
:
"^1.1.11"
,
...
...
This diff is collapsed.
Click to expand it.
app/src/app/app.component.html
View file @
6bbbe394
<t3-trust></t3-trust>
<div
class=
"topbar"
>
<div
class=
"icon"
>
T3
</div>
<div
class=
"links"
>
<a
(click)=
"switchView('unlock')"
[class.viewLink--active]=
"view === 'unlock'"
>
Unlock
</a
>
<span
class=
"spacer"
>
|
</span>
<a
(click)=
"switchView('vote')"
[class.viewLink--active]=
"view === 'vote'"
>
Vote
</a
>
<span
class=
"spacer"
>
|
</span>
<a
(click)=
"switchView('tree')"
[class.viewLink--active]=
"view === 'tree'"
>
My Trust Tree
</a
>
</div>
</div>
<div
class=
"viewWrapper"
>
<!-- UNLOCK VIEW -->
<div
*ngIf=
"view === 'unlock'"
class=
"view--unlock"
>
<t3-verification></t3-verification>
</div>
<!-- TREE VIEW -->
<div
*ngIf=
"view === 'tree'"
class=
"view--tree"
>
<t3-tree></t3-tree>
</div>
<div
class=
"view--vote"
>
<!-- Trust component-->
<t3-trust></t3-trust>
</div>
</div>
<router-outlet></router-outlet>
This diff is collapsed.
Click to expand it.
app/src/app/app.component.scss
View file @
6bbbe394
.topbar
{
width
:
100%
;
display
:
flex
;
justify-content
:
space-between
;
color
:
#444
;
font-family
:
Arial
,
Helvetica
,
sans-serif
;
background-color
:
#eee
;
padding
:
16px
;
min-height
:
50px
;
min-width
:
50px
;
box-sizing
:
border-box
;
border-bottom
:
1px
solid
#dedede
;
a
{
text-decoration
:
none
;
color
:
rgba
(
cadetblue
,
0
.7
);
padding
:
0px
8px
;
cursor
:
pointer
;
&
.viewLink--active
{
color
:
rgba
(
cadetblue
,
1
);
font-weight
:
bold
;
}
&
:last-of-type
{
padding-right
:
0px
;
}
}
a
:hover
{
text-decoration
:
underline
;
}
>
*
{
padding
:
8px
;
}
.icon
{
border-radius
:
50%
;
color
:
#444
;
background-color
:
rgba
(
cadetblue
,
0
.4
);
border
:
1px
solid
#aaa
;
font-size
:
22px
;
padding
:
12px
;
}
.links
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-end
;
font-size
:
20px
;
.spacer
{
color
:
#ddd
;
font-size
:
24px
;
}
}
}
.viewWrapper
{
font-family
:
Arial
,
Helvetica
,
sans-serif
;
color
:
#444
;
padding
:
32px
;
.view--vote
{
text-align
:
center
;
}
}
This diff is collapsed.
Click to expand it.
app/src/app/app.component.ts
View file @
6bbbe394
import
{
Component
}
from
'
@angular/core
'
;
import
{
Component
}
from
"
@angular/core
"
;
declare
const
Connect
:
any
;
@
Component
({
selector
:
'
app-root
'
,
templateUrl
:
'
./app.component.html
'
,
styleUrls
:
[
'
./app.component.scss
'
]
selector
:
"
app-root
"
,
templateUrl
:
"
./app.component.html
"
,
styleUrls
:
[
"
./app.component.scss
"
]
})
export
class
AppComponent
{
title
=
'
t3
'
;
title
=
"
t3
"
;
view
:
string
=
"
vote
"
;
// ! TODO later: this should be 'unlock'
constructor
()
{}
switchView
(
view
)
{
this
.
view
=
view
;
// do something with router or url?
}
}
This diff is collapsed.
Click to expand it.
app/src/app/app.module.ts
View file @
6bbbe394
import
{
BrowserModule
}
from
'
@angular/platform-browser
'
;
import
{
BrowserAnimationsModule
}
from
'
@angular/platform-browser/animations
'
;
import
{
NgModule
}
from
'
@angular/core
'
;
import
{
HttpClientModule
}
from
'
@angular/common/http
'
;
import
{
BrowserModule
}
from
"
@angular/platform-browser
"
;
import
{
BrowserAnimationsModule
}
from
"
@angular/platform-browser/animations
"
;
import
{
NgModule
}
from
"
@angular/core
"
;
import
{
HttpClientModule
}
from
"
@angular/common/http
"
;
import
{
AppRoutingModule
}
from
'
./app-routing.module
'
;
import
{
AppComponent
}
from
'
./app.component
'
;
import
{
uPortModule
}
from
'
./modules/uport/uport.module
'
;
import
{
T3VerificationModule
}
from
'
./modules/verification/verification.module
'
;
import
{
T3TrustModule
}
from
'
./modules/trust/trust.module
'
;
import
{
AppRoutingModule
}
from
"
./app-routing.module
"
;
import
{
AppComponent
}
from
"
./app.component
"
;
import
{
uPortModule
}
from
"
./modules/uport/uport.module
"
;
import
{
T3VerificationModule
}
from
"
./modules/verification/verification.module
"
;
import
{
T3TrustModule
}
from
"
./modules/trust/trust.module
"
;
import
{
T3TreeModule
}
from
"
./modules/tree/tree.module
"
;
@
NgModule
({
declarations
:
[
AppComponent
],
...
...
@@ -18,7 +19,8 @@ import { T3TrustModule } from './modules/trust/trust.module';
HttpClientModule
,
uPortModule
,
T3VerificationModule
,
T3TrustModule
T3TrustModule
,
T3TreeModule
],
providers
:
[],
bootstrap
:
[
AppComponent
]
...
...
This diff is collapsed.
Click to expand it.
app/src/app/modules/tree/cy-style.json
0 → 100644
View file @
6bbbe394
[
{
"selector"
:
"core"
,
"style"
:
{
"selection-box-color"
:
"#AAD8FF"
,
"selection-box-border-color"
:
"#8BB0D0"
,
"selection-box-opacity"
:
"0.5"
}
},
{
"selector"
:
"node"
,
"style"
:
{
"width"
:
"mapData(score, 0, 0.006769776522008331, 20, 60)"
,
"height"
:
"mapData(score, 0, 0.006769776522008331, 20, 60)"
,
"content"
:
"data(name)"
,
"font-size"
:
"12px"
,
"text-valign"
:
"center"
,
"text-halign"
:
"center"
,
"background-color"
:
"#555"
,
"text-outline-color"
:
"#555"
,
"text-outline-width"
:
"2px"
,
"color"
:
"#fff"
,
"overlay-padding"
:
"6px"
,
"z-index"
:
"10"
}
},
{
"selector"
:
"node[?attr]"
,
"style"
:
{
"shape"
:
"rectangle"
,
"background-color"
:
"#aaa"
,
"text-outline-color"
:
"#aaa"
,
"width"
:
"16px"
,
"height"
:
"16px"
,
"font-size"
:
"6px"
,
"z-index"
:
"1"
}
},
{
"selector"
:
"node[?query]"
,
"style"
:
{
"background-clip"
:
"none"
,
"background-fit"
:
"contain"
}
},
{
"selector"
:
"node:selected"
,
"style"
:
{
"border-width"
:
"6px"
,
"border-color"
:
"#AAD8FF"
,
"border-opacity"
:
"0.5"
,
"background-color"
:
"#77828C"
,
"text-outline-color"
:
"#77828C"
}
},
{
"selector"
:
"edge"
,
"style"
:
{
"curve-style"
:
"haystack"
,
"haystack-radius"
:
"0.5"
,
"opacity"
:
"0.4"
,
"line-color"
:
"#bbb"
,
"width"
:
"mapData(weight, 0, 1, 1, 8)"
,
"overlay-padding"
:
"3px"
}
},
{
"selector"
:
"node.unhighlighted"
,
"style"
:
{
"opacity"
:
"0.2"
}
},
{
"selector"
:
"edge.unhighlighted"
,
"style"
:
{
"opacity"
:
"0.05"
}
},
{
"selector"
:
".highlighted"
,
"style"
:
{
"z-index"
:
"999999"
}
},
{
"selector"
:
"node.highlighted"
,
"style"
:
{
"border-width"
:
"6px"
,
"border-color"
:
"#AAD8FF"
,
"border-opacity"
:
"0.5"
,
"background-color"
:
"#394855"
,
"text-outline-color"
:
"#394855"
}
},
{
"selector"
:
"edge.filtered"
,
"style"
:
{
"opacity"
:
"0"
}
},
{
"selector"
:
"edge[group=
\"
coexp
\"
]"
,
"style"
:
{
"line-color"
:
"#d0b7d5"
}
},
{
"selector"
:
"edge[group=
\"
coloc
\"
]"
,
"style"
:
{
"line-color"
:
"#a0b3dc"
}
},
{
"selector"
:
"edge[group=
\"
gi
\"
]"
,
"style"
:
{
"line-color"
:
"#90e190"
}
},
{
"selector"
:
"edge[group=
\"
path
\"
]"
,
"style"
:
{
"line-color"
:
"#9bd8de"
}
},
{
"selector"
:
"edge[group=
\"
pi
\"
]"
,
"style"
:
{
"line-color"
:
"#eaa2a2"
}
},
{
"selector"
:
"edge[group=
\"
predict
\"
]"
,
"style"
:
{
"line-color"
:
"#f6c384"
}
},
{
"selector"
:
"edge[group=
\"
spd
\"
]"
,
"style"
:
{
"line-color"
:
"#dad4a2"
}
},
{
"selector"
:
"edge[group=
\"
spd_attr
\"
]"
,
"style"
:
{
"line-color"
:
"#D0D0D0"
}
},
{
"selector"
:
"edge[group=
\"
reg
\"
]"
,
"style"
:
{
"line-color"
:
"#D0D0D0"
}
},
{
"selector"
:
"edge[group=
\"
reg_attr
\"
]"
,
"style"
:
{
"line-color"
:
"#D0D0D0"
}
},
{
"selector"
:
"edge[group=
\"
user
\"
]"
,
"style"
:
{
"line-color"
:
"#f0ec86"
}
}
]
This diff is collapsed.
Click to expand it.
app/src/app/modules/tree/tree.component.html
0 → 100644
View file @
6bbbe394
Cytoscape will go here
<div
#cytoscape
></div>
This diff is collapsed.
Click to expand it.
app/src/app/modules/tree/tree.component.ts
0 → 100644
View file @
6bbbe394
import
{
Component
,
ViewChild
}
from
"
@angular/core
"
;
declare
const
cytoscape
:
any
;
@
Component
({
selector
:
"
t3-tree
"
,
templateUrl
:
"
./tree.component.html
"
})
export
class
T3TreeComponent
{
cy
;
@
ViewChild
(
"
cyptoscape
"
,
{
static
:
false
})
element
;
ngOnInit
()
{}
}
This diff is collapsed.
Click to expand it.
app/src/app/modules/tree/tree.module.ts
0 → 100644
View file @
6bbbe394
import
{
NgModule
}
from
"
@angular/core
"
;
import
{
T3TreeComponent
}
from
"
./tree.component
"
;
@
NgModule
({
declarations
:
[
T3TreeComponent
],
exports
:
[
T3TreeComponent
]
})
export
class
T3TreeModule
{}
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/offlinedid.service.ts
0 → 100644
View file @
6bbbe394
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/traversal.service.ts
0 → 100644
View file @
6bbbe394
import
{
Injectable
,
Inject
}
from
"
@angular/core
"
;
import
{
WEB3
}
from
"
../web3/web3.module
"
;
import
*
as
TrustContract
from
"
../web3/contracts/trust.contract
"
;
import
{
BehaviorSubject
}
from
"
rxjs
"
;
@
Injectable
()
export
class
T3TrustTraversalService
{
from
:
string
;
trusts$
:
BehaviorSubject
<
any
[]
>
=
new
BehaviorSubject
([]);
constructor
(@
Inject
(
WEB3
)
private
web3
)
{}
async
fetchFromEthereum
(
from
:
string
)
{
const
contract
=
new
this
.
web3
.
eth
.
Contract
(
TrustContract
.
ABI
,
TrustContract
.
ADDRESS
);
const
trusts
=
await
contract
.
methods
.
getTrusts
(
from
).
call
();
console
.
log
(
"
eth says
"
,
trusts
);
}
}
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/trust.component.html
View file @
6bbbe394
<div
class=
"topbar"
>
<div
class=
"icon"
>
T3
</div>
<div
class=
"links"
>
<a
(click)=
"switchView('unlock')"
[class.viewLink--active]=
"view === 'unlock'"
>
Unlock
</a
>
<span
class=
"spacer"
>
|
</span>
<a
(click)=
"switchView('vote')"
[class.viewLink--active]=
"view === 'vote'"
>
Vote
</a
>
<span
class=
"spacer"
>
|
</span>
<a
(click)=
"switchView('tree')"
[class.viewLink--active]=
"view === 'tree'"
>
My Trust Tree
</a
>
</div>
</div>
<div
class=
"viewWrapper"
>
<!-- VOTE VIEW -->
<div
*ngIf=
"view === 'vote'"
class=
"view--vote"
>
<h1>
Do you trust this person?
</h1>
<ng-container
*ngFor=
"let user of users; let i = index"
>
<div
*ngIf=
"i === currentIndex"
>
<!-- [@slowFadeAnimation]="isPaging ? 'out' : 'in'" -->
<div
class=
"userName"
>
{{ user.name }}
</div>
<!-- BUTTONS -->
<div
class=
"actionBtns"
>
<div
class=
"btn btn--distrust"
(click)=
"submitVote(-1)"
[class.active]=
"
(hasVotedOnUser && user.vote === -1) ||
(!hasVotedOnUserThisSession && user.vote === 0)
"
[class.inactive]=
"
(hasVotedOnUser && user.vote !== -1) ||
(hasVotedOnUserThisSession && user.vote === 0)
"
>
Distrust
</div>
<div
class=
"btn btn--neutral"
(click)=
"submitVote(0)"
[class.active]=
"hasVotedOnUserThisSession && user.vote === 0"
[class.inactive]=
"hasVotedOnUser && user.vote !== 0"
>
Neutral
</div>
<div
class=
"btn btn--trust"
(click)=
"submitVote(1)"
[class.active]=
"
(hasVotedOnUser && user.vote === 1) ||
(!hasVotedOnUserThisSession && user.vote === 0)
"
[class.inactive]=
"
(hasVotedOnUser && user.vote !== 1) ||
(hasVotedOnUserThisSession && user.vote === 0)
"
>
Trust
</div>
<h1>
Do you trust this person?
</h1>
<ng-container
*ngFor=
"let user of users; let i = index"
>
<div
*ngIf=
"i === currentIndex"
>
<!-- [@slowFadeAnimation]="isPaging ? 'out' : 'in'" -->
<div
class=
"userName"
>
{{ user.name }}
</div>
<!-- BUTTONS -->
<div
class=
"actionBtns"
>
<div
class=
"btn btn--distrust"
(click)=
"submitVote(-1)"
[class.active]=
"
(hasVotedOnUser && user.vote === -1) ||
(!hasVotedOnUserThisSession && user.vote === 0)
"
[class.inactive]=
"
(hasVotedOnUser && user.vote !== -1) ||
(hasVotedOnUserThisSession && user.vote === 0)
"
>
Distrust
</div>
<div
class=
"btn btn--neutral"
(click)=
"submitVote(0)"
[class.active]=
"hasVotedOnUserThisSession && user.vote === 0"
[class.inactive]=
"hasVotedOnUser && user.vote !== 0"
>
Neutral
</div>
<div
class=
"btn btn--trust"
(click)=
"submitVote(1)"
[class.active]=
"
(hasVotedOnUser && user.vote === 1) ||
(!hasVotedOnUserThisSession && user.vote === 0)
"
[class.inactive]=
"
(hasVotedOnUser && user.vote !== 1) ||
(hasVotedOnUserThisSession && user.vote === 0)
"
>
Trust
</div>
</div>
<!-- AVATAR PAGER -->
<div
class=
"avatarPager"
>
<i
class=
"chevron material-icons"
(click)=
"page(-1)"
>
keyboard_arrow_left
</i
>
<div
class=
"avatar"
[@
fadeAnimation]=
"isPaging ? 'out' : 'in'"
>
<img
[src]=
"user.avatarUrl"
/>
</div>
<i
class=
"chevron material-icons"
(click)=
"page(1)"
>
keyboard_arrow_right
</i
>
</div>
<!-- METRICS -->
<div
class=
"metricsWrapper"
>
<!-- THERMOMETER -->
<div
class=
"thermometerContainer"
>
<div
class=
"thermometerWrapper"
>
<div
class=
"thermometer"
></div>
<!-- [@pointerSlideAnimation]="!hasRecalculated ? 'current' : 'new'" -->
<i
class=
"material-icons pointer"
>
arrow_drop_up
</i>
</div>
<!-- AVATAR PAGER -->
<div
class=
"avatarPager"
>
<i
class=
"chevron material-icons"
(click)=
"page(-1)"
>
keyboard_arrow_left
</i
>
<div
class=
"avatar"
[@
fadeAnimation]=
"isPaging ? 'out' : 'in'"
>
<img
[src]=
"user.avatarUrl"
/>
</div>
<i
class=
"chevron material-icons"
(click)=
"page(1)"
>
keyboard_arrow_right
</i
>
</div>
<!-- SCORE -->
<div
class=
"scoreWrapper"
>
<div
class=
"score"
>
{{ user.score | number: "0.1-3" | percent }}
</div>
<!-- METRICS -->
<div
class=
"metricsWrapper"
>
<!-- THERMOMETER -->
<div
class=
"thermometerContainer"
>
<div
class=
"thermometerWrapper"
>
<div
class=
"thermometer"
></div>
<!-- [@pointerSlideAnimation]="!hasRecalculated ? 'current' : 'new'" -->
<i
class=
"material-icons pointer"
>
arrow_drop_up
</i>
</div>
</div>
<!-- SCORE -->
<div
class=
"scoreWrapper"
>
<div
class=
"score"
>
{{ user.score | number: '0.1-3' | percent }}
</div>
<div
class=
"scoreSubtitle"
>
Trustworthy
</div>
</div>
<div
class=
"scoreSubtitle"
>
Trustworthy
</div>
</div>
<!-- DETAILS -->
<div
class=
"detailsWrapper"
>
<div
class=
"detailsHeader"
>
<div
class=
"detailsHeader__left"
(click)=
"showDetails = !showDetails"
>
<i
*ngIf=
"showDetails"
class=
"material-icons"
>
keyboard_arrow_down
</i
>
<i
*ngIf=
"!showDetails"
class=
"material-icons"
>
keyboard_arrow_right
</i
>
<span>
Details
</span>
</div>
<div
class=
"detailsHeader__right"
(click)=
"switchView('tree')"
>
See visualization
</div>
</div>
<div
class=
"detailsContent"
*ngIf=
"showDetails"
>
<div
class=
"detailsTier"
>
1st degree friends
</div>
<div
class=
"detailsTier"
>
2nd degree friends
</div>
<div
class=
"detailsTier"
>
3rd degree friends
</div>
</div>
<!-- DETAILS -->
<div
class=
"detailsWrapper"
>
<div
class=
"detailsHeader"
>
<div
class=
"detailsHeader__left"
(click)=
"showDetails = !showDetails"
>
<i
*ngIf=
"showDetails"
class=
"material-icons"
>
keyboard_arrow_down
</i
>
<i
*ngIf=
"!showDetails"
class=
"material-icons"
>
keyboard_arrow_right
</i
>
<span>
Details
</span>
</div>
<div
class=
"detailsHeader__right"
(click)=
"switchView('tree')"
>
See visualization
</div>
</div>
<div
class=
"detailsContent"
*ngIf=
"showDetails"
>
<div
class=
"detailsTier"
>
1st degree friends
</div>
<div
class=
"detailsTier"
>
2nd degree friends
</div>
<div
class=
"detailsTier"
>
3rd degree friends
</div>
</div>
</div>
</ng-container>
</div>
<!-- UNLOCK VIEW -->
<div
*ngIf=
"view === 'unlock'"
class=
"view--unlock"
>
<t3-verification></t3-verification>
</div>
<!-- TREE VIEW -->
<div
*ngIf=
"view === 'tree'"
class=
"view--tree"
>
<div>
cytoscape tree view goes here
</div>
</div>
</div>
</
div
>
</
ng-container
>
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/trust.component.scss
View file @
6bbbe394
...
...
@@ -3,239 +3,176 @@ $green: #44d7b6;
$coolGrey
:
#6b717c
;
$bezier
:
cubic-bezier
(
0
.23
,
1
,
0
.32
,
1
);
t3-trus
t
{
:roo
t
{
font-family
:
Arial
,
Helvetica
,
sans-serif
;
color
:
$coolGrey
;
text-align
:
center
;
// color: #444;
}
.topbar
{
width
:
100%
;
display
:
flex
;
justify-content
:
space-between
;
color
:
#444
;
font-family
:
Arial
,
Helvetica
,
sans-serif
;
background-color
:
#eee
;
padding
:
16px
;
min-height
:
50px
;
min-width
:
50px
;
box-sizing
:
border-box
;
border-bottom
:
1px
solid
#dedede
;
a
{
text-decoration
:
none
;
color
:
rgba
(
cadetblue
,
0
.7
);
padding
:
0px
8px
;
cursor
:
pointer
;
h1
{
font-weight
:
500
;
font-size
:
42px
;
text-align
:
center
;
color
:
rgba
(
$coolGrey
,
0
.3
);
}
&
.viewLink--active
{
color
:
rgba
(
cadetblue
,
1
);
font-weight
:
bold
;
}
.userName
{
font-size
:
36px
;
font-weight
:
200
;
color
:
$coolGrey
;
}
.actionBtns
{
display
:
flex
;
justify-content
:
space-around
;
margin
:
16px
0
;
&
:last-of-type
{
padding-right
:
0px
;
.btn
{
color
:
white
;
font-size
:
22px
;
cursor
:
pointer
;
background-color
:
#ddd
;
width
:
100%
;
margin
:
4px
;
padding
:
16px
;
border-radius
:
6px
;
transition
:
background-color
0
.5s
$bezier
;
&
.inactive
{
background-color
:
rgba
(
#000
,
0
.2
);
}
}
a
:hover
{
text-decoration
:
underline
;
.btn--distrust
{
background-color
:
rgba
(
$red
,
0
.5
);
&
:hover
{
background-color
:
rgba
(
$red
,
0
.7
);
}
&
.active
{
background-color
:
rgba
(
$red
,
0
.8
);
}
}
>
*
{
padding
:
8px
;
.btn--neutral
{
background-color
:
rgba
(
#000
,
0
.35
);
&
:hover
{
background-color
:
rgba
(
#000
,
0
.55
);
}
&
.active
{
background-color
:
rgba
(
#000
,
0
.6
);
}
}
.icon
{
border-radius
:
50%
;
color
:
#444
;
background-color
:
rgba
(
cadetblue
,
0
.4
);
border
:
1px
solid
#aaa
;
font-size
:
22px
;
padding
:
12px
;
.btn--trust
{
background-color
:
rgba
(
$green
,
0
.6
);
&
:hover
{
background-color
:
rgba
(
$green
,
0
.8
)
;
}
&
.active
{
background-color
:
rgba
(
$green
,
0
.95
)
;
}
}
}
.links
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-end
;
font-size
:
20px
;
.avatarPager
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
.spacer
{
color
:
#ddd
;
font-size
:
24px
;
.chevron
{
cursor
:
pointer
;
font-size
:
80px
;
color
:
#ccc
;
transition
:
transform
0
.5s
$bezier
;
transition
:
color
0
.5s
$bezier
;
&
:hover
{
transform
:
scale
(
1
.2
,
1
.2
);
color
:
#999
;
}
}
}
.viewWrapper
{
font-family
:
Arial
,
Helvetica
,
sans-serif
;
color
:
#444
;
padding
:
32px
;
.view--vote
{
h1
{
font-weight
:
500
;
font-size
:
42px
;
.avatar
{
padding
:
16px
;
img
{
border-radius
:
50%
;
width
:
300px
;
height
:
300px
;
box-sizing
:
border-box
;
text-align
:
center
;
color
:
rgba
(
$coolGrey
,
0
.3
);
vertical-align
:
middle
;
object-fit
:
cover
;
margin
:
auto
;
}
text-align
:
center
;
.userName
{
font-size
:
36px
;
font-weight
:
200
;
color
:
$coolGrey
;
}
.actionBtns
{
display
:
flex
;
justify-content
:
space-around
;
margin
:
16px
0
;
.btn
{
color
:
white
;
font-size
:
22px
;
cursor
:
pointer
;
background-color
:
#ddd
;
width
:
100%
;
margin
:
4px
;
padding
:
16px
;
}
}
.metricsWrapper
{
.thermometerContainer
{
padding-top
:
16px
;
.thermometerWrapper
{
position
:
relative
;
width
:
80%
;
margin
:
auto
;
.thermometer
{
border-radius
:
6px
;
transition
:
background-color
0
.5s
$bezier
;
&
.inactive
{
background-color
:
rgba
(
#000
,
0
.2
);
}
}
.btn--distrust
{
background-color
:
rgba
(
$red
,
0
.5
);
&
:hover
{
background-color
:
rgba
(
$red
,
0
.7
);
}
&
.active
{
background-color
:
rgba
(
$red
,
0
.8
);
}
}
.btn--neutral
{
background-color
:
rgba
(
#000
,
0
.35
);
&
:hover
{
background-color
:
rgba
(
#000
,
0
.55
);
}
&
.active
{
background-color
:
rgba
(
#000
,
0
.6
);
}
height
:
8px
;
width
:
100%
;
background
:
linear-gradient
(
to
right
,
rgba
(
$red
,
0
.6
)
0%
,
rgba
(
#000
,
0
.2
)
50%
,
rgba
(
$green
,
0
.6
)
80%
);
}
.btn--trust
{
background-color
:
rgba
(
$green
,
0
.6
);
&
:hover
{
background-color
:
rgba
(
$green
,
0
.8
);
}
&
.active
{
background-color
:
rgba
(
$green
,
0
.95
);
}
.pointer
{
font-size
:
70px
;
position
:
absolute
;
left
:
33%
;
top
:
-18px
;
color
:
#555
;
}
}
.avatarPager
{
}
.scoreWrapper
{
margin-top
:
32px
;
.score
{
color
:
$coolGrey
;
font-size
:
70px
;
}
.scoreSubtitle
{
color
:
rgba
(
$coolGrey
,
0
.8
);
font-size
:
30px
;
}
}
.detailsWrapper
{
width
:
80%
;
margin
:
auto
;
margin-bottom
:
24px
;
.detailsHeader
{
border-bottom
:
1px
solid
rgba
(
$coolGrey
,
0
.5
);
padding
:
24px
16px
8px
16px
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
space-between
;
align-items
:
center
;
.chevron
{
cursor
:
pointer
;
font-size
:
80px
;
color
:
#ccc
;
transition
:
transform
0
.5s
$bezier
;
transition
:
color
0
.5s
$bezier
;
transition
:
color
0
.4s
$bezier
;
>
*
{
&
:hover
{
transform
:
scale
(
1
.2
,
1
.2
);
color
:
#999
;
}
}
.avatar
{
padding
:
16px
;
img
{
border-radius
:
50%
;
width
:
300px
;
height
:
300px
;
box-sizing
:
border-box
;
text-align
:
center
;
vertical-align
:
middle
;
object-fit
:
cover
;
margin
:
auto
;
}
}
}
.metricsWrapper
{
.thermometerContainer
{
padding-top
:
16px
;
.thermometerWrapper
{
position
:
relative
;
width
:
80%
;
margin
:
auto
;
.thermometer
{
border-radius
:
6px
;
height
:
8px
;
width
:
100%
;
background
:
linear-gradient
(
to
right
,
rgba
(
$red
,
0
.6
)
0%
,
rgba
(
#000
,
0
.2
)
50%
,
rgba
(
$green
,
0
.6
)
80%
);
}
.pointer
{
font-size
:
70px
;
position
:
absolute
;
left
:
33%
;
top
:
-18px
;
color
:
#555
;
}
cursor
:
pointer
;
color
:
rgba
(
$coolGrey
,
0
.7
);
}
}
.scoreWrapper
{
margin-top
:
32px
;
.score
{
color
:
$coolGrey
;
font-size
:
70px
;
}
.scoreSubtitle
{
color
:
rgba
(
$coolGrey
,
0
.8
);
font-size
:
30px
;
}
.detailsHeader__left
{
display
:
flex
;
align-items
:
center
;
}
.detailsWrapper
{
width
:
80%
;
margin
:
auto
;
margin-bottom
:
24px
;
.detailsHeader
{
border-bottom
:
1px
solid
rgba
(
$coolGrey
,
0
.5
);
padding
:
24px
16px
8px
16px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
transition
:
color
0
.4s
$bezier
;
>
*
{
&
:hover
{
cursor
:
pointer
;
color
:
rgba
(
$coolGrey
,
0
.7
);
}
}
.detailsHeader__left
{
display
:
flex
;
align-items
:
center
;
}
.detailsHeader__right
{
color
:
rgba
(
$coolGrey
,
0
.7
);
text-decoration
:
underline
;
// &:hover {
// text-decoration: underline;
// }
}
}
.detailsContent
{
padding
:
16px
;
text-align
:
left
;
}
.detailsHeader__right
{
color
:
rgba
(
$coolGrey
,
0
.7
);
text-decoration
:
underline
;
// &:hover {
// text-decoration: underline;
// }
}
}
.detailsContent
{
padding
:
16px
;
text-align
:
left
;
}
}
// .view--verify {
// }
// .view--tree {
// }
}
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/trust.component.ts
View file @
6bbbe394
...
...
@@ -5,36 +5,37 @@ import {
Output
,
OnInit
,
OnDestroy
}
from
'
@angular/core
'
;
}
from
"
@angular/core
"
;
import
{
trigger
,
state
,
style
,
animate
,
transition
}
from
'
@angular/animations
'
;
import
{
T3TrustService
}
from
'
./trust.service
'
;
}
from
"
@angular/animations
"
;
import
{
T3TrustService
}
from
"
./trust.service
"
;
import
{
T3TrustTraversalService
}
from
"
./traversal.service
"
;
@
Component
({
selector
:
'
t3-trust
'
,
templateUrl
:
'
./trust.component.html
'
,
styleUrls
:
[
'
trust.component.scss
'
],
selector
:
"
t3-trust
"
,
templateUrl
:
"
./trust.component.html
"
,
styleUrls
:
[
"
trust.component.scss
"
],
animations
:
[
// Fade media in after load
trigger
(
'
fadeAnimation
'
,
[
trigger
(
"
fadeAnimation
"
,
[
state
(
'
in
'
,
"
in
"
,
style
({
opacity
:
1
})
),
state
(
'
out
'
,
"
out
"
,
style
({
opacity
:
0.3
})
),
transition
(
'
in <=> out
'
,
[
animate
(
'
100ms
'
)])
transition
(
"
in <=> out
"
,
[
animate
(
"
100ms
"
)])
])
// trigger('pointerSlideAnimation', [
// state(
...
...
@@ -57,8 +58,7 @@ export class T3TrustComponent implements OnInit, OnDestroy {
// @Input() object: any;
// @Output("done") doneEmitter: EventEmitter<any> = new EventEmitter();
view
:
string
=
'
vote
'
;
// ! TODO later: this should be 'unlock'
actorDid
:
string
=
'
000
'
;
actorDid
:
string
=
"
000
"
;
showDetails
:
boolean
=
true
;
// ! default to false?
user
:
any
=
null
;
hasVotedOnUser
:
boolean
=
false
;
...
...
@@ -97,52 +97,58 @@ export class T3TrustComponent implements OnInit, OnDestroy {
// ! remove one of these later
usersRaw
:
Array
<
any
>
=
[
{
entity_did
:
'
did:fake:2
'
,
entity_did
:
"
did:fake:2
"
,
score
:
0.33
,
name
:
'
Sideshow Bob
'
,
avatarUrl
:
'
/assets/brewski.jpg
'
name
:
"
Sideshow Bob
"
,
avatarUrl
:
"
/assets/brewski.jpg
"
},
{
entity_did
:
'
did:fake:3
'
,
entity_did
:
"
did:fake:3
"
,
score
:
0.77
,
name
:
'
Good girl
'
,
avatarUrl
:
'
/assets/avatar.png
'
name
:
"
Good girl
"
,
avatarUrl
:
"
/assets/avatar.png
"
},
{
entity_did
:
'
did:fake:4
'
,
entity_did
:
"
did:fake:4
"
,
score
:
1.0
,
name
:
'
Astronaut Lily
'
,
avatarUrl
:
'
/assets/moonlily.jpg
'
name
:
"
Astronaut Lily
"
,
avatarUrl
:
"
/assets/moonlily.jpg
"
}
];
users
:
Array
<
any
>
=
[
{
entity_did
:
'
did:fake:2
'
,
entity_did
:
"
did:fake:2
"
,
score
:
0.33
,
name
:
'
Sideshow Bob
'
,
avatarUrl
:
'
/assets/brewski.jpg
'
name
:
"
Sideshow Bob
"
,
avatarUrl
:
"
/assets/brewski.jpg
"
},
{
entity_did
:
'
did:fake:3
'
,
entity_did
:
"
did:fake:3
"
,
score
:
0.77
,
name
:
'
Good girl
'
,
avatarUrl
:
'
/assets/avatar.png
'
name
:
"
Good girl
"
,
avatarUrl
:
"
/assets/avatar.png
"
},
{
entity_did
:
'
did:fake:4
'
,
entity_did
:
"
did:fake:4
"
,
score
:
1.0
,
name
:
'
Astronaut Lily
'
,
avatarUrl
:
'
/assets/moonlily.jpg
'
name
:
"
Astronaut Lily
"
,
avatarUrl
:
"
/assets/moonlily.jpg
"
}
];
usersNew
:
Array
<
any
>
=
[];
//!!
constructor
(
public
trustService
:
T3TrustService
)
{}
constructor
(
public
trustService
:
T3TrustService
,
private
traversalService
:
T3TrustTraversalService
)
{}
ngOnInit
()
{
this
.
finalTrustTree
=
this
.
trustService
.
getTrustTree
(
'
1
'
);
this
.
traversalService
.
fetchFromEthereum
(
"
0x3e010d48eeE73c9f545591C52E3bD23a7340A91F
"
);
this
.
finalTrustTree
=
this
.
trustService
.
getTrustTree
(
"
1
"
);
console
.
log
(
this
.
finalTrustTree
);
this
.
joinArrays
();
// ! TODO : switch trustTreeRaw for finalTrustTree
...
...
@@ -170,20 +176,16 @@ export class T3TrustComponent implements OnInit, OnDestroy {
console
.
log
(
this
.
users
);
}
switchView
(
view
)
{
this
.
view
=
view
;
// do something with router or url?
}
submitVote
(
vote
)
{
switch
(
vote
)
{
case
-
1
:
console
.
log
(
'
ur fake news
'
);
console
.
log
(
"
ur fake news
"
);
break
;
case
0
:
console
.
log
(
'
idk what to think
'
);
console
.
log
(
"
idk what to think
"
);
break
;
case
1
:
console
.
log
(
'
ur legit news
'
);
console
.
log
(
"
ur legit news
"
);
}
this
.
hasVotedOnUser
=
true
;
this
.
hasVotedOnUserThisSession
=
true
;
...
...
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/trust.module.ts
View file @
6bbbe394
import
{
NgModule
}
from
'
@angular/core
'
;
import
{
T3TrustService
}
from
'
./trust.service
'
;
import
{
T3TrustComponent
}
from
'
./trust.component
'
;
import
{
T3VerificationModule
}
from
'
../verification/verification.module
'
;
import
{
CommonModule
}
from
'
@angular/common
'
;
import
{
NgModule
}
from
"
@angular/core
"
;
import
{
T3TrustService
}
from
"
./trust.service
"
;
import
{
T3TrustComponent
}
from
"
./trust.component
"
;
import
{
T3VerificationModule
}
from
"
../verification/verification.module
"
;
import
{
CommonModule
}
from
"
@angular/common
"
;
import
{
T3TrustTraversalService
}
from
"
./traversal.service
"
;
@
NgModule
({
imports
:
[
T3VerificationModule
,
CommonModule
],
providers
:
[
T3TrustService
],
providers
:
[
T3TrustService
,
T3TrustTraversalService
],
declarations
:
[
T3TrustComponent
],
entryComponents
:
[
T3TrustComponent
],
exports
:
[
T3TrustComponent
]
...
...
This diff is collapsed.
Click to expand it.
app/src/app/modules/trust/trust.service.ts
View file @
6bbbe394
import
{
Injectable
}
from
'
@angular/core
'
;
import
{
Observable
}
from
'
rxjs
'
;
import
{
Injectable
}
from
"
@angular/core
"
;
import
{
Observable
}
from
"
rxjs
"
;
@
Injectable
()
export
class
T3TrustService
{
...
...
@@ -81,51 +81,51 @@ export class T3TrustService {
getBlockchainResponse
(
actorDid
:
string
)
{
const
fakeDatabase
=
[
{
actorDid
:
'
1
'
,
actorDid
:
"
1
"
,
blockchainResponse
:
{
trustedDids
:
[
'
2
'
],
neutralDids
:
[
'
3
'
],
distrustedDids
:
[
'
4
'
]
trustedDids
:
[
"
2
"
],
neutralDids
:
[
"
3
"
],
distrustedDids
:
[
"
4
"
]
}
},
{
actorDid
:
'
2
'
,
actorDid
:
"
2
"
,
blockchainResponse
:
{
trustedDids
:
[
'
1
'
,
'
3
'
,
'
5
'
],
neutralDids
:
[
'
4
'
],
trustedDids
:
[
"
1
"
,
"
3
"
,
"
5
"
],
neutralDids
:
[
"
4
"
],
distrustedDids
:
[]
}
},
{
actorDid
:
'
3
'
,
actorDid
:
"
3
"
,
blockchainResponse
:
{
trustedDids
:
[
'
1
'
],
neutralDids
:
[
'
4
'
,
'
5
'
],
distrustedDids
:
[
'
2
'
]
trustedDids
:
[
"
1
"
],
neutralDids
:
[
"
4
"
,
"
5
"
],
distrustedDids
:
[
"
2
"
]
}
},
{
actorDid
:
'
4
'
,
actorDid
:
"
4
"
,
blockchainResponse
:
{
trustedDids
:
[
'
3
'
],
neutralDids
:
[
'
1
'
],
distrustedDids
:
[
'
2
'
,
'
5
'
]
trustedDids
:
[
"
3
"
],
neutralDids
:
[
"
1
"
],
distrustedDids
:
[
"
2
"
,
"
5
"
]
}
},
{
actorDid
:
'
5
'
,
actorDid
:
"
5
"
,
blockchainResponse
:
{
trustedDids
:
[
'
3
'
,
'
6
'
],
neutralDids
:
[
'
2
'
],
distrustedDids
:
[
'
4
'
]
trustedDids
:
[
"
3
"
,
"
6
"
],
neutralDids
:
[
"
2
"
],
distrustedDids
:
[
"
4
"
]
}
},
{
actorDid
:
'
6
'
,
actorDid
:
"
6
"
,
blockchainResponse
:
{
trustedDids
:
[],
neutralDids
:
[
'
3
'
],
distrustedDids
:
[
'
7
'
,
'
8
'
]
neutralDids
:
[
"
3
"
],
distrustedDids
:
[
"
7
"
,
"
8
"
]
}
}
];
...
...
@@ -135,7 +135,7 @@ export class T3TrustService {
return
item
.
actorDid
===
actorDid
;
});
console
.
log
(
'
raw Result
'
);
console
.
log
(
"
raw Result
"
);
console
.
log
(
result
);
return
result
;
}
...
...
This diff is collapsed.
Click to expand it.
app/src/app/modules/uport/verification.service.ts
View file @
6bbbe394
...
...
@@ -108,7 +108,7 @@ export class uPortVerificationService {
86400
*
365
// 1 year
)
.
encodeABI
();
console
.
log
(
await
uport
.
requestPersonalSign
(
tx1
,
null
,
{
from
:
address
}
));
console
.
log
(
await
uport
.
requestPersonalSign
(
tx1
));
// // contract.methods.issueTrustViaDelegate(address, address, 1);
// // console.log(tx1);
// const signed = await web3.eth.sendTransaction(
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment