History

intial commit hifi: #21369 Implement parts of the JS "console" object

NeetBhagat committed 9 years ago

Commit 0f9cd5d1 parent 66415da8 files · +217 −8Browse files

Showing the changes to libraries/script-engine/src/ConsoleScriptingInterface.cpp (1 of 8 files). Show all

Unified · Split

libraries/script-engine/src/ConsoleScriptingInterface.cpp+137−0
@@ -0,0 +1,137 @@
1//
2// ConsoleScriptingInterface.cpp
3// libraries/script-engine/src
4//
5// Created by volansystech on 6/1/17.
6// Copyright 2014 High Fidelity, Inc.
7//
8// ConsoleScriptingInterface is responsible to print logs
9// using "console" object on debug Window and Logs/log file with proper tags.
10// Used in Javascripts file.
11//
12// Distributed under the Apache License, Version 2.0.
13// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
14//
15
16#include "ConsoleScriptingInterface.h"
17#include "ScriptEngine.h"
18
19void ConsoleScriptingInterface::info(QString message) {
20 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
21 scriptEngine->scriptInfoMessage(message);
22 }
23}
24
25void ConsoleScriptingInterface::log(QString message) {
26 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
27 scriptEngine->scriptPrintedMessage(message);
28 }
29}
30
31void ConsoleScriptingInterface::debug(QString message) {
32 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
33 scriptEngine->scriptPrintedMessage(message);
34 }
35}
36
37void ConsoleScriptingInterface::warn(QString message) {
38 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
39 scriptEngine->scriptWarningMessage(message);
40 }
41}
42
43void ConsoleScriptingInterface::error(QString message) {
44 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
45 scriptEngine->scriptErrorMessage(message);
46 }
47}
48
49void ConsoleScriptingInterface::exception(QString message) {
50 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
51 scriptEngine->scriptErrorMessage(message);
52 }
53}
54
55void ConsoleScriptingInterface::time(QString labelName) {
56 QDateTime date;
57 std::string val_string = "2017-06-06 11:15:00.000";
58 QString d = QString::fromStdString(val_string.substr(0, 19));
59 date = QDateTime::fromString(d, "yyyy-MM-dd HH:mm:ss");
60 qDebug() << d;
61 qDebug() << d.length() << date.toUTC();
62
63 QDateTime _currentTime = QDateTime::currentDateTime().toUTC();
64 _listOfTimeValues.insert(labelName, date.toUTC());
65}
66
67void ConsoleScriptingInterface::timeEnd(QString labelName) {
68 QDateTime _dateTimeOfLabel;
69 QString message;
70 qint64 millisecondsDiff = 0;
71
72 bool _labelInList = _listOfTimeValues.contains(labelName);
73
74 //Check if not exist items in list
75 if (!_labelInList) {
76 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
77 message = "No such label found " + labelName;
78 scriptEngine->scriptErrorMessage(message);
79 }
80 return;
81 }
82 QDateTime _currentDateTimeValue = QDateTime::currentDateTime().toUTC();
83 _dateTimeOfLabel = _listOfTimeValues.value(labelName);
84
85 if (!_dateTimeOfLabel.isNull()) {
86 _listOfTimeValues.remove(labelName);
87 }
88
89 if (_dateTimeOfLabel.toString(TIME_FORMAT) == _currentDateTimeValue.toString(TIME_FORMAT)) {
90 millisecondsDiff = _dateTimeOfLabel.msecsTo(_currentDateTimeValue);
91 message = QString::number(millisecondsDiff) + " ms";
92 } else {
93 message = secondsToString(_dateTimeOfLabel.secsTo(_currentDateTimeValue));
94 }
95
96 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
97 scriptEngine->scriptPrintedMessage("Time : " + message);
98 }
99}
100
101QString ConsoleScriptingInterface::secondsToString(qint64 seconds)
102{
103 qint64 days = seconds / DAY;
104 QTime timeDuration = QTime(0, 0).addSecs(seconds % DAY);
105
106 return QString("%1 days, %2 hours, %3 minutes, %4 seconds")
107 .arg(QString::number(days)).arg(QString::number(timeDuration.hour())).arg(QString::number(timeDuration.minute())).arg(QString::number(timeDuration.second()));
108}
109
110void ConsoleScriptingInterface::asserts(bool condition, QString message) {
111 if (!condition) {
112 QString assertFailed = "Assertion failed";
113 if (message.isEmpty()) {
114 message = assertFailed;
115 } else {
116 if (typeid(message) != typeid(QString)) {
117 message = assertFailed;
118 } else {
119 message = assertFailed + " " + message;
120 }
121 }
122 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
123 scriptEngine->scriptErrorMessage(message);
124 }
125 }
126}
127
128void ConsoleScriptingInterface::trace(QString labelName) {
129 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
130 scriptEngine->scriptErrorMessage(labelName);
131 }
132}
133void ConsoleScriptingInterface::clear() {
134 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
135 scriptEngine->clearConsole();
136 }
137}