Merge branch 'master' into version-2021.3
# Conflicts: # web/src/constants.ts
This commit is contained in:
@ -4,7 +4,9 @@ import { NotFoundError, RequestError } from "./Error";
|
||||
export const VERSION = "v2beta";
|
||||
|
||||
export interface QueryArguments {
|
||||
[key: string]: number | string | boolean | null;
|
||||
page?: number;
|
||||
page_size?: number;
|
||||
[key: string]: number | string | boolean | undefined | null;
|
||||
}
|
||||
|
||||
export interface BaseInheritanceModel {
|
||||
|
@ -8,6 +8,7 @@ export interface OAuth2SetupURLs {
|
||||
token: string;
|
||||
user_info: string;
|
||||
provider_info?: string;
|
||||
logout?: string;
|
||||
|
||||
}
|
||||
|
||||
|
@ -61,11 +61,6 @@ select[multiple] {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* Fix pre elements within alerts */
|
||||
.pf-c-alert pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.pf-c-content h1 {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
@ -85,6 +80,12 @@ select[multiple] {
|
||||
z-index: auto !important;
|
||||
}
|
||||
|
||||
/* ensure background on non-flow pages match */
|
||||
.pf-c-background-image::before {
|
||||
background-image: url("dist/assets/images/flow_background.jpg");
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
/* Fix spacing between messages */
|
||||
ak-message {
|
||||
display: block;
|
||||
|
@ -4,3 +4,4 @@ export const ERROR_CLASS = "pf-m-danger";
|
||||
export const PROGRESS_CLASS = "pf-m-in-progress";
|
||||
export const CURRENT_CLASS = "pf-m-current";
|
||||
export const VERSION = "2021.3.1-rc1";
|
||||
export const PAGE_SIZE = 20;
|
||||
|
@ -59,9 +59,9 @@ export class SpinnerButton extends LitElement {
|
||||
return;
|
||||
}
|
||||
if (this.form) {
|
||||
// Because safari we can't just extend HTMLButtonElement, hence I have to implement
|
||||
// these attributes by myself here, sigh...
|
||||
document.querySelector<HTMLFormElement>(`#${this.form}`)?.submit();
|
||||
// Since the form= attribute is only used within a modal button,
|
||||
// we can assume the form is always two levels up
|
||||
this.parentElement?.parentElement?.querySelector < HTMLFormElement>(`#${this.form}`)?.dispatchEvent(new Event("submit"));
|
||||
}
|
||||
this.setLoading();
|
||||
}
|
||||
|
@ -40,9 +40,7 @@ export class NotificationDrawer extends LitElement {
|
||||
}
|
||||
|
||||
renderItem(item: Notification): TemplateResult {
|
||||
const delta = Date.now() - (parseInt(item.created, 10) * 1000);
|
||||
// TODO: more flexible display, minutes and seconds
|
||||
const age = `${Math.round(delta / 1000 / 3600)} Hours ago`;
|
||||
const created = new Date(parseInt(item.created, 10) * 1000);
|
||||
let level = "";
|
||||
switch (item.severity) {
|
||||
case "notice":
|
||||
@ -76,7 +74,7 @@ export class NotificationDrawer extends LitElement {
|
||||
</button>
|
||||
</div>
|
||||
<p class="pf-c-notification-drawer__list-item-description">${item.body}</p>
|
||||
<small class="pf-c-notification-drawer__list-item-timestamp">${age}</small>
|
||||
<small class="pf-c-notification-drawer__list-item-timestamp">${created.toLocaleString()}</small>
|
||||
</li>`;
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@ import "../../elements/buttons/SpinnerButton";
|
||||
import "../../elements/buttons/Dropdown";
|
||||
import { Policy } from "../../api/Policies";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-bound-policies-list")
|
||||
export class BoundPoliciesList extends Table<PolicyBinding> {
|
||||
@ -22,6 +23,7 @@ export class BoundPoliciesList extends Table<PolicyBinding> {
|
||||
target: this.target || "",
|
||||
ordering: "order",
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import { TablePage } from "../../elements/table/TablePage";
|
||||
import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-application-list")
|
||||
export class ApplicationListPage extends TablePage<Application> {
|
||||
@ -30,6 +31,7 @@ export class ApplicationListPage extends TablePage<Application> {
|
||||
return Application.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { CertificateKeyPair } from "../../api/CertificateKeyPair";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-crypto-certificatekeypair-list")
|
||||
export class CertificateKeyPairListPage extends TablePage<CertificateKeyPair> {
|
||||
@ -32,6 +33,7 @@ export class CertificateKeyPairListPage extends TablePage<CertificateKeyPair> {
|
||||
return CertificateKeyPair.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ import { gettext } from "django";
|
||||
import { customElement, html, property, TemplateResult } from "lit-element";
|
||||
import { AKResponse } from "../../api/Client";
|
||||
import { Event } from "../../api/Events";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { TablePage } from "../../elements/table/TablePage";
|
||||
import { time } from "../../utils";
|
||||
@ -31,6 +32,7 @@ export class EventListPage extends TablePage<Event> {
|
||||
return Event.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE * 3,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Rule } from "../../api/EventRules";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-event-rule-list")
|
||||
export class RuleListPage extends TablePage<Rule> {
|
||||
@ -33,6 +34,7 @@ export class RuleListPage extends TablePage<Rule> {
|
||||
return Rule.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Transport } from "../../api/EventTransports";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-event-transport-list")
|
||||
export class TransportListPage extends TablePage<Transport> {
|
||||
@ -31,6 +32,7 @@ export class TransportListPage extends TablePage<Transport> {
|
||||
return Transport.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import "../../elements/buttons/Dropdown";
|
||||
import "../../elements/policies/BoundPoliciesList";
|
||||
import { FlowStageBinding, Stage } from "../../api/Flows";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-bound-stages-list")
|
||||
export class BoundStagesList extends Table<FlowStageBinding> {
|
||||
@ -24,6 +25,7 @@ export class BoundStagesList extends Table<FlowStageBinding> {
|
||||
target: this.target || "",
|
||||
ordering: "order",
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import { TablePage } from "../../elements/table/TablePage";
|
||||
import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-flow-list")
|
||||
export class FlowListPage extends TablePage<Flow> {
|
||||
@ -30,6 +31,7 @@ export class FlowListPage extends TablePage<Flow> {
|
||||
return Flow.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Group } from "../../api/Groups";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-group-list")
|
||||
export class GroupListPage extends TablePage<Group> {
|
||||
@ -30,6 +31,7 @@ export class GroupListPage extends TablePage<Group> {
|
||||
return Group.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import "./OutpostHealth";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/TokenCopyButton";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-outpost-list")
|
||||
export class OutpostListPage extends TablePage<Outpost> {
|
||||
@ -29,6 +30,7 @@ export class OutpostListPage extends TablePage<Outpost> {
|
||||
return Outpost.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import "../../elements/buttons/SpinnerButton";
|
||||
import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/Dropdown";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-outpost-service-connection-list")
|
||||
export class OutpostServiceConnectionListPage extends TablePage<OutpostServiceConnection> {
|
||||
@ -31,6 +32,7 @@ export class OutpostServiceConnectionListPage extends TablePage<OutpostServiceCo
|
||||
return OutpostServiceConnection.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Policy } from "../../api/Policies";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-policy-list")
|
||||
export class PolicyListPage extends TablePage<Policy> {
|
||||
@ -31,7 +32,8 @@ export class PolicyListPage extends TablePage<Policy> {
|
||||
apiEndpoint(page: number): Promise<AKResponse<Policy>> {
|
||||
return Policy.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import "../../elements/buttons/Dropdown";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-property-mapping-list")
|
||||
export class PropertyMappingListPage extends TablePage<PropertyMapping> {
|
||||
@ -35,6 +36,7 @@ export class PropertyMappingListPage extends TablePage<PropertyMapping> {
|
||||
return PropertyMapping.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
managed__isnull: this.hideManaged,
|
||||
});
|
||||
|
@ -148,10 +148,16 @@ export class OAuth2ProviderViewPage extends Page {
|
||||
</div>
|
||||
<div class="pf-c-form__group">
|
||||
<label class="pf-c-form__label" for="help-text-simple-form-name">
|
||||
<span class="pf-c-form__label-text">${gettext("Userinfo Endpoint")}</span>
|
||||
<span class="pf-c-form__label-text">${gettext("Userinfo URL")}</span>
|
||||
</label>
|
||||
<input class="pf-c-form-control" readonly type="text" value="${this.providerUrls?.user_info || "-"}" />
|
||||
</div>
|
||||
<div class="pf-c-form__group">
|
||||
<label class="pf-c-form__label" for="help-text-simple-form-name">
|
||||
<span class="pf-c-form__label-text">${gettext("Logout URL")}</span>
|
||||
</label>
|
||||
<input class="pf-c-form-control" readonly type="text" value="${this.providerUrls?.logout || "-"}" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,6 +9,7 @@ import "../../elements/buttons/SpinnerButton";
|
||||
import "../../elements/buttons/Dropdown";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-provider-list")
|
||||
export class ProviderListPage extends TablePage<Provider> {
|
||||
@ -32,6 +33,7 @@ export class ProviderListPage extends TablePage<Provider> {
|
||||
return Provider.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import "../../elements/buttons/Dropdown";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-source-list")
|
||||
export class SourceListPage extends TablePage<Source> {
|
||||
@ -32,6 +33,7 @@ export class SourceListPage extends TablePage<Source> {
|
||||
return Source.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Invitation } from "../../api/Invitations";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-stage-invitation-list")
|
||||
export class InvitationListPage extends TablePage<Invitation> {
|
||||
@ -30,6 +31,7 @@ export class InvitationListPage extends TablePage<Invitation> {
|
||||
return Invitation.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import "../../elements/buttons/ModalButton";
|
||||
import "../../elements/buttons/SpinnerButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Prompt } from "../../api/Prompts";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-stage-prompt-list")
|
||||
export class PromptListPage extends TablePage<Prompt> {
|
||||
@ -30,6 +31,7 @@ export class PromptListPage extends TablePage<Prompt> {
|
||||
return Prompt.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import "../../elements/buttons/SpinnerButton";
|
||||
import "../../elements/buttons/Dropdown";
|
||||
import { until } from "lit-html/directives/until";
|
||||
import { Stage } from "../../api/Flows";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-stage-list")
|
||||
export class StageListPage extends TablePage<Stage> {
|
||||
@ -32,6 +33,7 @@ export class StageListPage extends TablePage<Stage> {
|
||||
return Stage.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import "../../elements/buttons/Dropdown";
|
||||
import "../../elements/buttons/TokenCopyButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { Token } from "../../api/Tokens";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-token-list")
|
||||
export class TokenListPage extends TablePage<Token> {
|
||||
@ -31,6 +32,7 @@ export class TokenListPage extends TablePage<Token> {
|
||||
return Token.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import "../../elements/buttons/Dropdown";
|
||||
import "../../elements/buttons/TokenCopyButton";
|
||||
import { Table, TableColumn } from "../../elements/table/Table";
|
||||
import { Token } from "../../api/Tokens";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-token-user-list")
|
||||
export class UserTokenList extends Table<Token> {
|
||||
@ -21,6 +22,7 @@ export class UserTokenList extends Table<Token> {
|
||||
return Token.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
@ -35,6 +37,18 @@ export class UserTokenList extends Table<Token> {
|
||||
];
|
||||
}
|
||||
|
||||
renderToolbar(): TemplateResult {
|
||||
return html`
|
||||
<ak-modal-button href="-/user/tokens/create/">
|
||||
<ak-spinner-button slot="trigger" class="pf-m-primary">
|
||||
${gettext("Create")}
|
||||
</ak-spinner-button>
|
||||
<div slot="modal"></div>
|
||||
</ak-modal-button>
|
||||
${super.renderToolbar()}
|
||||
`;
|
||||
}
|
||||
|
||||
row(item: Token): TemplateResult[] {
|
||||
return [
|
||||
html`${item.identifier}`,
|
||||
|
@ -8,6 +8,7 @@ import "../../elements/buttons/Dropdown";
|
||||
import "../../elements/buttons/ActionButton";
|
||||
import { TableColumn } from "../../elements/table/Table";
|
||||
import { User } from "../../api/Users";
|
||||
import { PAGE_SIZE } from "../../constants";
|
||||
|
||||
@customElement("ak-user-list")
|
||||
export class UserListPage extends TablePage<User> {
|
||||
@ -31,6 +32,7 @@ export class UserListPage extends TablePage<User> {
|
||||
return User.list({
|
||||
ordering: this.order,
|
||||
page: page,
|
||||
page_size: PAGE_SIZE,
|
||||
search: this.search || "",
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user