Merge pull request #86 from MycroftAI/feature/add-data-collection-info
Add data collection infopull/87/head^2
commit
16dcdaac8f
|
@ -30,6 +30,7 @@ import { ProfileModule } from './modules/profile/profile.module';
|
|||
import { SharedModule as SharedLibModule } from 'shared';
|
||||
import { SharedModule } from 'shared';
|
||||
import { SkillModule } from './modules/skill/skill.module';
|
||||
import { PersonalDataModule } from './modules/personal-data/personal-data.module';
|
||||
|
||||
@NgModule(
|
||||
{
|
||||
|
@ -41,6 +42,7 @@ import { SkillModule } from './modules/skill/skill.module';
|
|||
GlobalnavModule,
|
||||
HttpClientModule,
|
||||
DeviceModule,
|
||||
PersonalDataModule,
|
||||
ProfileModule,
|
||||
SharedLibModule,
|
||||
SharedModule,
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<mat-card>
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="addDeviceIcon"></fa-icon>
|
||||
<mat-card-title>Add Mycroft Device</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
You just got your new device with Mycroft installed. Congratulations! Pairing your
|
||||
device with Mycroft's servers provides you with instant access to software updates,
|
||||
speech transcription, weather and other services.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="addDeviceUrl">ADD DEVICE</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
|
@ -0,0 +1,5 @@
|
|||
@import "components/cards";
|
||||
|
||||
mat-card {
|
||||
@include selene-card;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
import { faPlugCirclePlus } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import { environment } from '@account/environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'account-dashboard-device',
|
||||
templateUrl: './dashboard-device.component.html',
|
||||
styleUrls: ['./dashboard-device.component.scss']
|
||||
})
|
||||
export class DashboardDeviceComponent implements OnInit {
|
||||
public addDeviceIcon = faPlugCirclePlus;
|
||||
public addDeviceUrl = environment.mycroftUrls.account + '/devices/add';
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
<mat-card>
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="downloadIcon"></fa-icon>
|
||||
<mat-card-title>Install New Skills</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Mycroft devices include pre-installed essential skills like Timers, Alarms
|
||||
and News. There are many other skills available built by the Mycroft team or
|
||||
our developer community. Skills can be fun (ISS Tracker), informational
|
||||
(National Parks), or useful (Home Assistant).
|
||||
<p class="mat-body">
|
||||
Visit the Marketplace for a list of Mycroft-approved skills. To install,
|
||||
say "Hey Mycroft, install" followed by the skill name.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="marketplaceUrl">SKILL MARKETPLACE</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
|
@ -0,0 +1,5 @@
|
|||
@import "components/cards";
|
||||
|
||||
mat-card {
|
||||
@include selene-card;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
import { faDownload } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import { environment } from '@account/environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'account-dashboard-marketplace',
|
||||
templateUrl: './dashboard-marketplace.component.html',
|
||||
styleUrls: ['./dashboard-marketplace.component.scss']
|
||||
})
|
||||
export class DashboardMarketplaceComponent implements OnInit {
|
||||
public downloadIcon = faDownload;
|
||||
public marketplaceUrl = environment.mycroftUrls.marketplace;
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
<mat-card *ngIf="account.membership">
|
||||
<mat-card-header>
|
||||
<fa-icon [icon]="membershipIcon"></fa-icon>
|
||||
</mat-card-header>
|
||||
<mat-card-title>Mycroft thanks you!</mat-card-title>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Your support makes a big difference. Thanks to you and other Mycroft supporters,
|
||||
we can continue building upon the Mycroft experience. It is also motivating
|
||||
knowing there is a community of people who believe in the same things we do.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<mat-card *ngIf="!account.membership">
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="membershipIcon"></fa-icon>
|
||||
<mat-card-title>Become a Member</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Mycroft's voice assistant software is open source, which means it is free to use and
|
||||
the underlying source code is available to the public. Our entire platform is free
|
||||
of advertisements. The data we collect, with your consent, is not sold to anyone.
|
||||
<p class="mat-body">
|
||||
For less than one cup of coffee a month, you can help with the costs of our servers,
|
||||
services, and ongoing development. All of which all improve Mycroft's performance
|
||||
and user experience.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="profileUrl">MEMBERSHIP OPTIONS</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
|
@ -0,0 +1,5 @@
|
|||
@import "components/cards";
|
||||
|
||||
mat-card {
|
||||
@include selene-card;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
import { Component, Input, OnInit } from '@angular/core';
|
||||
|
||||
import { faAward } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import { environment } from '@account/environments/environment';
|
||||
import { Account } from '@account/models/account.model';
|
||||
|
||||
@Component({
|
||||
selector: 'account-dashboard-membership',
|
||||
templateUrl: './dashboard-membership.component.html',
|
||||
styleUrls: ['./dashboard-membership.component.scss']
|
||||
})
|
||||
export class DashboardMembershipComponent implements OnInit {
|
||||
@Input() account: Account;
|
||||
public membershipIcon = faAward;
|
||||
public profileUrl = environment.mycroftUrls.account + '/profile';
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
<mat-card>
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="privacyIcon"></fa-icon>
|
||||
<mat-card-title>Your Privacy is Our Policy</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Mycroft only collects the personally identifiable information (PII) necessary to
|
||||
deliver a quality user experience when interacting with the voice assistant. Any
|
||||
PII we collect is stored securely on our servers. It is not shared with anyone.
|
||||
<p class="mat-body">
|
||||
We continually investigate solutions to further minimize the PII we collect. We
|
||||
also strive to be transparent about the data we do collect and why it is collected.
|
||||
To learn more about the go to My Data.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="personalDataUrl">MY DATA</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
|
@ -0,0 +1,7 @@
|
|||
@import "components/cards";
|
||||
|
||||
mat-card {
|
||||
@include selene-card;
|
||||
max-width: 800px;
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
import { faUserLock } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import { environment } from '@account/environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'account-dashboard-privacy',
|
||||
templateUrl: './dashboard-privacy.component.html',
|
||||
styleUrls: ['./dashboard-privacy.component.scss']
|
||||
})
|
||||
export class DashboardPrivacyComponent implements OnInit {
|
||||
public privacyIcon = faUserLock;
|
||||
public personalDataUrl = environment.mycroftUrls.account + '/personal-data';
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
<mat-card>
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="settingsIcon"></fa-icon>
|
||||
<mat-card-title>Configure Skills</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Some skills include settings that can change how the skill behaves or provide
|
||||
information to the skill that will improve the user experience. To change the
|
||||
settings of your skills, for instance the sound of your alarm, go to Skill Settings.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="settingsUrl">SKILL SETTINGS</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
|
@ -0,0 +1,5 @@
|
|||
@import "components/cards";
|
||||
|
||||
mat-card {
|
||||
@include selene-card;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
import { faGear } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import { environment } from '@account/environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'account-dashboard-skill',
|
||||
templateUrl: './dashboard-skill.component.html',
|
||||
styleUrls: ['./dashboard-skill.component.scss']
|
||||
})
|
||||
export class DashboardSkillComponent implements OnInit {
|
||||
public settingsIcon = faGear;
|
||||
public settingsUrl = environment.mycroftUrls.account + '/skills';
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
|
@ -1,65 +1,7 @@
|
|||
<div id="dashboard" fxLayout="row" fxLayoutAlign="center" fxLayout.xs="column" fxLayoutGap="16px">
|
||||
<mat-card *ngIf="account.membership" fxFlex="40">
|
||||
<mat-card-header>
|
||||
<fa-icon [icon]="awardIcon"></fa-icon>
|
||||
</mat-card-header>
|
||||
<mat-card-title>Mycroft likes you</mat-card-title>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Your support makes a big difference. Thanks to you and other Mycroft supporters,
|
||||
we can continue building upon the Mycroft experience. It is also motivating
|
||||
knowing there is a community of people who believe in the same things we do.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<!-- Commented out until premium voices are available -->
|
||||
<!-- <mat-card-actions>
|
||||
<a mat-button [href]="voicesUrl">CHECK OUT PREMIUM VOICES</a>
|
||||
</mat-card-actions> -->
|
||||
</mat-card>
|
||||
|
||||
<mat-card *ngIf="!account.membership" fxFlex="40">
|
||||
<mat-card-header>
|
||||
<fa-icon [icon]="awardIcon"></fa-icon>
|
||||
</mat-card-header>
|
||||
<mat-card-title>Become a Member</mat-card-title>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Mycroft's voice assistant software is open source, which means it is free to use and
|
||||
the underlying source code is available to the public. Our entire platform is free
|
||||
of advertisements. The data we collect from those that opt in to our open dataset
|
||||
is not sold to anyone.
|
||||
<p class="mat-body">
|
||||
For less than one cup of coffee a month, you can help support our server costs,
|
||||
hosting, and ongoing development. All of which all improve Mycroft's performance
|
||||
and user experience.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="accountUrl">MONTHLY MEMBERSHIP $1.99</a>
|
||||
<a mat-button [href]="accountUrl">YEARLY MEMBERSHIP $19.99</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
||||
|
||||
<mat-card fxFlex="40">
|
||||
<mat-card-header>
|
||||
<fa-icon [icon]="downloadIcon"></fa-icon>
|
||||
</mat-card-header>
|
||||
<mat-card-title>Install New Skills</mat-card-title>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
Your device comes with a set of pre-installed skills like Timers and Wikipedia.
|
||||
To change the settings of your skills, for instance the sound of your alarm,
|
||||
go to Skill Settings.
|
||||
</p>
|
||||
<p class="mat-body">
|
||||
Our open source community extends the functionality of Mycroft. Their efforts have
|
||||
produced skills like Fairytalez and ISS Tracker. To install new skills,
|
||||
visit the Marketplace.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
<mat-card-actions>
|
||||
<a mat-button [href]="marketplaceUrl">SKILL MARKETPLACE</a>
|
||||
<a mat-button [href]="settingsUrl">SKILL SETTINGS</a>
|
||||
</mat-card-actions>
|
||||
</mat-card>
|
||||
<div id="dashboard" fxLayout="row wrap" fxLayoutAlign="center" fxLayout.xs="column">
|
||||
<account-dashboard-privacy fxFlex="75"></account-dashboard-privacy>
|
||||
<account-dashboard-device fxFlex="45"></account-dashboard-device>
|
||||
<account-dashboard-skill fxFlex="45"></account-dashboard-skill>
|
||||
<account-dashboard-membership fxFlex="45" [account]="account"></account-dashboard-membership>
|
||||
<account-dashboard-marketplace fxFlex="45"></account-dashboard-marketplace>
|
||||
</div>
|
||||
|
|
|
@ -1,48 +1,9 @@
|
|||
@import "@angular/material/theming";
|
||||
@import "mycroft-colors";
|
||||
@import "components/buttons";
|
||||
iframe {
|
||||
min-width: 350px;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
#dashboard {
|
||||
max-width: 1200px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
mat-card {
|
||||
min-height: 540px;
|
||||
margin: 16px;
|
||||
max-width: 540px;
|
||||
min-width: 300px;
|
||||
|
||||
fa-icon {
|
||||
font-size: 60px;
|
||||
color: mat-color($mycroft-primary)
|
||||
}
|
||||
|
||||
mat-card-title {
|
||||
font-size: 40px;
|
||||
font-weight: bolder;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
mat-card-content {
|
||||
padding: 16px;
|
||||
|
||||
.mat-body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
mat-card-actions {
|
||||
padding: 16px;
|
||||
|
||||
a {
|
||||
@include action-button-primary;
|
||||
margin: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,10 +19,7 @@ and limitations under the License.
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
|
||||
import { faAward, faDownload } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import { Account } from '@account/models/account.model';
|
||||
import { environment } from '@account/environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'account-dashboard',
|
||||
|
@ -31,12 +28,6 @@ import { environment } from '@account/environments/environment';
|
|||
})
|
||||
export class DashboardComponent implements OnInit {
|
||||
public account: Account;
|
||||
public awardIcon = faAward;
|
||||
public downloadIcon = faDownload;
|
||||
public marketplaceUrl = environment.mycroftUrls.marketplace;
|
||||
public settingsUrl = environment.mycroftUrls.account + '/skills';
|
||||
public voicesUrl = environment.mycroftUrls.mimic;
|
||||
public accountUrl = environment.mycroftUrls.account + '/profile';
|
||||
|
||||
constructor(private route: ActivatedRoute) {
|
||||
}
|
||||
|
|
|
@ -25,10 +25,20 @@ import { MatCardModule } from '@angular/material/card';
|
|||
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
||||
|
||||
import { DashboardComponent } from './dashboard.component';
|
||||
import { DashboardPrivacyComponent } from './components/dashboard-privacy/dashboard-privacy.component';
|
||||
import { DashboardDeviceComponent } from './components/dashboard-device/dashboard-device.component';
|
||||
import { DashboardSkillComponent } from './components/dashboard-skill/dashboard-skill.component';
|
||||
import { DashboardMembershipComponent } from './components/dashboard-membership/dashboard-membership.component';
|
||||
import { DashboardMarketplaceComponent } from './components/dashboard-marketplace/dashboard-marketplace.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
DashboardComponent
|
||||
DashboardComponent,
|
||||
DashboardPrivacyComponent,
|
||||
DashboardDeviceComponent,
|
||||
DashboardSkillComponent,
|
||||
DashboardMembershipComponent,
|
||||
DashboardMarketplaceComponent
|
||||
],
|
||||
imports: [
|
||||
CommonModule,
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
/*! *****************************************************************************
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
Copyright (c) Mycroft AI Inc. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
|
||||
import { PersonalDataComponent } from './personal-data.component';
|
||||
|
||||
const personalDataRoutes: Routes = [
|
||||
{path: 'personal-data', component: PersonalDataComponent},
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild(personalDataRoutes)
|
||||
],
|
||||
exports: [
|
||||
RouterModule
|
||||
]
|
||||
})
|
||||
export class PersonalDataRoutingModule { }
|
|
@ -0,0 +1,90 @@
|
|||
<h1 class="mat-h1" fxLayoutAlign="center">Data Mycroft Collects</h1>
|
||||
<div class="personal-data-page" fxLayout="row wrap" fxLayoutAlign="center" fxLayout.xs="column" fxLayoutGap="16px">
|
||||
<mat-card fxFlex="70">
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="emailAddressIcon"></fa-icon>
|
||||
<mat-card-title>Email Address</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
When you created this account, you provided your email address. It is the method we
|
||||
use to identify users. It is also used to send you confirmation messages when
|
||||
actions are taken against your account. For example, a password reset request is
|
||||
sent to this email address.
|
||||
<p class="mat-body">
|
||||
We do not use your email address for marketing purposes, unless you used the same
|
||||
email address to sign up for our newsletter or other such mailing list. Your email
|
||||
address is never shared with third parties.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<mat-card fxFlex="70">
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="locationIcon"></fa-icon>
|
||||
<mat-card-title>Geographical Location</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
When you register a device with Mycroft, the Add Device screen asks for the
|
||||
geographical location of yor device. This data is synchronized to your device when
|
||||
it is registered and when it is changed via the Edit Device screen. Your device
|
||||
uses this data for location-specific services such as date, time and weather.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<mat-card fxFlex="70">
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="dataPresentationIcon"></fa-icon>
|
||||
<mat-card-title>Data Presentation</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
When you register your first device, you are asked for your preferred date format,
|
||||
time format, and measurement system. This data is synchronized to each of your
|
||||
devices when they are registered. If the values of these preferences change, the
|
||||
new values are synchronized to all your devices. Your device uses this data for
|
||||
when formatting data for presentation such as date, time and weather.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</div>
|
||||
|
||||
<h1 class="mat-h1" fxLayoutAlign="center">Data Sent to Third Parties</h1>
|
||||
<div class="personal-data-page" fxLayout="row wrap" fxLayoutAlign="center" fxLayout.xs="column" fxLayoutGap="16px">
|
||||
<mat-card fxFlex="70">
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="voiceIcon"></fa-icon>
|
||||
<mat-card-title>Speech Transcription</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
When you issue a command or request to your voice assistant, the audio data is
|
||||
transcribed into text. The transcription can be performed on your device, but
|
||||
on-device transcription software does not provide the best user experience.
|
||||
Transcriptions are more accurate when sent to a third party service provider
|
||||
over the internet.
|
||||
<p class="mat-body">
|
||||
Mycroft has partnered with Assembly AI to provide a privacy focused solution for
|
||||
speech transcription. Your voice request will be sent for transcription, but will
|
||||
not be saved.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<mat-card fxFlex="70">
|
||||
<mat-card-header>
|
||||
<fa-icon mat-card-avatar [icon]="queryIcon"></fa-icon>
|
||||
<mat-card-title>Answering Queries</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p class="mat-body">
|
||||
When you ask the Mycroft voice assistant a question that cannot be answered by one
|
||||
of the installed skills, a textual representation of the question is sent to
|
||||
services like Wolfram Alpha, Duck Duck Go and Wikipedia in an attempt to find the
|
||||
answer.
|
||||
</p>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</div>
|
|
@ -0,0 +1,42 @@
|
|||
@import "@angular/material/theming";
|
||||
@import "mycroft-colors";
|
||||
@import "components/buttons";
|
||||
|
||||
.personal-data-page {
|
||||
max-width: 1200px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.mat-h1 {
|
||||
color: mat-color($mycroft-accent);
|
||||
font-size: 32px;
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
mat-card {
|
||||
border-radius: 12px;
|
||||
margin: 16px;
|
||||
max-width: 500px;
|
||||
min-width: 300px;
|
||||
|
||||
mat-card-header {
|
||||
fa-icon {
|
||||
font-size: 32px;
|
||||
color: mat-color($mycroft-primary);
|
||||
padding-left: 16px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
mat-card-title {
|
||||
font-weight: bold;
|
||||
padding-top: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
mat-card-content {
|
||||
padding: 16px;
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
import { faComments, faEarthAmericas, faEnvelope, faGauge, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
@Component({
|
||||
selector: 'account-personal-data',
|
||||
templateUrl: './personal-data.component.html',
|
||||
styleUrls: ['./personal-data.component.scss']
|
||||
})
|
||||
export class PersonalDataComponent implements OnInit {
|
||||
public dataPresentationIcon = faGauge;
|
||||
public emailAddressIcon = faEnvelope;
|
||||
public locationIcon = faEarthAmericas;
|
||||
public queryIcon = faQuestionCircle;
|
||||
public voiceIcon = faComments;
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*! *****************************************************************************
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
Copyright (c) Mycroft AI Inc. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
import { MatCardModule } from '@angular/material/card';
|
||||
|
||||
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
||||
|
||||
import { PersonalDataComponent } from './personal-data.component';
|
||||
import { PersonalDataRoutingModule } from './personal-data-routing.module';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
PersonalDataComponent
|
||||
],
|
||||
imports: [
|
||||
CommonModule,
|
||||
FlexLayoutModule,
|
||||
FontAwesomeModule,
|
||||
MatButtonModule,
|
||||
MatCardModule,
|
||||
PersonalDataRoutingModule
|
||||
]
|
||||
})
|
||||
export class PersonalDataModule { }
|
|
@ -18,7 +18,7 @@ and limitations under the License.
|
|||
|
||||
import { Component, Input } from '@angular/core';
|
||||
|
||||
import { Account } from '../../../../../shared/models/account.model';
|
||||
import { Account } from '@account/models/account.model';
|
||||
|
||||
@Component({
|
||||
selector: 'account-login-edit',
|
||||
|
|
|
@ -121,7 +121,7 @@ $mycroft-warn-palette: (
|
|||
$mycroft-light-theme-background: (
|
||||
status-bar: map_get($mat-grey, 300),
|
||||
app-bar: map_get($mat-grey, 100),
|
||||
background: #f1f3f4,
|
||||
background: #e4f1fe,
|
||||
hover: rgba(black, 0.04),
|
||||
card: white,
|
||||
dialog: white,
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
// *****************************************************************************
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// Copyright (c) Mycroft AI Inc. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
// this file except in compliance with the License. You may obtain a copy of the
|
||||
// License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
//
|
||||
// THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
// WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
// MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
//
|
||||
//
|
||||
// See the Apache Version 2.0 License for specific language governing permissions
|
||||
// and limitations under the License.
|
||||
// *****************************************************************************
|
||||
|
@ -62,3 +62,40 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin selene-card {
|
||||
border-radius: 12px;
|
||||
margin: 16px;
|
||||
max-width: 500px;
|
||||
min-width: 300px;
|
||||
//padding: 16px;
|
||||
|
||||
mat-card-header {
|
||||
fa-icon {
|
||||
font-size: 32px;
|
||||
color: mat-color($mycroft-primary);
|
||||
padding-left: 16px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
mat-card-title {
|
||||
font-weight: bold;
|
||||
padding-top: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
mat-card-content {
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
padding-top: 16px;
|
||||
}
|
||||
|
||||
mat-card-actions {
|
||||
padding-left: 16px;
|
||||
|
||||
a {
|
||||
@include action-button-primary;
|
||||
margin: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue