Browse Source

Client UI improved

pull/342/head
Sebastian Stehle 7 years ago
parent
commit
3fe0bb8fc4
  1. 107
      src/Squidex/app/features/settings/pages/clients/client.component.html
  2. 45
      src/Squidex/app/features/settings/pages/clients/client.component.scss
  3. 13
      tools/Migrate_01/Migrations/ConvertRuleEventsJson.cs

107
src/Squidex/app/features/settings/pages/clients/client.component.html

@ -1,7 +1,7 @@
<div class="table-items-row">
<div class="row no-gutters">
<div class="col">
<div class="client-header">
<div class="card">
<div class="card-header">
<div class="row no-gutters">
<div class="col">
<form *ngIf="isRenaming" class="form-inline" [formGroup]="renameForm.form" (ngSubmit)="rename()">
<div class="form-group mr-1">
<sqx-control-errors for="name"></sqx-control-errors>
@ -24,59 +24,64 @@
<i class="client-edit icon-pencil" (click)="toggleRename()"></i>
</ng-container>
</div>
</div>
<div class="col-auto">
<button class="btn btn-primary" (click)="createToken(client)">Connect</button>
</div>
<div class="col-auto cell-actions">
<button type="button" class="btn btn-text-danger"
(sqxConfirmClick)="revoke()"
confirmTitle="Revoke client"
confirmText="Do you really want to revoke the client?">
<i class="icon-bin2"></i>
</button>
</div>
</div>
<div class="row no-gutters form-group">
<div class="col-4 col-form-label">
Client Id:
</div>
<div class="col">
<input readonly class="form-control" value="{{appsState.appName}}:{{client.id}}" #inputName />
</div>
<div class="col-auto cell-actions">
<button type="button" class="btn btn-text" [sqxCopy]="inputName">
<i class="icon-copy"></i>
</button>
</div>
</div>
<div class="row no-gutters form-group">
<div class="col-4 col-form-label">
Client Secret:
</div>
<div class="col">
<input readonly class="form-control" [attr.value]="client.secret" #inputSecret />
</div>
<div class="col-auto cell-actions">
<button type="button" class="btn btn-text" [sqxCopy]="inputSecret">
<i class="icon-copy"></i>
</button>
<div class="col-auto">
<button class="btn btn-primary" (click)="createToken(client)">Connect</button>
</div>
<div class="col-auto cell-actions">
<button type="button" class="btn btn-text-danger"
(sqxConfirmClick)="revoke()"
confirmTitle="Revoke client"
confirmText="Do you really want to revoke the client?">
<i class="icon-bin2"></i>
</button>
</div>
</div>
</div>
<div class="row no-gutters">
<div class="col-4 col-form-label">
Role:
</div>
<div class="col">
<select class="form-control" [ngModel]="client.role" (ngModelChange)="update($event)">
<option *ngFor="let role of clientRoles" [ngValue]="role.name">{{role.name}}</option>
</select>
</div>
<div class="col-auto cell-actions">
<div class="card-body">
<div class="container">
<div class="form-group row">
<label class="col-3 col-form-label">
Client Id
</label>
<div class="col cell-input">
<input readonly class="form-control" value="{{appsState.appName}}:{{client.id}}" #inputName />
</div>
<div class="col-auto cell-actions">
<button type="button" class="btn btn-text" [sqxCopy]="inputName">
<i class="icon-copy"></i>
</button>
</div>
</div>
<div class="form-group row">
<label class="col-3 col-form-label">
Client Secret
</label>
<div class="col cell-input">
<input readonly class="form-control" [attr.value]="client.secret" #inputSecret />
</div>
<div class="col-auto cell-actions">
<button type="button" class="btn btn-text" [sqxCopy]="inputSecret">
<i class="icon-copy"></i>
</button>
</div>
</div>
<div class="form-group row">
<label class="col-3 col-form-label">
Role
</label>
<div class="col cell-input">
<select class="form-control" [ngModel]="client.role" (ngModelChange)="update($event)">
<option *ngFor="let role of clientRoles" [ngValue]="role.name">{{role.name}}</option>
</select>
</div>
<div class="col-auto cell-actions"></div>
</div>
</div>
</div>
</div>
<sqx-modal-dialog *sqxModalView="connectDialog;onRoot:true" large="true" (closed)="connectDialog.hide()">
<ng-container title>
Connect

45
src/Squidex/app/features/settings/pages/clients/client.component.scss

@ -3,6 +3,26 @@
$color-editor: #eceeef;
.card {
& {
@include border-radius(0);
border-bottom-width: 2px;
border-top-width: 1px;
}
&-header {
& {
margin-bottom: .5rem;
}
&:hover {
.client-edit {
display: inline-block;
}
}
}
}
.client {
&-info {
margin: 0;
@ -34,30 +54,15 @@ $color-editor: #eceeef;
display: inline-block;
margin: 0;
}
&-header {
& {
margin-bottom: .5rem;
}
&:hover {
.client-edit {
display: inline-block;
}
}
}
}
.col-form-label {
text-align: left;
}
.form-check {
padding: .5rem 0 0;
.cell-actions {
width: 3.2rem;
padding: 0;
}
.form-check-label {
padding: 0;
.cell-input {
padding-right: 0;
}
.access-token {

13
tools/Migrate_01/Migrations/ConvertRuleEventsJson.cs

@ -25,11 +25,18 @@ namespace Migrate_01.Migrations
{
foreach (var document in collection.Find(new BsonDocument()).ToEnumerable())
{
document["Job"]["actionData"] = document["Job"]["actionData"].ToBsonDocument().ToJson();
try
{
document["Job"]["actionData"] = document["Job"]["actionData"].ToBsonDocument().ToJson();
var filter = Builders<BsonDocument>.Filter.Eq("_id", document["_id"].ToString());
var filter = Builders<BsonDocument>.Filter.Eq("_id", document["_id"].ToString());
await collection.ReplaceOneAsync(filter, document);
await collection.ReplaceOneAsync(filter, document);
}
catch
{
continue;
}
}
}
}

Loading…
Cancel
Save