Skip to content

Commit 399d11d

Browse files
committed
fix: Update Time tracker to new app center - EXO-79208
Make Activity Record Drawer as quick Action and remove existing button in topbar drawer
1 parent 1bf1d98 commit 399d11d

11 files changed

Lines changed: 135 additions & 58 deletions

File tree

time-tracker-services/src/main/resources/applications.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,30 @@
1616
"*:/spaces/exo_employees"
1717
]
1818
}
19+
},
20+
{
21+
"name": "timeTrackingDrawer",
22+
"overrideMode": "merge",
23+
"override": false,
24+
"enabled": true,
25+
"application": {
26+
"title": "Time Tracking",
27+
"icon": "fa-clock",
28+
"type": "DRAWER",
29+
"url": "timeTracker",
30+
"mandatory": false,
31+
"active": true,
32+
"mobile": true,
33+
"default": true,
34+
"pwa": false,
35+
"order": 10,
36+
"permissions": [
37+
"*:/spaces/exo_employees"
38+
]
39+
}
1940
}
2041
]
2142
}
43+
44+
45+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
quickActions.timeTracker.name=Time Tracker
2+
quickActions.timeTracker.description=Save your daily Time Entries

time-tracker-webapps/src/main/webapp/WEB-INF/conf/configuration.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
<import>war:/conf/time-tracker/portal/menu-configuration.xml</import>
2828
<import>war:/conf/time-tracker/portal/portal-configuration.xml</import>
2929
<import>war:/conf/time-tracker/organization/organization-configuration.xml</import>
30-
<import>war:/conf/time-tracker/portal/dynamic-container-configuration.xml</import>
3130
<import>war:/conf/time-tracker/upgrade/portal-pages-upgrade-configuration.xml</import>
3231

3332
</configuration>

time-tracker-webapps/src/main/webapp/WEB-INF/conf/time-tracker/portal/dynamic-container-configuration.xml

Lines changed: 0 additions & 50 deletions
This file was deleted.

time-tracker-webapps/src/main/webapp/WEB-INF/gatein-resources.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,29 @@
104104
<module>eXoVueI18n</module>
105105
</depends>
106106
</module>
107+
108+
<module>
109+
<name>TimeTrackerQuickActionExtensions</name>
110+
<load-group>QuickActionsGrp</load-group>
111+
<script>
112+
<minify>false</minify>
113+
<path>/js/timeTrackerQuickAction.bundle.js</path>
114+
</script>
115+
<depends>
116+
<module>vue</module>
117+
</depends>
118+
<depends>
119+
<module>vuetify</module>
120+
</depends>
121+
<depends>
122+
<module>eXoVueI18n</module>
123+
</depends>
124+
<depends>
125+
<module>commonVueComponents</module>
126+
</depends>
127+
<depends>
128+
<module>extensionRegistry</module>
129+
</depends>
130+
</module>
107131
</gatein-resources>
108132

time-tracker-webapps/src/main/webapp/vue-app/activityManagement.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const vuetify = new Vuetify({
88
iconfont: 'mdi',
99
});
1010

11-
console.log('timetracking init');
1211
const lang = eXo && eXo.env && eXo.env.portal && eXo.env.portal.language;
1312
const resourceBundleName = 'locale.portlet.TimeTracker';
1413
const url = `${eXo.env.portal.context}/${eXo.env.portal.rest}/i18n/bundle/${resourceBundleName}-${lang}.json`;

