Add chart item component, StateType and getStateType to determine state from Folder
This commit is contained in:
+89
-16
@@ -9,27 +9,99 @@ interface Folder {
|
||||
}
|
||||
|
||||
namespace Folder {
|
||||
export enum stateType {
|
||||
export enum StateType {
|
||||
Paused = 1,
|
||||
Unknown,
|
||||
Unshared,
|
||||
WaitingToScan,
|
||||
Stopped,
|
||||
Scanning,
|
||||
Idle,
|
||||
LocalAdditions,
|
||||
WaitingToSync,
|
||||
PreparingToSync,
|
||||
Syncing,
|
||||
OutOfSync,
|
||||
FailedItems,
|
||||
}
|
||||
|
||||
export function statusToString(f: Folder): string {
|
||||
const fs: Folder.Status = f.status;
|
||||
const state: string = fs.state;
|
||||
/**
|
||||
* stateTypeToString returns a string representation of
|
||||
* the StateType enum
|
||||
* @param s StateType
|
||||
*/
|
||||
export function stateTypeToString(s: StateType): string {
|
||||
switch (s) {
|
||||
case StateType.Paused:
|
||||
return 'Paused';
|
||||
case StateType.Unknown:
|
||||
return 'Unknown';
|
||||
case StateType.Unshared:
|
||||
return 'Unshared';
|
||||
case StateType.WaitingToSync:
|
||||
return 'Waiting to Sync';
|
||||
case StateType.Stopped:
|
||||
return 'Stopped';
|
||||
case StateType.Scanning:
|
||||
return 'Scanning';
|
||||
case StateType.Idle:
|
||||
return 'Up to Date';
|
||||
case StateType.LocalAdditions:
|
||||
return 'Local Additions';
|
||||
case StateType.WaitingToScan:
|
||||
return 'Waiting to Scan';
|
||||
case StateType.PreparingToSync:
|
||||
return 'Preparing to Sync';
|
||||
case StateType.Syncing:
|
||||
return 'Syncing';
|
||||
case StateType.OutOfSync:
|
||||
return 'Out of Sync';
|
||||
case StateType.FailedItems:
|
||||
return 'Failed Items';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* getStatusType looks at a folder and determines the correct
|
||||
* StateType to return
|
||||
*
|
||||
* Possible state values from API
|
||||
* "idle", "scanning", "scan-waiting", "sync-waiting", "sync-preparing"
|
||||
* "syncing", "error", "unknown"
|
||||
*
|
||||
* @param f Folder
|
||||
*/
|
||||
export function getStateType(f: Folder): StateType {
|
||||
if (f.paused) {
|
||||
return 'paused';
|
||||
return StateType.Paused;
|
||||
}
|
||||
|
||||
if (!f.status || (Object.keys(f.status).length === 0)) {
|
||||
return 'unknown';
|
||||
return StateType.Unknown;
|
||||
}
|
||||
|
||||
if (state === 'error') {
|
||||
return 'stopped'; // legacy, the state is called "stopped" in the GUI
|
||||
}
|
||||
const fs: Folder.Status = f.status;
|
||||
const state: string = fs.state;
|
||||
|
||||
if (state !== 'idle') {
|
||||
return state;
|
||||
// Match API string to StateType
|
||||
switch (state) {
|
||||
case "idle":
|
||||
return StateType.Idle;
|
||||
case "scanning":
|
||||
return StateType.Scanning;
|
||||
case "scan-waiting":
|
||||
return StateType.WaitingToScan;
|
||||
case "sync-waiting":
|
||||
return StateType.WaitingToSync;
|
||||
case "sync-preparing":
|
||||
return StateType.PreparingToSync;
|
||||
case "syncing":
|
||||
return StateType.Syncing;
|
||||
case "error":
|
||||
// legacy, the state is called "stopped" in the gui
|
||||
return StateType.Stopped;
|
||||
case "unknown":
|
||||
return StateType.Unknown;
|
||||
}
|
||||
|
||||
const needTotalItems = fs.needDeletes + fs.needDirectories +
|
||||
@@ -38,21 +110,22 @@ namespace Folder {
|
||||
fs.receiveOnlyChangedFiles + fs.receiveOnlyChangedSymlinks;
|
||||
|
||||
if (needTotalItems > 0) {
|
||||
return 'outofsync';
|
||||
return StateType.OutOfSync;
|
||||
}
|
||||
if (f.status.pullErrors > 0) {
|
||||
return 'faileditems';
|
||||
return StateType.FailedItems;
|
||||
}
|
||||
if (receiveOnlyTotalItems > 0) {
|
||||
return 'localadditions';
|
||||
return StateType.LocalAdditions;
|
||||
}
|
||||
if (f.devices.length <= 1) {
|
||||
return 'unshared';
|
||||
return StateType.Unshared;
|
||||
}
|
||||
|
||||
return state;
|
||||
return StateType.Unknown;
|
||||
}
|
||||
|
||||
|
||||
export interface Status {
|
||||
globalBytes: number;
|
||||
globalDeleted: number;
|
||||
|
||||
Reference in New Issue
Block a user