(function (OC, window, $, undefined) { 'use strict'; $(document).ready(function () { var translations = { //newNote: $('#new-note-string').text() months: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"] }; // this transactions holds all our transactions var Transactions = function (baseUrl) { this._baseUrl = baseUrl; this._transactions = []; }; Transactions.prototype = { delete: function (id) { var deferred = $.Deferred(); $.ajax({ url: this._baseUrl + '/' + id, method: 'DELETE' }).done(function () { deferred.resolve(); }).fail(function () { deferred.reject(); }); return deferred.promise(); }, create: function (transactions) { var deferred = $.Deferred(); var self = this; $.ajax({ url: this._baseUrl, method: 'POST', contentType: 'application/json', data: JSON.stringify(transactions) }).done(function (transactions) { self._transactions.push(transactions); deferred.resolve(); }).fail(function () { deferred.reject(); }); return deferred.promise(); }, update: function (id, name) { var transactions = { id: id, name: name } return $.ajax({ url: this._baseUrl + '/' + transactions.id, method: 'PUT', contentType: 'application/json', data: JSON.stringify(transactions) }); }, getTransactions(accountid) { if (!Array.isArray(this._transactions)) return []; return this._transactions.filter(function(t) { return t.accountFrom === accountid || t.accountTo === accountid; }); }, loadAll: function () { var deferred = $.Deferred(); var self = this; $.get(this._baseUrl).done(function (transactions) { self._transactions = transactions; deferred.resolve(); }).fail(function () { deferred.reject(); }); return deferred.promise(); }, }; // this accounts object holds all our accounts var Accounts = function (baseUrl) { this._baseUrl = baseUrl; this._accounts = []; var d = new Date(); var sy = d.getYear(); var sm = d.getMonth(); this._months = []; for (var i=0; i<12; i++) this._months.push({year: sy+1900+Math.floor((sm+i)/12), month: (sm+i)%12}); }; Accounts.prototype = { delete: function (id) { var deferred = $.Deferred(); $.ajax({ url: this._baseUrl + '/' + id, method: 'DELETE' }).done(function () { deferred.resolve(); }).fail(function () { deferred.reject(); }); return deferred.promise(); }, create: function (account) { var deferred = $.Deferred(); var self = this; $.ajax({ url: this._baseUrl, method: 'POST', contentType: 'application/json', data: JSON.stringify(account) }).done(function (account) { self._accounts.push(account); deferred.resolve(); }).fail(function () { deferred.reject(); }); return deferred.promise(); }, update: function (id, name) { var account = { id: id, name: name } return $.ajax({ url: this._baseUrl + '/' + account.id, method: 'PUT', contentType: 'application/json', data: JSON.stringify(account) }); }, getAccounts: function () { return this._accounts; }, getMonths: function () { return this._months; }, loadAll: function () { var deferred = $.Deferred(); var self = this; $.get(this._baseUrl).done(function (accounts) { self._accounts = accounts; deferred.resolve(); }).fail(function () { deferred.reject(); }); return deferred.promise(); }, }; // this will be the view that is used to update the html var View = function (accounts, transactions) { this._accounts = accounts; this._transactions = transactions; }; View.prototype = { createTransactionRow: function (css, account, transaction, month_tds) { var tds = month_tds.replace(/###ACCOUNT###/g, account).replace(/###TRANS###/g, transaction) var row = document.createElement("tr"); row.innerHTML = "