Browse Source

Implemented settings frontend log level via props

master
Rohan Sircar 4 years ago
parent
commit
59c14d681d
  1. 123
      chatto/src/main/javascript/ts/src/main.ts
  2. 3
      chatto/src/main/resources/application-prod.properties
  3. 5
      chatto/src/main/resources/application.properties
  4. 8
      chatto/src/main/resources/templates/fragments/head.html

123
chatto/src/main/javascript/ts/src/main.ts

@ -1,6 +1,6 @@
import { Builder } from "builder-pattern";
import * as Handlebars from "handlebars";
import * as log from 'loglevel';
import * as log from "loglevel";
import { ChatController } from "./controller/ChatController";
import { UserController } from "./controller/UserController";
import { ChatModel } from "./model/ChatModel";
@ -20,89 +20,94 @@ import { UserViewDeps } from "./view/UserViewDeps";
import { ActiveUserViewModel } from "./viewmodel/ActiveUserViewModel";
import moment = require("moment");
log.setLevel("TRACE");
// log.setLevel("TRACE");
const usersListElement = document.getElementById('contacts-box');
const userSearchButton = document.getElementById('user-search');
const userSearchInputElement = document.getElementById('user-search-term') as HTMLInputElement;
const userSearchCancelButton = document.getElementById('user-search-cancel');
const chatArea = document.getElementById('chat-area-new');
const usersListElement = document.getElementById("contacts-box");
const userSearchButton = document.getElementById("user-search");
const userSearchInputElement = document.getElementById(
"user-search-term"
) as HTMLInputElement;
const userSearchCancelButton = document.getElementById("user-search-cancel");
const chatArea = document.getElementById("chat-area-new");
const activeUserSearchService: SearchService<ActiveUserViewModel> = new FuseSearchService(["userName"]);
const activeUserSearchService: SearchService<ActiveUserViewModel> = new FuseSearchService(
["userName"]
);
const ns: NotificationService = new AlertifyNotificationService();
const encryptionService = EncryptionServiceFactory.getEncryptionService();
const chatModelHelper = new ChatModelHelper(encryptionService, ns);
const chatModel = new ChatModel(chatModelHelper);
const userModel = new UserModel(ns);
const cvDeps: ChatViewDeps = {
chatModel: chatModel,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
messageContainer: chatArea,
messageSendTemplate: TemplateFactory.getTemplate('msg_container_send_template'),
messageReceiveTemplate: TemplateFactory.getTemplate('msg_container_template'),
markdownService: new MarkDownItMarkDownService,
encryptionService: encryptionService,
notificationService: ns,
userModel: userModel
}
chatModel: chatModel,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
messageContainer: chatArea,
messageSendTemplate: TemplateFactory.getTemplate(
"msg_container_send_template"
),
messageReceiveTemplate: TemplateFactory.getTemplate("msg_container_template"),
markdownService: new MarkDownItMarkDownService(),
encryptionService: encryptionService,
notificationService: ns,
userModel: userModel,
};
const chatView = new ChatView(cvDeps);
chatModel.attach(chatView);
const chatController = new ChatController(chatModel, chatView);
const uvDeps: UserViewDeps = {
model: userModel,
chatModel: chatModel,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
usersListElement: usersListElement,
userSearchInputElement: userSearchInputElement,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
userSearchButton: userSearchButton,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
userSearchCancelButton: userSearchCancelButton,
searchService: activeUserSearchService,
userContactOnlineTemplate: TemplateFactory.getTemplate('user-contact-online-template'),
userContactOfflineTemplate: TemplateFactory.getTemplate('user-contact-offline-template'),
notificationService: ns
}
model: userModel,
chatModel: chatModel,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
usersListElement: usersListElement,
userSearchInputElement: userSearchInputElement,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
userSearchButton: userSearchButton,
// @ts-ignore: Argument of type 'HTMLElement | null' is not assignable to parameter of type 'HTMLElement'. Type 'null' is not assignable to type 'HTMLElement'.
userSearchCancelButton: userSearchCancelButton,
searchService: activeUserSearchService,
userContactOnlineTemplate: TemplateFactory.getTemplate(
"user-contact-online-template"
),
userContactOfflineTemplate: TemplateFactory.getTemplate(
"user-contact-offline-template"
),
notificationService: ns,
};
const userView = new UserView(uvDeps);
userModel.attach(userView);
const userController = new UserController(userModel, userView);
userController.getActiveUsers();
// @ts-ignore
Handlebars.registerHelper('moment', require('helper-moment'));
Handlebars.registerHelper('avatar', function () {
return '<div class="img_cont_msg"> <img src="https://static.turbosquid.com/Preview/001292/481/WV/_D.jpg" class="rounded-circle user_img_msg"> </div>';
Handlebars.registerHelper("moment", require("helper-moment"));
Handlebars.registerHelper("avatar", function () {
return '<div class="img_cont_msg"> <img src="https://static.turbosquid.com/Preview/001292/481/WV/_D.jpg" class="rounded-circle user_img_msg"> </div>';
});
Handlebars.registerHelper("fromNow", function (date: string) {
if (date == null) return ": Never";
return moment(date).fromNow();
});
Handlebars.registerHelper("msgDateFormat", function (date: string) {
return moment(date).calendar(moment.now(), {
lastWeek: "DD/MM/YY hh:mm A",
sameElse: "DD/MM/YY hh:mm A",
});
});
Handlebars.registerHelper('fromNow', function (date: string) {
if (date == null)
return ": Never"
return moment(date).fromNow();
})
Handlebars.registerHelper('msgDateFormat', function (date: string) {
return moment(date).calendar(moment.now(), { lastWeek: "DD/MM/YY hh:mm A", sameElse: "DD/MM/YY hh:mm A" })
})
Handlebars.registerHelper('lockIcon', function (unlocked: boolean) {
switch (unlocked) {
case true: { return '<i class="fas fa-lock-open user-passphrase"></i>'; }
default: { return '<i class="fas fa-lock user-passphrase"></i>'; }
Handlebars.registerHelper("lockIcon", function (unlocked: boolean) {
switch (unlocked) {
case true: {
return '<i class="fas fa-lock-open user-passphrase"></i>';
}
})
default: {
return '<i class="fas fa-lock user-passphrase"></i>';
}
}
});
ns.success("Welcome");
// ns.errorWithDelay("Hmm very long error notif", 10);
const test = Builder<UserViewDeps>().build();

3
chatto/src/main/resources/application-prod.properties

@ -5,4 +5,5 @@ logging.level.org.hibernate.SQL=INFO
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=INFO
spring.http.log-request-details=false
logging.level.org.springframework.cache = INFO
chat-bundle=bundle.min.js
chat-bundle=bundle.min.js
chatto.frontend.log-level=INFO

5
chatto/src/main/resources/application.properties

@ -20,6 +20,7 @@ logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
spring.jackson.serialization.write-dates-as-timestamps=false
spring.cache.jcache.config=classpath:ehcache.xml
logging.level.org.springframework.cache=DEBUG
chatto.token.timeout-duration=1
chatto.token.timeout-duration=30
chat-bundle=bundle.js
# spring.devtools.add-properties=false
# spring.devtools.add-properties=false
chatto.frontend.log-level=TRACE

8
chatto/src/main/resources/templates/fragments/head.html

@ -11,7 +11,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha256-L/W5Wfqfa0sdBNIKN9cG6QA5F2qx4qICmU2VgLruv9Y=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/js/bootstrap.bundle.min.js" integrity="sha256-OUFW7hFO0/r5aEGTQOz9F/aXQOt+TwqI1Z4fbVvww04=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/5.4.0/bootbox.min.js" integrity="sha256-sfG8c9ILUB8EXQ5muswfjZsKICbRIJUG/kBogvvV5sY=" crossorigin="anonymous"></script>
@ -40,10 +40,14 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/loglevel/1.6.4/loglevel.min.js" integrity="sha256-ACTlnmNCkOooSKkPCKYbiex8WLE82aeiN+Z9ElZag5Q=" crossorigin="anonymous"></script>
<link th:href="@{/css/master.css}" href="../../resources/static/css/master.css" rel="stylesheet">
<link th:href="@{/css/colors.css}" href="../../resources/static/css/colors.css" rel="stylesheet">
<script th:inline="javascript" defer>
let loglevel = /*[[${@environment.getProperty('chatto.frontend.log-level')}]]*/ "DEBUG";
window.log.setLevel(loglevel)
</script>
<meta charset="UTF-8">
<title th:include=":: #pageTitle">Layout Generic Title</title>
</th:block>

Loading…
Cancel
Save