@@ -2529,8 +2529,9 @@ var edgeML = (function (require$$0, require$$1) {
25292529 * @param {string[] } labels
25302530 * @param {{ center: { [featureName: string]: number }, scale: { [featureName: string]: number } } } scaler
25312531 * @param {{ windowingMode: "time" | "sample" } } options
2532+ * @param {boolean } useDeviceTime - True if you want to use timestamps generated by the server
25322533 */
2533- constructor ( predictor , sensors , windowSize , labels , scaler , { windowingMode = "sample" } = { } ) {
2534+ constructor ( predictor , sensors , windowSize , labels , scaler , { windowingMode = "sample" , useDeviceTime = false } = { } ) {
25342535 /** @type {(input: number[]) => number[] } */
25352536 this . predictor = predictor ;
25362537 /** @type {string[] } */
@@ -2544,6 +2545,9 @@ var edgeML = (function (require$$0, require$$1) {
25442545
25452546 /** @type {boolean } */
25462547 this . windowModeMs = windowSize < 0 || windowingMode === "time" ;
2548+ /** @type {boolean } */
2549+ this . useDeviceTime = useDeviceTime ;
2550+
25472551 this . lastPruneTime = 0 ;
25482552 this . lastAddTime = 0 ;
25492553
@@ -2555,15 +2559,24 @@ var edgeML = (function (require$$0, require$$1) {
25552559 }
25562560
25572561 /**
2558- * addDatapoint
2562+ * addDataPoint
2563+ * @param {number } time - The timestamp assigned to the datapoint
25592564 * @param {string } sensorName
25602565 * @param {number } value
2561- * @param {number | null } time use a predefined timestamp, or null if the timestamp should be generated
25622566 */
2563- addDatapoint = ( sensorName , value , time = null ) => {
2567+ addDataPoint = ( time , sensorName , value ) => {
25642568 if ( typeof value !== 'number' ) throw new TypeError ( 'Datapoint is not a number' ) ;
25652569 if ( ! this . sensors . includes ( sensorName ) ) throw new TypeError ( 'Sensor is not valid' ) ;
2566- if ( time === null ) time = Date . now ( ) ;
2570+ // TODO: see #16 use if (time === null) time = Date.now()
2571+ if ( ! this . useDeviceTime && typeof time !== "number" ) {
2572+ throw new Error ( "Provide a valid timestamp" ) ;
2573+ }
2574+ if ( this . useDeviceTime ) {
2575+ time = Date . now ( ) ;
2576+ }
2577+
2578+ //TODO: see #17 no clue why see Collector
2579+ value = Math . round ( value * 100 ) / 100 ;
25672580
25682581 this . lastAddTime = time ;
25692582 this . store [ sensorName ] . push ( [ time , value ] ) ;
@@ -2602,6 +2615,9 @@ var edgeML = (function (require$$0, require$$1) {
26022615 let window ;
26032616 if ( this . windowModeMs ) {
26042617 window = Predictor . _sliceByTime ( samples , this . lastAddTime - this . windowSize ) ;
2618+ if ( window . length < 1 ) {
2619+ throw new PredictorError ( "Not enough samples" )
2620+ }
26052621 } else {
26062622 window = samples . slice ( - this . windowSize ) ;
26072623 if ( window . length < this . windowSize ) {
@@ -2805,15 +2821,14 @@ var edgeML = (function (require$$0, require$$1) {
28052821 var timeSeries = timeSeries ;
28062822
28072823 /**
2808- * Uploads a vlaue for a specific timestamp to a datasets timeSeries with name sensorName
2809- * @param {string } name - The name of the timeSeries to upload the value to
2824+ * Uploads a value for a specific timestamp to a dataset's timeSeries with name sensorName
2825+ * @param {string } sensorName - The name of the timeSeries to upload the value to
28102826 * @param {number } value - The datapoint to upload
28112827 * @param {number } time - The timestamp assigned to the datapoint
2812- * @returns A Promise indicating success or failure of upload
28132828 */
2814- function addDataPoint ( time , name , value ) {
2829+ function addDataPoint ( time , sensorName , value ) {
28152830
2816- if ( ! timeSeries . includes ( name ) ) {
2831+ if ( ! timeSeries . includes ( sensorName ) ) {
28172832 throw Error ( "invalid time-series name" )
28182833 }
28192834 if ( typeof value !== "number" ) {
@@ -2829,14 +2844,14 @@ var edgeML = (function (require$$0, require$$1) {
28292844
28302845 value = Math . round ( value * 100 ) / 100 ;
28312846
2832- if ( dataStore . data . every ( ( elm ) => elm . name !== name ) ) {
2847+ if ( dataStore . data . every ( ( elm ) => elm . name !== sensorName ) ) {
28332848 dataStore . data . push ( {
2834- name : name ,
2849+ name : sensorName ,
28352850 data : [ [ time , value ] ] ,
28362851 } ) ;
28372852 } else {
28382853 const idx = dataStore . data . findIndex (
2839- ( elm ) => elm . name === name
2854+ ( elm ) => elm . name === sensorName
28402855 ) ;
28412856 dataStore . data [ idx ] . data . push ( [ time , value ] ) ;
28422857
0 commit comments