time-tracker-webapps/src/main/webapp/vue-app/components/commons/AddTTEntryDrawer.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ export default {
314314
}
315315
},
316316
mounted () {
317-
$(this.$refs.addTTEntryDrawer.$el).click(()=> {
317+
this.$refs.addTTEntryDrawer.$el.click(()=> {
318318
if (this.addTTEntryMenuDatePicker) {
319319
this.addTTEntryMenuDatePicker = false;
320320
}

time-tracker-webapps/src/main/webapp/vue-app/components/timetracking/TimeTrackingDrawer.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ export default {
216216
document.addEventListener('alert-message-dismissed', this.deleteItemConfirm);
217217
},
218218
mounted () {
219-
$(this.$refs.timeTrackerDrawer.$el).click(()=> {
219+
this.$refs.timeTrackerDrawer.$el.click(()=> {
220220
if (this.activityRecordMenuDatePicker) {
221221
this.activityRecordMenuDatePicker = false;
222222
}
@@ -424,7 +424,6 @@ export default {
424424
this.formatDate(this.date);
425425
},
426426
addActivityRecord() {
427-
console.log('Add Activity Record');
428427
this.$refs.addTTEntryDrawer.openAddTTEntryDrawer();
429428
},
430429
editActivityRecord(item) {
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import TimeTrackingDrawer from '../components/timetracking/TimeTrackingDrawer.vue';
2+
3+
const components = {
4+
'time-tracking-drawer': TimeTrackingDrawer,
5+
};
6+
7+
for (const key in components) {
8+
Vue.component(key, components[key]);
9+
}
10+
11+
extensionRegistry.registerExtension('QuickAction', 'Extension', {
12+
id: 'timeTracker',
13+
icon: 'fa-clock',
14+
name: 'quickActions.timeTracker.name',
15+
description: 'quickActions.timeTracker.description',
16+
click: () => new Promise(resolve => {
17+
window.require(['SHARED/eXoVueI18n', 'SHARED/timeTrackingjs'], exoi18n => initTimeTrackerDrawer(exoi18n, resolve));
18+
}),
19+
});
20+
21+
async function initTimeTrackerDrawer(exoi18n, callback) {
22+
console.debug('Initializing Time Tracker Quick Action Drawer');
23+
const appId = 'time-tracker-actions';
24+
if (!document.querySelector(`#${appId}`)) {
25+
const parent = document.createElement('div');
26+
parent.id = appId;
27+
document.querySelector('#vuetify-apps').appendChild(parent);
28+
29+
console.debug('Create Vue App for Time Tracker Quick Action Drawer');
30+
await initTimeTrackerDrawerApp(appId, exoi18n);
31+
}
32+
console.debug('Dispatching quick-action-time-tracker-drawer event in else block');
33+
document.dispatchEvent(new CustomEvent('quick-action-time-tracker-drawer', {detail: callback}));
34+
callback();
35+
36+
}
37+
38+
function initTimeTrackerDrawerApp(appId, exoi18n) {
39+
const lang = eXo.env.portal.language;
40+
const resourceBundleName = 'locale.portlet.TimeTracker';
41+
const url = `${eXo.env.portal.context}/${eXo.env.portal.rest}/i18n/bundle/${resourceBundleName}-${lang}.json`;
42+
43+
console.debug("Calling loadLanguageAsync for Time Tracker Quick Action Drawer with URL:", url);
44+
return new Promise(resolve => exoi18n.loadLanguageAsync(lang, url)
45+
.then(i18n => {
46+
Vue.createApp({
47+
template: `
48+
<time-tracking-drawer
49+
id="${appId}"
50+
ref="timeTrackingDrawerComponent" />
51+
`,
52+
created() {
53+
console.debug('In create : Adding event listener for quick-action-time-tracker-drawer');
54+
document.addEventListener('quick-action-time-tracker-drawer', this.openDrawer);
55+
},
56+
async mounted() {
57+
console.debug('In mounted : dispatching hideTopBarLoading event');
58+
document.dispatchEvent(new CustomEvent('hideTopBarLoading'));
59+
resolve();
60+
},
61+
beforeDestroy() {
62+
document.removeEventListener('quick-action-time-tracker-drawer', this.openDrawer);
63+
},
64+
methods: {
65+
openDrawer() {
66+
console.debug('In openDrawer method: Opening Time Tracking Drawer', this);
67+
console.debug('In openDrawer method: Opening Time Tracking Drawer', this.$refs, this.$refs.timeTrackingDrawerComponent);
68+
this.$refs.timeTrackingDrawerComponent.open();
69+
},
70+
open() {
71+
console.debug('In open method: Opening Time Tracking Drawer but not good one');
72+
},
73+
},
74+
vuetify: Vue.prototype.vuetifyOptions,
75+
i18n,
76+
}, `#${appId}`, 'Time Tracker Quick Action');
77+
}));
78+
}

time-tracker-webapps/webpack.common.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ const config = {
5050
]
5151
};
5252

53-
module.exports = config;
53+
module.exports = config;

0 commit comments

Comments
 (0)