From 925d571f6ab0767965ec2182694d31075753674e Mon Sep 17 00:00:00 2001 From: edelCustodio Date: Sat, 29 Sep 2018 11:38:45 -0500 Subject: [PATCH] Agregando pagina de corte de caja --- css/app.min.2.css | 19 ++- html/corte.html | 181 ++++++++++++++++++++++- img/details_close.png | Bin 0 -> 686 bytes img/details_open.png | Bin 0 -> 709 bytes js/client_side/cut.js | 311 ++++++++++++++++++++++++++++++++++++++++ js/client_side/login.js | 22 ++- js/client_side/sales.js | 2 +- js/common.js | 10 +- js/functions.js | 126 ---------------- main.js | 4 +- package-lock.json | 84 ++++++++++- package.json | 5 +- 12 files changed, 619 insertions(+), 145 deletions(-) create mode 100644 img/details_close.png create mode 100644 img/details_open.png create mode 100644 js/client_side/cut.js diff --git a/css/app.min.2.css b/css/app.min.2.css index 3d35011..69523d6 100644 --- a/css/app.min.2.css +++ b/css/app.min.2.css @@ -1588,11 +1588,28 @@ select.chosen { border-radius: 0; } +.timepicker-picker .btn:not(.palette-White):not(.btn-default) { + color: #333; +} + +.timepicker-picker .btn-primary { + color: #333; + background-color: #fff; + border-color: transparent; +} + +.timepicker-picker .btn-primary:hover:hover { + color: #333; + background-color: #fff; + border-color: transparent; +} + +/* .timepicker-picker .btn, .timepicker-picker .btn:hover { background: #fff; color: #333; -} +} */ .datepicker.top { -webkit-transform-origin: 0 100% !important; diff --git a/html/corte.html b/html/corte.html index dea5917..29d72e3 100644 --- a/html/corte.html +++ b/html/corte.html @@ -7,6 +7,7 @@ Skynet + @@ -17,6 +18,25 @@ + + + + + + + @@ -242,7 +262,160 @@

Corte de caja

- +
+
+
+
+

Historial

+
+
+
+
+ + + + + + + + + + + + + + + +
MontosFechas
InicialVentasFinalDiferenciaInicioFin
+
+
+
+
+
+
+
+
+
+
+

Corte

+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+

Ventas

+
+ +
+
+
+
+
+ + + + +
+
+
+
+
+
+ + + + +
+
+
+
+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + +
No. TicketFechaEstadototalPagoCambioEmpleado
+
+
+ + +
+
+
+
+ + @@ -270,8 +443,12 @@

Corte de caja

- + + + + + diff --git a/img/details_close.png b/img/details_close.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7d6982d9a1408f24278ed38458bcf4722f365f GIT binary patch literal 686 zcmV;f0#W^mP)rc9KHq9BMrrU)X4H-ZEQYRE1Mf85oDS6+Hm_uUD?Zq_fw zn=!^pDk~VX)hyi>=S**$PUrUR`S!lB@UYy4U- zlEcGD4Gkgv=rJ;WKMI))DAuw^dT%HXWm=_w?8Z*(BJ3CQI%#--o7^rMEd#LBM)@B$J!$?OvK`BMr zRsP$^2&f}b(NMqg?(VM1WPEB0UtKPttw@_o;Zl6jYuxh?_E**)MMmZ=lj-GUY_zo4 zX(g@tS*_O65-5I9{ZVRcW0RMmjZRMDLvyp>RI5|PAGtc61d;J^<~u33U#`0zaEJU_|e`8Yr*V+r?U8t8q~5ysN3H=`#OLdQ`{tkJnH+Sb-{!Kx_E1b-CDbv<6zhT-G!; zHrm-k^-4++%<@a!5cN&=qHLfPW&NcnA1I0WN?Z#PQ?_Tq4T=XPJ+fmXr9Rgh3WX*Z zY#nYzQEw57`)ss=4Tg%vFE(OA%kWiDnx_5WNX2@ofwe7&7_56;heB6A3S0$9q(X_2 z`oVfov$L}iHK*xu4Qu;rVd=8M;tWJwyMNQvvP;;W?hU$~2rlvFo8-^N?*Lg_D zTe3=V`<3HIr6d4&egY9GOIM|W1%+nkgGI!)I?U}_s`qE~MPPaOgl(?}8>tURI zbq@QVWUtD}o>Q37XTTcP8e{XvVEg@k7er&fzT$lU1!T4DL)K$KEZM8pr+dy|-ehDF_X77(*?9ze9%f;;Q2ML_ci!DaFdSTY^)igBw_c9}Yfb<4e2tHf re}@wNRi3XkJ+L;i)(3W7{ssI7YL=IQ_s#k*00000NkvXXu0mjfLt|7w literal 0 HcmV?d00001 diff --git a/js/client_side/cut.js b/js/client_side/cut.js new file mode 100644 index 0000000..55cb57b --- /dev/null +++ b/js/client_side/cut.js @@ -0,0 +1,311 @@ +window.$ = window.jQuery = require('jquery'); +const Enumerable = require('linq'); +require('../node_modules/@chenfengyuan/datepicker/dist/datepicker') +require('../node_modules/bootstrap-datetimepicker-npm/build/js/bootstrap-datetimepicker.min.js') +require('bootstrap-validator') +require('../libs/js/jquery.mCustomScrollbar') +require( 'datatables.net-bs4' )(); +require( 'datatables.net-responsive-dt' )() +var dt = require( 'datatables.net' )( window, $ ); +let apiURL = ''; +var port = 51990; // 8080 51990 +var _tickets; +var tableTickets; +var tableHistorial; +let fechaInicio = new Date(); +let fechaFin = new Date(); +let dpFechaInicio; +let dpFechaFin; + +$(document).ready(function() { + // apiURL = 'http://' + sessionStorage.getItem('IPServer') + ':' + port + '/'; + apiURL = 'http://localhost:' + port + '/'; + + + fechaInicio = new Date(); + fechaFin = new Date(); + + dpFechaInicio = $('#dpFechaInicio').datetimepicker({ + locale: 'es', + format : 'DD/MM/YYYY hh:mm A', + defaultDate: fechaInicio + }); + dpFechaFin = $('#dpFechaFin').datetimepicker({ + locale: 'es', + format : 'DD/MM/YYYY hh:mm A', + defaultDate: fechaFin + }); + + inicializarDatePickerEvents(); + + obtenerDetalleVentas(); + + obtenerHistorialCortes(); +}); + +function obtenerDetalleVentas() { + var url = apiURL + 'api/Ticket/getTicketsPay?fechaInicio=' + fechaInicio.toJSON() + '&fechaFin=' + fechaFin.toJSON(); + $.ajax({ + url: url, + type: "GET", + contentType: "application/json", + headers: httpHeaders(), + success: function (data, textStatus, jqXHR) { + if (data) { + llenarCamposCorte(data); + tableTickets = $('#example').DataTable({ + data: data, + "columnDefs": [ + { className: "text-right", "targets": [4,5,6] }, + { className: "text-nowrap", "targets": [2] } + ], + columns: [ + { + "className": 'details-control', + "orderable": false, + "data": null, + "defaultContent": '' + }, + { data: "idTicket" }, + { data: "fechaStr" }, + { data: "estado" }, + { data: "totalStr" }, + { data: "pagoStr" }, + { data: "cambioStr" }, + { data: "Usuario.nombreCompleto" }, + ] + }); + } + }, + error: function (data, textStatus, jqXHR) { errorAjaxHandler(data, textStatus, jqXHR); } + }); +} + +function obtenerHistorialCortes() { + var url = apiURL + 'api/Corte/cortes'; + $.ajax({ + url: url, + type: "GET", + contentType: "application/json", + headers: httpHeaders(), + success: function (data, textStatus, jqXHR) { + if (data) { + + tableHistorial = $('#historial').DataTable({ + data: data, + // "columnDefs": [ + // { className: "text-right", "targets": [4,5,6] }, + // { className: "text-nowrap", "targets": [2] } + // ], + columns: [ + { data: "montoInicialStr" }, + { data: "montoVentasStr" }, + { data: "montoFinalStr" }, + { data: "diferenciaStr" }, + { data: "fechaInicioStr" }, + { data: "fechaFinStr" }, + ], + "paging": false, + "ordering": false, + "info": false, + "searching": false, + responsive: true + }); + } + }, + error: function (data, textStatus, jqXHR) { errorAjaxHandler(data, textStatus, jqXHR); } + }); +} + +function detalleTicketVenta(data) { + let html = ` + + + + + + + + +
ProductoPrecioCantidadTotal
` + return html; +} + +$(document).off('click', '#example tbody td.details-control').on('click', '#example tbody td.details-control', function () { + var tr = $(this).closest('tr'); + var row = tableTickets.row(tr); + + if ( row.child.isShown()) { + // This row is already open - close it + row.child.hide(); + tr.removeClass('shown'); + } + else { + // Open this row + row.child( detalleTicketVenta(row.data())).show(); + tr.addClass('shown'); + $('#ticketDetalle'+ row.data().idTicket).DataTable({ + data: row.data().Detalle, + columns: [ + { data: "Producto.nombre" }, + { data: "precioFinalStr" }, + { data: "cantidad" }, + { data: "totalStr" } + ], + "paging": false, + "ordering": false, + "info": false, + "searching": false + }); + } +}); + +/** + * Calcular la diferencia y habilitar o deshabilitar + * el boton de guardar + */ +$('#montoFinal').blur(function () { + const montoFinal = parseInt($(this).val()); + const montoInicial = parseInt($('#montoInicial').val()); + const montoVentas = parseInt($('#montoVentas').val()); + const $diferencia = $('#diferencia'); + const $btnGuardarCorte = $('#btnGuardarCorte'); + + if (!isNaN(montoFinal)) { + const diferencia = montoFinal - montoInicial - montoVentas; + $diferencia.val(diferencia); + $btnGuardarCorte.removeAttr('disabled'); + } else { + $diferencia.val(0); + $btnGuardarCorte.attr('disabled', true); + } +}); + +/** + * Guardar corte + */ +$('#btnGuardarCorte').click(function () { + const corte = JSON.parse(sessionStorage.getItem('corte')); + const montoFinal = parseInt($('#montoFinal').val()); + const montoVentas = parseInt($('#montoVentas').val()); + const diferencia = parseInt($('#diferencia').val()); + + corte.montoFinal = montoFinal; + corte.montoVentas = montoVentas; + corte.diferencia = diferencia; + + actualizarCorte(corte); +}); + +/** + * Actualizar corte + * @param {*} corte + */ +function actualizarCorte(corte) { + var corteURL = apiURL + 'api/corte/PutCorte'; + $.ajax({ + url: corteURL, + type: "PUT", + data: JSON.stringify(corte), + contentType: "application/json", + async: true, + processData: false, + cache: false, + headers: httpHeaders(), + success: function (data, textStatus, jqXHR) { + if (jqXHR.status === 204) { // exitoso + sessionStorage.removeItem('corte'); + const jwt = parseJwt(sessionStorage.token); + const idUsuario = parseInt(jwt.nameid); + ObtenerCorte(idUsuario); + } + }, + error: function (data, textStatus, jqXHR) { errorAjaxHandler(data, textStatus, jqXHR); } + }); +} + +/** + * Obtener el corte y guardarlo en el storage + */ +function ObtenerCorte(idUsuario) { + var corteURL = apiURL + 'api/corte/crear'; + $.ajax({ + url: corteURL, + type: "POST", + data: JSON.stringify(idUsuario), + contentType: "application/json", + headers: httpHeaders(), + success: function (data, textStatus, jqXHR) { + console.log(data); + sessionStorage.setItem('corte', JSON.stringify(data)); + }, + error: function (data, textStatus, jqXHR) { errorAjaxHandler(data, textStatus, jqXHR); } + }); +} + +/** + * Inicializar los controles date pickers + */ +function inicializarDatePickerEvents() { + // Date picker fecha de inicio + dpFechaInicio.on('dp.change', function (e) { + fechaInicio = e.date.toDate(); + dpFechaFin.data("DateTimePicker").date(fechaInicio); + }); + + // Date picker fecha fin + dpFechaFin.on('dp.change', function (e) { + if(e.date.toDate() < fechaInicio) { + dpFechaFin.data("DateTimePicker").date(fechaInicio); + } else { + fechaFin = e.date.toDate(); + } + }); + + // buscar tickets segun la fecha de inicio y fin + $('#searchTicketsPaid').click(function() { + tableTickets.destroy(); + obtenerDetalleVentas(); + }); +} + +/** + * Llenar los campos de los modulos del corte + */ +function llenarCamposCorte(ventas) { + const corte = JSON.parse(sessionStorage.getItem('corte')); + const montoVentas = Enumerable.from(ventas).sum(s => s.total); + + $('#montoInicial').val(corte.montoInicial); + $('#montoVentas').val(montoVentas) +} + +/** + * Parsear JWT + */ +function parseJwt (token) { + var base64Url = token.split('.')[1]; + var base64 = base64Url.replace('-', '+').replace('_', '/'); + return JSON.parse(window.atob(base64)); +} + + +/** + * + * @param {*} data Error data + * @param {*} textStatus text status + * @param {*} jqXHR http response + */ +function errorAjaxHandler(data, textStatus, jqXHR) { + console.log('Data: '); + console.log(data); + console.log('\n status: ' + textStatus + '\n xhr: ' + jqXHR); +} + +/** + * autorizacion http header para obtener datos desde + * el API + */ +function httpHeaders() { + return { "Authorization": sessionStorage.getItem('token') }; +} \ No newline at end of file diff --git a/js/client_side/login.js b/js/client_side/login.js index 1b3a50e..47a10b0 100644 --- a/js/client_side/login.js +++ b/js/client_side/login.js @@ -27,8 +27,9 @@ $("#btnLogin").click(function (e) { success: function (data, textStatus, jqXHR) { // sessionStorage.setItem("userLoggedIn", JSON.stringify(data[0])); sessionStorage.setItem("token", data); - - document.location.href = "index.html"; + const jwt = parseJwt(sessionStorage.token); + const idUsuario = parseInt(jwt.nameid); + ObtenerCorte(idUsuario); }, error: function (data, textStatus, jqXHR) { errorAjaxHandler(data, textStatus, jqXHR); } }); @@ -37,7 +38,22 @@ $("#btnLogin").click(function (e) { }); - +function ObtenerCorte(idUsuario) { + var corteURL = apiURL + 'api/corte/crear'; + $.ajax({ + url: corteURL, + type: "POST", + data: JSON.stringify(idUsuario), + contentType: "application/json", + headers: httpHeaders(), + success: function (data, textStatus, jqXHR) { + console.log(data); + sessionStorage.setItem('corte', JSON.stringify(data)); + document.location.href = "index.html"; + }, + error: function (data, textStatus, jqXHR) { errorAjaxHandler(data, textStatus, jqXHR); } + }); +} $('#frNewAccont').validator().on('submit', function (e) { diff --git a/js/client_side/sales.js b/js/client_side/sales.js index 8c43793..2cfbbd9 100644 --- a/js/client_side/sales.js +++ b/js/client_side/sales.js @@ -127,7 +127,7 @@ function obtenerTotalTicket() { const prod = Enumerable.from(productos).where(w => idProductos.indexOf(w.idProducto) > -1 && w.precio === 0).select(s => s.idProducto).toArray(); if (prod.length > 0) { - let totalProdEspeciales = Enumerable.from(ticket.Detalle).where(w => prod.indexOf(w.idProducto) > -1).sum(s => s.precio); + let totalProdEspeciales = Enumerable.from(ticket.Detalle).where(w => prod.indexOf(w.idProducto) > -1).sum(s => s.total); total = total + totalProdEspeciales; } diff --git a/js/common.js b/js/common.js index fde6b7b..6005d5f 100644 --- a/js/common.js +++ b/js/common.js @@ -14,7 +14,7 @@ var _tickets = []; var _ticket = {}; var _recordsNoPay = []; var _idTicket = 0; -var port = 8080; // 8080 51990 +var port = 51990; // 8080 51990 /*-------------------------------------- @@ -93,8 +93,8 @@ function alertExecuteFunction(title, text, type, functionHandle) { $(document).ready(function () { if (sessionStorage.getItem('IPServer') !== null) { - apiURL = 'http://' + sessionStorage.getItem('IPServer') + ':' + port + '/'; - // apiURL = 'http://localhost:' + port + '/'; + // apiURL = 'http://' + sessionStorage.getItem('IPServer') + ':' + port + '/'; + apiURL = 'http://localhost:' + port + '/'; } else { ipcRenderer.send('goForIPServer', 1); } @@ -107,8 +107,8 @@ $(document).ready(function () { ipcRenderer.on('getForIPServer', (event, arg) => { var ips = JSON.parse(arg); sessionStorage.setItem('IPServer', ips.ipServer); - apiURL = 'http://' + ips.ipServer + ':' + port + '/'; - // apiURL = 'http://localhost:' + port + '/'; + // apiURL = 'http://' + ips.ipServer + ':' + port + '/'; + apiURL = 'http://localhost:' + port + '/'; sessionStorage.setItem('IPServer', ips.ipServer); }); diff --git a/js/functions.js b/js/functions.js index a8bed9e..814f3a3 100644 --- a/js/functions.js +++ b/js/functions.js @@ -99,132 +99,6 @@ $(document).ready(function(){ } - - - - - - /* - * Calendar Widget - */ - if($('#calendar-widget')[0]) { - - - - (function(){ - $('#cw-body').fullCalendar({ - contentHeight: 'auto', - theme: true, - header: { - right: 'next', - center: 'title, ', - left: 'prev' - }, - defaultDate: '2014-06-12', - editable: true, - events: [ - { - title: 'All Day', - start: '2014-06-01', - className: 'bgm-cyan' - }, - { - title: 'Long Event', - start: '2014-06-07', - end: '2014-06-10', - className: 'bgm-orange' - }, - { - id: 999, - title: 'Repeat', - start: '2014-06-09', - className: 'bgm-lightgreen' - }, - { - id: 999, - title: 'Repeat', - start: '2014-06-16', - className: 'bgm-lightblue' - }, - { - title: 'Meet', - start: '2014-06-12', - end: '2014-06-12', - className: 'bgm-green' - }, - { - title: 'Lunch', - start: '2014-06-12', - className: 'bgm-cyan' - }, - { - title: 'Birthday', - start: '2014-06-13', - className: 'bgm-amber' - }, - { - title: 'Google', - url: 'http://google.com/', - start: '2014-06-28', - className: 'bgm-amber' - } - ] - }); - })(); - - //Display Current Date as Calendar widget header - var mYear = moment().format('YYYY'); - var mDay = moment().format('dddd, MMM D'); - $('#calendar-widget .cwh-year').html(mYear); - $('#calendar-widget .cwh-day').html(mDay); - - } - - /* - * Weather Card - */ - if ($('#c-weather')[0]) { - $.simpleWeather({ - location: 'Austin, TX', - woeid: '', - unit: 'f', - success: function(weather) { - var html = '
' + - '
' + - '
' + - '
'+weather.temp+'°'+weather.units.temp+'
' + - '
    ' + - '
  • '+weather.city+', '+weather.region+'
  • ' + - '
  • '+weather.currently+'
  • ' + - '
' + - '
' + - '
' + - '
'; - - $("#c-weather").html(html); - - setTimeout(function() { - - - for(i = 0; i < 5; i++) { - var l = '
    ' + - '
  • ' + - '' + - '
  • ' + - '
  • '+weather.forecast[i].high+'/'+weather.forecast[i].low+'
  • ' + - '
  • '+weather.forecast[i].text+'
  • ' + - '
'; - - $('.cw-upcoming').append(l); - } - }); - }, - error: function(error) { - $("#c-weather").html('

'+error+'

'); - } - }); - } - /* * Auto Hight Textarea */ diff --git a/main.js b/main.js index b8e457a..1234c12 100644 --- a/main.js +++ b/main.js @@ -67,10 +67,10 @@ var Main = { slashes: true })); - mainWindow.setMenu(null); + // mainWindow.setMenu(null); // Open the DevTools. - // mainWindow.webContents.openDevTools(); + mainWindow.webContents.openDevTools(); // Emitted when the window is closed. mainWindow.on('closed', function () { diff --git a/package-lock.json b/package-lock.json index c2ed615..8e45915 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cyber-server", - "version": "0.1.7", + "version": "0.1.11", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -315,6 +315,29 @@ "hoek": "4.x.x" } }, + "bootstrap": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", + "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=" + }, + "bootstrap-datetimepicker-npm": { + "version": "4.17.37-npm", + "resolved": "https://registry.npmjs.org/bootstrap-datetimepicker-npm/-/bootstrap-datetimepicker-npm-4.17.37-npm.tgz", + "integrity": "sha1-ZGHJ+raW52IaRr6+KO0VAzPL2iY=", + "requires": { + "bootstrap": "^3.3", + "jquery": ">=1.8.3 <2.2.0", + "moment": "~2.8", + "moment-timezone": "~0.4" + }, + "dependencies": { + "moment": { + "version": "2.8.4", + "resolved": "http://registry.npmjs.org/moment/-/moment-2.8.4.tgz", + "integrity": "sha1-zBdKq7GSI+//VpmpRngFoniYOL8=" + } + } + }, "bootstrap-validator": { "version": "0.11.9", "resolved": "https://registry.npmjs.org/bootstrap-validator/-/bootstrap-validator-0.11.9.tgz", @@ -596,6 +619,51 @@ "assert-plus": "^1.0.0" } }, + "datatables.net": { + "version": "1.10.19", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.19.tgz", + "integrity": "sha512-+ljXcI6Pj3PTGy5pesp3E5Dr3x3AV45EZe0o1r0gKENN2gafBKXodVnk2ypKwl2tTmivjxbkiqoWnipTefyBTA==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-bs4": { + "version": "1.10.19", + "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.10.19.tgz", + "integrity": "sha512-pgeP17w4aPR7HIxIwuJghfqXULjdg1K6xMUUKDyCERJRSNNK4MRToFfELtIsluLNN555YBK4Kx8nihX5/ZT1Fw==", + "requires": { + "datatables.net": "1.10.19", + "jquery": ">=1.7" + } + }, + "datatables.net-dt": { + "version": "1.10.19", + "resolved": "https://registry.npmjs.org/datatables.net-dt/-/datatables.net-dt-1.10.19.tgz", + "integrity": "sha512-joFHYjLYvr9VnC9Fx3e+8jtXnQ/fP/mPFWt9p0NhZ3Zm5N0jlYyWhJQbnLkihOLuDcDFMaGdBQSvmIdTVdgGyw==", + "requires": { + "datatables.net": "1.10.19", + "jquery": ">=1.7" + } + }, + "datatables.net-responsive": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.2.3.tgz", + "integrity": "sha512-8D6VtZcyuH3FG0Hn5A4LPZQEOX3+HrRFM7HjpmsQc/nQDBbdeBLkJX4Sh/o1nzFTSneuT1Wh/lYZHVPpjcN+Sw==", + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-responsive-dt": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/datatables.net-responsive-dt/-/datatables.net-responsive-dt-2.2.3.tgz", + "integrity": "sha512-NGxuii+3sWGG150AWmQ5NYCrTaFKUHo6GeizBR8o2Uuy68PnuNrSO27hyLvOYNLHQ9kALT66f/gTaBc2TdznFA==", + "requires": { + "datatables.net-dt": "^1.10.15", + "datatables.net-responsive": "2.2.3", + "jquery": ">=1.7" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1289,9 +1357,9 @@ "dev": true }, "jquery": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", - "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "integrity": "sha1-IoveaYoMYUMdwmMKahVPFYkNIxc=" }, "js-yaml": { "version": "3.11.0", @@ -1533,6 +1601,14 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.2.tgz", "integrity": "sha1-in93TJWmRVC0x+vUlmg5CPlBnb4=" }, + "moment-timezone": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.4.1.tgz", + "integrity": "sha1-gfWYw61eIs2teWtn7NjYjQ9bqgY=", + "requires": { + "moment": ">= 2.6.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", diff --git a/package.json b/package.json index abeaab4..8e896fc 100644 --- a/package.json +++ b/package.json @@ -13,15 +13,18 @@ "auto-launch": "5.0.5", "bcrypt-nodejs": "0.0.3", "body-parser": "1.18.2", + "bootstrap-datetimepicker-npm": "4.17.37-npm", "bootstrap-validator": "0.11.9", "cache": "1.1.2", + "datatables.net-bs4": "1.10.19", + "datatables.net-responsive-dt": "2.2.3", "electron-is-dev": "0.3.0", "electron-log": "2.2.14", "electron-updater": "2.21.4", "express": "4.16.2", "font-awesome": "4.7.0", "ip": "1.1.5", - "jquery": "3.2.1", + "jquery": "2.1.4", "jspdf": "1.3.5", "linq": "3.0.9", "mfb": "0.12.0",