teams list now renders
This commit is contained in:
parent
17c559bdfc
commit
e95b654d7f
81 changed files with 6132 additions and 40 deletions
27
src/pbHelpers/Context.ts
Normal file
27
src/pbHelpers/Context.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
export function getContextKeys(): string[] {
|
||||
// Get the url entries without any zero length strings
|
||||
let entries = document.location.pathname.split("/").filter(key => key.length > 0);
|
||||
let cutTail = entries.length % 2 === 0;
|
||||
|
||||
// Filter out every other entry
|
||||
entries = entries.filter((_, index) => index % 2 === 1);
|
||||
|
||||
if (cutTail) return entries.slice(0, -1);
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
export function getContextTypes(): string[] {
|
||||
// Get the url entries without any zero length strings
|
||||
let entries = document.location.pathname.split("/").filter(key => key.length > 0);
|
||||
|
||||
// Filter out every other entry
|
||||
entries = entries.filter((_, index) => index % 2 === 0);
|
||||
|
||||
// jobsite should just be site and none should end in s anymore
|
||||
entries = entries.slice(0, -1).map(str => (str.endsWith("s") ? str.slice(0, -1) : str));
|
||||
entries = entries.map(item => (item === "jobsite" ? "site" : item));
|
||||
|
||||
// Return all types but the last (it is the object being loaded, not the context)
|
||||
return entries;
|
||||
}
|
||||
21
src/pbHelpers/Permission.ts
Normal file
21
src/pbHelpers/Permission.ts
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import { pond } from "protobuf-ts/pond";
|
||||
import { or } from "utils/types";
|
||||
|
||||
export function permissionToString(permission: pond.Permission): string {
|
||||
return or(
|
||||
new Map<pond.Permission, string>([
|
||||
[pond.Permission.PERMISSION_INVALID, "PERMISSION_INVALID"],
|
||||
[pond.Permission.PERMISSION_READ, "PERMISSION_READ"],
|
||||
[pond.Permission.PERMISSION_SHARE, "PERMISSION_SHARE"],
|
||||
[pond.Permission.PERMISSION_USERS, "PERMISSION_USERS"],
|
||||
[pond.Permission.PERMISSION_WRITE, "PERMISSION_WRITE"],
|
||||
[pond.Permission.PERMISSION_FILE_MANAGEMENT, "PERMISSION_FILE_MANAGEMENT"],
|
||||
[pond.Permission.PERMISSION_BILLING, "PERMISSION_BILLING"]
|
||||
]).get(permission),
|
||||
"PERMISSION_INVALID"
|
||||
);
|
||||
}
|
||||
|
||||
export function canWrite(permissions: pond.Permission[]): boolean {
|
||||
return permissions.includes(pond.Permission.PERMISSION_WRITE);
|
||||
}
|
||||
41
src/pbHelpers/User.ts
Normal file
41
src/pbHelpers/User.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import { pond } from "protobuf-ts/pond";
|
||||
import moment from "moment-timezone";
|
||||
import { User } from "models";
|
||||
|
||||
export function userRoleFromPermissions(permissions: Array<pond.Permission>): string {
|
||||
//only be an owner if they have all 5
|
||||
if (
|
||||
permissions.includes(pond.Permission.PERMISSION_USERS) &&
|
||||
permissions.includes(pond.Permission.PERMISSION_READ) &&
|
||||
permissions.includes(pond.Permission.PERMISSION_WRITE) &&
|
||||
permissions.includes(pond.Permission.PERMISSION_SHARE) &&
|
||||
permissions.includes(pond.Permission.PERMISSION_FILE_MANAGEMENT)
|
||||
)
|
||||
return "Owner";
|
||||
if (permissions.includes(pond.Permission.PERMISSION_WRITE)) return "Admin";
|
||||
return "User";
|
||||
}
|
||||
|
||||
export function sortUsersByRole(users: User[]): User[] {
|
||||
let sortedUsers: User[] = users.slice(0).sort((a: User, b: User) => {
|
||||
if (a.permissions.length === b.permissions.length) {
|
||||
let aName: string = a.name().toLowerCase();
|
||||
let bName: string = b.name().toLowerCase();
|
||||
return aName > bName ? 1 : bName > aName ? -1 : 0;
|
||||
}
|
||||
return a.permissions.length - b.permissions.length;
|
||||
});
|
||||
|
||||
return sortedUsers;
|
||||
}
|
||||
|
||||
export function defaultUser(): User {
|
||||
return User.any({
|
||||
settings: {
|
||||
notifyByDefault: true,
|
||||
notificationMethods: [pond.NotificationMethod.NOTIFICATION_METHOD_EMAIL],
|
||||
phoneNumber: "",
|
||||
timezone: moment.tz.guess()
|
||||
}
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue