Skip to content

Instantly share code, notes, and snippets.

@Polsaker
Last active January 24, 2020 13:25
Show Gist options
  • Save Polsaker/518f030743db99d0721c51a73e865616 to your computer and use it in GitHub Desktop.
Save Polsaker/518f030743db99d0721c51a73e865616 to your computer and use it in GitHub Desktop.
Alpha 3000
// ==UserScript==
// @name Alpha3000
// @namespace http://polsaker.com/
// @version 0.1
// @description try to take over the world!
// @author Polsaker
// @match https://drive.alpha2000.com.ar/Main
// @match https://drive.alpha2000.com.ar/Documento/Index
// @grant none
// @require http://code.jquery.com/jquery.js
// @downloadURL https://gist.github.com/Polsaker/518f030743db99d0721c51a73e865616/raw/eba792c50678c335a78b88a057522b1623d1e221/alpha3000.js
// ==/UserScript==
(function() {
'use strict';
if(document.location.href != 'https://drive.alpha2000.com.ar/Main'){
document.location = 'https://drive.alpha2000.com.ar/Main';
}
// Set up materialize
$('head style').remove();
$('head').append('<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">');
$('head').append('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">');
$('head').append('<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>');
$('head title').text('Alpha 3000');
$('body').css('font-size', '16px');
document.body.innerHTML = `<nav class="light-blue lighten-1" role="navigation">
<div class="nav-wrapper container"><a id="logo-container" href="#" class="brand-logo">Alpha 3000</a>
<ul class="right hide-on-med-and-down">
<!--<li><a href="#">Navbar Link</a></li>-->
</ul>
<ul id="nav-mobile" class="sidenav">
<!--<li><a href="#">Navbar Link</a></li>-->
</ul>
<!--<a href="#" data-target="nav-mobile" class="sidenav-trigger"><i class="material-icons">menu</i></a>-->
</div>
</nav>
<div id="container" class="container" style="padding-top: 2em;max-width: inherit">
</div>
`;
$('#container').append(`<div class="center-align"><div class="preloader-wrapper big active valign-wrapper">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div><div class="gap-patch">
<div class="circle"></div>
</div><div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div></div>`);
function imgloader(){
return `<div class="center-align"><div class="preloader-wrapper big active valign-wrapper">
<div class="spinner-layer spinner-red-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div><div class="gap-patch">
<div class="circle"></div>
</div><div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div></div>`;
}
$.post = function(url, data, success, complete, async, dt){
if(async== undefined)async=false;
return $.ajax({
type: 'POST',
url: url,
async:async,
data:data,
success: success,
contentType: dt
}).complete(complete)
}
var documentos = {};
$.post('/Carpeta/OrdenarDocumentosPorPeriodos', null, null, function (respObj) {
// Obtener carpeta raiz...
$.post('/Carpeta/ObtenerCarpetas', {CarpetaID: ''}, function(data){
for(let anio of data){
// Obtener los meses\
$.post('/Carpeta/ObtenerCarpetas', {CarpetaID: anio.ID}, function(data){
for(let mes of data){
if(mes.CantidadDocumentosPorCarpeta > 0){
$.post('/Documento/ObtenerDocumentos', {CarpetaID: mes.ID}, function(data){
for(let documento of data.DocumentosView){
let mesNombre = documento.Campos.find((k) => k.Campo.Nombre == "Mes").Valor;
documento.mesNombre = mesNombre;
documento.mes = mes;
documento.mes.Nombre = mesNombre;
documento.anio = anio;
if(documento.RutaArchivoFirmado){
documento.RutaArchivo = documento.RutaArchivoFirmado;
}
$.post('/Documento/ConsultaEstados', JSON.stringify({DocumentosID:[documento.ID]}), function(status){
for(let k of status){
if(k.OrdenFirma == 2){
documento.estado = k;
}
}
}, null, null, 'application/json');
documentos[documento.ID] = documento;
}
});
}
}
});
}
})
$('#container').html(`
<style>.collection-item.nofirmado:not(.active){background:#eee !important;}</style>
<div class="row">
<div class="col s12 m3">
<div class="collection" id="archivos" style="height: 50%;overflow-y: scroll;white-space: nowrap;font-size: 14px;text-transform: uppercase;"></div>
</div>
<div class="col s12 m9">
<div id="accionesArchivo"></div>
<div id="visorImagen"></div>
</div>
</div>`);
for(let d of Object.keys(documentos).reverse()){
let doc = documentos[d];
let firmado = doc.estado.EstadoFirmaID !== null;
$('#archivos').append('<a href="#" data-firmado="' + ((doc.RutaArchivoFirmado) ? '1' : '0') + '" data-rutaarchivo="' + doc.RutaArchivo +'" data-id="' + doc.ID + '" class="archivo collection-item ' + ((firmado) ? '' : 'nofirmado') + '">' + doc.TipoDocumento.Nombre + ' ' + doc.mes.Nombre + ' ' + doc.anio.Nombre + '</a>');
}
$('.archivo').click(function(e){
e.preventDefault();
if($(e.currentTarget).hasClass('active')) return false;
let rutaArchivo = $(e.currentTarget).data('rutaarchivo');
let id = $(e.currentTarget).data('id');
let firmado = documentos[id].estado.EstadoFirmaID !== null;
console.log(documentos[id]);
let filename = $(e.currentTarget).text().replace(/\s/g, '-') + '.jpg';
console.log(filename);
// Cargar y mostrar recibo
$('#visorImagen').html(imgloader());
let cargando = true;
$('#accionesArchivo').empty();
$('a.active').removeClass('active');
$('a[data-id="' + id + '"]').addClass('active');
$.post('/WebUtilsArchivoPDF/ObtenerCantidadPaginas', {RutaArchivo: rutaArchivo}, function(data){
for(let pagina = 1; pagina <= data; pagina++){
$.post('/WebUtilsArchivoPDF/ObtenerPaginaArchivo', {RutaArchivo: rutaArchivo, Pagina: pagina}, function(data){
if(cargando){
$('#visorImagen').empty();
cargando = false;
if(firmado){
$('#accionesArchivo').html('<a class="btn-flat disabled">Archivo ya firmado</a>');
}else{
$('#accionesArchivo').html(`<a id="firmaConforme" class="waves-effect waves-light btn green">Firmar conforme</a>
<a id="firmaNoConforme" class="waves-effect waves-light btn red">Firmar no conforme</a>`);
$('#firmaConforme').click(function(){
$.post('/Documento/Firmar', {UsuarioID: documentos[id].estado.UsuarioID, DocumentoID: id, Conforme: true, ObservacionesFirma: ''}, null, function(){
alert('Documento firmado... supongo');
});
});
$('#firmaNoConforme').click(function(){
$.post('/Documento/Firmar', {UsuarioID: documentos[id].estado.UsuarioID, DocumentoID: id, Conforme: false, ObservacionesFirma: ''}, null, function(){
alert('Documento firmado... supongo');
});
});
}
$('#accionesArchivo').append('<a id="descarga" class="waves-effect waves-light btn right">Descargar</a>');
$('#descarga').click(function(){
var img = document.images[0];
// atob to base64_decode the data-URI
var image_data = atob(img.src.split(',')[1]);
// Use typed arrays to convert the binary data to a Blob
var arraybuffer = new ArrayBuffer(image_data.length);
var view = new Uint8Array(arraybuffer);
for (var i=0; i<image_data.length; i++) {
view[i] = image_data.charCodeAt(i) & 0xff;
}
var blob = new Blob([arraybuffer], {type: 'application/octet-stream'});
// Use the URL object to create a temporary URL
var url = (window.webkitURL || window.URL).createObjectURL(blob);
var a = $("<a style='display: none;'/>");
a.attr("href", url);
a.attr("download", filename);
$("body").append(a);
a[0].click();
window.URL.revokeObjectURL(url);
a.remove();
});
}
$('#visorImagen').append('<img style="max-width: 100%" src="data:image/jpeg;base64,' + data + '"/>');
}, null, true);
}
}, null, true);
})
$($('#archivos a').first()).click()
}, true)
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment