1515 * You should have received a copy of the GNU Affero General Public License
1616 * along with this program. If not, see <https://www.gnu.org/licenses/>.
1717 */
18- import { Observable } from '/js/src/index.js' ;
18+ import { Observable , fetchClient } from '/js/src/index.js' ;
1919
2020/**
2121 * Model representing handlers for homePage.js
@@ -29,30 +29,12 @@ export default class Overview extends Observable {
2929 constructor ( model ) {
3030 super ( ) ;
3131 this . model = model ;
32- this . date = new Date ( ) . toDateString ( ) ;
3332 this . filterCriteria = [ ] ;
34- this . data = [
35- {
36- authorID : 'Batman' ,
37- title : 'Run1' ,
38- creationTime : this . date ,
39- tags : [ 'Tag1' , 'Tag2' ] ,
40- } ,
41- {
42- authorID : 'Joker' ,
43- title : 'Run2' ,
44- creationTime : this . date ,
45- tags : [ 'Tag2' ] ,
46- } ,
47- {
48- authorID : 'Anonymous' ,
49- title : 'Run5' ,
50- creationTime : this . date ,
51- tags : [ 'Tag3' ] ,
52- } ,
53- ] ;
54- this . filtered = [ ...this . data ] ;
33+ this . data = [ ] ;
34+ this . filtered = [ ] ;
5535 this . headers = [ 'ID' , 'Author ID' , 'Title' , 'Creation Time' ] ;
36+
37+ this . fetchData ( ) ;
5638 }
5739
5840 /**
@@ -63,19 +45,43 @@ export default class Overview extends Observable {
6345 return this . headers ;
6446 }
6547
48+ /**
49+ * Fetch all relevant logs data from api
50+ * @returns {undefined } Injects the data object with the response data
51+ */
52+ async fetchData ( ) {
53+ const response = await fetchClient ( '/api/logs' , { method : 'GET' } ) ;
54+ const result = await response . json ( ) ;
55+ this . data = result . data ;
56+ this . filtered = [ ...result . data ] ;
57+ this . notify ( ) ;
58+ }
59+
60+ /**
61+ * Getter for all the data
62+ * @returns {Array } Returns all of the data
63+ */
64+ getData ( ) {
65+ return this . data ;
66+ }
67+
6668 /**
6769 * Get the table data
6870 * @returns {Array } The data without the tags to be rendered in a table
6971 */
70- getTableData ( ) {
72+ getDataWithoutTags ( ) {
7173 const subentries = this . filtered . map ( ( entry ) => {
72- const filter = Object . keys ( entry ) . map ( ( subkey ) => {
73- if ( subkey !== 'tags' ) {
74+ const columnData = Object . keys ( entry ) . map ( ( subkey ) => {
75+ // Filter out the field not needed for the table
76+ if ( subkey !== 'tags' && subkey !== 'content' ) {
77+ if ( subkey === 'creationTime' ) {
78+ return new Date ( entry [ subkey ] ) . toLocaleString ( ) ;
79+ }
80+
7481 return entry [ subkey ] ;
7582 }
7683 } ) ;
77-
78- return filter ;
84+ return columnData . filter ( ( item ) => item !== undefined ) ;
7985 } ) ;
8086
8187 return subentries ;
0 commit comments