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+
19+void ConsoleScriptingInterface::info(QString message) {
20+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
21+ scriptEngine->scriptInfoMessage(message);
22+ }
23+}
24+
25+void ConsoleScriptingInterface::log(QString message) {
26+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
27+ scriptEngine->scriptPrintedMessage(message);
28+ }
29+}
30+
31+void ConsoleScriptingInterface::debug(QString message) {
32+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
33+ scriptEngine->scriptPrintedMessage(message);
34+ }
35+}
36+
37+void ConsoleScriptingInterface::warn(QString message) {
38+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
39+ scriptEngine->scriptWarningMessage(message);
40+ }
41+}
42+
43+void ConsoleScriptingInterface::error(QString message) {
44+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
45+ scriptEngine->scriptErrorMessage(message);
46+ }
47+}
48+
49+void ConsoleScriptingInterface::exception(QString message) {
50+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
51+ scriptEngine->scriptErrorMessage(message);
52+ }
53+}
54+
55+void 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+
67+void 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+
101+QString 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+
110+void 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+
128+void ConsoleScriptingInterface::trace(QString labelName) {
129+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
130+ scriptEngine->scriptErrorMessage(labelName);
131+ }
132+}
133+void ConsoleScriptingInterface::clear() {
134+ if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
135+ scriptEngine->clearConsole();
136+ }
137+}