Attempt to make *hastic* client which works with old version of hastic-server https://code.corpglory.net/hastic/hastic-server
based on new version of hastic client from https://code.corpglory.net/hastic/hastic
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
export type SegmentId = string; |
|
|
|
export enum SegmentType { |
|
LABEL = 'Label', |
|
ANTI_LABEL = 'AntiLabel', |
|
DETECTION = 'Detection' |
|
} |
|
|
|
export class Segment { |
|
constructor(private _id: SegmentId | undefined, public from: number, public to: number, segmentType = SegmentType.LABEL) { |
|
if(this._id === undefined) { |
|
throw new Error('id is undefined'); |
|
} |
|
if(isNaN(+from)) { |
|
throw new Error('from can`t be NaN'); |
|
} |
|
if(isNaN(+to)) { |
|
throw new Error('to can`t be NaN'); |
|
} |
|
this._segmentType = segmentType; |
|
} |
|
|
|
get id(): SegmentId { return this._id; } |
|
set id(value) { this._id = value; } |
|
|
|
get middle() { return (this.from + this.to) / 2; } |
|
|
|
get length() { |
|
return Math.max(this.from, this.to) - Math.min(this.from, this.to); |
|
} |
|
|
|
expandDist(allDist: number, portion: number): Segment { |
|
let p = Math.round(this.middle - allDist * portion / 2); |
|
let q = Math.round(this.middle + allDist * portion / 2); |
|
p = Math.min(p, this.from); |
|
q = Math.max(q, this.to); |
|
return new Segment(this._id, p, q); |
|
} |
|
|
|
equals(segment: Segment) { |
|
return this._id === segment._id; |
|
} |
|
|
|
// TODO: remove this and make original inheritence |
|
_segmentType: SegmentType |
|
get segmentType(): SegmentType { return this._segmentType; } |
|
set segmentType(value: SegmentType) { this._segmentType = value; } |
|
|
|
toObject() { |
|
return { |
|
id: this.id, |
|
from: this.from, |
|
to: this.to, |
|
segment_type: this.segmentType |
|
} |
|
} |
|
|
|
static fromObject(obj: any) { |
|
return new Segment( |
|
obj.id, |
|
obj.from, |
|
obj.to, |
|
obj.segment_type |
|
); |
|
} |
|
|
|
} |