Compare commits

..

No commits in common. "6e1d1d13c02a58111787f789ece65e10eb0c89ee" and "15f2c45574fbef6624a56a40e62f99c63c04cb65" have entirely different histories.

92 changed files with 16837 additions and 11855 deletions

5
.gitignore vendored
View File

@ -23,8 +23,3 @@ yarn-error.log*
# Archivos para el deploy # Archivos para el deploy
*.js *.js
*.js.map *.js.map
/srv/mysql.ts
/srv/DatosConexion.ts
# Archivos de Materialize
/src/materialize/

17
app.ts Normal file
View File

@ -0,0 +1,17 @@
let express = require('express');
let app = express();
app.use(express.static('dist'));
// @ts-ignore
app.use(history());
app.use(express.urlencoded());
app.use(express.json());
app.get("/");
app.post('/links', require('./srv/LinksAnimes/obtenerLinks').obtenerLinks);
app.put('/links', require('./srv/LinksAnimes/modificarLink').modificarLinks);
app.listen(8080);

View File

@ -1,677 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.14, for Linux (x86_64)
--
-- Host: localhost Database: id8503910_pseudosubs
-- ------------------------------------------------------
-- Server version 5.7.14-google
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `id8503910_pseudosubs`
--
-- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `id8503910_pseudosubs` /*!40100 DEFAULT CHARACTER SET utf8 */;
-- USE `id8503910_pseudosubs`;
--
-- Table structure for table `ED`
--
DROP TABLE IF EXISTS `ED`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ED` (
`ED_ID` int(11) NOT NULL AUTO_INCREMENT,
`anime_ID` int(11) DEFAULT NULL,
`num_ED` int(11) DEFAULT NULL,
`nombre` varchar(100) DEFAULT NULL,
`artista` varchar(100) DEFAULT NULL,
`eps` varchar(50) DEFAULT NULL,
PRIMARY KEY (`ED_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `ED`
--
LOCK TABLES `ED` WRITE;
/*!40000 ALTER TABLE `ED` DISABLE KEYS */;
INSERT INTO `ED` VALUES
(1,29,1,'Mimei no Kimi to Hakumei no Mahou','Yanagi Nagi','1 al 13'),
(2,28,1,'Gin no Kisei','Soraru','1 al 12'),
(3,27,1,'Silent Solitude','OxT','1 al 12'),
(4,26,1,'Prayer X','King Gnu','1 al 13'),
(5,26,2,'RED','Survive Said The Prophet','14-24'),
(6,25,1,'LAST GAME','Zwei','2 al 7 y 9 al 13'),
(7,25,2,'Lyra','Zwei','8 y 18'),
(8,25,3,'World Line','Asami Imai','14 al 17 y 19 al 20'),
(9,25,4,'GATE OF STEINER','Sasaki Eri','23'),
(10,24,1,'Zenzen Tomodachi','Haruka Yamazaki','1 al 12'),
(11,23,1,'Kimi no Tonari','halca','1 al 8 y 10 al 11'),
(12,23,2,'Ashita mo Mata','halca','9'),
(13,22,1,'Atria','FoxTails','14 al 24'),
(14,21,1,'Michishirube','Minori Chihara','2 al 8'),
(15,21,2,'Believe in...','Aira Yuuki','9'),
(16,20,1,'Ai wo Oshiete Kureta Kimi e','Qaijff','1 al 11'),
(17,19,1,'Step Up LOVE','DAOKO x Yasuyuki Okamura','2 al 12'),
(18,18,1,'behind','Mio Natsume (Karin Isobe), Hatsuki Morikawa (Yuna Yoshino), Ena Komiya (Lynn)','2 al 12'),
(19,17,1,'Kyokyo Jitsujitsu','nano.RIPE','1 al 12'),
(20,16,1,'LAYon-theLINE','D-selections','1 al 8 y 10 al 12'),
(21,16,2,'Koi no Russian Roulette','Yumemi Yumemite (Yuu Serizawa)','9'),
(22,15,1,'gravityWall','SawanoHiroyuki[nZk]:Tielle','1 y 22'),
(23,15,2,'NEWLOOK','Mashiro Ayano','2 al 12'),
(24,15,3,'world Étude','Aki Toyosaki','13'),
(25,15,4,'Rubikon','Sangatsu no Phantasia','14 al 21'),
(26,14,1,'FLIP FLAP FLIP FLAP','TO-MAS feat.Chima','1 al 13');
/*!40000 ALTER TABLE `ED` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `OP`
--
DROP TABLE IF EXISTS `OP`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `OP` (
`OP_ID` int(11) NOT NULL AUTO_INCREMENT,
`anime_ID` int(11) DEFAULT NULL,
`num_OP` int(11) DEFAULT NULL,
`nombre` varchar(100) DEFAULT NULL,
`artista` varchar(100) DEFAULT NULL,
`eps` varchar(50) DEFAULT NULL,
PRIMARY KEY (`OP_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `OP`
--
LOCK TABLES `OP` WRITE;
/*!40000 ALTER TABLE `OP` DISABLE KEYS */;
INSERT INTO `OP` VALUES (1,25,1,'Fatima','Kanako Itou','2 al 14'),
(2,29,1,'17sai','Haruka to Miyuki','1 al 13'),
(3,28,1,'Rightfully','Mili','2 al 12'),
(4,27,1,'VORACITY','MYTH & ROID','1 al 13'),
(5,26,1,'found & lost','Survive Said The Prophet','14 al 24'),
(6,26,2,'FREEDOM','BLUE ENCOUNT','14 al 24'),
(7,24,1,'Changing point','i☆Ris','2 al 12'),
(8,23,1,'Fiction','Sumika','1 al 11'),
(9,22,1,'Symbol','Luck Life','1 al 12'),
(10,21,1,'Sincerely','TRUE','2 al 12'),
(11,20,1,'My Hero','MAN WITH A MISSION','1 al 11'),
(12,19,1,'fake town baby','UNISON SQUARE GARDEN','1 al 12'),
(13,18,1,'over and over','Nagi Yanagi','2 al 12'),
(14,17,1,'BRAVER','ZAQ','1 al 12'),
(15,16,1,'Deal with the devil','Tia','1 al 12'),
(16,15,1,'gravityWall','SawanoHiroyuki[nZk]:Tielle','2 al 13'),
(17,15,2,'sh0ut','SawanoHiroyuki[nZk]:Tielle','14 al 22'),
(18,14,1,'Serendipity','ZAQ','1 al 13');
/*!40000 ALTER TABLE `OP` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `animes`
--
DROP TABLE IF EXISTS `animes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `animes` (
`anime_ID` int(11) NOT NULL AUTO_INCREMENT,
`titulo` varchar(100) DEFAULT NULL,
`link` varchar(50) DEFAULT NULL,
`imgUrl` varchar(100) DEFAULT NULL,
`descripcion` text,
`estudio` varchar(50) DEFAULT NULL,
`eps` int(11) DEFAULT NULL,
`alAire` varchar(100) DEFAULT NULL,
`temporada` varchar(25) DEFAULT NULL,
`anio` varchar(4) DEFAULT NULL,
`fuente` varchar(20) DEFAULT NULL,
`generos` varchar(100) DEFAULT NULL,
`color` varchar(20) DEFAULT '#23BF87',
PRIMARY KEY (`anime_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `animes`
--
LOCK TABLES `animes` WRITE;
/*!40000 ALTER TABLE `animes` DISABLE KEYS */;
INSERT INTO `animes` VALUES (14,'Flip Flappers','/Anime/2016/Otono/Flip-Flappers','https://myanimelist.cdn-dena.com/images/anime/4/82292.jpg','Cocona, que lleva una vida normal, se encuentra un día con Papika, y juntas van a Pure Illusion, a conseguir \'fragmentos\', que se dice pueden conceder deseos.','Studio 3Hz',13,'6 de Octubre al 29 de Diciembre','Otono','2016','Original','Ciencia ficcion, Aventura, Comedia, Magia','#E62F68'),
(15,'Re:Creators','/Anime/2017/Verano/Re:Creators','https://myanimelist.cdn-dena.com/images/anime/11/85469.jpg','Los humanos han creado muchas historias. Felicidad, tristeza, ira, emociones profundas. Las historias sacuden nuestro corazón y nos fascinan. Sin embargo, estos son sólo los pensamientos de los espectadores. Pero ¿y si los personajes de la historia tienen \'intenciones\'?','TROYCA',22,'8 de Abril al 26 de Septiembre','Verano','2017','Original','Accion, Ciencia ficcion, Fantasia','#8C00FD'),
(16,'Kakegurui','/Anime/2017/Verano/Kakegurui','https://myanimelist.cdn-dena.com/images/anime/3/86578.jpg','Academia Privada Hyakkaou. Una institución para los privilegiados con un currículo muy peculiar. Veras, cuando eres de los hijos e hijas de los más ricos de los ricos, no es la destreza atlética o la inteligencia lo que te mantiene por delante. Es leer a tu oponente, el arte del trato. ¿Qué mejor manera de afilar esas habilidades que con un riguroso plan de estudios de juegos de azar? ','MAPPA',12,'1 de Julio al 23 de Septiembre','Verano','2017','Manga','Drama, Juegos, Misterio, Psicologico, Escolar, Shonen','#AB272A'),
(17,'Shokugeki no Soma: San no Sara','/Anime/2017/Otono/Shokugeki-no-Soma-3','https://myanimelist.cdn-dena.com/images/anime/4/86603.jpg','Tercera temporada de Shokugeki no Soma','J.C. Staff',12,'4 de Octubre al 20 de Diciembre','Otono','2017','Manga','Ecchi, Escolar, Shonen','#B95F4A'),
(18,'Just Because!','/Anime/2017/Otono/Just-Because','https://myanimelist.cdn-dena.com/images/anime/3/88185.jpg','Al final del segundo semestre del tercer año de preparatoria, cuatro estudiantes están listos para graduarse y pueden sentir el final de su vida en la preparatoria. Pero eso cambia un poco con la llegada de un estudiante transferido. ','Pine Jam',12,'5 de Octubre al 28 de Diciembre','Otono','2017','Original','Slice of Life, Drama, Romance, Escolar','#593844'),
(19,'Kekkai Sensen and Beyond','/Anime/2017/Otono/Kekkai-Sensen-Beyond','https://myanimelist.cdn-dena.com/images/anime/9/88281.jpg','Segunda temporada de Kekkai Sensen.','Bones',12,'8 de Octubre al 24 de Diciembre','Otono','2017','Manga','Accion, Comedia, Fantasia, Shounen, Super poderes, Sobrenatural','#aa0d0b'),
(20,'Inuyashiki','/Anime/2017/Otono/Inuyashiki','https://myanimelist.cdn-dena.com/images/anime/3/88470.jpg','Inuyashiki Ichirou está de mala suerte. Justo cuando parece que las cosas no pueden empeorar, una luz cegadora en el cielo nocturno golpea la tierra donde se encuentra Ichirou. ','MAPPA',11,'13 de Octubre al 22 de Diciembre','Otono','2017','Manga','Accion, Drama, Psicologico, Ciencia ficcion, Seinen','#23BF87'),
(21,'Violet Evergarden','/Anime/2018/Invierno/Violet-Evergarden','https://myanimelist.cdn-dena.com/images/anime/1795/95088.jpg','Hay palabras que Violet escuchó en el campo de batalla, las cuales no puede olvidar. Esas palabras le fueron dadas por alguien que conocía, más que nadie. Ella aún no conoce su significado. ','Kyoto Animation',13,'11 de Enero a 5 de Abril','Invierno','2018','Novela ligera','Fantasia, Drama, Slice of Life','#23bf87'),
(22,'Shokugeki no Soma: San no Sara - Toutsuki Ressha-hen','/Anime/2018/Primavera/Shokugeki-no-Soma-3-2','https://myanimelist.cdn-dena.com/images/anime/1604/93531.jpg','El segundo platillo de Shokugeki no Soma: San no Sara','J.C. Staff',12,'9 de Abril a 25 de Junio','Primavera','2018','Manga','Ecchi, Escolar, Shonen','#413EC9'),
(23,'Wotaku ni Koi wa Muzukashii','/Anime/2018/Primavera/WotaKoi','https://myanimelist.cdn-dena.com/images/anime/1864/93518.jpg','Después de descubrir que trabajan en la misma compañía, un otaku enloquecido y un fujoshi se reúnen por primera vez desde la secundaria. Después de algunas sesiones de bebida después del trabajo comienzan a salir, pero ¿será una relación perfecta para los dos? ','A-1 Pictures',11,'13 de Abril a 22 de Junio','Primavera','2018','Manga web','Comedia, Romance','#EB5089'),
(24,'Mahou Shoujo Site','/Anime/2018/Primavera/Mahou-Shoujo-Site','https://myanimelist.cdn-dena.com/images/anime/1720/95064.jpg','Aya Asagiri es una chica de secundaria que tiene problemas tanto en la escuela con el acoso escolar como en el hogar debido al abuso físico de su hermano. Al navegar en línea, aparece un sitio web en su computadora con una persona de aspecto espeluznante. Esta persona parece tener piedad de ella, y anuncia que le ha otorgado poderes mágicos a Asagiri. ','production doA',12,'7 de Abril a 23 de Junio','Primavera','2018','Manga','Drama, Horror, Psicologico, Supernatural','black'),
(25,'Steins;Gate 0','/Anime/2018/Primavera/Steins;Gate-0','https://myanimelist.cdn-dena.com/images/anime/1768/93520.jpg','La oscura historia no contada de Steins;Gate muestra al excéntrico científico loco Okabe, que lucha por recuperarse de un intento fallido de rescatar a Kurisu. Decide darse por vencido y abandona a su animado álter ego científico, en la búsqueda de olvidar el pasado. Cuando todo parece ser normal, aparentemente recuerda el pasado al conocer a un conocido de Kurisu... ','White Fox',23,'12 de Abril a 27 de Septiembre','Primavera','2018','Novela Visual','Ciencia ficcion, Thriller','rgb(187, 32, 52)'),
(26,'Banana Fish','/Anime/2018/Verano/Banana-Fish','https://myanimelist.cdn-dena.com/images/anime/1190/93472.jpg','La naturaleza hizo a Ash Lynx hermoso; la crianza lo convirtió en un asesino despiadado y frío. Un fugitivo lo crió como el heredero adoptivo y el juguete sexual de \'Papa\' Dino Golzine, Ash, ahora a la edad rebelde de diecisiete años, abandona el reino sostenido por el diablo que lo crió.','MAPPA',24,'6 de Julio a 21 de Diciembre','Verano','2018','Matgo','Accion, Aventura, Drama','#ffc107'),
(27,'Overlord 3','/Anime/2018/Verano/Overlord-3','','Tercera temporada de Overlord.','Madhouse',13,'10 de Julio a 2 de Octubre','Verano','2018','Novela Ligera','Accion, Fantasia, Magia, Sobrenatural','red'),
(28,'Goblin Slayer','/Anime/2018/Otono/Goblin-Slayer','https://myanimelist.cdn-dena.com/images/anime/1949/93415l.jpg','Una joven sacerdotisa formó su primer grupo de aventureros, pero casi inmediatamente se encuentran angustiados. Es el Asesino de Duendes que viene a su rescate, un hombre que dedicó su vida al exterminio de todos los duendes, por cualquier medio necesario. Y cuando los rumores de sus hazañas comienzan a circular, no hay forma de saber quién podría venir a continuación...','White Fox',12,'7 de octubre a ?','Otono','2018','Novela Ligera','Accion, Aventura, Fantasia','#a3be6f'),
(29,'Irozuku Sekai no Ashita Kara','/Anime/2018/Otono/IrozuKai','https://myanimelist.cdn-dena.com/images/anime/1424/93855.jpg','Ambientada en la ciudad de Nagasaki, la historia tiene lugar en un mundo en el que una cantidad minúscula de magia permanece en la vida cotidiana. Hitomi Tsukishiro es una descendiente de 17 años de una familia de brujas que creció con emociones vivas, ya que perdió su sentido del color a una edad muy temprana. Sintiéndose mal por el futuro de su nieta, Kohaku, una gran bruja, envía a Hitomi al pasado, el año 2018. Mediante intercambios con su abuela de 17 años y los miembros de su club, la historia sigue el crecimiento de Hitomi como persona.','P.A. Works',13,'06 de Octubre a ?','Otono','2018','Original','Drama, Magia, Romance','#2f7090'),
(30,'Yakusoku no Neverland','/Anime/Yakusoku-no-Neverland','/img/a/yakusoku-no-neverland.webp','En Grace Field House, la vida no podría ser mejor para los huérfanos. Aunque no tienen padres, junto con los otros niños y una \"Mama\" amable que los cuida, forman una gran \n familia feliz. Sólo hay una regla que deben obedecer: no abandonar el orfanato.','CloverWorks',0,'11 de Enero 2019 a ?','Invierno','2019','Manga','Sci-Fi, Mysterio, Horror, Shounen','#AA833E'),
(31,'Kakegurui xx','/Anime/Kakegurui-xx','https://myanimelist.cdn-dena.com/images/anime/1151/93653.jpg','Segunda temporada de Kakegurui','MAPPA',0,'9 de Enero 2019 a ?','Invierno','2019','Manga','Drama, Juegos, Mysterio, Psychologico, Escolar, Shounen','#624aac');
/*!40000 ALTER TABLE `animes` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `enPagPrin`
--
DROP TABLE IF EXISTS `enPagPrin`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `enPagPrin` (
`pagPrin_ID` int(11) NOT NULL AUTO_INCREMENT,
`posicion` int(11) DEFAULT NULL,
`anime_ID` int(11) DEFAULT NULL,
PRIMARY KEY (`pagPrin_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `enPagPrin`
--
LOCK TABLES `enPagPrin` WRITE;
/*!40000 ALTER TABLE `enPagPrin` DISABLE KEYS */;
/*!40000 ALTER TABLE `enPagPrin` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `eps`
--
DROP TABLE IF EXISTS `eps`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `eps` (
`ep_ID` int(11) NOT NULL AUTO_INCREMENT,
`opcion_ID` int(11) DEFAULT NULL,
`num_ep` int(11) DEFAULT NULL,
`visitas` int(11) DEFAULT '0',
`link` text,
`peso` varchar(10) DEFAULT NULL,
PRIMARY KEY (`ep_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=367 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `eps`
--
LOCK TABLES `eps` WRITE;
/*!40000 ALTER TABLE `eps` DISABLE KEYS */;
INSERT INTO `eps` VALUES (1,1,1,3,'https://unsaedupe-my.sharepoint.com/personal/faraoz_unsa_edu_pe/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Ffaraoz_unsa_edu_pe%2FDocuments%2FPseudoSubs%2F2018_Q4%2FIrodzuku%2F1080p%4060FPS-Irodzuku_Sekai_no_Ashita_Kara%2F01%20%5BPseudoSubs%5D%20Irozuku%20Sekai%20no%20Ashita%20kara%20%281080%4060fps%29%2Emkv&parent=%2Fpersonal%2Ffaraoz_unsa_edu_pe%2FDocuments%2FPseudoSubs%2F2018_Q4%2FIrodzuku%2F1080p%4060FPS-Irodzuku_Sekai_no_Ashita_Kara&slrid=455bab9e-40f0-7000-5c4a-fd7e7239bd7c','500 MB'),
(3,1,2,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbaVSNqy-4dNuqvgH4zVP1QBY3v7B0536a26H4nhNegupw?e=dGfUwh','274 MB'),
(4,1,3,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ES3lCzTa6qdOtlbGNfhmfrYBOUnbvsyQyW9Dav_LamzVew?e=vfAipJ','358 MB'),
(5,1,4,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERCl2g3z_JhOlNKaaCQQUi0BHpAYTF7Q9ocPlqbS3lgYjA?e=5UIyjj','275 MB'),
(6,1,5,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXcNxv2fLT1PrOXitPyjQMIBtOq-46Wj1M-5xpf7bls2Mg?e=iYVijF','291 MB'),
(7,1,6,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQX2Q-o_sc5BjItKRs7Et7UBlYtU0G5Xmhqy_0k2_BNWRQ?e=ZSxqfr','460 MB'),
(8,1,7,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERKHkci_jUtLo2-aSROqPnkBAlQ0heMBNPSjOvsk2t7emQ?e=fhaOCB','290 MB'),
(9,1,8,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbAyvWbc5DhJkhdguMn8HxQBDnUApHUlJcZmXLy57M-bGg?e=4EedXy','321 MB'),
(10,1,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQi9gnMfXkpPgBnSZcelHXQBmv-iNneIaCRTz6NFdSAe0A?e=43CevI','285 MB'),
(11,1,10,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVupEMhc7RFJmtOPM56GMnQBnlhUXTjRvqbZ_6Y4jszHzg?e=pz9Pmd','364 MB'),
(12,1,11,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EclNibCUQvFAhW0QG67SjCoB-jYGP7xYHvy4dEk1JqZAqw?e=isBDAz','272 MB'),
(25,2,13,4,'http://bit.ly/2GK9KNe','330 MB'),
(26,2,14,4,'http://bit.ly/2xaVKYe','286 MB'),
(27,2,15,8,'http://bit.ly/2s5RzYU','285 MB'),
(28,2,16,5,'http://bit.ly/2koeavx','258 MB'),
(29,2,17,9,'http://bit.ly/2INTmIh','307 MB'),
(30,2,18,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EX0Ke7qeZyJIqfUf4ZVtl6kBcG246xv2YujxRuHP1C1Adg?e=8CttHc','284 MB'),
(31,2,19,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EQp_FxjXtMFGoPV9Jb_cOhoBihAzOxpOg_97MqTOvFi1xw?e=cOa25B','278 MB'),
(32,2,20,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ea4hlEMuWFNMoJgIvw3RkhMBIHIxdDFRKxs2IoraJzYS9A?e=agYC9k','260 MB'),
(33,2,21,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EXlyDUGzDgRLty7L90aOEcoBckez4vaZpNHpKG-VrfHxPw?e=dhgHQq','256 MB'),
(34,2,22,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ea-ewS-6SrVPvYHDTeFCDr4BJuPZL29Ne1oJJdWv2_M-qg?e=cMPeU2','255 MB'),
(35,2,23,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ea_Ym8T5LcxJszomScYiCpsBQTcEGKS96jj-p2BQSOd_Pg?e=wBAQla','265 MB'),
(36,2,24,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EUGxH3oj4d5AoyIEs5vipx4B7QTAfljiDthXKsW9kA94hA?e=WHk3IA','292 MB'),
(37,3,13,10,'http://bit.ly/2GN6ErO','559 MB'),
(38,3,14,10,'http://bit.ly/2xd1il7','556 MB'),
(39,3,15,9,'http://bit.ly/2kpC89y','555 MB'),
(40,3,16,5,'http://bit.ly/2IJBhzj','556 MB'),
(41,3,17,4,'http://bit.ly/2sfECuC','555 MB'),
(42,3,18,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETqwLdsjjepAptPXqt162NgBLSO3rJXgPxz2pmuo8d0bSw?e=p7SysW','555 MB'),
(43,3,19,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EW-8zI4C1qxCruoT5I2im3wBG-NqnbLLI_9Pnff2t8o3vg?e=fhu5Rq','555 MB'),
(44,3,20,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfuAx6N4t_BMoDL_119ugWQB-OLmP1dBwqN0W45ipGN2bg?e=kIFSlP','554 MB'),
(45,3,21,8,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Eagy0riqaxlDot5wMOlAmmoBM_pE14kzMCTD7e-0j_gd5Q?e=SBx4Dk','555 MB'),
(46,3,22,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EXpJxEGEDBFKkK-ynAYHSS4B16CkUBnZkv5FWSpIGhCFvA?e=ACc9ud','555 MB'),
(47,3,23,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETFHaYcrOf9KpQDig69sqAMBebJ9s7xS4Tof0RTxqeMk-g?e=IPEWbg','977 MB'),
(48,3,24,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EREzzQgJLG1GmS1-R0FMEM4BK0ztfRg-LJpl2XTPcasqiQ?e=SyoK9o','990 MB'),
(49,4,1,6,'http://bit.ly/2IMECt0','322 MB'),
(50,4,2,7,'http://bit.ly/2qYvzPc','172 MB'),
(51,4,3,7,'http://bit.ly/2HLf1o4','147 MB'),
(52,4,4,7,'http://bit.ly/2JKV25A','175 MB'),
(53,4,5,6,'http://bit.ly/2wpdLlu','184 MB'),
(54,4,6,8,'http://bit.ly/2Ky1EV5','187 MB'),
(55,4,7,3,'http://bit.ly/2GRgELF','174 MB'),
(56,4,8,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EbGfM9z8jn5KvlEn2r0K-EcBaHP3GvgKpc7cWaX_bXgV-g?e=SfJ9lM','157 MB'),
(57,4,9,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfN1xeMQp6VJuu9ffVwvqQEBIWnKpevXipApocL6rvMJ9w?e=ZzADxt','176 MB'),
(58,4,10,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EdhAdV4HqphOgHxe62xITugB2rC0yiZAhdcoXqdgkp2xUQ?e=kqhVGF','183 MB'),
(59,4,11,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EX0lOtArolFAvu7X-w8bYIMBCdNHjQZzztL4_dx5J9O-XA?e=Nge0bX','184 MB'),
(60,4,12,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ERvuR5ZjQjZHqTjNAchZf0YBduIBxEcLx7hERVO4QBzcJw?e=tcPnd4','159 MB'),
(61,4,13,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EbfY0S0qnCJOkEjkUuw7bLkBObvAQi1utky1Lim0u8zB9Q?e=y8dMfy','179 MB'),
(62,4,14,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EceVcu6J3_VOlrTQKEPyFdkBKAkROI-zpQPfqMU_XhDeyw?e=mqRueQ','164 MB'),
(63,4,15,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EaZUwede0xtNiYVJsff1XZ4Bk-PRtsBhsnrh2t_Ho3KFKg?e=pCPeXw','170 MB'),
(64,4,16,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EQYMs5BPBHVOqYXqK9a9bcgBnvEk3QZlK9TWoar8diJ67g?e=BGi6xj','164 MB'),
(65,4,17,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQrTgaVAQkBGo8lPaDFopcYBzd1P_oZg7753UzSrYkm8cA?e=eXfSTi','159 MB'),
(66,4,18,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Efhn8ypEi4hEisKiN-TfkYEBhm4g19F4M6yPgOjW3944TQ?e=tQti69','165 MB'),
(67,4,19,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESkmQbiQWwRCkiLIiNESEosBE5J0ekfvo1qRHjlDohhfRQ?e=882KO0','175 MB'),
(68,4,20,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQFmA3itV11KqW08iUbnbssBxn9vFtH43-nnm1zf1jdCtw?e=rbliKb','142 MB'),
(69,4,21,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfqDG_LBO3BHi1CSP-jvXV4BUCYZe3CvUYTrCgnxr2N3Hw?e=xNAzUQ','171 MB'),
(70,4,22,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERqrfrHjCSRLtJ6VNd_EKFgBQzGDHXHJhoc0C06vMcCkLw?e=zM3Z8H','153 MB'),
(71,4,23,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdzWH6WkSX1Mlis5l2Dthx8BDJD3v71-8yo_xAf-wU2PYA?e=xVshPe','221 MB'),
(72,5,1,3,'http://bit.ly/2GWCtOU','395 MB'),
(73,5,2,5,'http://bit.ly/2wddodu','466 MB'),
(74,5,3,9,'http://bit.ly/2HXNPiI','442 MB'),
(75,5,4,7,'http://bit.ly/2KrOHx7','361 MB'),
(76,5,5,9,'http://bit.ly/2G2XDFw','375 MB'),
(77,5,6,10,'http://bit.ly/2IwNqnb','380 MB'),
(78,5,7,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUcXhl-BpHpDqIzwH7HlugAB807-hXPo-RDSAa1ZmqAqKg?e=bS7Uup','357 MB'),
(79,5,8,7,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUCKrVmcG9ZMm0Az_FGFufEBFfxG2cNa2xEZoFX2bTRvNw?e=oCuyAE','322 MB'),
(80,5,9,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQASs7OxGKBMjrFbVr_dHiYBclJtUcFKdKojgmU3xon3wQ?e=Jfx0Oz','361 MB'),
(81,5,10,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOYpCOBCwFMk3Y8A5YaaRsBpkCCFoH6NzfZGs4BkLaAOQ?e=q1T7SV','371 MB'),
(82,5,11,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESIzcSXIf71MpCiHH4pYD20BnkZeHZQ1uXesQb5JfYZ1ZQ?e=rHY0eK','378 MB'),
(83,5,12,7,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUPAcg_q9elBqZ4X1v1w8GkBNnk9uVd1iZTvElKz3kSoow?e=s8Vq4Y','325 MB'),
(84,5,13,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Efvr46kCBz5KoRv2IfY5DO8BlKiWnaUm0xOmxjjKlXkQpw?e=FsR1At','367 MB'),
(85,5,14,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZx7tzte4gpLqoXSm_kwxYoBlqKb0FMHlWALSrO44RcKAA?e=d94diy','339 MB'),
(86,5,15,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EX7YM9Z3o2BDqq7VDcGH_EUBA5LCZc6SPodJ017s0i9Q-w?e=itVVha','274 MB'),
(87,5,16,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZbn26qqytNAsbR66yY1XCUBbXiji4lRz5WspA8HOVur1w?e=oIXJgS','267 MB'),
(88,5,17,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUqdfZsK8M5An_9xGE5UOmUBjUtKFimZQAfP56CUoH5Cwg?e=pMYdyx','293 MB'),
(89,5,18,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EU7ZzYVjn31BnmoHynQd08wBf1DD1EvygFkiCLY--CR0gg?e=Cg9j9f','302 MB'),
(90,5,19,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZjJVVlM2hNJnnPfTBkZ-pUB1byRl6wALkcfgBg6QE5K2w?e=iyhWrD','284 MB'),
(91,5,20,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYq_YlxIgYNKiC2ITwIBUDcBbJcm3pDrglTpQvXbtxytZg?e=7Kiyno','299 MB'),
(92,5,21,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ed97khMrf_1AoYr39xlEcscB8k2hZh4CYgHNAvn1uizu8g?e=JZZHai','318 MB'),
(93,5,22,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EamF213_IbRInl6uRVtes1gBwJhS2j1bcxeOLvdxJiIFyQ?e=FNzyOi','297 MB'),
(94,5,23,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbvRox1_UcRGl1eRi4FUXnoBVrfLRhptxY-zVfi18H5eUA?e=ntu72f','374 MB'),
(95,6,1,5,'http://bit.ly/2EoaS2N','272 MB'),
(96,6,2,9,'http://bit.ly/2GVBTRi','309 MB'),
(97,6,3,7,'http://bit.ly/2HWzkMj','165 MB'),
(98,6,4,10,'http://bit.ly/2HVpKMa','218 MB'),
(99,6,5,3,'http://bit.ly/2juVbir','241 MB'),
(100,6,7,7,'http://bit.ly/2IsToJC','203 MB'),
(101,6,8,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EcCKBFEAYthHia6brER-J3oBm2BRMPV7cXyyiNgHT_z0RQ?e=7OAQPM','216 MB'),
(102,6,9,8,'https://mega.nz/#!80RQxSSQ!90lucs7Grf9wphDZHtI2C_OfUyH4-Klgt32FPz8t8eE','201 MB'),
(103,6,10,4,'https://mega.nz/#!t1wFTChB!__pTGpfmIblEIzGf4ir24MHYcB_KITw4in0e13BgaSc','405 MB'),
(104,6,11,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ER7GD0MPVcFIj3VJgJmV70IBuQi7FnrA_18Q5rVG1hGypg?e=mfdvcs','210 MB'),
(105,6,12,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfPdAIgWakNGviXr_sp0ELUBteQG_Wa-nVYl0Fp1gVa9dA?e=XHrxSd','185 MB'),
(106,6,6,2,'http://bit.ly/2I8KVLE','462 MB'),
(107,7,1,9,'http://bit.ly/2q9SmXM','433 MB'),
(108,7,2,6,'http://bit.ly/2Hv9LB1','356 MB'),
(109,7,3,6,'http://bit.ly/2qVpbrT','319 MB'),
(110,7,4,5,'http://bit.ly/2r3Mn6w','440 MB'),
(111,7,5,2,'http://bit.ly/2Ky1BcZ','488 MB'),
(112,7,6,9,'http://bit.ly/2KiDiyv','367 MB'),
(113,7,7,9,'http://bit.ly/2IRTNVb','428 MB'),
(114,7,8,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EQy1R-8NUKhOlQwo3JI4oKIB2fKlUnA8YWW65Rr6XUh1XQ?e=4Hiz5W','448 MB'),
(115,7,9,5,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ERqs1cOKT69LuJ_SggmM37UBFdwMSgu8xlSIRUNDZ9v17A?e=mAHdFR','206 MB'),
(116,7,10,8,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Edvtjz7w8YxAqWPMJxuhfGcBN-dBPkNI4Y9t67e4E_0_vA?e=hEPkdS','405 MB'),
(117,7,11,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ef9fgBIpxhJPtNrXJfZVZJMBUaA1UIToBGBDMrwCECXYSQ?e=Kdinmc','624 MB'),
(118,7,12,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EWcUS-I2941HlGobIeQ9tE8BS4dW9fTY7J7SugU5gjptlg?e=zytYOf','595 MB'),
(119,8,1,3,'http://bit.ly/2v9J3Mi','193 MB'),
(120,8,2,10,'http://bit.ly/2HMrhnJ','134 MB'),
(121,8,3,3,'http://bit.ly/2GtKztj','183 MB'),
(122,8,4,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ESg94K5YyV9KnKVxqHv4TG8BGvfF28zh8Jy0AYD1Wt8PFg?e=Zd7xDm','185 MB'),
(123,8,5,6,'http://bit.ly/2rENU4e','149 MB'),
(124,8,6,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ESyZ5kIFk6pMn11t9gyObVoBe-o5aomg95Ie7txV-bicPw?e=LWo0oW','141 MB'),
(125,8,7,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfPFrRsBJqlKib54vsqWntwBVCYhfrahy2zSzPFr_VprTA?e=aGG8Iz','185 MB'),
(126,8,8,8,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EWE0z08Ozo1Dnc9AAJCgQqwBegDqojjaYuHRpxWQweoAEA?e=63LaLV','149 MB'),
(127,8,9,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EdyKksOsVL1EqquM5cIndB4BV0cJ-LlpfgChGFxETAA_xw?e=5bQMXe','178 MB'),
(128,8,10,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EVf0OaTBMBRMtwIwiV2JBToBYEOqXOYLKa65wseZIOPFEw?e=K6Ws7T','172 MB'),
(129,8,11,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZlUPbOIijFDiCom1nXR-4YBC7D7HjiHYG8BnrD8snkigQ?e=QOLRSe','154 MB'),
(130,9,1,9,'http://bit.ly/2EHWdQp','364 MB'),
(131,9,2,5,'http://bit.ly/2r3a3If','231 MB'),
(132,9,3,10,'http://bit.ly/2IRtTRz','516 MB'),
(133,9,4,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ERRJBJVcf2dPs84a6e0eXswBCFqtDem1INyQFB35VNNjWw?e=wSnZcD','547 MB'),
(134,9,5,7,'http://bit.ly/2rFNbQ6','461 MB'),
(135,9,6,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfbMWbCMfvFEihUXDFju-XgBew6wDH1w_resJkEtxAPk2A?e=hIYTCj','434 MB'),
(136,9,7,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EbEIM-DP_9RIggcV7ZbwAZgBH24QNF9A4UWpKdIOSAk45A?e=lasa44','537 MB'),
(137,9,8,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfwNAWcUpX9Coae_fc4x2m8BojdFNQ5z094-5Dm4JKAIpw?e=8Giiv9','467 MB'),
(138,9,9,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EVWyXQBrLNNHmKx2NvriZYIBEQI9iLsrnrBEW5hevCGj7g?e=lEK62O','535 MB'),
(139,9,10,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZkpiZR16OxMpqMN7w2DUmQBFR1N_k03Usukoo8e1vMTCQ?e=93GehA','513 MB'),
(140,9,11,5,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfW_d1099DtDrx_OtxtKPiYB6l88kYAsnx6KZgKOFPCN-w?e=w18PjG','457 MB'),
(141,10,1,1,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EVVkQDXP0udHtoo4NyCQIQYBzCFyo-yMX2YQ4cvoDcDrtg?e=twQbP1','160 MB'),
(142,10,2,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZYJPzxOTbBMmO6AY8jHGgwBcGp6frdoIrCEC6N-5BLG4Q?e=3VALQy','190 MB'),
(143,10,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUmzg8Eiq7ZEpsGwbDtqyz4B1_yI9Ksk29j01H8y4fs2KA?e=6bgNg4','183 MB'),
(144,10,4,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYHnSRzKBONCmc6TNLjTCT8BYhovJ_005KsfdfZMQDd4ww?e=v0aJcy','172 MB'),
(145,10,5,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EedsdtJ9JmBJhjBm2OE82dQBD4m-EbR8974xXKsYZMTFaw?e=rSHv0I','171 MB'),
(146,10,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbDZguj6o6xJs6wML557yZYB6A_jcc95fXbSZL3T8hP8wA?e=LchEUx','157 MB'),
(147,10,7,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ea1jGjrc0SxDhbVXDreFK24BcCL9phQfwjEFViBKUgVMag?e=8wnMog','172 MB'),
(148,10,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXsVa96w4sVLhKmGzGFusPgBJKO9I37zmOpoEfoUsiW3xA?e=tWWcB4','174 MB'),
(149,10,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXcCEhnPfotGk8-0ho4fogYBNacvg6TIZ0nYplqt5zjRCg?e=fQJBKf','186 MB'),
(150,10,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQscfzn41b1LhhMCfPdgAWoB_nlMEs3xhVZmeVk2MqHr5g?e=LGLcnJ','172 MB'),
(151,10,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETt0-xm69otBuM_GDQfXwzUBa3QPn4lqJVLX6E1hY2mKyw?e=t7GVv6','151 MB'),
(152,10,12,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdgorHYQxdBKpAyxLSeGH0cBUpXJmdGPAgo7ypDONmT6DA?e=jPsLSK','160 MB'),
(153,10,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXjklVJn-09MqrW5OVA2Oi4BSCOzLIj4005KAD1J5g7OuQ?e=9QxxVS','195 MB'),
(154,11,1,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfZL_64YJzNFuosg2TyOQJYBANVqFnvItC1-6F4C6ooW3w?e=2QjgY3','368 MB'),
(155,11,2,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EYtfFPTDs2BFlIX_sCzcCVIBDTWv95MFhzPavaa0Eio1nA?e=PnAKtF','447 MB'),
(156,11,3,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETS3CdRCsQFLgCGSrAN2Pt4B0e5mTOgk9nxEsv8sN9duow?e=vTmwPP','463 MB'),
(157,11,4,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYG_4ST_qg5PrTcikED_jgUBLWruMl1ac29U8olGdcgmzA?e=W737g2','408 MB'),
(158,11,5,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfNWibnYuY5Hk1WIw2CfmkIBNCj1FWG4lbVRzE1p7fvrhg?e=Ps8GM0','385 MB'),
(159,11,6,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EROEIrfYN9JEqXge-LUJLnMBijoKm589bxCpWTpNSxyHYA?e=GlukUk','376 MB'),
(160,11,7,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ea6rG3ZkkH1Fuq0NmTqEX-ABBlJnLCCXbjiL3HUZaoWLAQ?e=8Uaxgu','405 MB'),
(161,11,8,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EU-DvvdLHMNKlDj4vOCzzNIBSaVOGdv24xoPP2HPe2cmhw?e=zILaPp','409 MB'),
(162,11,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EcisCYsHuo5NvQ70V1dtmRMBuvP-wH4gAsAf6g_u1nAvcw?e=nbLUl4','435 MB'),
(163,11,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYgX3JZTvz9CmxsDONY5xhoBIMBGG99bjNRef6af9OI7VA?e=B17Wz9','364 MB'),
(164,11,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EX8nwpotTGxLt9SzaQqRGSEB70jQqsTFm8wUa_RnJOh6sw?e=mC5ZmH','369 MB'),
(165,11,12,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESHmVm2I0P1OjdyK4SxoB-ABPD05YS6cW5Xht6gjYKWhEA?e=vP5MBo','375 MB'),
(166,11,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbT1jvJuVVBPh7yVYq-3xM8BJ0FJISQA3gsDScO8lQvfZA?e=u6oeKN','483 MB'),
(167,12,1,10,'https://mega.nz/#!Z9oQ1QgS!QE7o0Yfzr7S5fZeOCHLHi1jspnHiQzHW7vNdUx6kyL8','147 MB'),
(168,12,2,4,'https://mega.nz/#!1oZ1iYTR!DhKHrwGMlg5K0mz_aQlIC5uyG5EVJut9TWIOb5MRFp0','157 MB'),
(169,12,3,3,'https://mega.nz/#!9t5GyQLK!lz5Vic3d1d3dXUAMXh91AZtPMvBuYNiaegvi7cGjNKY','150 MB'),
(170,12,4,3,'https://mega.nz/#!9whyXI7R!L2V5hi4XvreiAANSwdxtsQso_hBblp76_IL1jpBb2Oc','151 MB'),
(171,12,5,4,'https://mega.nz/#!wphWGQDK!9Z9ORYIfHqQO3eq8qrt0EVFMcwSj-lodcAxEmWrjPq8','145 MB'),
(172,12,6,4,'https://mega.nz/#!FkxGiSpB!bWhH6D7A3sfgrESKOjPxcxKVbDyLb6Mqs7B4Ca-IgXw','132 MB'),
(173,12,7,2,'https://mega.nz/#!glhwSKoR!iGxftDAX8_1jeQLDtbyQ4JANg2cvpy0UuYa9F6RY_rk','168 MB'),
(174,12,8,3,'https://mega.nz/#!wxhliBqL!FoFibOCsg9kZa6XOe5U4xYQ6DlqknFt5206Fozavya8','173 MB'),
(175,12,9,2,'https://mega.nz/#!EkRgmADQ!8ZagzKdP-cW5yFQYuA88nOyCLglQJKwZSLowjwB6u5I','158 MB'),
(176,12,10,4,'https://mega.nz/#!89AQ0AiL!Fvywj8RsYdpNtXLX_IuFQT72xbrQyTQ4X_4Ikj6P6gg','129 MB'),
(177,12,11,3,'https://mega.nz/#!UlZ2jY7L!v77P2NdbRd5eM7M5sukJ72G1FVcWlHGlnTAwQLT3VQE','191 MB'),
(178,12,12,1,'https://mega.nz/#!0g5DiYpL!GbMFlaZYQ1_y4k1svldgZsLa-Zi_STHRZRRpdMlcG3w','208 MB'),
(179,12,13,4,'https://mega.nz/#!xo4FBQoB!jpmJ21cEYlZU5N0FlYNR8UZ4BjHLfHewo3ihCmjiIRM','138 MB'),
(180,13,1,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQU6pcxPgiRNkhcy4PjGs3kB3Ia-V-SmFBy1r8CqqL_VWQ?e=X8NTtL','239 MB'),
(181,13,2,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdkXK6iKQM1IlrY8sLSHijMB4FjHKrQ8OGvgv3AUFiKhRQ?e=qxg8wV','261 MB'),
(182,13,3,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWs9GQfWfyFDh9kGuH0cuUIBlAfwKTT63WYz3UdLeTBCNg?e=mTcLuM','227 MB'),
(183,13,4,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfdAyYi_mZVEg8UbnZo8JboBabfFmgJ3bqH27J5eV6cGng?e=O6C6qg','239 MB'),
(184,13,5,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfkM9Jjq_X5NnX7xig8E5ykBjwv89U1J4yRHcTWGN9Gjkw?e=AdIjnk','230 MB'),
(185,13,6,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYBRU1-MbQtChxW_y08pzpsB9pyiqqvY9ZJ-0IDktqP3zw?e=i8vX6c','215 MB'),
(186,13,7,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EU5ju177uhdJnQj7Ke6TZgUBXPn45rBvhQ7iEqOHeXke4A?e=WDog1p','262 MB'),
(187,13,8,1,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EavE0fys0BlEinwZ6yxHFWEBkbLW8hmFP0re7Tt1mWCRCg?e=cFugjZ','282 MB'),
(188,13,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdISYCClbSBLv4B-TppC9rABTgEK_BwIZGdhEFKVzHl6CQ?e=1x5afG','264 MB'),
(189,13,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUwqNbwSaE5Oj36_mY2ZM18Bp8ZUJKksKvfJpzfN9yw_8w?e=dnjiTS','216 MB'),
(190,13,11,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVdggRyWB3FJo8quqvzrh78B_1WkzPhhqWniwb29G4aRNg?e=sXxnaw','304 MB'),
(191,13,12,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdzmY7lQY5lGstHX1clGum8BdGE8rlv76VOfjck73Qx_nw?e=uVbpzO','327 MB'),
(192,13,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYtfh0hkCUBOjn6jaPiTIG0BuFipz1Gg347osxFqRa4inw?e=trc1Cn','230 MB'),
(193,14,1,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOjru4VPQNAqfrDyHazC5cBWkzkcNkdxQQFPKPF3CMLIw?e=KGSwVl','501 MB'),
(194,14,2,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EScf3S-mq7BDtIfuY3xKe3sBBx31u2-wkUK7x-a3hkIGkQ?e=abHEhZ','543 MB'),
(195,14,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYOsauY6iHVCmtnyIB2ZPzABA8ivExpOmIaLLR-ciCU05Q?e=jqZ8xS','495 MB'),
(196,14,4,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfFO3-WEAqdMq72CsF9nzw0BKvrP_HcHu6Xk-2H3n8ej4Q?e=jdrOP2','373 MB'),
(197,14,5,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQAJx3PiLapJkCjn4ocVoL0BHjFrZpzor55sJUcuCGHzxg?e=lZsRsd','371 MB'),
(198,14,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EY1uRYH0qzhIlnwla7Uu5VABkqn1qQKsA3GV-ZFsa_TdUA?e=ZfKurg','388 MB'),
(199,14,7,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUxE6_DuAIROmg0r87eSKjUBib-hJ44cnoVa76gdyC3zbw?e=bg6DTu','412 MB'),
(200,14,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EaoiDX7hvNtOjxLZkrOp8qoBk0sgfD-0489FCJkdQwV8nA?e=Ke8gD4','513 MB'),
(201,14,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETmnDJIR2OZDrjRoov75YsABGhLv4vueGN2pvdpJU2cgYA?e=RTVl2l','287 MB'),
(202,14,10,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EV61Q6s4trZGnKaCvQGJSF0ByCZReGHZKOIy6my_zhuzzg?e=qQ6xQN','410 MB'),
(203,14,11,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdBm5kRbUlVEsUa_eAt5T04B3Uc_AQp5ijJFIMjTeOWdoA?e=UbuqXe','551 MB'),
(204,14,12,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESuyMq9VF4pNnaJJOptLMGEBA6bW0DT_t0REEjGpzGzaqg?e=0qonYD','591 MB'),
(205,14,13,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETmjmnG3XZ5FiAkbMIKcZNYBEOVSASVKjyKNgib7yVe4gw?e=EBDTcO','431 MB'),
(206,15,1,13,'https://mega.nz/#!0kpQnCzB!vt_b9n5I-YZ5TiFoqKyE5anuU_RFIzaYkEBChD-SwaA','162 MB'),
(207,15,2,9,'https://mega.nz/#!I1wmHaZA!4iWIa50YXX07rfr-FfOh0L-y960c-r-NGNsWCq8LcAA','118 MB'),
(208,15,3,7,'https://mega.nz/#!M8AUHSYb!QtXRc_72OnbCw7d8Hnhp0jRCKPlElt1gJ_FPxz05rLs','154 MB'),
(209,15,4,12,'https://mega.nz/#!9goRBCTL!7dUcVOquVyR7uH2vdEgw2XYFmmIHoy_d36pZKbZmm9E','174 MB'),
(210,15,5,5,'https://mega.nz/#!ppRCnSJK!XtdmSATnaIl0YvSFnwY-lkBpyw8frYZ-1N0MKLC4ONw','123 MB'),
(211,15,6,2,'https://mega.nz/#!U0hV3KCJ!HSQ-F3vtfXOLFZyc314rk5dkYyZbJmJNy0mw1zGB-sA','184 MB'),
(212,15,7,4,'https://mega.nz/#!1lhlUYxI!EjqUadNWssKmsRI4dTmuah-oPZ8hdi1qaeLG0wYu1E4','118 MB'),
(213,15,8,0,'https://mega.nz/#!hggjEKrL!uLL4cNCOzXVShCbvciX52AWj771CKA2uRgT3x_ZrXMo','135 MB'),
(214,15,9,0,'https://mega.nz/#!U0wlwSZZ!tjln9leR5nJjjcZD1QXNEcujx5CI2T5RS0cVn13lyvA','121 MB'),
(215,15,10,0,'https://mega.nz/#!xloFQSTZ!aS3lM6pIxAVbXh_nSaYHKhLWCttPBPMNxaiMBa6ZOvI','151 MB'),
(216,15,11,1,'https://mega.nz/#!R5xhzQST!F2QfcTMW2TamPOO_UOKHsTggFgE9NTuIszaeDlu0b4k','111 MB'),
(217,16,1,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EY0ddAEU0OdMo09arH62F3kBrQdFvNIv6zCCfalEND3KJg?e=sdoOiD','246 MB'),
(218,16,2,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbyMuJLjh3NPvYRyQOeATE0BEGjihTlvKhsPdq4030jRKw?e=e8uwXL','176 MB'),
(219,16,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWn3iW1y1WdEoAgmFRNExo0BUuW7TUaYIOe_p3ZX4T_5Yw?e=MZKmr0','225 MB'),
(220,16,4,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EY7u5BJDSEdPh5eGRtXv8LQBlkCYrxcMETCLbub-mhS9mQ?e=ecNn0c','116 MB'),
(221,16,5,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYncNSR25NlAgxC9Xemg_W0BMgVZq1KTRHarYXkOys4Ulg?e=RrwzJo','185 MB'),
(222,16,6,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVv7wl0NcG9Iov2I8nZsbDoBcsvko6ZPwtSyVuIOVS9p6w?e=qpZVzn','284 MB'),
(223,16,7,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZva_Sm5UdtFrqV13EsJbosB2aUIZDpgSjNHInJigEPQBQ?e=mCWrRr','182 MB'),
(224,17,1,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ET3mS7EDLPhCi79Z2eruI7YB28x1PFtvbF0AyEhzn61XFw?e=k9AjLN','191 MB'),
(225,17,2,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ee7JwEQhJZpDqlUsbZLH_8UB88x7Joas_O1GIKkmxBnyiQ?e=sgJWhg','197 MB'),
(226,17,3,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERKf5zUANaBIvaBqiNHQ9s4B2ppEOLnsdwhO4v5O4hQfsQ?e=sJ52sV','183 MB'),
(227,17,4,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbLHO2KGeIVNvIY2iZQjhfQBC6FMBK7H74Cd77Pe3t6zgw?e=JCg0Ub','235 MB'),
(228,17,5,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUU4l5PRY85OuBnZ8_iYB1MBrGAD3v5E88yq8FlDP6PVWw?e=lrUJzb','176 MB'),
(229,18,1,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOULtPLqr5IlaGQaNZ1zVUBwLpfbR7iQwqUgHH6fubj6A?e=AqFcSB','443 MB'),
(230,18,2,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQWwPzd_brlJiCtvqmywXt0B0BROQeVsW9wxPu8s2d_Ayw?e=qhMtEU','418 MB'),
(231,18,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EeMyyEMvjnVGi6ufy8snK4UBhUph4ge-g-1Ul-MgcL7ZNg?e=rjk5Tr','380 MB'),
(232,18,4,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVSYtxSTG4tNqt-3obEEc6oBUoCN2k6sYV3b6KCve6DQPA?e=6YDtwb','547 MB'),
(233,18,5,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESU8Rl9AHx1Hly05B8cFUI4B5MW4PbX-D1hqJ4ZkPI9ynA?e=BXF3PM','389 MB'),
(234,23,1,74,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ES1HGTLrBHJLkB0xqp6osrYBFyzoAHPHGz6PjhkiIdxKUw?e=MV6SIR','469 MB'),
(235,22,1,26,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfQIminum89MtJlNaGAPhfYBh6ln9q6AQ4vxjksKZWsh9w?e=9rOxQD','533 MB'),
(236,21,1,26,'https://mega.nz/#!ssBFjIZK!CF31mHrl1_dR3kjtOpd_WLtCL0z6wM5Hdl9Vghobhv0','190 MB'),
(237,19,1,7,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbhRMIikpe1FqgbqQsEC-NABzcae4xMFgcba8pOZH975tA?e=EyguPg','96 MB'),
(238,20,1,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXeBuWIDbN5GhiTHya2C9ScBH1YkxqykGF0E4XGc8maFIw?e=zuOB7y','275 MB'),
(239,20,2,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQAhTNGuPRlNol0wDpEwdDAB0uA7nnec-1OQaicyu1XZ7w?e=2Tv5VM','233 MB'),
(240,19,2,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETboi8nAPcJNkkEZ-gYDwloB25bJQ3iWVmESmT7_baUREQ?e=72ujTR','78 MB'),
(241,17,6,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWd7yypsnIBIjGNf-YfHPP4BmEjtn8VBMq9tq8iKZ-2MXg?e=SxXU5C','229 MB'),
(242,17,7,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERVq4L20ONRKttyntttQDgQBLwKDqKsmuqqi7fRHve_WIA?e=4xVOFn','238 MB'),
(243,17,8,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYSuq7DhW7RLqe_XwP0V9ncBQyIIXpMq2NIKEEf44o9aEg?e=nmU2sq','187 MB'),
(244,17,9,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbmfjteyTeJBnBrZm9zE_80BtiDT0VMLDnYpB3HzkGnU_w?e=08AVsi','192 MB'),
(245,17,10,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ef286iYJVvRBgCGtS3wk5IIB3H9AsaJiXuHq2aqvyYCsPw?e=tlhBgb','195 MB'),
(246,17,11,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ee8mSFEUph5FsdI1UUqx6dgBJTew2GVy5xaTRj1t88gyNg?e=9Jdbcc','185 MB'),
(247,17,12,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQ5ImUq3tY5EgNK8BRB_a6MBvG0cjm_KsTwZvHI7v5tXiQ?e=IEnBvs','187 MB'),
(262,18,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVnAhkHfqqRKnPL0mfYtqgEB_GX4NrdioAN8TZ22nQg5Iw?e=JxLKj5','507 MB'),
(263,18,7,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Eet0zVT1XeVJo1RClbIF_HQBRYBOB5TN-AlFeHSroTo3XA?e=AdToM0','569 MB'),
(264,18,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESkif3S7iodHrYTM7o23qhoBxdQ0i5KvvksfD-wN91CKzg?e=fqCNkY','412 MB'),
(265,18,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EazyH4AvQs9Lj4tCn2PQp9IB38HefcD4lkxKWpL77TAgRQ?e=fBrIKr','446 MB'),
(266,18,10,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERKgfvE4DxpEsHkg_PB16oUBUqCFovIZ5xPDEh5GUoAYTw?e=nM6xlj','403 MB'),
(267,18,11,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETYaAJS87thLpfQXManCuisBAPbA4GuWJeoqTuskTgznLw?e=RdXPf9','431 MB'),
(268,18,12,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EW71FHnjgapOrPS5fQg7lfgBDuzKn0Mt3qrpS5F_mVmvbQ?e=PRswdt','427 MB'),
(269,1,12,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EeKf3wj1MN9LrC_jOGyXPxQBZwmSmniju1GlJq9VZ1a6wg?e=qNiZIN','345 MB'),
(270,1,13,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUMIrJsdoAVHu4enLomwbD0BEHO297T6witxXnMa0eipWw?e=KeYbn9','263 MB'),
(271,15,12,5,'https://mega.nz/#!x4QD3a5Z!i0MvCxQOUBVY6qH4ePgLp2jzuhBJAb2d6BCvjhZsnng','144 MB'),
(272,15,13,5,'https://mega.nz/#!I8wWlICQ!3K_AgKGz_VqY_kNDkCIU2bi8GC5-VxpwDk0ObyZRLD0','176 MB'),
(273,16,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETLqMMyug89NkFFEJVRGMegBmbO4RHim2y56Zl3c1yfWhA?e=xYoJXB','202 MB'),
(274,16,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUngR5PiWy9Prjmc3tOTeRQBBDkSS_6g3W9xudRUjYOnVg?e=1p5opx','181 MB'),
(275,16,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQVfbBvimpFCh3VHemGrVIoBPjSOXPbd_G0wZ2aShaOuEw?e=YTDbXq','226 MB'),
(276,16,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOwHZtpE0ZJuSIg0rTz4ScBYKvonTggQ4PgpVDwKDC-Gg?e=esG9H2','169 MB'),
(277,16,12,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ebkm5jlaw2VLnz1YyXGKcIUBgrvQ9Avy0QMDJj6iE3WnwQ?e=GIO9UH','214 MB'),
(278,16,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUMIrJsdoAVHu4enLomwbD0BEHO297T6witxXnMa0eipWw?e=TsRPWK','263 MB'),
(279,16,2,0,'https://goo.gl/VdMYSA','233 MB'),
(280,16,3,0,'https://goo.gl/rT9TMi','203 MB'),
(281,16,4,0,'https://goo.gl/mUXu1a','250 MB'),
(282,16,5,0,'https://goo.gl/LjGejp','296 MB'),
(283,16,6,0,'https://goo.gl/kfZn2S','322 MB'),
(284,16,7,0,'https://mega.nz/#!wkp0yIjA!adcmdDAxwuiwX3n1YWgxsN_MfgXTdejUyKkhd6SKIPE','267 MB'),
(285,16,8,0,'https://mega.nz/#!UsYiGSiR!MHILASy9529swiWdnDjUMzqjmSK-qF2H5D9FFDiYjDo','334 MB'),
(286,16,9,0,'https://goo.gl/mvD5Dx','430 MB'),
(287,16,10,0,'https://mega.nz/#!F0YmCASa!7JURiNWx333zN-i9MDDeqZZMmFInhxUAKXBdHMZWl0o','252 MB'),
(288,16,11,0,'https://mega.nz/#!ohoEUTaK!RHP1Mj5tsXqW2wHGPeWJ6qbdBI9Xo-flG8G18dADRx0','334 MB'),
(289,16,12,0,'https://mega.nz/#!dhBjBZgC!TqHfjgiTgrXI_Dx_POT1tTIElWhhxbXfGCoONqps90U','362 MB'),
(290,16,13,0,'https://mega.nz/#!wkIRQaDJ!NtzBFeIbiWWHvHgshhvsAGslKTaRAh-QJxT3xYCiGYo','308 MB'),
(291,26,1,0,'https://goo.gl/xy3KBm','236 MB'),
(292,26,2,0,'https://goo.gl/5PTtoA','197 MB'),
(293,26,3,0,'https://goo.gl/RZdwxZ','199 MB'),
(294,26,4,1,'https://goo.gl/dZ3k4g','245 MB'),
(295,26,5,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZXdG2JUmqtEptcXtubo_z4BQei5SbfLzeIC8vUbSSEAGA?e=eF14Rt','220 MB'),
(296,26,6,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdxPY4nCdY5GnO_liwWtJacBNWBr0KbHUwtb4bOJHIBXfw?e=CEJobd','212 MB'),
(297,26,7,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ee8KogdtItNOlbvRnmZYP-4BpAnIaDZQDg5Vp1ffy7ocvw?e=3vL48U','220 MB'),
(298,26,8,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETA-_rNVklNBsp5md8x0NN8BfvZqqjvHYn-FtvNVFygQMg?e=6f7Xsg','226 MB'),
(299,26,9,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EUsx981l9uJCvqOfUtT81dEBeMSwkfb-Rx9tTbrd09_ouQ?e=bp2Ixz','338 MB'),
(300,26,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXo2-BGUfuVEiAn2vcAWPJUBBg6GGflmjjYNA4XZg3sUfQ?e=AzicZn','189 MB'),
(301,26,11,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZWAO2HkSaNBvd6p2J8uU-IB0yHCLDhElk9hdvibLOsCmA?e=QzOu9z','231 MB'),
(302,26,12,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EWZ3gVhFso5IrY4eWPFuNAoBNMgiARD14M2A7EVC6URXcg?e=yP9nwJ','274 MB'),
(303,26,13,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EaT9AwyJLppIsnGE1EJGSs0Bl4q759AHA4Aus4IZGQerZg?e=D8fUsf','235 MB'),
(304,27,1,0,'https://goo.gl/Gmi3Hz','605 MB'),
(305,27,2,0,'https://goo.gl/Tggpj1','455 MB'),
(306,27,3,0,'https://goo.gl/7WUX5Q','494 MB'),
(307,27,4,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZXjpdsDKEBChTcYapw-eIkBb1Z2BnLhY4gi-Cj6spcnQw?e=KOwFAT','563 MB'),
(308,27,5,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EaiLkkVhbCJOsfshu3Isd2QBZvIbKaWlfAD1R4oMgEoFbQ?e=z2CAcr','443 MB'),
(309,27,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWaTf-ODtzZBsGM_5mQaYowBL3eNBboMKRPwCUSRNaBOlQ?e=9m8R4o','418 MB'),
(310,27,7,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXkAJCbx66BLgVFbeGeUJkAB9K7ATkTioNoX0y6rKaxi1A?e=pVCZl3','495 MB'),
(311,27,8,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERpi4CQQ4nxDpFVf0Jpv3hcBM3Mjftrg0yNQDXDcceD6Hg?e=sxT9aq','490 MB'),
(312,27,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ef4p873jdBNHvGSoWmlhHAoBJHvtyI5bkH98Hd1i60nM5g?e=mSPH0i','377 MB'),
(313,27,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZ34r1eEG85KrnrGfZx3UfUBiuCB0t2LS3AHwRpMdAvYdQ?e=xn3NCL','399 MB'),
(314,27,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQlUcljnuHNPogJ3wR5XFgQBTlDhAjXYYSctKJyokAeZSg?e=mU3wnf','530 MB'),
(315,27,12,1,'http://bit.ly/2vMXS87','593 MB'),
(316,27,13,0,'http://bit.ly/2qkeajI','492 MB'),
(317,28,1,0,'https://goo.gl/Vwddkq','355 MB'),
(318,28,2,0,'https://goo.gl/7HtEbm','238 MB'),
(319,28,3,0,'https://goo.gl/GoW3Rq','268 MB'),
(320,28,4,0,'https://goo.gl/Gxj4qk','269 MB'),
(321,28,5,0,'https://goo.gl/iqGgJ2','306 MB'),
(322,28,6,0,'https://goo.gl/jWfGAZ','248 MB'),
(323,28,7,0,'https://goo.gl/1PZsst','263 MB'),
(324,28,8,0,'https://goo.gl/LytYQu','274 MB'),
(325,28,9,0,'https://goo.gl/Fp3sYi','260 MB'),
(326,28,10,0,'https://goo.gl/gXS2Gz','355 MB'),
(327,28,11,0,'https://goo.gl/2pQkir','229 MB'),
(328,29,1,0,'https://goo.gl/H2Eh5Y','188 MB'),
(329,29,2,0,'https://goo.gl/3x931m','155 MB'),
(330,29,3,0,'https://goo.gl/JUU3Xm','172 MB'),
(331,29,4,0,'https://goo.gl/dJB4v9','175 MB'),
(332,29,5,0,'https://goo.gl/5EN6de','242 MB'),
(333,29,6,0,'https://goo.gl/r5j4aC','194 MB'),
(334,29,7,0,'https://goo.gl/1WPqrJ','183 MB'),
(335,29,8,0,'https://goo.gl/DQowPU','173 MB'),
(336,29,9,0,'https://goo.gl/fWqQgs','185 MB'),
(337,29,10,0,'https://goo.gl/ZFyx8Z','226 MB'),
(338,29,11,0,'https://goo.gl/ruKDH6','165 MB'),
(339,30,1,0,'https://goo.gl/n4BQK4','373 MB'),
(340,30,2,0,'https://goo.gl/2BxVNf','333 MB'),
(341,30,3,0,'https://goo.gl/ZRJASF','377 MB'),
(342,30,4,2,'https://goo.gl/E3UFzZ','392 MB'),
(343,30,5,0,'https://goo.gl/9JFmuf','383 MB'),
(344,30,6,0,'https://goo.gl/zbmReU','354 MB'),
(345,30,7,0,'https://goo.gl/bj5pXb','322 MB'),
(346,30,8,0,'https://goo.gl/y3Rbp2','396 MB'),
(347,30,9,1,'https://goo.gl/SAM2fM','363 MB'),
(348,30,10,0,'https://goo.gl/HR42QK','506 MB'),
(349,30,11,0,'https://goo.gl/pCrjRM','346 MB'),
(350,32,5,0,'https://goo.gl/ngTunU','340 MB'),
(351,32,6,0,'https://goo.gl/qfW6ci','519 MB'),
(352,32,7,0,'https://goo.gl/CrbpbD','518 MB'),
(353,32,8,0,'https://goo.gl/swMBpo','502 MB'),
(354,32,9,0,'https://goo.gl/fYhTVQ','492 MB'),
(355,32,10,0,'https://goo.gl/1u4tb7','675 MB'),
(356,32,11,0,'https://goo.gl/HQPrsp','421 MB'),
(357,23,2,40,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EaE07eK4fMxCvs_feQhJsREBM6THgUudCuKXdI1X8d2fdA?e=Ymylyh','393 MB'),
(358,22,2,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbtK8f-R0pFEnYJgOiXsRIwBzFLJ9SIufOyZbm7Oh9GT2w?e=ONr0l7','455 MB'),
(359,21,2,9,'https://mega.nz/#!F4Jn1QTY!2PEY6tkw5vFpZK0LLe16AMsOUh_x9ya4QgYQDDap43c','250 MB'),
(360,19,3,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETN3w13jMyxHhy4S09CAiIgB-Hnaex1W2LqR0tX-vmUY0Q?e=RxwcPb','131 MB'),
(361,20,3,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXW7xR0mMP1NqpeMb6BLmGgBAjAJmBeR1zDcsc1bs1pfHA?e=tQ6vZm','265 MB'),
(362,23,3,37,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWiIc50xEQ5Lpnp5BFGtxhoBN9Ylpl12mmbiOZHGkbsosg?e=SywdKN','385 MB'),
(363,21,3,1,'https://mega.nz/#!5kIWQSIa!ySVrvV3B_LEYN9vyxXMtsfK5RJwrmJeJ8tk45LBtSOg','174 MB'),
(364,22,3,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EW2FOWDgNdNDkT5whJTqC8EBPG9b49YUCcFEzXz3NftZPA?e=eZKSnD','442 MB'),
(365,19,4,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYcp7WqerKxGk7fuat2azk8BxZ3ckx6K0Cu7wSkSB6ObBw?e=1bcVJF','76 MB'),
(366,20,4,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EcPkec_6Qi1HkGK5Aw_2UlYBCNe_WRMrbh9iXV7syb1Juw?e=kGOclQ','230 MB');
/*!40000 ALTER TABLE `eps` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `links`
--
DROP TABLE IF EXISTS `links`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `links` (
`links_ID` int(11) NOT NULL AUTO_INCREMENT,
`anime_ID` int(11) DEFAULT NULL,
`aviso` tinytext,
`sigEp` varchar(5) DEFAULT NULL,
PRIMARY KEY (`links_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `links`
--
LOCK TABLES `links` WRITE;
/*!40000 ALTER TABLE `links` DISABLE KEYS */;
INSERT INTO `links` VALUES (1,29,'Todo listo :D','0'),
(3,22,'Todo listo','0'),
(4,25,'Todo listo.','0'),
(5,24,'Todo listo','0'),
(6,23,'Todo listo','0'),
(7,26,'Volveré...','14'),
(8,27,'Todo listo','0'),
(9,28,'Todo listo.','0'),
(10,30,'Todo listo :D','5'),
(11,31,'Ahora el 4...','4'),
(12,14,'Hubo un problema con los links. Lo arreglaremos pronto.','1'),
(13,21,'Todo listo','0'),
(14,20,'Completo','0'),
(15,19,'Hubo un problema con los links. Lo arreglaremos pronto.','1');
/*!40000 ALTER TABLE `links` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `links_opciones`
--
DROP TABLE IF EXISTS `links_opciones`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `links_opciones` (
`opcion_ID` int(11) NOT NULL AUTO_INCREMENT,
`links_ID` int(11) DEFAULT NULL,
`num_opcion` int(11) DEFAULT NULL,
`formato` varchar(20) DEFAULT NULL,
`res` varchar(20) DEFAULT NULL,
`servidor` varchar(20) DEFAULT NULL,
`color` varchar(20) DEFAULT NULL,
PRIMARY KEY (`opcion_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `links_opciones`
--
LOCK TABLES `links_opciones` WRITE;
/*!40000 ALTER TABLE `links_opciones` DISABLE KEYS */;
INSERT INTO `links_opciones` VALUES (1,1,3,'MKV','1080p@60fps','OneDrive','rgb(47, 112, 144)'),
(2,3,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(3,3,2,'MKV','1080p','OneDrive','rgb(47, 112, 144)'),
(4,4,1,'MP4','720p@60fps','OneDrive','rgb(47, 112, 144)'),
(5,4,2,'MKV','1080p@60fps','OneDrive','rgb(47, 112, 144)'),
(6,5,1,'MKV','720p','MEGA | OneDrive','rgb(47, 112, 144)'),
(7,5,2,'MP4','1080p','OneDrive','rgb(47, 112, 144)'),
(8,6,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(9,6,2,'MKV','1080p','OneDrive','rgb(47, 112, 144)'),
(10,7,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(11,7,2,'MKV','1080p','OneDrive','rgb(47, 112, 144)'),
(12,8,1,'MP4','ligero','MEGA','red'),
(13,8,2,'MP4','720p@60fps','OneDrive','rgb(47, 112, 144)'),
(14,8,3,'MKV','1080p@60fps','OneDrive','rgb(47, 112, 144)'),
(15,1,1,'MP4','ligero','MEGA','red'),
(16,1,2,'MP4','720p@60fps','OneDrive','rgb(47, 112, 144)'),
(17,9,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(18,9,2,'MP4','1080p','OneDrive','rgb(47, 112, 144)'),
(19,10,1,'MP4','ligero','OneDrive','rgb(47,112,144)'),
(20,10,2,'MP4','1080p','OneDrive','rgb(47,112,144)'),
(21,11,1,'MP4','ligero@60fps','MEGA','red'),
(22,11,2,'MP4','1080p@60fps','OneDrive','rgb(47,112,144)'),
(23,11,3,'MKV','1080p@60fps','OneDrive','rgb(47,112,144)'),
(24,12,1,'MP4','720p','MEGA',NULL),
(25,13,1,'MKV','720p@60fps','MEGA','red'),
(26,13,2,'MP4','720p@60fps','OneDrive','blue'),
(27,13,3,'MKV','1080p@60fps','OneDrive','blue'),
(28,14,1,'MKV','720p','MEGA','red'),
(29,14,2,'MP4','720p','OneDrive','blue'),
(30,14,3,'MP4','1080p','OneDrive','blue'),
(32,14,4,'MKV','1080p','OneDrive','blue'),
(33,15,1,'MKV','720p','Mega',NULL),
(34,15,2,'MP4','720p','Mega',NULL),
(35,15,3,'MP4','1080p','OneDrive',NULL);
/*!40000 ALTER TABLE `links_opciones` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2019-02-02 20:16:00

10198
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,36 +3,33 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "vue-cli-service express:run --port 8080", "start": "node app.js",
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "vue-cli-service build", "build": "vue-cli-service build",
"express": "vue-cli-service express:watch", "express": "vue-cli-service express:watch",
"deploy": "gcloud app deploy" "express:run": "vue-cli-service express:run"
}, },
"dependencies": { "dependencies": {
"connect-history-api-fallback": "^1.6.0", "@types/express": "^4.16.0",
"express": "^4.18.2", "@types/node": "^10.12.5",
"mysql": "^2.18.1", "connect-history-api-fallback": "^1.5.0",
"mysql2": "^2.2.0", "express": "^4.16.4",
"vue": "^2.7.15", "mysql": "^2.16.0",
"vue-class-component": "^6.3.2", "vue": "^2.5.17",
"vue-property-decorator": "^7.3.0", "vue-class-component": "^6.0.0",
"vue-router": "^3.6.5", "vue-property-decorator": "^7.0.0",
"yaml": "^1.10.2" "vue-router": "^3.0.1",
"yaml": "^1.0.2"
}, },
"devDependencies": { "devDependencies": {
"@types/express": "^4.17.20", "@types/yaml": "^1.0.1",
"@types/mysql": "^2.15.23", "@vue/cli-plugin-typescript": "^3.0.5",
"@types/node": "^10.17.60", "@vue/cli-service": "^3.0.5",
"@types/yaml": "^1.9.7", "node-sass": "^4.9.0",
"@vue/cli-plugin-typescript": "^3.12.1", "sass-loader": "^7.0.1",
"@vue/cli-service": "^3.12.1", "typescript": "^3.0.0",
"node-sass": "9.0.0", "vue-cli-plugin-express": "0.0.4",
"sass": "^1.69.5", "vue-template-compiler": "^2.5.17"
"sass-loader": "^7.3.1",
"typescript": "^3.9.10",
"vue-cli-plugin-express": "1.0.2",
"vue-template-compiler": "^2.7.15"
}, },
"postcss": { "postcss": {
"plugins": { "plugins": {

File diff suppressed because it is too large Load Diff

View File

@ -5,11 +5,6 @@
"link": "/Anime/2018/Otono/IrozuKai", "link": "/Anime/2018/Otono/IrozuKai",
"imgUrl": "https://myanimelist.cdn-dena.com/images/anime/1424/93855.jpg", "imgUrl": "https://myanimelist.cdn-dena.com/images/anime/1424/93855.jpg",
"descripcion": "Ambientada en la ciudad de Nagasaki, la historia tiene lugar en un mundo en el que una cantidad minúscula de magia permanece en la vida cotidiana. Hitomi Tsukishiro es una descendiente de 17 años de una familia de brujas que creció con emociones vivas, ya que perdió su sentido del color a una edad muy temprana. Sintiéndose mal por el futuro de su nieta, Kohaku, una gran bruja, envía a Hitomi al pasado, el año 2018. Mediante intercambios con su abuela de 17 años y los miembros de su club, la historia sigue el crecimiento de Hitomi como persona.", "descripcion": "Ambientada en la ciudad de Nagasaki, la historia tiene lugar en un mundo en el que una cantidad minúscula de magia permanece en la vida cotidiana. Hitomi Tsukishiro es una descendiente de 17 años de una familia de brujas que creció con emociones vivas, ya que perdió su sentido del color a una edad muy temprana. Sintiéndose mal por el futuro de su nieta, Kohaku, una gran bruja, envía a Hitomi al pasado, el año 2018. Mediante intercambios con su abuela de 17 años y los miembros de su club, la historia sigue el crecimiento de Hitomi como persona.",
"color": "#2f7090",
"onPagPrin": [true,1],
"key": 10001111,
"estudio": "P.A. Works", "estudio": "P.A. Works",
"eps": "13", "eps": "13",
"alAire": "06 de Octubre a ?", "alAire": "06 de Octubre a ?",
@ -17,12 +12,15 @@
"anio": 2018, "anio": 2018,
"fuente": "Original", "fuente": "Original",
"generos": "Drama, Magia, Romance", "generos": "Drama, Magia, Romance",
"color": "#2f7090",
"OP": { "OP": {
"1": "17sai - Haruka to Miyuki" "1": "17sai - Haruka to Miyuki"
}, },
"ED": { "ED": {
"1": "Mimei no Kimi to Hakumei no Mahou - Yanagi Nagi" "1": "Mimei no Kimi to Hakumei no Mahou - Yanagi Nagi"
} },
"onPagPrin": [true,1],
"key": 10001111
}, },
{ {
"animeID": 28, "animeID": 28,
@ -37,7 +35,7 @@
"anio": 2018, "anio": 2018,
"fuente": "Novela Ligera", "fuente": "Novela Ligera",
"generos": "Accion, Aventura, Fantasia", "generos": "Accion, Aventura, Fantasia",
"color": "#829d4f", "color": "#a3be6f",
"OP": { "OP": {
"1": "Rightfully - Mili" "1": "Rightfully - Mili"
}, },
@ -60,7 +58,7 @@
"anio": 2018, "anio": 2018,
"fuente": "Novela Ligera", "fuente": "Novela Ligera",
"generos": "Accion, Fantasia, Magia, Sobrenatural", "generos": "Accion, Fantasia, Magia, Sobrenatural",
"color": "#b40000", "color": "red",
"OP": { "OP": {
"1": "VORACITY - MYTH & ROID" "1": "VORACITY - MYTH & ROID"
}, },
@ -83,7 +81,7 @@
"anio": 2018, "anio": 2018,
"fuente": "Matgo", "fuente": "Matgo",
"generos": "Accion, Aventura, Drama", "generos": "Accion, Aventura, Drama",
"color": "#d09e07", "color": "#ffc107",
"OP": { "OP": {
"1": "found & lost - Survive Said The Prophet", "1": "found & lost - Survive Said The Prophet",
"2": "FREEDOM - BLUE ENCOUNT" "2": "FREEDOM - BLUE ENCOUNT"
@ -134,7 +132,7 @@
"anio": 2018, "anio": 2018,
"fuente": "Manga", "fuente": "Manga",
"generos": "Drama, Horror, Psicologico, Supernatural", "generos": "Drama, Horror, Psicologico, Supernatural",
"color": "#282828", "color": "black",
"OP": { "OP": {
"1": "Changing Point - i Ris" "1": "Changing Point - i Ris"
}, },
@ -180,7 +178,7 @@
"anio": 2018, "anio": 2018,
"fuente": "Manga", "fuente": "Manga",
"generos": "Ecchi, Escolar, Shonen", "generos": "Ecchi, Escolar, Shonen",
"color": "#423fd8", "color": "#413EC9",
"OP": { "OP": {
"1": "Symbol - Luck Life" "1": "Symbol - Luck Life"
}, },
@ -342,7 +340,7 @@
"anio": 2017, "anio": 2017,
"fuente": "Original", "fuente": "Original",
"generos": "Accion, Ciencia ficcion, Fantasia", "generos": "Accion, Ciencia ficcion, Fantasia",
"color": "#7200d4", "color": "#8C00FD",
"OP": { "OP": {
"1": "gravityWall - SawanoHiroyuki[nZk]:Tielle & Gemie", "1": "gravityWall - SawanoHiroyuki[nZk]:Tielle & Gemie",
"2": "sh0ut - SawanoHiroyuki[nZk]:Tielle & Gemie" "2": "sh0ut - SawanoHiroyuki[nZk]:Tielle & Gemie"
@ -369,7 +367,7 @@
"anio": 2016, "anio": 2016,
"fuente": "Original", "fuente": "Original",
"generos": "Ciencia ficcion, Aventura, Comedia, Magia", "generos": "Ciencia ficcion, Aventura, Comedia, Magia",
"color": "#cc2f66", "color": "#E62F68",
"OP": { "OP": {
"1": "Serendipity - ZAQ" "1": "Serendipity - ZAQ"
}, },

View File

@ -1,221 +0,0 @@
- version: 4.0
fecha: 0
cambioGrande: true
datos:
nuevo:
- Sistema de Versiones Semántica
- Cambio de paradigma y nomenclatura
- 'Los episodios tendrán 3 apartados: Resolución, Formato y modificadores (ligero y 60fps)'
- Todas las URLs siguen el mismo patron /Anime/:nombre
- La página ha sido reescrita (de nuevo) y es una bala. Por ello, eliminamos la pantalla de carga.
- Agregadas estadisticas y anuncios en la Barra Lateral
- ¡Modo oscuro!
- Nuevo Logo
- Simplificación de fuentes en la página
- Cambio de fuentes en los animes
funciona mejor:
- Horas y fechas de episodios nuevos
- Todos los animes tienen su esquema de color
- Arreglo en el sistema de links
- Mejora en la ayuda, fecha de los episodios, y panel de descarga
libre de insectos:
- Toda la página se verá igual
- MEGA para versiones ligeras
la caja negra:
- Cambio de JSON a YAML
- Uso de Base de Datos Relacional
- Implementación de una API
- Backend con Nodejs, TypeScript y Express
- FrontEnd con Vuejs
- version: 3.14
fecha: 29/06/18
cambios:
- Añadida una barra de progreso en las Entradas Recientes de la Página Principal
- Automatización mediante Lua
- version: 3.13
fecha: 19/06/18
cambios:
- Implementamos H265 como prueba en Overlord III
- H265 solo estará disponible en versiones 'ligeras'
- version: 3.12
fecha: 19/06/18
cambios:
- Arreglada la página de error 404 (de nuevo).
- Arreglado error de visualizacion de Anime y Novelas en móviles.
- Agregados colores en Google Chrome para movil en algunas páginas.
- Agregados los animes de Verano 2018.
- Nomenclatura simplificada. Los videos en HardSubs pasan a llamarse MP4, y los SoftSubs serán MKV.
- Ahora MKV será 1080p, y MP4 será 720p.
- Arreglo de errores en el sistema de links.
- Experimentos con codec de video H.265. Hasta un 66% menos de tamaño del video, la misma calidad.
- Arreglado el comportamiento de las entradas recientes en la página principal.
- Los animes ahora se obtienen desde un lugar centralizado, y se reparten.
- version: 3.11
fecha: 28/05/18
cambios:
- Sistema de Links Actualizado
- Ya no usaremos ningún acortador (goo.gl o bit.ly).
- El propio sistema realiza un conteo de los accesos.
- El propio sistema realiza las redirecciones.
- Mejoras de rendimiento.
- Opción de Ver Online removida, por compatibilidad.
- Favicon actualizado.
- GitHub en la barra de navegación.
- Nuevas direcciones para los Animes
- pseudosubs.com/Anime/TemporadaAño/Anime cambia a ->
- pseudosubs.com/Anime/Año/Temporada/Anime
- version: 3.10.1
fecha: 19/05/18
cambios:
- Eliminada opción de Torrent.
- version: 3.10
fecha: 18/05/18
cambios:
- Arreglado el comportamiento del sistema de links
- Antes, si un episodio faltaba, el link de descarga se mostraba con un '!' o nada; ahora no hay link, y muestra un aviso de 'no disponible'.
- A partir de ahora, los archivos .ass se subirán a nyaa, y tendrán un apartado en su respectiva página para su descarga.
- ¡Ahora usamos Git y GitHub!
- version: 3.9
fecha: 12/05/18
cambios:
- Arreglada la numeración para animes cuyo episodio inicial no es el numero 1
- Dejamos de usar MEGA para la mayoría de eps.
- A partir de ahora, Soft (MKV) será en 1080p y Hard (MP4) será en 720p. Bastante lógico.
- Añadidas las pantallas de carga para los animes recientes.
- version: 3.8
fecha: 11/05/18
cambios:
- Añadida opción de búsqueda en el índce de Animes
- version: 3.6
fecha: 07/04/18
cambios:
- Cambios en la forma de uso de JS.
- Ahora el episodio siguiente y los anuncios se manejan qunto con el sistema de links.
- version: 3.5.3
fecha: 05/04/18
cambios:
- Arreglada la redirección 404.
- Cambios en la fuente del titulo de la Barra de Navegación
- Arreglado un error que impedía entrar a la página de Mahou Shoujo Site en el índice de Anime
- version: 3.4
fecha: 23/03/18
cambios:
- Cambios en el comportamiento de la Barra Lateral
- Opción de ver auto sostenible.
- version: 3.3
fecha: 13/03/18
cambios:
- Hosting con AwardSpace
- Uso de un Sistema de Links automático.
- version: 3.2.3
fecha: 25/02/18
cambios:
- Arreglado el comportamiento de la Barra Lateral
- Añadida ayuda para descargar.
- La fecha y hora de los nuevos episodios se puede esconder
- version: 3.1.8
fecha: 166/02/18
cambios:
- Cambio de hosting a Hostinger
- Arreglado Bug en la página de inicio
- Arreglado Bug en Sobre Nosotros
- Arregladas las imagenes de la paginas de inicio
- Agregado Changelog
- version: 3.0
fecha: 05/02/18
cambioGrande: true
cambios:
- ¡Nuevo Estilo!
- Dejamos Blogger.
- Desarrollamos y mantenemos nuestra página desde 0 sin ningún gestor de contenidos.
- Inclusión de Materialize css
- Inclusión de HTML, CSS, JS, PHP, JSON
- Hosting en Hostinger.
- version: 2.6
fecha: 04/01/18
cambios:
- Arreglos y mejoras en pausa hasta Marzo.
- version: 2.5
fecha: 19/12/17
cambios:
- Volvemos a Windows.
- Dando ultimos toques a la re-estructuración de la página
- version: 2.4
fecha: 13/12/17
cambios:
- Mudanza a GNU/Linux
- version: 2.2.1
fecha: 22/10/17
cambios:
- Arreglo de errores en las horas
- Eliminamos el temporizador
- version: 2.2
fecha: 21/10/17
cambios:
- Removida la opción de ver online.
- Eliminamos Powr.io
- Añadidos fecha del episodio siguiente, hora de publicación, y tiempo restante para los animes
- Usaremos OneDrive y MP4 para versiones Hard.
- version: 2.1.2
fecha: 01/09/17
cambios:
- Retirada la versión para móviles
- Añadida opción de ver online.
- Inicio de la reconstrucción de la página
- version: 2.1.1
fecha: 26/07/17
cambios:
- Inclusión de HTML5, CSS3 y JS
- Versión especial para móviles (alpha)
- version: 2.1
fecha: 08/07/17
cambios:
- Añadido Disqus para los comentarios.
- version: 2.0.1
fecha: 13/06/17
cambios:
- Cambios en la ortografía de algunas palabras
- version: 2.0
fecha: 12/06/17
cambioGrande: true
cambios:
- Tenemos dominio propio 'pseudosubs.com'. ¡Yay!
- version: 1.3.3
fecha: 02/06/17
cambios:
- Corregido el logo en la barra de pestañas del navegador.
- version: 1.3.2
fecha: 02/06/07
cambios:
- Links para las carpetas de MEGA
- version: 1.3
fecha: 27/04/17
cambios:
- PseudoLoad, sistema para traducir y subir los episodios más rápido.
- version: 1.2.1
fecha: 20/05/17
cambios:
- Implementamos Powr.io
- verison: 1.0.1
fecha: 20/04/17
cambios:
- ¡Salimos de ßeta!
- Ahora traducimos los subtítulos desde el inglés.
- version: 0.51
fecha: 13/04/17
beta: true
cambios:
- Obtenemos mayor ancho de banda.
- ¡No mas publicidad!
- version: 0.35
fecha: 25/03/17
beta: true
cambios:
- Inicia el proyecto PseudoSubs Beta
- Añadimos karaokes de openings y endings sobre subtitulos en español.
- version: 0.1
fecha: 09/02/17
beta: true
cambios:
- Creacion Oficial

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW X7 -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="370px" height="370px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="0 0 370 370"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
<![CDATA[
.fil0 {fill:#009C64}
.fil1 {fill:#EA486A}
.fil2 {fill:#FEFEFE;fill-rule:nonzero}
]]>
</style>
</defs>
<g id="Capa_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<rect class="fil0" width="370" height="370"/>
<rect class="fil1" x="232" width="138" height="370"/>
<path class="fil2" d="M138 272l0 69 -22 0 0 -170 58 0c15,0 27,5 38,15 10,10 15,22 15,36 0,14 -5,26 -15,36 -10,9 -23,14 -38,14l-36 0zm0 -80l0 59 37 0c8,0 16,-3 21,-8 6,-6 9,-13 9,-21 0,-8 -3,-15 -9,-21 -5,-6 -13,-9 -21,-9l-37 0z"/>
<path id="1" class="fil2" d="M355 296c0,15 -5,27 -16,36 -11,9 -25,13 -41,13 -14,0 -26,-4 -37,-12 -11,-9 -18,-20 -22,-34l21 -9c1,5 3,10 6,14 2,4 5,8 9,11 3,3 7,5 11,7 4,1 8,2 13,2 10,0 18,-2 24,-8 7,-5 10,-12 10,-20 0,-7 -3,-13 -8,-18 -5,-5 -14,-10 -27,-15 -14,-5 -23,-8 -26,-10 -18,-9 -27,-22 -27,-40 0,-13 5,-24 15,-32 10,-9 23,-14 37,-14 13,0 25,4 34,10 10,7 16,15 19,25l-20 8c-2,-6 -6,-11 -12,-16 -5,-4 -12,-6 -20,-6 -9,0 -16,3 -22,7 -6,5 -9,10 -9,18 0,5 3,11 7,15 5,4 16,9 33,15 18,6 30,13 37,22 8,8 11,18 11,31z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -13,9 +13,7 @@
<td class="columna-id">{{ anime["anime_ID"] }}</td> <td class="columna-id">{{ anime["anime_ID"] }}</td>
<td>{{ anime["titulo"] }}</td> <td>{{ anime["titulo"] }}</td>
<td> <td>
<button class="btn" @click="revisarOP('anime' + anime['anime_ID'], anime['anime_ID'])">OP</button> | <button class="btn" @click="revisarOP('anime' + anime['anime_ID'], anime['anime_ID'])">OP</button> | <button class="btn">ED</button> | <button class="btn">Link</button>
<button class="btn" @click="revisarED('anime' + anime['anime_ID'], anime['anime_ID'])">ED</button> |
<button class="btn" @click="verLinks('anime' + anime['anime_ID'], anime['anime_ID'])">Link</button>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -50,32 +48,46 @@
const form = document.createElement("form"); const form = document.createElement("form");
form.style.display = "inline-block";
form.style.maxWidth = "450px";
form.onsubmit = () => false; form.onsubmit = () => false;
const input = document.createElement("input"); const input = document.createElement("input");
input.placeholder = "Numero del OP"; input.placeholder = "Numero del OP";
input.className = "OP-ED__num-ed colorTexto";
input.type = "number"; input.type = "number";
input.style.display = "inline-block";
input.style.maxWidth = "400px";
input.min = "1"; input.min = "1";
input.max = "50"; input.max = "50";
input.name = "numOP";
input.required = true;
form.appendChild(input); form.appendChild(input);
const input2 = document.createElement("input"); const input2 = document.createElement("input");
input2.placeholder = "Nombre del OP"; input2.placeholder = "Nombre del OP";
input2.className = "OP-ED__nombre colorTexto";
input2.type = "text"; input2.type = "text";
input2.name = "nombreOP";
input2.style.display = "inline-block";
input2.style.maxWidth = "400px";
input2.required = true;
form.appendChild(input2); form.appendChild(input2);
const input3 = document.createElement("input"); const input3 = document.createElement("input");
input3.placeholder = "Artista del OP"; input3.placeholder = "Artista del OP";
input3.className = "OP-ED__artista colorTexto";
input3.type = "text"; input3.type = "text";
input3.name = "artistaOP";
input3.style.display = "inline-block";
input3.style.maxWidth = "400px";
input3.required = true;
form.appendChild(input3); form.appendChild(input3);
const input4 = document.createElement("input"); const input4 = document.createElement("input");
input4.placeholder = "Episodios del OP (1 al 13)"; input4.placeholder = "Episodios del OP (1 al 13)";
input4.className = "OP-ED__eps colorTexto";
input4.type = "text"; input4.type = "text";
input4.name = "epsOP";
input4.style.display = "inline-block";
input4.style.maxWidth = "400px";
input4.required = true;
form.appendChild(input4); form.appendChild(input4);
const botonEnviar = document.createElement("button"); const botonEnviar = document.createElement("button");
@ -102,6 +114,8 @@
}; };
xhr.send(`data=${YAML.stringify(data)}`); xhr.send(`data=${YAML.stringify(data)}`);
console.log("YAML:\n" + YAML.stringify(data));
}); });
botonEnviar.innerText = "Crear."; botonEnviar.innerText = "Crear.";
@ -110,15 +124,6 @@
formCrear.appendChild(form); formCrear.appendChild(form);
elemNuevo.appendChild(formCrear); elemNuevo.appendChild(formCrear);
const botonCerrar = document.createElement("button");
botonCerrar.className = "btn red";
botonCerrar.addEventListener("click", () => {
elemActual.parentNode.removeChild(marco);
});
botonCerrar.innerText = "Cerrar.";
elemNuevo.appendChild(document.createElement("br"));
elemNuevo.appendChild(botonCerrar);
elemNuevo.style.padding = "30px"; elemNuevo.style.padding = "30px";
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
@ -136,394 +141,19 @@
elemNuevo.appendChild(div); elemNuevo.appendChild(div);
} }
console.log("El servidor respondió:\n" + xhr.responseText);
}; };
xhr.send(); xhr.send();
marcof.appendChild(elemNuevo); marcof.appendChild(elemNuevo);
elemActual.parentNode.insertBefore(marco, elemActual.nextSibling); elemActual.parentNode.insertBefore(marco, elemActual.nextSibling);
},
revisarED (elemId, animeID) {
const elemActual = document.getElementById(elemId);
const marco = document.createElement("tr");
marco.appendChild(document.createElement("td"));
const marcof = document.createElement("td");
marco.appendChild(marcof);
marco.appendChild(document.createElement("td"));
const elemNuevo = document.createElement("div");
const formCrear = document.createElement("div");
formCrear.appendChild(document.createTextNode("Crear un ED:"));
formCrear.appendChild(document.createElement("br"));
formCrear.appendChild(document.createElement("br"));
const form = document.createElement("form");
form.onsubmit = () => false;
const input = document.createElement("input");
input.placeholder = "Num";
input.className = "OP-ED__num-ed colorTexto";
input.type = "number";
input.min = "1";
input.max = "50";
form.appendChild(input);
const input2 = document.createElement("input");
input2.placeholder = "Nombre del ED";
input2.className = "OP-ED__nombre colorTexto";
input2.type = "text";
form.appendChild(input2);
const input3 = document.createElement("input");
input3.placeholder = "Artista del ED";
input3.className = "OP-ED__artista colorTexto";
input3.type = "text";
form.appendChild(input3);
const input4 = document.createElement("input");
input4.placeholder = "Episodios del ED (1 al 13)";
input4.className = "OP-ED__eps colorTexto";
input4.type = "text";
form.appendChild(input4);
form.appendChild(document.createElement("br"));
const botonEnviar = document.createElement("button");
botonEnviar.className = "btn";
botonEnviar.addEventListener("click", () => {
botonEnviar.className = "btn disabled";
const data = {
anime_ID: animeID,
num_ED: input.value,
nombre: input2.value,
artista: input3.value,
eps: input4.value
};
const xhr = new XMLHttpRequest();
xhr.open("POST", "/ed/");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onload = () => {
botonEnviar.className = "btn";
console.log("Resultado:\n" + xhr.responseText);
};
xhr.send(`data=${YAML.stringify(data)}`);
});
botonEnviar.innerText = "Crear.";
form.appendChild(botonEnviar);
formCrear.appendChild(form);
elemNuevo.appendChild(formCrear);
const botonCerrar = document.createElement("button");
botonCerrar.className = "btn red";
botonCerrar.addEventListener("click", () => {
elemActual.parentNode.removeChild(marco);
});
botonCerrar.innerText = "Cerrar.";
elemNuevo.appendChild(document.createElement("br"));
elemNuevo.appendChild(botonCerrar);
elemNuevo.style.padding = "30px";
const xhr = new XMLHttpRequest();
xhr.open("GET", `/ed/${animeID}`);
xhr.onload = () => {
const data = YAML.parse(xhr.responseText);
if (Array.isArray(data)) {
for (const elemento of data) {
const div = document.createElement("div");
div.innerHTML = `<br>ED ${elemento['num_ED']}: ${elemento['nombre']} - ${elemento['artista']}<br>\
Eps: ${elemento['eps']}`;
elemNuevo.appendChild(div);
}
} else {
M.toast({html: 'Error :c'});
}
};
xhr.send();
marcof.appendChild(elemNuevo);
elemActual.parentNode.insertBefore(marco, elemActual.nextSibling);
},
verLinks (elemId, animeID) {
console.log("Viendo los links.");
/* TODO: Usar los datos para crear:
* Form para crear Variantes (usando un xhr)
* */
const crear = data => {
const elemActual = document.getElementById(elemId);
const marco = document.createElement("tr");
marco.appendChild(document.createElement("td"));
const marcof = document.createElement("td");
marco.appendChild(marcof);
marco.appendChild(document.createElement("td"));
const elemNuevo = document.createElement("div");
for (const varianteID in data) {
if (data.hasOwnProperty(varianteID)) {
const variante = data[varianteID];
const contenedor = document.createElement("div");
const varianteSpan = document.createElement("span");
varianteSpan.className = "variante";
varianteSpan.innerText = variante.formato;
contenedor.appendChild(varianteSpan);
const resSpan = document.createElement("span");
resSpan.className = "res";
resSpan.innerText = variante.res;
contenedor.appendChild(resSpan);
const servidorSpan = document.createElement("span");
servidorSpan.className = "servidor";
servidorSpan.innerText = variante.servidor;
contenedor.appendChild(servidorSpan);
const botonVerVariante = document.createElement("span");
botonVerVariante.className = "ver-variante";
botonVerVariante.innerText = "Ver mas";
let contenedorLinks;
const verLinks = () => {
botonVerVariante.innerText = "Cerrar";
botonVerVariante.removeEventListener("click", verLinks);
botonVerVariante.addEventListener("click", ocultarLinks);
const generarListaEps = data => {
contenedorLinks.innerHTML = "";
for (const epID in data) {
if (data.hasOwnProperty(epID)) {
const ep = data[epID];
const epDiv = document.createElement("div");
epDiv.className = "eps-div";
epDiv.innerHTML = `Ep. ${ep.num_ep}, ${ep.peso} y ${ep.visitas} visitas ->
<a href="${ep.link}" target="_blank" title="Link">${ep.link.substr(0, 50)}...</a>`;
contenedorLinks.appendChild(epDiv);
}
}
const agregarEpForm = document.createElement("form");
agregarEpForm.class = "agregar-ep-form";
agregarEpForm.onsubmit = () => false;
const numEp = document.createElement("input");
numEp.className = "colorTexto agregar-ep-form__num-ep";
numEp.placeholder = "Ep num";
agregarEpForm.appendChild(numEp);
const visitas = document.createElement("input");
visitas.className = "colorTexto agregar-ep-form__visitas";
visitas.placeholder = "Visitas";
visitas.value = '0';
agregarEpForm.appendChild(visitas);
const peso = document.createElement("input");
peso.className = "colorTexto agregar-ep-form__peso";
peso.placeholder = "Peso";
agregarEpForm.appendChild(peso);
const link = document.createElement("input");
link.className = "colorTexto agregar-ep-form__link";
link.placeholder = "link";
agregarEpForm.appendChild(link);
const botonCrear = document.createElement("button");
botonCrear.className = "agregar-ep-form__boton-crear";
botonCrear.innerText = "Crear ep";
botonCrear.addEventListener("click", () => {
const xhr = new XMLHttpRequest();
xhr.open("POST", "/eps/links/");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onload = () => {
const respuesta = YAML.parse(xhr.responseText);
if (!respuesta.error) {
numEp.value = visitas.value = peso.value = link.value = "";
} else {
console.log("Error :c");
}
};
const dataAEnviar = {
opcion_ID: variante.opcion_ID,
num_ep: numEp.value,
visitas: visitas.value,
link: link.value,
peso: peso.value
};
xhr.send(`params=${YAML.stringify(dataAEnviar)}`);
});
agregarEpForm.appendChild(botonCrear);
contenedorLinks.appendChild(agregarEpForm);
};
contenedorLinks = document.createElement("div");
contenedorLinks.className = "identado";
contenedorLinks.innerHTML = "Cargando...";
contenedor.insertBefore(contenedorLinks, botonVerVariante.nextSibling);
const xhr = new XMLHttpRequest();
xhr.open("GET", `/eps/links/${variante.opcion_ID}`);
xhr.onload = () => {
generarListaEps(YAML.parse(xhr.responseText));
console.log(xhr.responseText);
};
xhr.send();
};
function ocultarLinks() {
botonVerVariante.innerText = "Ver mas";
botonVerVariante.removeEventListener("click", ocultarLinks);
botonVerVariante.addEventListener("click", verLinks);
contenedor.removeChild(contenedorLinks);
}
botonVerVariante.addEventListener("click", verLinks);
contenedor.appendChild(botonVerVariante);
elemNuevo.appendChild(contenedor);
}
}
const botonCerrar = document.createElement("button");
botonCerrar.className = "btn red";
botonCerrar.innerText = "Cerrar.";
botonCerrar.addEventListener("click", () => {
elemActual.parentNode.removeChild(marco);
});
elemNuevo.appendChild(document.createElement("br"));
elemNuevo.appendChild(botonCerrar);
marcof.appendChild(elemNuevo);
elemActual.parentNode.insertBefore(marco, elemActual.nextSibling);
};
const xhr = new XMLHttpRequest();
xhr.open("GET", `/eps/variantes/${animeID}`);
xhr.onload = () => {
const data = YAML.parse(xhr.responseText);
console.log(xhr.responseText);
crear(data);
};
xhr.send();
} }
} }
} }
</script> </script>
<style lang="sass"> <style scoped lang="sass">
%form-op-ed
display: inline-block
margin: 0 10px !important
.OP-ED__num-ed
@extend %form-op-ed
width: 50px !important
.OP-ED__nombre
@extend %form-op-ed
width: 200px !important
.OP-ED__artista
@extend %form-op-ed
width: 200px !important
.OP-ED__eps
@extend %form-op-ed
width: 100px !important
%tags
display: inline-block
cursor: default
color: white
padding: 5px 8px
border-radius: 3px
margin: 0 5px
font:
size: medium
.variante
@extend %tags
background-color: #339
.res
@extend %tags
background-color: #393
.servidor
@extend %tags
background-color: #933
.ver-variante
@extend %tags
background-color: white
color: black
cursor: pointer
transition: transform 250ms, box-shadow 250ms
user-select: none
&:hover
transform: translate(-1px, -1px)
box-shadow: 1px 1px 2px #444
.eps-div
overflow: hidden
.identado
padding: 10px 0 10px 20px
.agregar-ep-form
input
%inputs-agregar-ep
display: inline-block
margin: 0 5px !important
padding: 5px !important
.agregar-ep-form__num-ep
@extend %inputs-agregar-ep
max-width: 30px
.agregar-ep-form__visitas
@extend %inputs-agregar-ep
max-width: 30px
.agregar-ep-form__link
@extend %inputs-agregar-ep
width: 400px !important
.agregar-ep-form__peso
@extend %inputs-agregar-ep
max-width: 70px
.agregar-ep-form__boton-crear
padding: 10px
background-color: black
color: white
border: none
border-radius: 3px
cursor: pointer
.columna-id .columna-id
max-width: 40px max-width: 40px

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="barra caja background2 colorTexto"> <div class="barra caja">
Anime Anime
</div> </div>
</template> </template>

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="caja tarjeta background2 colorTexto"> <div class="caja tarjeta" >
<div class="center-on-small"> <div class="center-on-small">
<span> <span>
<router-link :to="link" class="tarjeta--nombre colorTexto" > <router-link :to="link" class="tarjeta--nombre" >
{{ titulo }} {{ titulo }}
</router-link> </router-link>
</span> </span>
@ -67,7 +67,7 @@
family: Muli, "Open Sans", serif family: Muli, "Open Sans", serif
weight: bold weight: bold
size: xx-large size: xx-large
// color: black color: black
transition: color 100ms transition: color 100ms
&:hover &:hover
color: #23bf87 color: #23bf87

View File

@ -1,49 +0,0 @@
<template>
<div>
<div class="caja colorTexto background2">
Esta es la barra lateral.
</div>
<div class="caja colorTexto background2 estadisticas">
<span style="font-size: x-large; font-weight: bold">PseudoSubs en numeros:</span><br>
<br>
Con <b style="text-decoration: underline">{{ estadisticas.episodios }}</b> episodios,
PseudoSubs aloja <b style="text-decoration: underline">{{ estadisticas.gigas }} GB.</b> en anime, ¡y creciendo!
</div>
</div>
</template>
<script>
const YAML = require('yaml');
export default {
name: "BarraLateral",
data: function (){
return {
estadisticas: {
episodios: 'más de 200',
gigas: 'más de 65'
}
};
},
created: function () {
const vm = this;
const xhr = new XMLHttpRequest();
xhr.open("GET", "/estadisticas");
xhr.onload = () => {
console.log(xhr.responseText);
const respuesta = YAML.parse(xhr.responseText);
if (!respuesta.error) {
vm.estadisticas = respuesta;
} else {
console.log("Error al obtener las estadisticas :c");
}
};
xhr.send();
}
}
</script>
<style scoped lang="sass">
.estadisticas
cursor: default
</style>

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="caja contenido background2 colorTexto"> <div>
<div class="caja contenido">
<div class="contenido--titulo"> <div class="contenido--titulo">
{{ datos.titulo }} {{ datos.titulo }}
@ -14,7 +15,7 @@
</div> </div>
<div class="contenido--datos"> <div class="contenido--datos">
<div class="contenido--datos--titulo" :style="'color: ' + color"> <div class="contenido--datos--titulo" :style="'color: ' + color">
Datos adicionales Especificaciones tecnicas
</div> </div>
<div class="contenido--datos--descripcion"> <div class="contenido--datos--descripcion">
Capitulos: {{ datos.eps }} <br> Capitulos: {{ datos.eps }} <br>
@ -41,13 +42,12 @@
<anuncio-global /> <anuncio-global />
<anuncio-local :mensaje="datosAnime.aviso"/> <anuncio-local :mensaje="datosAnime.aviso"/>
<br> <br>
<panel-de-descarga :color="color" :nombre="datos.titulo" :datos="datosAnimeLinksOpciones" <panel-de-descarga :color="color" :nombre="datos.titulo" :datos="datosAnimeLinksOpciones"/>
:datos-correctos="datosAnimeCorrectos"
:mostrar-spinner-para-carga-de-eps="mostrarSpinnerParaCargaDeEps"/>
</div> </div>
</div> </div>
</div>
</template> </template>
<script> <script>
@ -66,9 +66,7 @@
return { return {
datosAnime: {}, datosAnime: {},
datosAnimeLinksOpciones: {}, datosAnimeLinksOpciones: {},
datosAnimeListos: false, datosAnimeListos: false
datosAnimeCorrectos: false,
mostrarSpinnerParaCargaDeEps: true
} }
}, },
props: { props: {
@ -100,16 +98,11 @@
xhr.onload = () => { xhr.onload = () => {
const data = YAML.parse(xhr.responseText); const data = YAML.parse(xhr.responseText);
console.log("La data es:");
console.log(xhr.responseText);
if (data.opciones) { if (data.opciones) {
vm.datosAnime = data; vm.datosAnime = data;
vm.datosAnimeLinksOpciones = data["opciones"]; vm.datosAnimeLinksOpciones = data["opciones"];
vm.datosAnimeCorrectos = true;
} else {
vm.datosAnime = {
aviso: 'Hubo un error al obtener los episodios. Inténtalo de nuevo mas tarde.'
};
vm.mostrarSpinnerParaCargaDeEps = false;
console.log("Error al recibir los eps del anime.");
} }
}; };

View File

@ -10,16 +10,18 @@
</b> </b>
<ul class="right hide-on-med-and-down"> <ul class="right hide-on-med-and-down">
<li><router-link to="/cambios">Lista de Cambios</router-link></li> <li><router-link to="../../../Changelog.php">Lista de Cambios</router-link></li>
<li><router-link to="/nosotros">Sobre Nosotros</router-link></li> <li><router-link to="../../../About.php">Sobre Nosotros</router-link></li>
</ul> </ul>
</div> </div>
</nav> </nav>
</div> </div>
<div class="nav-wrapper" :style="'background-color: ' + color" v-if="renderizarBarraInferior"> <div class="nav-wrapper" :style="'background-color: ' + color">
<div class="col s12 enMedio"> <div class="col s12 enMedio">
<router-link to="/" class="breadcrumb" style="margin-left: 20px">Inicio</router-link> <router-link to="/" class="breadcrumb" style="margin-left: 20px">Inicio</router-link>
<router-link to="/Anime/" class="breadcrumb enMedio">Anime</router-link> <router-link to="/Anime/" class="breadcrumb enMedio">Anime</router-link>
<router-link :to="'/Anime/' + anio" class="breadcrumb hide-on-small-only enMedio">{{ anio }}</router-link>
<router-link :to="'/Anime/' + anio + '/' + temporada" class="breadcrumb hide-on-small-only enMedio">{{ temporada }}</router-link>
<router-link to="" class="breadcrumb enMedio" style="cursor: default">{{ nombre }}</router-link> <router-link to="" class="breadcrumb enMedio" style="cursor: default">{{ nombre }}</router-link>
</div> </div>
</div> </div>
@ -37,10 +39,6 @@
color: { color: {
type: String, type: String,
default: "#23BF87" default: "#23BF87"
},
renderizarBarraInferior: {
type: Boolean,
default: true
} }
} }
} }

View File

@ -3,13 +3,14 @@
</template> </template>
<script lang="ts"> <script lang="ts">
/* TODO: Hacer que el anuncio este basado en los datos de la BBDD */
export default { export default {
name: "anuncioLocal", name: "anuncioLocal",
props: { props: {
mensaje: { mensaje: {
type: String, type: String,
default: "Cargando los episodios..." default: "O no hay novedades, o se están cargando..."
} }
} }
} }

View File

@ -3,7 +3,7 @@
<div class="ayuda__titulo" :style="'background-color: ' + color"> <div class="ayuda__titulo" :style="'background-color: ' + color">
¿Cómo descargar/abrir? ¿Cómo descargar/abrir?
</div> </div>
<div class="ayuda__contenido background1"> <div class="ayuda__contenido">
<ol class="ayuda__contenido__lista"> <ol class="ayuda__contenido__lista">
<li>Escoge un formato y resolución. Soft/Hard y 720p/1080p</li> <li>Escoge un formato y resolución. Soft/Hard y 720p/1080p</li>
<li>Descarga el episodio que desees, o la carpeta completa. No te preocupes, no usamos ningun acortador.</li> <li>Descarga el episodio que desees, o la carpeta completa. No te preocupes, no usamos ningun acortador.</li>
@ -54,8 +54,8 @@
border-radius: 5px border-radius: 5px
.ayuda__contenido .ayuda__contenido
// background-color: rgb(238, 238, 238) background-color: rgb(238, 238, 238)
// color: black color: black
font-family: "Open Sans", sans-serif font-family: "Open Sans", sans-serif
display: block display: block
text-align: left text-align: left

View File

@ -1,6 +1,5 @@
<template> <template>
<div> <div class="panel">
<div class="panel" v-if="datosCorrectos">
<div class="panel__titulo" :style="'background-color: ' + color"> <div class="panel__titulo" :style="'background-color: ' + color">
Descarga aquí.<br> Descarga aquí.<br>
<div class="panel__titulo__variantes"> <div class="panel__titulo__variantes">
@ -17,20 +16,20 @@
</div> </div>
</div> </div>
<div class="panel__descripcion background__panel-descarga"> <div class="panel__descripcion">
<template v-for="(opcion, indice) in datos"> <template v-for="(opcion, indice) in datos">
<div :id="`tarjeta${indice}`" :style="indice !== '1'? 'display: none' : ''"> <div :id="`tarjeta${indice}`" :style="indice !== '1'? 'display: none' : ''">
<div class="panel__descripcion__titulo" :style="'color: ' + balancearColor"> <div class="panel__descripcion__titulo" :style="'color: ' + color">
Links<br> Links<br>
</div> </div>
Todos los links se abren en una pestaña nueva.<br>
<span v-for="(ep, num) in opcion.eps" class="panel__descripcion__link"> <span v-for="(ep, num) in opcion.eps" class="panel__descripcion__link">
Todos los links se abren en una pestaña nueva.<br>
<br> <br>
Episodio {{ num }} -> Episodio {{ num }} ->
<a :href="ep.link" target="_blank" :style="'color: ' + balancearColor" <a :href="ep.link" target="_blank" :style="'color: ' + color"
@mousedown.stop="incrementarContador(ep.ep_ID, $event)"> @mousedown.stop="incrementarContador(ep.ep_ID, $event)">
{{ ep.peso }} {{ ep.peso }}
</a> </a>
@ -42,33 +41,15 @@
</div> </div>
</div> </div>
<div v-else class="center">
<div class="preloader-wrapper small active" v-if="mostrarSpinnerParaCargaDeEps">
<div class="spinner-layer" :style="'border-color: ' + color">
<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>
</div>
</template> </template>
<script> <script>
import { esModoOscuro } from "../../global";
export default { export default {
name: "panelDeDescarga", name: "panelDeDescarga",
data: function () { data: function () {
return { return {
posActual: '1' posActual: '0'
} }
}, },
props: { props: {
@ -85,41 +66,10 @@
default: function () { default: function () {
return {}; return {};
} }
},
datosCorrectos: {
type: Boolean
},
mostrarSpinnerParaCargaDeEps: {
type: Boolean
}
},
computed: {
balancearColor () {
const color = this.color;
const R = parseInt(color.substring(1,3), 16);
const G = parseInt(color.substring(3,5), 16);
const B = parseInt(color.substring(5,7), 16);
const limiteOscuridad = 60;
if (esModoOscuro && R<limiteOscuridad && G<limiteOscuridad && B<limiteOscuridad ) {
return `#${(255-R).toString(16)}${(255-G).toString(16)}${(255-B).toString(16)}`;
} else {
return color;
}
} }
}, },
methods: { methods: {
cambiarDescripcionDescarga(idDestino) { cambiarDescripcionDescarga (idDestino) {
const quitarClase = (nombre, nombreClase) => {
const posInicial = nombre.indexOf(nombreClase);
if (posInicial !== -1)
return nombre.substring(0, posInicial-1);
else
return nombre
};
const elemAnterior = document.getElementById(`tarjeta${this.posActual}`); const elemAnterior = document.getElementById(`tarjeta${this.posActual}`);
const elemNuevo = document.getElementById(`tarjeta${idDestino}`); const elemNuevo = document.getElementById(`tarjeta${idDestino}`);
@ -131,22 +81,19 @@
elemAnterior.style.display = "none"; elemAnterior.style.display = "none";
opcionAnterior.style.backgroundColor = "transparent"; opcionAnterior.style.backgroundColor = "transparent";
opcionAnterior.className = quitarClase(opcionNueva.className, "panel__titulo__variantes__variante--activa");
elemNuevo.style.display = "block"; elemNuevo.style.display = "block";
opcionNueva.style.backgroundColor = opcionNueva.getAttribute("color-min"); opcionNueva.style.backgroundColor = opcionNueva.getAttribute("color-min");
opcionNueva.className += " panel__titulo__variantes__variante--activa";
} else { } else {
console.log("Woah, elemNuevo && elemAnterior && opcionAnterior && opcionNueva no se cumple...\n" + console.log(":c");
elemNuevo + " " + elemAnterior + " " + opcionAnterior + " " + opcionNueva);
} }
}, },
incrementarContador(ep_ID, evento) { incrementarContador (ep_ID, evento) {
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
xhr.open("PUT", "/links"); xhr.open("PUT","/links");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.onload = () => { xhr.onload = () => {
console.log(xhr.responseText); console.log(xhr.responseText);
}; };
@ -185,13 +132,9 @@
size: large size: large
weight: normal weight: normal
.panel__titulo__variantes__variante--activa
font-weight: bold
text-decoration: underline
.panel__descripcion .panel__descripcion
padding: 25px 15px padding: 25px 15px
// background-color: #f2f2f2 background-color: #f2f2f2
.panel__descripcion__titulo .panel__descripcion__titulo
font: font:
@ -203,6 +146,6 @@
a a
font-weight: bold font-weight: bold
.panel .panel
border-radius: 3px
</style> </style>

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="proximo sombraCaja"> <div class="proximo">
<div class="proximo__titulo" :style="'background-color: ' + color"> <div class="proximo__titulo" :style="'background-color: ' + color">
Próximo Episodio: fecha Próximo Episodio: fecha
</div> </div>
@ -34,12 +34,12 @@
border-radius: 5px border-radius: 5px
.proximo__contenido .proximo__contenido
// color: black color: black
text-align: center text-align: center
font-size: x-large font-size: x-large
padding: 10px padding: 10px
.proximo .proximo
border-radius: 5px border-radius: 5px
// box-shadow: 2px 2px 2px darkgrey box-shadow: 2px 2px 2px darkgrey
</style> </style>

View File

@ -1,26 +0,0 @@
<template>
<div>
<span class="titulo">
PseudoSubs
</span>
</div>
</template>
<script>
export default {
name: "Cambio",
props: {
data: {
type: Object
}
}
}
</script>
<style scoped lang="sass">
.titulo
color: #23bf87
font:
weight: bold
size: x-large
</style>

View File

@ -2,7 +2,7 @@
<div :class="oculto? 'mi-slider--contenido-oculto': 'mi-slider--contenido'" :id="'entrada' + id"> <div :class="oculto? 'mi-slider--contenido-oculto': 'mi-slider--contenido'" :id="'entrada' + id">
<div> <div>
<span> <span>
<router-link :to="link" class="mi-slider--contenido--titulo colorTexto"> <router-link :to="link" class="mi-slider--contenido--titulo">
{{ titulo }} {{ titulo }}
</router-link> </router-link>
</span> </span>
@ -50,6 +50,7 @@
opacity: 0 opacity: 0
.mi-slider--contenido--titulo .mi-slider--contenido--titulo
color: #151515
font: font:
family: Muli, 'Product Sans', serif family: Muli, 'Product Sans', serif
size: x-large size: x-large

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="caja features background2 colorTexto"> <div class="caja features">
<span class="features--titulo"> <span class="features--titulo">
Nosotros hacemos el trabajo sucio, disfrutas. Nosotros hacemos el trabajo sucio, disfrutas.
</span> </span>

View File

@ -7,7 +7,8 @@
<p class="grey-text text-lighten-4"> <p class="grey-text text-lighten-4">
Anime de temporada @24FPS y @60FPS, H.264 y H.265<br> Anime de temporada @24FPS y @60FPS, H.264 y H.265<br>
Traducciones de Novelas Ligeras desde Ingles y Japones.<br> Traducciones de Novelas Ligeras desde Ingles y Japones.<br>
Cosas varias. Cosas varias.<br>
Color: {{ color }}
</p> </p>
</div> </div>
<div class="col l4 offset-l2 s12"> <div class="col l4 offset-l2 s12">

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="mi-slider background2 sombraCaja colorTexto"> <div class="mi-slider">
<div class="mi-slider--titulo colorPrincipal"> <div class="mi-slider--titulo">
¡Entradas Recientes! ¡Entradas Recientes!
</div> </div>
@ -115,9 +115,9 @@
<style scoped lang="sass"> <style scoped lang="sass">
.mi-slider .mi-slider
text-align: center text-align: center
// background-color: white background-color: white
margin: 10px 0 margin: 10px 0
// box-shadow: 2px 2px 2px darkgrey box-shadow: 2px 2px 2px darkgrey
border-radius: 3px border-radius: 3px
padding: 15px padding: 15px

View File

@ -1,13 +1,13 @@
<template> <template>
<div class="col s12 m6" :class="aLaIzq? 'tarjeta-izq': 'tarjeta-der'"> <div class="col s12 m6" :class="aLaIzq? 'tarjeta-izq': 'tarjeta-der'">
<div class="card hoverable tarjeta background2" v-on:click="goTo(url)"> <div class="card hoverable tarjeta" v-on:click="goTo(url)">
<div class="card-image"> <div class="card-image">
<img :src="imgUrl" class="noSelectionBackground"> <img :src="imgUrl" class="noSelectionBackground">
<router-link :to="url" class="btn-floating halfway-fab waves-effect waves-light teal lighten-1"> <router-link :to="url" class="btn-floating halfway-fab waves-effect waves-light teal lighten-1">
<i class="material-icons">arrow_forward</i> <i class="material-icons">arrow_forward</i>
</router-link> </router-link>
</div> </div>
<div class="card-content colorTexto"> <div class="card-content">
<span class="card-title noSelectionBackground tarjeta--titulo"> <span class="card-title noSelectionBackground tarjeta--titulo">
{{ titulo }} {{ titulo }}
</span> </span>

View File

@ -1,11 +1,10 @@
<template> <template>
<div style="padding-top: 10px"> <div>
<div id="titulo-contenedor" class="background2 colorTexto"> <div id="titulo-contenedor">
<div class="hide-on-small-only"> <div class="hide-on-small-only">
<br> <br>
</div> </div>
<!--<img src="/img/pseudo-logo.svg" width="100"/>--> <router-link to="/" id="titulo">PseudoSubs</router-link>
<router-link to="/" id="titulo" class="colorTexto sombraTitulo">PseudoSubs</router-link>
<div class="hide-on-small-only"> <div class="hide-on-small-only">
<br> <br>
</div> </div>
@ -29,14 +28,14 @@ export default Vue.extend({
size: 50px size: 50px
weight: bold weight: bold
text-align: center text-align: center
// background-color: inherit background-color: white
margin: 0 0 10px 0 margin: 10px 0
box-shadow: inherit box-shadow: 2px 2px 2px darkgrey
border-radius: 3px border-radius: 3px
#titulo #titulo
// color: #434343 color: #434343
// text-shadow: 2px 2px 0 #ffffff, 6px 6px 0 #DDDDDD text-shadow: 2px 2px 0 #ffffff, 6px 6px 0 #DDDDDD
transition: color 100ms transition: color 100ms
&:hover &:hover
color: #23bf87 color: #23bf87

View File

@ -1,5 +1,3 @@
export let global = { export let global = {
color: '#228453' color: '#23bf87'
}; };
export let esModoOscuro = true;

View File

@ -0,0 +1,55 @@
// Badges
span.badge {
min-width: 3rem;
padding: 0 6px;
margin-left: 14px;
text-align: center;
font-size: 1rem;
line-height: $badge-height;
height: $badge-height;
color: color('grey', 'darken-1');
float: right;
box-sizing: border-box;
&.new {
font-weight: 300;
font-size: 0.8rem;
color: #fff;
background-color: $badge-bg-color;
border-radius: 2px;
}
&.new:after {
content: " new";
}
&[data-badge-caption]::after {
content: " " attr(data-badge-caption);
}
}
// Special cases
nav ul a span.badge {
display: inline-block;
float: none;
margin-left: 4px;
line-height: $badge-height;
height: $badge-height;
-webkit-font-smoothing: auto;
}
// Line height centering
.collection-item span.badge {
margin-top: calc(#{$collection-line-height / 2} - #{$badge-height / 2});
}
.collapsible span.badge {
margin-left: auto;
}
.sidenav span.badge {
margin-top: calc(#{$sidenav-line-height / 2} - #{$badge-height / 2});
}
table span.badge {
display: inline-block;
float: none;
margin-left: auto;
}

View File

@ -0,0 +1,322 @@
// shared styles
.btn,
.btn-flat {
border: $button-border;
border-radius: $button-radius;
display: inline-block;
height: $button-height;
line-height: $button-height;
padding: $button-padding;
text-transform: uppercase;
vertical-align: middle;
-webkit-tap-highlight-color: transparent; // Gets rid of tap active state
}
// Disabled shared style
.btn.disabled,
.btn-floating.disabled,
.btn-large.disabled,
.btn-small.disabled,
.btn-flat.disabled,
.btn:disabled,
.btn-floating:disabled,
.btn-large:disabled,
.btn-small:disabled,
.btn-flat:disabled,
.btn[disabled],
.btn-floating[disabled],
.btn-large[disabled],
.btn-small[disabled],
.btn-flat[disabled] {
pointer-events: none;
background-color: $button-disabled-background !important;
box-shadow: none;
color: $button-disabled-color !important;
cursor: default;
&:hover {
background-color: $button-disabled-background !important;
color: $button-disabled-color !important;
}
}
// Shared icon styles
.btn,
.btn-floating,
.btn-large,
.btn-small,
.btn-flat {
font-size: $button-font-size;
outline: 0;
i {
font-size: $button-icon-font-size;
line-height: inherit;
}
}
// Shared focus button style
.btn,
.btn-floating {
&:focus {
background-color: darken($button-raised-background, 10%);
}
}
// Raised Button
.btn {
text-decoration: none;
color: $button-raised-color;
background-color: $button-raised-background;
text-align: center;
letter-spacing: .5px;
@extend .z-depth-1;
transition: background-color .2s ease-out;
cursor: pointer;
&:hover {
background-color: $button-raised-background-hover;
@extend .z-depth-1-half;
}
}
// Floating button
.btn-floating {
&:hover {
background-color: $button-floating-background-hover;
@extend .z-depth-1-half;
}
&:before {
border-radius: 0;
}
&.btn-large {
&.halfway-fab {
bottom: -$button-floating-large-size / 2;
}
width: $button-floating-large-size;
height: $button-floating-large-size;
padding: 0;
i {
line-height: $button-floating-large-size;
}
}
&.btn-small {
&.halfway-fab {
bottom: -$button-floating-small-size / 2;
}
width: $button-floating-small-size;
height: $button-floating-small-size;
i {
line-height: $button-floating-small-size;
}
}
&.halfway-fab {
&.left {
right: auto;
left: 24px;
}
position: absolute;
right: 24px;
bottom: -$button-floating-size / 2;
}
display: inline-block;
color: $button-floating-color;
position: relative;
overflow: hidden;
z-index: 1;
width: $button-floating-size;
height: $button-floating-size;
line-height: $button-floating-size;
padding: 0;
background-color: $button-floating-background;
border-radius: $button-floating-radius;
@extend .z-depth-1;
transition: background-color .3s;
cursor: pointer;
vertical-align: middle;
i {
width: inherit;
display: inline-block;
text-align: center;
color: $button-floating-color;
font-size: $button-large-icon-font-size;
line-height: $button-floating-size;
}
}
// button fix
button.btn-floating {
border: $button-border;
}
// Fixed Action Button
.fixed-action-btn {
&.active {
ul {
visibility: visible;
}
}
// Directions
&.direction-left,
&.direction-right {
padding: 0 0 0 15px;
ul {
text-align: right;
right: 64px;
top: 50%;
transform: translateY(-50%);
height: 100%;
left: auto;
/*width 100% only goes to width of button container */
width: 500px;
li {
display: inline-block;
margin: 7.5px 15px 0 0;
}
}
}
&.direction-right {
padding: 0 15px 0 0;
ul {
text-align: left;
direction: rtl;
left: 64px;
right: auto;
li {
margin: 7.5px 0 0 15px;
}
}
}
&.direction-bottom {
padding: 0 0 15px 0;
ul {
top: 64px;
bottom: auto;
display: flex;
flex-direction: column-reverse;
li {
margin: 15px 0 0 0;
}
}
}
&.toolbar {
&.active {
&>a i {
opacity: 0;
}
}
padding: 0;
height: $button-floating-large-size;
ul {
display: flex;
top: 0;
bottom: 0;
z-index: 1;
li {
flex: 1;
display: inline-block;
margin: 0;
height: 100%;
transition: none;
a {
display: block;
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
background-color: transparent;
box-shadow: none;
color: #fff;
line-height: $button-floating-large-size;
z-index: 1;
i {
line-height: inherit;
}
}
}
}
}
position: fixed;
right: 23px;
bottom: 23px;
padding-top: 15px;
margin-bottom: 0;
z-index: 997;
ul {
left: 0;
right: 0;
text-align: center;
position: absolute;
bottom: 64px;
margin: 0;
visibility: hidden;
li {
margin-bottom: 15px;
}
a.btn-floating {
opacity: 0;
}
}
.fab-backdrop {
position: absolute;
top: 0;
left: 0;
z-index: -1;
width: $button-floating-size;
height: $button-floating-size;
background-color: $button-floating-background;
border-radius: $button-floating-radius;
transform: scale(0);
}
}
// Flat button
.btn-flat {
box-shadow: none;
background-color: transparent;
color: $button-flat-color;
cursor: pointer;
transition: background-color .2s;
&:focus,
&:hover {
box-shadow: none;
}
&:focus {
background-color: rgba(0, 0, 0, .1);
}
&.disabled,
&.btn-flat[disabled] {
background-color: transparent !important;
color: $button-flat-disabled-color !important;
cursor: default;
}
}
// Large button
.btn-large {
@extend .btn;
height: $button-large-height;
line-height: $button-large-height;
font-size: $button-large-font-size;
padding: 0 28px;
i {
font-size: $button-large-icon-font-size;
}
}
// Small button
.btn-small {
@extend .btn;
height: $button-small-height;
line-height: $button-small-height;
font-size: $button-small-font-size;
i {
font-size: $button-small-icon-font-size;
}
}
// Block button
.btn-block {
display: block;
}

View File

@ -0,0 +1,195 @@
.card-panel {
transition: box-shadow .25s;
padding: $card-padding;
margin: $element-top-margin 0 $element-bottom-margin 0;
border-radius: 2px;
@extend .z-depth-1;
background-color: $card-bg-color;
}
.card {
position: relative;
margin: $element-top-margin 0 $element-bottom-margin 0;
background-color: $card-bg-color;
transition: box-shadow .25s;
border-radius: 2px;
@extend .z-depth-1;
.card-title {
font-size: 24px;
font-weight: 300;
&.activator {
cursor: pointer;
}
}
// Card Sizes
&.small, &.medium, &.large {
position: relative;
.card-image {
max-height: 60%;
overflow: hidden;
}
.card-image + .card-content {
max-height: 40%;
}
.card-content {
max-height: 100%;
overflow: hidden;
}
.card-action {
position: absolute;
bottom: 0;
left: 0;
right: 0;
}
}
&.small {
height: 300px;
}
&.medium {
height: 400px;
}
&.large {
height: 500px;
}
// Horizontal Cards
&.horizontal {
&.small, &.medium, &.large {
.card-image {
height: 100%;
max-height: none;
overflow: visible;
img {
height: 100%;
}
}
}
display: flex;
.card-image {
max-width: 50%;
img {
border-radius: 2px 0 0 2px;
max-width: 100%;
width: auto;
}
}
.card-stacked {
display: flex;
flex-direction: column;
flex: 1;
position: relative;
.card-content {
flex-grow: 1;
}
}
}
// Sticky Action Section
&.sticky-action {
.card-action {
z-index: 2;
}
.card-reveal {
z-index: 1;
padding-bottom: 64px;
}
}
.card-image {
position: relative;
// Image background for content
img {
display: block;
border-radius: 2px 2px 0 0;
position: relative;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100%;
}
.card-title {
color: $card-bg-color;
position: absolute;
bottom: 0;
left: 0;
max-width: 100%;
padding: $card-padding;
}
}
.card-content {
padding: $card-padding;
border-radius: 0 0 2px 2px;
p {
margin: 0;
}
.card-title {
display: block;
line-height: 32px;
margin-bottom: 8px;
i {
line-height: 32px;
}
}
}
.card-action {
&:last-child {
border-radius: 0 0 2px 2px;
}
background-color: inherit; // Use inherit to inherit color classes
border-top: 1px solid rgba(160,160,160,.2);
position: relative;
padding: 16px $card-padding;
a:not(.btn):not(.btn-large):not(.btn-floating) {
color: $card-link-color;
margin-right: $card-padding;
transition: color .3s ease;
text-transform: uppercase;
&:hover { color: $card-link-color-light; }
}
}
.card-reveal {
padding: $card-padding;
position: absolute;
background-color: $card-bg-color;
width: 100%;
overflow-y: auto;
left: 0;
top: 100%;
height: 100%;
z-index: 3;
display: none;
.card-title {
cursor: pointer;
display: block;
}
}
}

View File

@ -0,0 +1,90 @@
.carousel {
&.carousel-slider {
top: 0;
left: 0;
.carousel-fixed-item {
&.with-indicators {
bottom: 68px;
}
position: absolute;
left: 0;
right: 0;
bottom: 20px;
z-index: 1;
}
.carousel-item {
width: 100%;
height: 100%;
min-height: $carousel-height;
position: absolute;
top: 0;
left: 0;
h2 {
font-size: 24px;
font-weight: 500;
line-height: 32px;
}
p {
font-size: 15px;
}
}
}
overflow: hidden;
position: relative;
width: 100%;
height: $carousel-height;
perspective: 500px;
transform-style: preserve-3d;
transform-origin: 0% 50%;
.carousel-item {
visibility: hidden;
width: $carousel-item-width;
height: $carousel-item-height;
position: absolute;
top: 0;
left: 0;
& > img {
width: 100%;
}
}
.indicators {
position: absolute;
text-align: center;
left: 0;
right: 0;
bottom: 0;
margin: 0;
.indicator-item {
&.active {
background-color: #fff;
}
display: inline-block;
position: relative;
cursor: pointer;
height: 8px;
width: 8px;
margin: 24px 4px;
background-color: rgba(255,255,255,.5);
transition: background-color .3s;
border-radius: 50%;
}
}
// Materialbox compatibility
&.scrolling .carousel-item .materialboxed,
.carousel-item:not(.active) .materialboxed {
pointer-events: none;
}
}

View File

@ -0,0 +1,90 @@
.chip {
&:focus {
outline: none;
background-color: $chip-selected-color;
color: #fff;
}
display: inline-block;
height: 32px;
font-size: 13px;
font-weight: 500;
color: rgba(0,0,0,.6);
line-height: 32px;
padding: 0 12px;
border-radius: 16px;
background-color: $chip-bg-color;
margin-bottom: $chip-margin;
margin-right: $chip-margin;
> img {
float: left;
margin: 0 8px 0 -12px;
height: 32px;
width: 32px;
border-radius: 50%;
}
.close {
cursor: pointer;
float: right;
font-size: 16px;
line-height: 32px;
padding-left: 8px;
}
}
.chips {
border: none;
border-bottom: 1px solid $chip-border-color;
box-shadow: none;
margin: $input-margin;
min-height: 45px;
outline: none;
transition: all .3s;
&.focus {
border-bottom: 1px solid $chip-selected-color;
box-shadow: 0 1px 0 0 $chip-selected-color;
}
&:hover {
cursor: text;
}
.input {
background: none;
border: 0;
color: rgba(0,0,0,.6);
display: inline-block;
font-size: $input-font-size;
height: $input-height;
line-height: 32px;
outline: 0;
margin: 0;
padding: 0 !important;
width: 120px !important;
}
.input:focus {
border: 0 !important;
box-shadow: none !important;
}
// Autocomplete
.autocomplete-content {
margin-top: 0;
margin-bottom: 0;
}
}
// Form prefix
.prefix ~ .chips {
margin-left: 3rem;
width: 92%;
width: calc(100% - 3rem);
}
.chips:empty ~ label {
font-size: 0.8rem;
transform: translateY(-140%);
}

View File

@ -0,0 +1,91 @@
.collapsible {
border-top: 1px solid $collapsible-border-color;
border-right: 1px solid $collapsible-border-color;
border-left: 1px solid $collapsible-border-color;
margin: $element-top-margin 0 $element-bottom-margin 0;
@extend .z-depth-1;
}
.collapsible-header {
&:focus {
outline: 0
}
display: flex;
cursor: pointer;
-webkit-tap-highlight-color: transparent;
line-height: 1.5;
padding: 1rem;
background-color: $collapsible-header-color;
border-bottom: 1px solid $collapsible-border-color;
i {
width: 2rem;
font-size: 1.6rem;
display: inline-block;
text-align: center;
margin-right: 1rem;
}
}
.keyboard-focused .collapsible-header:focus {
background-color: #eee;
}
.collapsible-body {
display: none;
border-bottom: 1px solid $collapsible-border-color;
box-sizing: border-box;
padding: 2rem;
}
// Sidenav collapsible styling
.sidenav,
.sidenav.fixed {
.collapsible {
border: none;
box-shadow: none;
li { padding: 0; }
}
.collapsible-header {
background-color: transparent;
border: none;
line-height: inherit;
height: inherit;
padding: 0 $sidenav-padding;
&:hover { background-color: rgba(0,0,0,.05); }
i { line-height: inherit; }
}
.collapsible-body {
border: 0;
background-color: $collapsible-header-color;
li a {
padding: 0 (7.5px + $sidenav-padding)
0 (15px + $sidenav-padding);
}
}
}
// Popout Collapsible
.collapsible.popout {
border: none;
box-shadow: none;
> li {
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
// transform: scaleX(.92);
margin: 0 24px;
transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940);
}
> li.active {
box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
margin: 16px 0;
// transform: scaleX(1);
}
}

View File

@ -0,0 +1,32 @@
// Color Classes
@each $color_name, $color in $colors {
@each $color_type, $color_value in $color {
@if $color_type == "base" {
.#{$color_name} {
background-color: $color_value !important;
}
.#{$color_name}-text {
color: $color_value !important;
}
}
@else if $color_name != "shades" {
.#{$color_name}.#{$color_type} {
background-color: $color_value !important;
}
.#{$color_name}-text.text-#{$color_type} {
color: $color_value !important;
}
}
}
}
// Shade classes
@each $color, $color_value in $shades {
.#{$color} {
background-color: $color_value !important;
}
.#{$color}-text {
color: $color_value !important;
}
}

View File

@ -0,0 +1,370 @@
// Google Color Palette defined: http://www.google.com/design/spec/style/color.html
$materialize-red: (
"base": #e51c23,
"lighten-5": #fdeaeb,
"lighten-4": #f8c1c3,
"lighten-3": #f3989b,
"lighten-2": #ee6e73,
"lighten-1": #ea454b,
"darken-1": #d0181e,
"darken-2": #b9151b,
"darken-3": #a21318,
"darken-4": #8b1014,
);
$red: (
"base": #F44336,
"lighten-5": #FFEBEE,
"lighten-4": #FFCDD2,
"lighten-3": #EF9A9A,
"lighten-2": #E57373,
"lighten-1": #EF5350,
"darken-1": #E53935,
"darken-2": #D32F2F,
"darken-3": #C62828,
"darken-4": #B71C1C,
"accent-1": #FF8A80,
"accent-2": #FF5252,
"accent-3": #FF1744,
"accent-4": #D50000
);
$pink: (
"base": #e91e63,
"lighten-5": #fce4ec,
"lighten-4": #f8bbd0,
"lighten-3": #f48fb1,
"lighten-2": #f06292,
"lighten-1": #ec407a,
"darken-1": #d81b60,
"darken-2": #c2185b,
"darken-3": #ad1457,
"darken-4": #880e4f,
"accent-1": #ff80ab,
"accent-2": #ff4081,
"accent-3": #f50057,
"accent-4": #c51162
);
$purple: (
"base": #9c27b0,
"lighten-5": #f3e5f5,
"lighten-4": #e1bee7,
"lighten-3": #ce93d8,
"lighten-2": #ba68c8,
"lighten-1": #ab47bc,
"darken-1": #8e24aa,
"darken-2": #7b1fa2,
"darken-3": #6a1b9a,
"darken-4": #4a148c,
"accent-1": #ea80fc,
"accent-2": #e040fb,
"accent-3": #d500f9,
"accent-4": #aa00ff
);
$deep-purple: (
"base": #673ab7,
"lighten-5": #ede7f6,
"lighten-4": #d1c4e9,
"lighten-3": #b39ddb,
"lighten-2": #9575cd,
"lighten-1": #7e57c2,
"darken-1": #5e35b1,
"darken-2": #512da8,
"darken-3": #4527a0,
"darken-4": #311b92,
"accent-1": #b388ff,
"accent-2": #7c4dff,
"accent-3": #651fff,
"accent-4": #6200ea
);
$indigo: (
"base": #3f51b5,
"lighten-5": #e8eaf6,
"lighten-4": #c5cae9,
"lighten-3": #9fa8da,
"lighten-2": #7986cb,
"lighten-1": #5c6bc0,
"darken-1": #3949ab,
"darken-2": #303f9f,
"darken-3": #283593,
"darken-4": #1a237e,
"accent-1": #8c9eff,
"accent-2": #536dfe,
"accent-3": #3d5afe,
"accent-4": #304ffe
);
$blue: (
"base": #2196F3,
"lighten-5": #E3F2FD,
"lighten-4": #BBDEFB,
"lighten-3": #90CAF9,
"lighten-2": #64B5F6,
"lighten-1": #42A5F5,
"darken-1": #1E88E5,
"darken-2": #1976D2,
"darken-3": #1565C0,
"darken-4": #0D47A1,
"accent-1": #82B1FF,
"accent-2": #448AFF,
"accent-3": #2979FF,
"accent-4": #2962FF
);
$light-blue: (
"base": #03a9f4,
"lighten-5": #e1f5fe,
"lighten-4": #b3e5fc,
"lighten-3": #81d4fa,
"lighten-2": #4fc3f7,
"lighten-1": #29b6f6,
"darken-1": #039be5,
"darken-2": #0288d1,
"darken-3": #0277bd,
"darken-4": #01579b,
"accent-1": #80d8ff,
"accent-2": #40c4ff,
"accent-3": #00b0ff,
"accent-4": #0091ea
);
$cyan: (
"base": #00bcd4,
"lighten-5": #e0f7fa,
"lighten-4": #b2ebf2,
"lighten-3": #80deea,
"lighten-2": #4dd0e1,
"lighten-1": #26c6da,
"darken-1": #00acc1,
"darken-2": #0097a7,
"darken-3": #00838f,
"darken-4": #006064,
"accent-1": #84ffff,
"accent-2": #18ffff,
"accent-3": #00e5ff,
"accent-4": #00b8d4
);
$teal: (
"base": #009688,
"lighten-5": #e0f2f1,
"lighten-4": #b2dfdb,
"lighten-3": #80cbc4,
"lighten-2": #4db6ac,
"lighten-1": #26a69a,
"darken-1": #00897b,
"darken-2": #00796b,
"darken-3": #00695c,
"darken-4": #004d40,
"accent-1": #a7ffeb,
"accent-2": #64ffda,
"accent-3": #1de9b6,
"accent-4": #00bfa5
);
$green: (
"base": #4CAF50,
"lighten-5": #E8F5E9,
"lighten-4": #C8E6C9,
"lighten-3": #A5D6A7,
"lighten-2": #81C784,
"lighten-1": #66BB6A,
"darken-1": #43A047,
"darken-2": #388E3C,
"darken-3": #2E7D32,
"darken-4": #1B5E20,
"accent-1": #B9F6CA,
"accent-2": #69F0AE,
"accent-3": #00E676,
"accent-4": #00C853
);
$light-green: (
"base": #8bc34a,
"lighten-5": #f1f8e9,
"lighten-4": #dcedc8,
"lighten-3": #c5e1a5,
"lighten-2": #aed581,
"lighten-1": #9ccc65,
"darken-1": #7cb342,
"darken-2": #689f38,
"darken-3": #558b2f,
"darken-4": #33691e,
"accent-1": #ccff90,
"accent-2": #b2ff59,
"accent-3": #76ff03,
"accent-4": #64dd17
);
$lime: (
"base": #cddc39,
"lighten-5": #f9fbe7,
"lighten-4": #f0f4c3,
"lighten-3": #e6ee9c,
"lighten-2": #dce775,
"lighten-1": #d4e157,
"darken-1": #c0ca33,
"darken-2": #afb42b,
"darken-3": #9e9d24,
"darken-4": #827717,
"accent-1": #f4ff81,
"accent-2": #eeff41,
"accent-3": #c6ff00,
"accent-4": #aeea00
);
$yellow: (
"base": #ffeb3b,
"lighten-5": #fffde7,
"lighten-4": #fff9c4,
"lighten-3": #fff59d,
"lighten-2": #fff176,
"lighten-1": #ffee58,
"darken-1": #fdd835,
"darken-2": #fbc02d,
"darken-3": #f9a825,
"darken-4": #f57f17,
"accent-1": #ffff8d,
"accent-2": #ffff00,
"accent-3": #ffea00,
"accent-4": #ffd600
);
$amber: (
"base": #ffc107,
"lighten-5": #fff8e1,
"lighten-4": #ffecb3,
"lighten-3": #ffe082,
"lighten-2": #ffd54f,
"lighten-1": #ffca28,
"darken-1": #ffb300,
"darken-2": #ffa000,
"darken-3": #ff8f00,
"darken-4": #ff6f00,
"accent-1": #ffe57f,
"accent-2": #ffd740,
"accent-3": #ffc400,
"accent-4": #ffab00
);
$orange: (
"base": #ff9800,
"lighten-5": #fff3e0,
"lighten-4": #ffe0b2,
"lighten-3": #ffcc80,
"lighten-2": #ffb74d,
"lighten-1": #ffa726,
"darken-1": #fb8c00,
"darken-2": #f57c00,
"darken-3": #ef6c00,
"darken-4": #e65100,
"accent-1": #ffd180,
"accent-2": #ffab40,
"accent-3": #ff9100,
"accent-4": #ff6d00
);
$deep-orange: (
"base": #ff5722,
"lighten-5": #fbe9e7,
"lighten-4": #ffccbc,
"lighten-3": #ffab91,
"lighten-2": #ff8a65,
"lighten-1": #ff7043,
"darken-1": #f4511e,
"darken-2": #e64a19,
"darken-3": #d84315,
"darken-4": #bf360c,
"accent-1": #ff9e80,
"accent-2": #ff6e40,
"accent-3": #ff3d00,
"accent-4": #dd2c00
);
$brown: (
"base": #795548,
"lighten-5": #efebe9,
"lighten-4": #d7ccc8,
"lighten-3": #bcaaa4,
"lighten-2": #a1887f,
"lighten-1": #8d6e63,
"darken-1": #6d4c41,
"darken-2": #5d4037,
"darken-3": #4e342e,
"darken-4": #3e2723
);
$blue-grey: (
"base": #607d8b,
"lighten-5": #eceff1,
"lighten-4": #cfd8dc,
"lighten-3": #b0bec5,
"lighten-2": #90a4ae,
"lighten-1": #78909c,
"darken-1": #546e7a,
"darken-2": #455a64,
"darken-3": #37474f,
"darken-4": #263238
);
$grey: (
"base": #9e9e9e,
"lighten-5": #fafafa,
"lighten-4": #f5f5f5,
"lighten-3": #eeeeee,
"lighten-2": #e0e0e0,
"lighten-1": #bdbdbd,
"darken-1": #757575,
"darken-2": #616161,
"darken-3": #424242,
"darken-4": #212121
);
$shades: (
"black": #000000,
"white": #FFFFFF,
"transparent": transparent
);
$colors: (
"materialize-red": $materialize-red,
"red": $red,
"pink": $pink,
"purple": $purple,
"deep-purple": $deep-purple,
"indigo": $indigo,
"blue": $blue,
"light-blue": $light-blue,
"cyan": $cyan,
"teal": $teal,
"green": $green,
"light-green": $light-green,
"lime": $lime,
"yellow": $yellow,
"amber": $amber,
"orange": $orange,
"deep-orange": $deep-orange,
"brown": $brown,
"blue-grey": $blue-grey,
"grey": $grey,
"shades": $shades
) !default;
// usage: color("name_of_color", "type_of_color")
// to avoid to repeating map-get($colors, ...)
@function color($color, $type) {
@if map-has-key($colors, $color) {
$curr_color: map-get($colors, $color);
@if map-has-key($curr_color, $type) {
@return map-get($curr_color, $type);
}
}
@warn "Unknown `#{$color}` - `#{$type}` in $colors.";
@return null;
}

View File

@ -0,0 +1,191 @@
/* Modal */
.datepicker-modal {
max-width: 325px;
min-width: 300px;
max-height: none;
}
.datepicker-container.modal-content {
display: flex;
flex-direction: column;
padding: 0;
}
.datepicker-controls {
display: flex;
justify-content: space-between;
width: 280px;
margin: 0 auto;
.selects-container {
display: flex;
}
.select-wrapper {
input {
&:focus {
border-bottom: none;
}
border-bottom: none;
text-align: center;
margin: 0;
}
.caret {
display: none;
}
}
.select-year input {
width: 50px;
}
.select-month input {
width: 70px;
}
}
.month-prev, .month-next {
margin-top: 4px;
cursor: pointer;
background-color: transparent;
border: none;
}
/* Date Display */
.datepicker-date-display {
flex: 1 auto;
background-color: $secondary-color;
color: #fff;
padding: 20px 22px;
font-weight: 500;
.year-text {
display: block;
font-size: 1.5rem;
line-height: 25px;
color: $datepicker-year;
}
.date-text {
display: block;
font-size: 2.8rem;
line-height: 47px;
font-weight: 500;
}
}
/* Calendar */
.datepicker-calendar-container {
flex: 2.5 auto;
}
.datepicker-table {
width: 280px;
font-size: 1rem;
margin: 0 auto;
thead {
border-bottom: none;
}
th {
padding: 10px 5px;
text-align: center;
}
tr {
border: none;
}
abbr {
text-decoration: none;
color: $datepicker-calendar-header-color;
}
td {
&.is-today {
color: $secondary-color;
}
&.is-selected {
background-color: $secondary-color;
color: #fff;
}
&.is-outside-current-month,
&.is-disabled {
color: $datepicker-disabled-day-color;
pointer-events: none;
}
border-radius: 50%;
padding: 0;
}
}
.datepicker-day-button {
&:focus {
background-color: $datepicker-day-focus;
}
background-color: transparent;
border: none;
line-height: 38px;
display: block;
width: 100%;
border-radius: 50%;
padding: 0 5px;
cursor: pointer;
color: inherit;
}
/* Footer */
.datepicker-footer {
width: 280px;
margin: 0 auto;
padding-bottom: 5px;
display: flex;
justify-content: space-between;
}
.datepicker-cancel,
.datepicker-clear,
.datepicker-today,
.datepicker-done {
color: $secondary-color;
padding: 0 1rem;
}
.datepicker-clear {
color: $error-color;
}
/* Media Queries */
@media #{$medium-and-up} {
.datepicker-modal {
max-width: 625px;
}
.datepicker-container.modal-content {
flex-direction: row;
}
.datepicker-date-display {
flex: 0 1 270px;
}
.datepicker-controls,
.datepicker-table,
.datepicker-footer {
width: 320px;
}
.datepicker-day-button {
line-height: 44px;
}
}

View File

@ -0,0 +1,85 @@
.dropdown-content {
&:focus {
outline: 0;
}
@extend .z-depth-1;
background-color: $dropdown-bg-color;
margin: 0;
display: none;
min-width: 100px;
overflow-y: auto;
opacity: 0;
position: absolute;
left: 0;
top: 0;
z-index: 9999; // TODO: Check if this doesn't break other things
transform-origin: 0 0;
li {
&:hover, &.active {
background-color: $dropdown-hover-bg-color;
}
&:focus {
outline: none;
}
&.divider {
min-height: 0;
height: 1px;
}
& > a, & > span {
font-size: 16px;
color: $dropdown-color;
display: block;
line-height: 22px;
padding: (($dropdown-item-height - 22) / 2) 16px;
}
& > span > label {
top: 1px;
left: 0;
height: 18px;
}
// Icon alignment override
& > a > i {
height: inherit;
line-height: inherit;
float: left;
margin: 0 24px 0 0;
width: 24px;
}
clear: both;
color: $off-black;
cursor: pointer;
min-height: $dropdown-item-height;
line-height: 1.5rem;
width: 100%;
text-align: left;
}
}
body.keyboard-focused {
.dropdown-content li:focus {
background-color: darken($dropdown-hover-bg-color, 8%);
}
}
// Input field specificity bugfix
.input-field.col .dropdown-content [type="checkbox"] + label {
top: 1px;
left: 0;
height: 18px;
transform: none;
}
.dropdown-trigger {
cursor: pointer;
}

View File

@ -0,0 +1,769 @@
//Default styles
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
body {
// display: flex;
// min-height: 100vh;
// flex-direction: column;
}
main {
// flex: 1 0 auto;
}
button,
input,
optgroup,
select,
textarea {
font-family: $font-stack;
}
ul {
&:not(.browser-default) {
padding-left: 0;
list-style-type: none;
& > li {
list-style-type: none;
}
}
}
a {
color: $link-color;
text-decoration: none;
// Gets rid of tap active state
-webkit-tap-highlight-color: transparent;
}
// Positioning
.valign-wrapper {
display: flex;
align-items: center;
}
// classic clearfix
.clearfix {
clear: both;
}
// Z-levels
.z-depth-0 {
box-shadow: none !important;
}
/* 2dp elevation modified*/
.z-depth-1 {
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14),
0 3px 1px -2px rgba(0,0,0,0.12),
0 1px 5px 0 rgba(0,0,0,0.2);
}
.z-depth-1-half {
box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
}
/* 6dp elevation modified*/
.z-depth-2 {
box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14),
0 1px 10px 0 rgba(0,0,0,0.12),
0 2px 4px -1px rgba(0,0,0,0.3);
}
/* 12dp elevation modified*/
.z-depth-3 {
box-shadow: 0 8px 17px 2px rgba(0,0,0,0.14),
0 3px 14px 2px rgba(0,0,0,0.12),
0 5px 5px -3px rgba(0, 0, 0, 0.2);
}
/* 16dp elevation */
.z-depth-4 {
box-shadow: 0 16px 24px 2px rgba(0,0,0,0.14),
0 6px 30px 5px rgba(0,0,0,0.12),
0 8px 10px -7px rgba(0,0,0,0.2);
}
/* 24dp elevation */
.z-depth-5 {
box-shadow: 0 24px 38px 3px rgba(0,0,0,0.14),
0 9px 46px 8px rgba(0,0,0,0.12),
0 11px 15px -7px rgba(0,0,0,0.2);
}
.hoverable {
transition: box-shadow .25s;
&:hover {
box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
}
// Dividers
.divider {
height: 1px;
overflow: hidden;
background-color: color("grey", "lighten-2");
}
// Blockquote
blockquote {
margin: 20px 0;
padding-left: 1.5rem;
border-left: 5px solid $primary-color;
}
// Icon Styles
i {
line-height: inherit;
&.left {
float: left;
margin-right: 15px;
}
&.right {
float: right;
margin-left: 15px;
}
&.tiny {
font-size: 1rem;
}
&.small {
font-size: 2rem;
}
&.medium {
font-size: 4rem;
}
&.large {
font-size: 6rem;
}
}
// Images
img.responsive-img,
video.responsive-video {
max-width: 100%;
height: auto;
}
// Pagination
.pagination {
li {
display: inline-block;
border-radius: 2px;
text-align: center;
vertical-align: top;
height: 30px;
a {
color: #444;
display: inline-block;
font-size: 1.2rem;
padding: 0 10px;
line-height: 30px;
}
&.active a { color: #fff; }
&.active { background-color: $primary-color; }
&.disabled a {
cursor: default;
color: #999;
}
i {
font-size: 2rem;
}
}
li.pages ul li {
display: inline-block;
float: none;
}
}
@media #{$medium-and-down} {
.pagination {
width: 100%;
li.prev,
li.next {
width: 10%;
}
li.pages {
width: 80%;
overflow: hidden;
white-space: nowrap;
}
}
}
// Breadcrumbs
.breadcrumb {
font-size: 18px;
color: rgba(255,255,255, .7);
i,
[class^="mdi-"], [class*="mdi-"],
i.material-icons {
display: inline-block;
float: left;
font-size: 24px;
}
&:before {
content: '\E5CC';
color: rgba(255,255,255, .7);
vertical-align: top;
display: inline-block;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 25px;
margin: 0 10px 0 8px;
-webkit-font-smoothing: antialiased;
}
&:first-child:before {
display: none;
}
&:last-child {
color: #fff;
}
}
// Parallax
.parallax-container {
position: relative;
overflow: hidden;
height: 500px;
.parallax {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
img {
opacity: 0;
position: absolute;
left: 50%;
bottom: 0;
min-width: 100%;
min-height: 100%;
transform: translate3d(0,0,0);
transform: translateX(-50%);
}
}
}
// Pushpin
.pin-top, .pin-bottom {
position: relative;
}
.pinned {
position: fixed !important;
}
/*********************
Transition Classes
**********************/
ul.staggered-list li {
opacity: 0;
}
.fade-in {
opacity: 0;
transform-origin: 0 50%;
}
/*********************
Media Query Classes
**********************/
.hide-on-small-only, .hide-on-small-and-down {
@media #{$small-and-down} {
display: none !important;
}
}
.hide-on-med-and-down {
@media #{$medium-and-down} {
display: none !important;
}
}
.hide-on-med-and-up {
@media #{$medium-and-up} {
display: none !important;
}
}
.hide-on-med-only {
@media only screen and (min-width: $small-screen) and (max-width: $medium-screen) {
display: none !important;
}
}
.hide-on-large-only {
@media #{$large-and-up} {
display: none !important;
}
}
.hide-on-extra-large-only {
@media #{$extra-large-and-up} {
display: none !important;
}
}
.show-on-extra-large {
@media #{$extra-large-and-up} {
display: block !important;
}
}
.show-on-large {
@media #{$large-and-up} {
display: block !important;
}
}
.show-on-medium {
@media only screen and (min-width: $small-screen) and (max-width: $medium-screen) {
display: block !important;
}
}
.show-on-small {
@media #{$small-and-down} {
display: block !important;
}
}
.show-on-medium-and-up {
@media #{$medium-and-up} {
display: block !important;
}
}
.show-on-medium-and-down {
@media #{$medium-and-down} {
display: block !important;
}
}
// Center text on mobile
.center-on-small-only {
@media #{$small-and-down} {
text-align: center;
}
}
// Footer
.page-footer {
padding-top: 20px;
color: $footer-font-color;
background-color: $footer-bg-color;
.footer-copyright {
overflow: hidden;
min-height: 50px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 0px;
color: $footer-copyright-font-color;
background-color: $footer-copyright-bg-color;
}
}
// Tables
table, th, td {
border: none;
}
table {
width:100%;
display: table;
border-collapse: collapse;
border-spacing: 0;
&.striped {
tr {
border-bottom: none;
}
> tbody {
> tr:nth-child(odd) {
background-color: $table-striped-color;
}
> tr > td {
border-radius: 0;
}
}
}
&.highlight > tbody > tr {
transition: background-color .25s ease;
&:hover {
background-color: $table-striped-color;
}
}
&.centered {
thead tr th, tbody tr td {
text-align: center;
}
}
}
tr {
border-bottom: 1px solid $table-border-color;
}
td, th{
padding: 15px 5px;
display: table-cell;
text-align: left;
vertical-align: middle;
border-radius: 2px;
}
// Responsive Table
@media #{$medium-and-down} {
table.responsive-table {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
display: block;
position: relative;
td:empty:before {
content: '\00a0';
}
th,
td {
margin: 0;
vertical-align: top;
}
th { text-align: left; }
thead {
display: block;
float: left;
tr {
display: block;
padding: 0 10px 0 0;
th::before {
content: "\00a0";
}
}
}
tbody {
display: block;
width: auto;
position: relative;
overflow-x: auto;
white-space: nowrap;
tr {
display: inline-block;
vertical-align: top;
}
}
th {
display: block;
text-align: right;
}
td {
display: block;
min-height: 1.25em;
text-align: left;
}
tr {
border-bottom: none;
padding: 0 10px;
}
/* sort out borders */
thead {
border: 0;
border-right: 1px solid $table-border-color;
}
}
}
// Collections
.collection {
margin: $element-top-margin 0 $element-bottom-margin 0;
border: 1px solid $collection-border-color;
border-radius: 2px;
overflow: hidden;
position: relative;
.collection-item {
background-color: $collection-bg-color;
line-height: $collection-line-height;
padding: 10px 20px;
margin: 0;
border-bottom: 1px solid $collection-border-color;
// Avatar Collection
&.avatar {
min-height: 84px;
padding-left: 72px;
position: relative;
// Don't style circles inside preloader classes.
&:not(.circle-clipper) > .circle,
:not(.circle-clipper) > .circle {
position: absolute;
width: 42px;
height: 42px;
overflow: hidden;
left: 15px;
display: inline-block;
vertical-align: middle;
}
i.circle {
font-size: 18px;
line-height: 42px;
color: #fff;
background-color: #999;
text-align: center;
}
.title {
font-size: 16px;
}
p {
margin: 0;
}
.secondary-content {
position: absolute;
top: 16px;
right: 16px;
}
}
&:last-child {
border-bottom: none;
}
&.active {
background-color: $collection-active-bg-color;
color: $collection-active-color;
.secondary-content {
color: #fff;
}
}
}
a.collection-item{
display: block;
transition: .25s;
color: $collection-link-color;
&:not(.active) {
&:hover {
background-color: $collection-hover-bg-color;
}
}
}
&.with-header {
.collection-header {
background-color: $collection-bg-color;
border-bottom: 1px solid $collection-border-color;
padding: 10px 20px;
}
.collection-item {
padding-left: 30px;
}
.collection-item.avatar {
padding-left: 72px;
}
}
}
// Made less specific to allow easier overriding
.secondary-content {
float: right;
color: $secondary-color;
}
.collapsible .collection {
margin: 0;
border: none;
}
// Responsive Videos
.video-container {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
iframe, object, embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
// Progress Bar
.progress {
position: relative;
height: 4px;
display: block;
width: 100%;
background-color: lighten($progress-bar-color, 40%);
border-radius: 2px;
margin: $element-top-margin 0 $element-bottom-margin 0;
overflow: hidden;
.determinate {
position: absolute;
top: 0;
left: 0;
bottom: 0;
background-color: $progress-bar-color;
transition: width .3s linear;
}
.indeterminate {
background-color: $progress-bar-color;
&:before {
content: '';
position: absolute;
background-color: inherit;
top: 0;
left:0;
bottom: 0;
will-change: left, right;
// Custom bezier
animation: indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite;
}
&:after {
content: '';
position: absolute;
background-color: inherit;
top: 0;
left:0;
bottom: 0;
will-change: left, right;
// Custom bezier
animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite;
animation-delay: 1.15s;
}
}
}
@keyframes indeterminate {
0% {
left: -35%;
right:100%;
}
60% {
left: 100%;
right: -90%;
}
100% {
left: 100%;
right: -90%;
}
}
@keyframes indeterminate-short {
0% {
left: -200%;
right: 100%;
}
60% {
left: 107%;
right: -8%;
}
100% {
left: 107%;
right: -8%;
}
}
/*******************
Utility Classes
*******************/
.hide {
display: none !important;
}
// Text Align
.left-align {
text-align: left;
}
.right-align {
text-align: right
}
.center, .center-align {
text-align: center;
}
.left {
float: left !important;
}
.right {
float: right !important;
}
// No Text Select
.no-select {
user-select: none;
}
.circle {
border-radius: 50%;
}
.center-block {
display: block;
margin-left: auto;
margin-right: auto;
}
.truncate {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.no-padding {
padding: 0 !important;
}

View File

@ -0,0 +1,156 @@
.container {
margin: 0 auto;
max-width: 1280px;
width: 90%;
}
@media #{$medium-and-up} {
.container {
width: 85%;
}
}
@media #{$large-and-up} {
.container {
width: 70%;
}
}
.col .row {
margin-left: (-1 * $gutter-width / 2);
margin-right: (-1 * $gutter-width / 2);
}
.section {
padding-top: 1rem;
padding-bottom: 1rem;
&.no-pad {
padding: 0;
}
&.no-pad-bot {
padding-bottom: 0;
}
&.no-pad-top {
padding-top: 0;
}
}
// Mixins to eliminate code repitition
@mixin reset-offset {
margin-left: auto;
left: auto;
right: auto;
}
@mixin grid-classes($size, $i, $perc) {
&.offset-#{$size}#{$i} {
margin-left: $perc;
}
&.pull-#{$size}#{$i} {
right: $perc;
}
&.push-#{$size}#{$i} {
left: $perc;
}
}
.row {
margin-left: auto;
margin-right: auto;
margin-bottom: 20px;
// Clear floating children
&:after {
content: "";
display: table;
clear: both;
}
.col {
float: left;
box-sizing: border-box;
padding: 0 $gutter-width / 2;
min-height: 1px;
&[class*="push-"],
&[class*="pull-"] {
position: relative;
}
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
&.s#{$i} {
width: $perc;
@include reset-offset;
}
$i: $i + 1;
}
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
@include grid-classes("s", $i, $perc);
$i: $i + 1;
}
@media #{$medium-and-up} {
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
&.m#{$i} {
width: $perc;
@include reset-offset;
}
$i: $i + 1
}
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
@include grid-classes("m", $i, $perc);
$i: $i + 1;
}
}
@media #{$large-and-up} {
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
&.l#{$i} {
width: $perc;
@include reset-offset;
}
$i: $i + 1;
}
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
@include grid-classes("l", $i, $perc);
$i: $i + 1;
}
}
@media #{$extra-large-and-up} {
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
&.xl#{$i} {
width: $perc;
@include reset-offset;
}
$i: $i + 1;
}
$i: 1;
@while $i <= $num-cols {
$perc: unquote((100 / ($num-cols / $i)) + "%");
@include grid-classes("xl", $i, $perc);
$i: $i + 1;
}
}
}
}

View File

@ -0,0 +1,5 @@
/* This is needed for some mobile phones to display the Google Icon font properly */
.material-icons {
text-rendering: optimizeLegibility;
font-feature-settings: 'liga';
}

View File

@ -0,0 +1,43 @@
.materialboxed {
&:hover {
&:not(.active) {
opacity: .8;
}
}
display: block;
cursor: zoom-in;
position: relative;
transition: opacity .4s;
-webkit-backface-visibility: hidden;
&.active {
cursor: zoom-out;
}
}
#materialbox-overlay {
position:fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: #292929;
z-index: 1000;
will-change: opacity;
}
.materialbox-caption {
position: fixed;
display: none;
color: #fff;
line-height: 50px;
bottom: 0;
left: 0;
width: 100%;
text-align: center;
padding: 0% 15%;
height: 50px;
z-index: 1000;
-webkit-font-smoothing: antialiased;
}

View File

@ -0,0 +1,94 @@
.modal {
&:focus {
outline: none;
}
@extend .z-depth-5;
display: none;
position: fixed;
left: 0;
right: 0;
background-color: #fafafa;
padding: 0;
max-height: 70%;
width: 55%;
margin: auto;
overflow-y: auto;
border-radius: 2px;
will-change: top, opacity;
@media #{$medium-and-down} {
width: 80%;
}
h1,h2,h3,h4 {
margin-top: 0;
}
.modal-content {
padding: 24px;
}
.modal-close {
cursor: pointer;
}
.modal-footer {
border-radius: 0 0 2px 2px;
background-color: #fafafa;
padding: 4px 6px;
height: 56px;
width: 100%;
text-align: right;
.btn, .btn-flat {
margin: 6px 0;
}
}
}
.modal-overlay {
position: fixed;
z-index: 999;
top: -25%;
left: 0;
bottom: 0;
right: 0;
height: 125%;
width: 100%;
background: #000;
display: none;
will-change: opacity;
}
// Modal with fixed action footer
.modal.modal-fixed-footer {
padding: 0;
height: 70%;
.modal-content {
position: absolute;
height: calc(100% - 56px);
max-height: 100%;
width: 100%;
overflow-y: auto;
}
.modal-footer {
border-top: 1px solid rgba(0,0,0,.1);
position: absolute;
bottom: 0;
}
}
// Modal Bottom Sheet Style
.modal.bottom-sheet {
top: auto;
bottom: -100%;
margin: 0;
width: 100%;
max-height: 45%;
border-radius: 0;
will-change: bottom, opacity;
}

View File

@ -0,0 +1,208 @@
nav {
&.nav-extended {
height: auto;
.nav-wrapper {
min-height: $navbar-height-mobile;
height: auto;
}
.nav-content {
position: relative;
line-height: normal;
}
}
color: $navbar-font-color;
@extend .z-depth-1;
background-color: $primary-color;
width: 100%;
height: $navbar-height-mobile;
line-height: $navbar-line-height-mobile;
a { color: $navbar-font-color; }
i,
[class^="mdi-"], [class*="mdi-"],
i.material-icons {
display: block;
font-size: 24px;
height: $navbar-height-mobile;
line-height: $navbar-line-height-mobile;
}
.nav-wrapper {
position: relative;
height: 100%;
}
@media #{$large-and-up} {
a.sidenav-trigger { display: none; }
}
// Collapse button
.sidenav-trigger {
float: left;
position: relative;
z-index: 1;
height: $navbar-height-mobile;
margin: 0 18px;
i {
height: $navbar-height-mobile;
line-height: $navbar-line-height-mobile;
}
}
// Logo
.brand-logo {
position: absolute;
color: $navbar-font-color;
display: inline-block;
font-size: $navbar-brand-font-size;
padding: 0;
&.center {
left: 50%;
transform: translateX(-50%);
}
@media #{$medium-and-down} {
left: 50%;
transform: translateX(-50%);
&.left, &.right {
padding: 0;
transform: none;
}
&.left { left: 0.5rem; }
&.right {
right: 0.5rem;
left: auto;
}
}
&.right {
right: 0.5rem;
padding: 0;
}
i,
[class^="mdi-"], [class*="mdi-"],
i.material-icons {
float: left;
margin-right: 15px;
}
}
// Title
.nav-title {
display: inline-block;
font-size: 32px;
padding: 28px 0;
}
// Navbar Links
ul {
margin: 0;
li {
transition: background-color .3s;
float: left;
padding: 0;
&.active {
background-color: rgba(0,0,0,.1);
}
}
a {
transition: background-color .3s;
font-size: $navbar-font-size;
color: $navbar-font-color;
display: block;
padding: 0 15px;
cursor: pointer;
&.btn, &.btn-large, &.btn-flat, &.btn-floating {
margin-top: -2px;
margin-left: 15px;
margin-right: 15px;
& > .material-icons {
height: inherit;
line-height: inherit;
}
}
&:hover {
background-color: rgba(0,0,0,.1);
}
}
&.left {
float: left;
}
}
// Navbar Search Form
form {
height: 100%;
}
.input-field {
margin: 0;
height: 100%;
input {
height: 100%;
font-size: 1.2rem;
border: none;
padding-left: 2rem;
&:focus, &[type=text]:valid, &[type=password]:valid,
&[type=email]:valid, &[type=url]:valid, &[type=date]:valid {
border: none;
box-shadow: none;
}
}
label {
top: 0;
left: 0;
i {
color: rgba(255,255,255,.7);
transition: color .3s;
}
&.active i { color: $navbar-font-color; }
}
}
}
// Fixed Navbar
.navbar-fixed {
position: relative;
height: $navbar-height-mobile;
z-index: 997;
nav {
position: fixed;
}
}
@media #{$medium-and-up} {
nav.nav-extended .nav-wrapper {
min-height: $navbar-height;
}
nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {
height: $navbar-height;
line-height: $navbar-line-height;
}
.navbar-fixed {
height: $navbar-height;
}
}

View File

@ -0,0 +1,447 @@
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in
* IE on Windows Phone and in iOS.
*/
html {
line-height: 1.15; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers (opinionated).
*/
body {
margin: 0;
}
/**
* Add the correct display in IE 9-.
*/
article,
aside,
footer,
header,
nav,
section {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in IE.
*/
figcaption,
figure,
main { /* 1 */
display: block;
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
audio,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: sans-serif; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* 1. Add the correct display in IE 9-.
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
*/
details, /* 1 */
menu {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Scripting
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
canvas {
display: inline-block;
}
/**
* Add the correct display in IE.
*/
template {
display: none;
}
/* Hidden
========================================================================== */
/**
* Add the correct display in IE 10-.
*/
[hidden] {
display: none;
}

View File

@ -0,0 +1,334 @@
/*
@license
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
/**************************/
/* STYLES FOR THE SPINNER */
/**************************/
/*
* Constants:
* STROKEWIDTH = 3px
* ARCSIZE = 270 degrees (amount of circle the arc takes up)
* ARCTIME = 1333ms (time it takes to expand and contract arc)
* ARCSTARTROT = 216 degrees (how much the start location of the arc
* should rotate each time, 216 gives us a
* 5 pointed star shape (it's 360/5 * 3).
* For a 7 pointed star, we might do
* 360/7 * 3 = 154.286)
* CONTAINERWIDTH = 28px
* SHRINK_TIME = 400ms
*/
.preloader-wrapper {
display: inline-block;
position: relative;
width: 50px;
height: 50px;
&.small {
width: 36px;
height: 36px;
}
&.big {
width: 64px;
height: 64px;
}
&.active {
/* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
-webkit-animation: container-rotate 1568ms linear infinite;
animation: container-rotate 1568ms linear infinite;
}
}
@-webkit-keyframes container-rotate {
to { -webkit-transform: rotate(360deg) }
}
@keyframes container-rotate {
to { transform: rotate(360deg) }
}
.spinner-layer {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
border-color: $spinner-default-color;
}
.spinner-blue,
.spinner-blue-only {
border-color: #4285f4;
}
.spinner-red,
.spinner-red-only {
border-color: #db4437;
}
.spinner-yellow,
.spinner-yellow-only {
border-color: #f4b400;
}
.spinner-green,
.spinner-green-only {
border-color: #0f9d58;
}
/**
* IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
*
* iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
* guarantee that the animation will start _exactly_ after that value. So we avoid using
* animation-delay and instead set custom keyframes for each color (as redundant as it
* seems).
*
* We write out each animation in full (instead of separating animation-name,
* animation-duration, etc.) because under the polyfill, Safari does not recognize those
* specific properties properly, treats them as -webkit-animation, and overrides the
* other animation rules. See https://github.com/Polymer/platform/issues/53.
*/
.active .spinner-layer.spinner-blue {
/* durations: 4 * ARCTIME */
-webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
.active .spinner-layer.spinner-red {
/* durations: 4 * ARCTIME */
-webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
.active .spinner-layer.spinner-yellow {
/* durations: 4 * ARCTIME */
-webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
.active .spinner-layer.spinner-green {
/* durations: 4 * ARCTIME */
-webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
.active .spinner-layer,
.active .spinner-layer.spinner-blue-only,
.active .spinner-layer.spinner-red-only,
.active .spinner-layer.spinner-yellow-only,
.active .spinner-layer.spinner-green-only {
/* durations: 4 * ARCTIME */
opacity: 1;
-webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
@-webkit-keyframes fill-unfill-rotate {
12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */
25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */
37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */
50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */
62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */
75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */
87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */
to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */
}
@keyframes fill-unfill-rotate {
12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */
25% { transform: rotate(270deg); } /* 1 * ARCSIZE */
37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */
50% { transform: rotate(540deg); } /* 2 * ARCSIZE */
62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */
75% { transform: rotate(810deg); } /* 3 * ARCSIZE */
87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */
to { transform: rotate(1080deg); } /* 4 * ARCSIZE */
}
@-webkit-keyframes blue-fade-in-out {
from { opacity: 1; }
25% { opacity: 1; }
26% { opacity: 0; }
89% { opacity: 0; }
90% { opacity: 1; }
100% { opacity: 1; }
}
@keyframes blue-fade-in-out {
from { opacity: 1; }
25% { opacity: 1; }
26% { opacity: 0; }
89% { opacity: 0; }
90% { opacity: 1; }
100% { opacity: 1; }
}
@-webkit-keyframes red-fade-in-out {
from { opacity: 0; }
15% { opacity: 0; }
25% { opacity: 1; }
50% { opacity: 1; }
51% { opacity: 0; }
}
@keyframes red-fade-in-out {
from { opacity: 0; }
15% { opacity: 0; }
25% { opacity: 1; }
50% { opacity: 1; }
51% { opacity: 0; }
}
@-webkit-keyframes yellow-fade-in-out {
from { opacity: 0; }
40% { opacity: 0; }
50% { opacity: 1; }
75% { opacity: 1; }
76% { opacity: 0; }
}
@keyframes yellow-fade-in-out {
from { opacity: 0; }
40% { opacity: 0; }
50% { opacity: 1; }
75% { opacity: 1; }
76% { opacity: 0; }
}
@-webkit-keyframes green-fade-in-out {
from { opacity: 0; }
65% { opacity: 0; }
75% { opacity: 1; }
90% { opacity: 1; }
100% { opacity: 0; }
}
@keyframes green-fade-in-out {
from { opacity: 0; }
65% { opacity: 0; }
75% { opacity: 1; }
90% { opacity: 1; }
100% { opacity: 0; }
}
/**
* Patch the gap that appear between the two adjacent div.circle-clipper while the
* spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
*/
.gap-patch {
position: absolute;
top: 0;
left: 45%;
width: 10%;
height: 100%;
overflow: hidden;
border-color: inherit;
}
.gap-patch .circle {
width: 1000%;
left: -450%;
}
.circle-clipper {
display: inline-block;
position: relative;
width: 50%;
height: 100%;
overflow: hidden;
border-color: inherit;
.circle {
width: 200%;
height: 100%;
border-width: 3px; /* STROKEWIDTH */
border-style: solid;
border-color: inherit;
border-bottom-color: transparent !important;
border-radius: 50%;
-webkit-animation: none;
animation: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
}
&.left .circle {
left: 0;
border-right-color: transparent !important;
-webkit-transform: rotate(129deg);
transform: rotate(129deg);
}
&.right .circle {
left: -100%;
border-left-color: transparent !important;
-webkit-transform: rotate(-129deg);
transform: rotate(-129deg);
}
}
.active .circle-clipper.left .circle {
/* duration: ARCTIME */
-webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
.active .circle-clipper.right .circle {
/* duration: ARCTIME */
-webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both;
}
@-webkit-keyframes left-spin {
from { -webkit-transform: rotate(130deg); }
50% { -webkit-transform: rotate(-5deg); }
to { -webkit-transform: rotate(130deg); }
}
@keyframes left-spin {
from { transform: rotate(130deg); }
50% { transform: rotate(-5deg); }
to { transform: rotate(130deg); }
}
@-webkit-keyframes right-spin {
from { -webkit-transform: rotate(-130deg); }
50% { -webkit-transform: rotate(5deg); }
to { -webkit-transform: rotate(-130deg); }
}
@keyframes right-spin {
from { transform: rotate(-130deg); }
50% { transform: rotate(5deg); }
to { transform: rotate(-130deg); }
}
#spinnerContainer.cooldown {
/* duration: SHRINK_TIME */
-webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1);
animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1);
}
@-webkit-keyframes fade-out {
from { opacity: 1; }
to { opacity: 0; }
}
@keyframes fade-out {
from { opacity: 1; }
to { opacity: 0; }
}

View File

@ -0,0 +1,34 @@
.pulse {
&::before {
content: '';
display: block;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: inherit;
border-radius: inherit;
transition: opacity .3s, transform .3s;
animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
z-index: -1;
}
overflow: visible;
position: relative;
}
@keyframes pulse-animation {
0% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0;
transform: scale(1.5);
}
100% {
opacity: 0;
transform: scale(1.5);
}
}

View File

@ -0,0 +1,216 @@
.sidenav {
position: fixed;
width: $sidenav-width;
left: 0;
top: 0;
margin: 0;
transform: translateX(-100%);
height: 100%;
height: calc(100% + 60px);
height: -moz-calc(100%); //Temporary Firefox Fix
padding-bottom: 60px;
background-color: $sidenav-bg-color;
z-index: 999;
overflow-y: auto;
will-change: transform;
backface-visibility: hidden;
transform: translateX(-105%);
@extend .z-depth-1;
// Right Align
&.right-aligned {
right: 0;
transform: translateX(105%);
left: auto;
transform: translateX(100%);
}
.collapsible {
margin: 0;
}
li {
float: none;
line-height: $sidenav-line-height;
&.active { background-color: rgba(0,0,0,.05); }
}
li > a {
color: $sidenav-font-color;
display: block;
font-size: $sidenav-font-size;
font-weight: 500;
height: $sidenav-item-height;
line-height: $sidenav-line-height;
padding: 0 ($sidenav-padding * 2);
&:hover { background-color: rgba(0,0,0,.05);}
&.btn, &.btn-large, &.btn-flat, &.btn-floating {
margin: 10px 15px;
}
&.btn,
&.btn-large,
&.btn-floating { color: $button-raised-color; }
&.btn-flat { color: $button-flat-color; }
&.btn:hover,
&.btn-large:hover { background-color: lighten($button-raised-background, 5%); }
&.btn-floating:hover { background-color: $button-raised-background; }
& > i,
& > [class^="mdi-"], li > a > [class*="mdi-"],
& > i.material-icons {
float: left;
height: $sidenav-item-height;
line-height: $sidenav-line-height;
margin: 0 ($sidenav-padding * 2) 0 0;
width: $sidenav-item-height / 2;
color: rgba(0,0,0,.54);
}
}
.divider {
margin: ($sidenav-padding / 2) 0 0 0;
}
.subheader {
&:hover {
background-color: transparent;
}
cursor: initial;
pointer-events: none;
color: rgba(0,0,0,.54);
font-size: $sidenav-font-size;
font-weight: 500;
line-height: $sidenav-line-height;
}
.user-view {
position: relative;
padding: ($sidenav-padding * 2) ($sidenav-padding * 2) 0;
margin-bottom: $sidenav-padding / 2;
& > a {
&:hover { background-color: transparent; }
height: auto;
padding: 0;
}
.background {
overflow: hidden;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
}
.circle, .name, .email {
display: block;
}
.circle {
height: 64px;
width: 64px;
}
.name,
.email {
font-size: $sidenav-font-size;
line-height: $sidenav-line-height / 2;
}
.name {
margin-top: 16px;
font-weight: 500;
}
.email {
padding-bottom: 16px;
font-weight: 400;
}
}
}
// Touch interaction
.drag-target {
// Right Align
&.right-aligned {
right: 0;
}
height: 100%;
width: 10px;
position: fixed;
top: 0;
z-index: 998;
}
// Fixed Sidenav shown
.sidenav.sidenav-fixed {
// Right Align
&.right-aligned {
right: 0;
left: auto;
}
left: 0;
transform: translateX(0);
position: fixed;
}
// Fixed Sidenav hide on smaller
@media #{$medium-and-down} {
.sidenav {
&.sidenav-fixed {
transform: translateX(-105%);
&.right-aligned {
transform: translateX(105%);
}
}
> a {
padding: 0 $sidenav-padding;
}
.user-view {
padding: $sidenav-padding $sidenav-padding 0;
}
}
}
.sidenav .collapsible-body > ul:not(.collapsible) > li.active,
.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {
background-color: $primary-color;
a {
color: $sidenav-bg-color;
}
}
.sidenav .collapsible-body {
padding: 0;
}
.sidenav-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
opacity: 0;
height: 120vh;
background-color: rgba(0,0,0,.5);
z-index: 997;
display: none;
}

View File

@ -0,0 +1,92 @@
.slider {
position: relative;
height: 400px;
width: 100%;
// Fullscreen slider
&.fullscreen {
height: 100%;
width: 100%;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
ul.slides {
height: 100%;
}
ul.indicators {
z-index: 2;
bottom: 30px;
}
}
.slides {
background-color: $slider-bg-color;
margin: 0;
height: 400px;
li {
opacity: 0;
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: inherit;
overflow: hidden;
img {
height: 100%;
width: 100%;
background-size: cover;
background-position: center;
}
.caption {
color: #fff;
position: absolute;
top: 15%;
left: 15%;
width: 70%;
opacity: 0;
p { color: $slider-bg-color-light; }
}
&.active {
z-index: 2;
}
}
}
.indicators {
position: absolute;
text-align: center;
left: 0;
right: 0;
bottom: 0;
margin: 0;
.indicator-item {
display: inline-block;
position: relative;
cursor: pointer;
height: 16px;
width: 16px;
margin: 0 12px;
background-color: $slider-bg-color-light;
transition: background-color .3s;
border-radius: 50%;
&.active {
background-color: $slider-indicator-color;
}
}
}
}

View File

@ -0,0 +1,33 @@
/***************
Nav List
***************/
.table-of-contents {
&.fixed {
position: fixed;
}
li {
padding: 2px 0;
}
a {
display: inline-block;
font-weight: 300;
color: #757575;
padding-left: 16px;
height: 1.5rem;
line-height: 1.5rem;
letter-spacing: .4;
display: inline-block;
&:hover {
color: lighten(#757575, 20%);
padding-left: 15px;
border-left: 1px solid $primary-color;
}
&.active {
font-weight: 500;
padding-left: 14px;
border-left: 2px solid $primary-color;
}
}
}

View File

@ -0,0 +1,99 @@
.tabs {
&.tabs-transparent {
background-color: transparent;
.tab a,
.tab.disabled a,
.tab.disabled a:hover {
color: rgba(255,255,255,0.7);
}
.tab a:hover,
.tab a.active {
color: #fff;
}
.indicator {
background-color: #fff;
}
}
&.tabs-fixed-width {
display: flex;
.tab {
flex-grow: 1;
}
}
position: relative;
overflow-x: auto;
overflow-y: hidden;
height: 48px;
width: 100%;
background-color: $tabs-bg-color;
margin: 0 auto;
white-space: nowrap;
.tab {
display: inline-block;
text-align: center;
line-height: 48px;
height: 48px;
padding: 0;
margin: 0;
text-transform: uppercase;
a {
&:focus,
&:focus.active {
background-color: transparentize($tabs-underline-color, .8);
outline: none;
}
&:hover,
&.active {
background-color: transparent;
color: $tabs-text-color;
}
color: rgba($tabs-text-color, .7);
display: block;
width: 100%;
height: 100%;
padding: 0 24px;
font-size: 14px;
text-overflow: ellipsis;
overflow: hidden;
transition: color .28s ease, background-color .28s ease;
}
&.disabled a,
&.disabled a:hover {
color: rgba($tabs-text-color, .4);
cursor: default;
}
}
.indicator {
position: absolute;
bottom: 0;
height: 2px;
background-color: $tabs-underline-color;
will-change: left, right;
}
}
// Fixed Sidenav hide on smaller
@media #{$medium-and-down} {
.tabs {
display: flex;
.tab {
flex-grow: 1;
a {
padding: 0 12px;
}
}
}
}

View File

@ -0,0 +1,103 @@
.tap-target-wrapper {
width: 800px;
height: 800px;
position: fixed;
z-index: 1000;
visibility: hidden;
transition: visibility 0s .3s;
}
.tap-target-wrapper.open {
visibility: visible;
transition: visibility 0s;
.tap-target {
transform: scale(1);
opacity: .95;
transition:
transform .3s cubic-bezier(.42,0,.58,1),
opacity .3s cubic-bezier(.42,0,.58,1);
}
.tap-target-wave::before {
transform: scale(1);
}
.tap-target-wave::after {
visibility: visible;
animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
transition:
opacity .3s,
transform .3s,
visibility 0s 1s;
}
}
.tap-target {
position: absolute;
font-size: 1rem;
border-radius: 50%;
background-color: $primary-color;
box-shadow: 0 20px 20px 0 rgba(0,0,0,0.14), 0 10px 50px 0 rgba(0,0,0,0.12), 0 30px 10px -20px rgba(0,0,0,0.2);
width: 100%;
height: 100%;
opacity: 0;
transform: scale(0);
transition:
transform .3s cubic-bezier(.42,0,.58,1),
opacity .3s cubic-bezier(.42,0,.58,1);
}
.tap-target-content {
position: relative;
display: table-cell;
}
.tap-target-wave {
&::before,
&::after {
content: '';
display: block;
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #ffffff;
}
&::before {
transform: scale(0);
transition: transform .3s;
}
&::after {
visibility: hidden;
transition:
opacity .3s,
transform .3s,
visibility 0s;
z-index: -1;
}
position: absolute;
border-radius: 50%;
z-index: 10001;
}
.tap-target-origin {
&:not(.btn),
&:not(.btn):hover {
background: none;
}
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
z-index: 10002;
position: absolute !important;
}
@media only screen and (max-width: 600px) {
.tap-target, .tap-target-wrapper {
width: 600px;
height: 600px;
}
}

View File

@ -0,0 +1,183 @@
/* Timepicker Containers */
.timepicker-modal {
max-width: 325px;
max-height: none;
}
.timepicker-container.modal-content {
display: flex;
flex-direction: column;
padding: 0;
}
.text-primary {
color: rgba(255, 255, 255, 1);
}
/* Clock Digital Display */
.timepicker-digital-display {
flex: 1 auto;
background-color: $secondary-color;
padding: 10px;
font-weight: 300;
}
.timepicker-text-container {
font-size: 4rem;
font-weight: bold;
text-align: center;
color: rgba(255, 255, 255, 0.6);
font-weight: 400;
position: relative;
user-select: none;
}
.timepicker-span-hours,
.timepicker-span-minutes,
.timepicker-span-am-pm div {
cursor: pointer;
}
.timepicker-span-hours {
margin-right: 3px;
}
.timepicker-span-minutes {
margin-left: 3px;
}
.timepicker-display-am-pm {
font-size: 1.3rem;
position: absolute;
right: 1rem;
bottom: 1rem;
font-weight: 400;
}
/* Analog Clock Display */
.timepicker-analog-display {
flex: 2.5 auto;
}
.timepicker-plate {
background-color: $timepicker-clock-plate-bg;
border-radius: 50%;
width: 270px;
height: 270px;
overflow: visible;
position: relative;
margin: auto;
margin-top: 25px;
margin-bottom: 5px;
user-select: none;
}
.timepicker-canvas,
.timepicker-dial {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.timepicker-minutes {
visibility: hidden;
}
.timepicker-tick {
border-radius: 50%;
color: $timepicker-clock-color;
line-height: 40px;
text-align: center;
width: 40px;
height: 40px;
position: absolute;
cursor: pointer;
font-size: 15px;
}
.timepicker-tick.active,
.timepicker-tick:hover {
background-color: transparentize($secondary-color, .75);
}
.timepicker-dial {
transition: transform 350ms, opacity 350ms;
}
.timepicker-dial-out {
&.timepicker-hours {
transform: scale(1.1, 1.1);
}
&.timepicker-minutes {
transform: scale(.8, .8);
}
opacity: 0;
}
.timepicker-canvas {
transition: opacity 175ms;
line {
stroke: $secondary-color;
stroke-width: 4;
stroke-linecap: round;
}
}
.timepicker-canvas-out {
opacity: 0.25;
}
.timepicker-canvas-bearing {
stroke: none;
fill: $secondary-color;
}
.timepicker-canvas-bg {
stroke: none;
fill: $secondary-color;
}
/* Footer */
.timepicker-footer {
margin: 0 auto;
padding: 5px 1rem;
display: flex;
justify-content: space-between;
}
.timepicker-clear {
color: $error-color;
}
.timepicker-close {
color: $secondary-color;
}
.timepicker-clear,
.timepicker-close {
padding: 0 20px;
}
/* Media Queries */
@media #{$medium-and-up} {
.timepicker-modal {
max-width: 600px;
}
.timepicker-container.modal-content {
flex-direction: row;
}
.timepicker-text-container {
top: 32%;
}
.timepicker-display-am-pm {
position: relative;
right: auto;
bottom: auto;
text-align: center;
margin-top: 1.2rem;
}
}

View File

@ -0,0 +1,58 @@
#toast-container {
display:block;
position: fixed;
z-index: 10000;
@media #{$small-and-down} {
min-width: 100%;
bottom: 0%;
}
@media #{$medium-only} {
left: 5%;
bottom: 7%;
max-width: 90%;
}
@media #{$large-and-up} {
top: 10%;
right: 7%;
max-width: 86%;
}
}
.toast {
@extend .z-depth-1;
border-radius: 2px;
top: 35px;
width: auto;
margin-top: 10px;
position: relative;
max-width:100%;
height: auto;
min-height: $toast-height;
line-height: 1.5em;
background-color: $toast-color;
padding: 10px 25px;
font-size: 1.1rem;
font-weight: 300;
color: $toast-text-color;
display: flex;
align-items: center;
justify-content: space-between;
cursor: default;
.toast-action {
color: $toast-action-color;
font-weight: 500;
margin-right: -25px;
margin-left: 3rem;
}
&.rounded{
border-radius: 24px;
}
@media #{$small-and-down} {
width: 100%;
border-radius: 0;
}
}

View File

@ -0,0 +1,32 @@
.material-tooltip {
padding: 10px 8px;
font-size: 1rem;
z-index: 2000;
background-color: transparent;
border-radius: 2px;
color: #fff;
min-height: 36px;
line-height: 120%;
opacity: 0;
position: absolute;
text-align: center;
max-width: calc(100% - 4px);
overflow: hidden;
left: 0;
top: 0;
pointer-events: none;
visibility: hidden;
background-color: #323232;
}
.backdrop {
position: absolute;
opacity: 0;
height: 7px;
width: 14px;
border-radius: 0 0 50% 50%;
background-color: #323232;
z-index: -1;
transform-origin: 50% 0%;
visibility: hidden;
}

View File

@ -0,0 +1,13 @@
// Scale transition
.scale-transition {
&.scale-out {
transform: scale(0);
transition: transform .2s !important;
}
&.scale-in {
transform: scale(1);
}
transition: transform .3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
}

View File

@ -0,0 +1,60 @@
a {
text-decoration: none;
}
html{
line-height: 1.5;
@media only screen and (min-width: 0) {
font-size: 14px;
}
@media only screen and (min-width: $medium-screen) {
font-size: 14.5px;
}
@media only screen and (min-width: $large-screen) {
font-size: 15px;
}
font-family: $font-stack;
font-weight: normal;
color: $off-black;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 400;
line-height: 1.3;
}
// Header Styles
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
h1 { font-size: $h1-fontsize; line-height: 110%; margin: ($h1-fontsize / 1.5) 0 ($h1-fontsize / 2.5) 0;}
h2 { font-size: $h2-fontsize; line-height: 110%; margin: ($h2-fontsize / 1.5) 0 ($h2-fontsize / 2.5) 0;}
h3 { font-size: $h3-fontsize; line-height: 110%; margin: ($h3-fontsize / 1.5) 0 ($h3-fontsize / 2.5) 0;}
h4 { font-size: $h4-fontsize; line-height: 110%; margin: ($h4-fontsize / 1.5) 0 ($h4-fontsize / 2.5) 0;}
h5 { font-size: $h5-fontsize; line-height: 110%; margin: ($h5-fontsize / 1.5) 0 ($h5-fontsize / 2.5) 0;}
h6 { font-size: $h6-fontsize; line-height: 110%; margin: ($h6-fontsize / 1.5) 0 ($h6-fontsize / 2.5) 0;}
// Text Styles
em { font-style: italic; }
strong { font-weight: 500; }
small { font-size: 75%; }
.light { font-weight: 300; }
.thin { font-weight: 200; }
.flow-text{
$i: 0;
@while $i <= $intervals {
@media only screen and (min-width : 360 + ($i * $interval-size)) {
font-size: 1.2rem * (1 + (.02 * $i));
}
$i: $i + 1;
}
// Handle below 360px screen
@media only screen and (max-width: 360px) {
font-size: 1.2rem;
}
}

View File

@ -0,0 +1,349 @@
// ==========================================================================
// Materialize variables
// ==========================================================================
//
// Table of Contents:
//
// 1. Colors
// 2. Badges
// 3. Buttons
// 4. Cards
// 5. Carousel
// 6. Collapsible
// 7. Chips
// 8. Date + Time Picker
// 9. Dropdown
// 10. Forms
// 11. Global
// 12. Grid
// 13. Navigation Bar
// 14. Side Navigation
// 15. Photo Slider
// 16. Spinners | Loaders
// 17. Tabs
// 18. Tables
// 19. Toasts
// 20. Typography
// 21. Footer
// 22. Flow Text
// 23. Collections
// 24. Progress Bar
// 1. Colors
// ==========================================================================
$primary-color: color("materialize-red", "lighten-2") !default;
$primary-color-light: lighten($primary-color, 15%) !default;
$primary-color-dark: darken($primary-color, 15%) !default;
$secondary-color: color("teal", "lighten-1") !default;
$success-color: color("green", "base") !default;
$error-color: color("red", "base") !default;
$link-color: color("light-blue", "darken-1") !default;
// 2. Badges
// ==========================================================================
$badge-bg-color: $secondary-color !default;
$badge-height: 22px !default;
// 3. Buttons
// ==========================================================================
// Shared styles
$button-border: none !default;
$button-background-focus: lighten($secondary-color, 4%) !default;
$button-font-size: 14px !default;
$button-icon-font-size: 1.3rem !default;
$button-height: 36px !default;
$button-padding: 0 16px !default;
$button-radius: 2px !default;
// Disabled styles
$button-disabled-background: #DFDFDF !default;
$button-disabled-color: #9F9F9F !default;
// Raised buttons
$button-raised-background: $secondary-color !default;
$button-raised-background-hover: lighten($button-raised-background, 5%) !default;
$button-raised-color: #fff !default;
// Large buttons
$button-large-font-size: 15px !default;
$button-large-icon-font-size: 1.6rem !default;
$button-large-height: $button-height * 1.5 !default;
$button-floating-large-size: 56px !default;
// Small buttons
$button-small-font-size: 13px !default;
$button-small-icon-font-size: 1.2rem !default;
$button-small-height: $button-height * .9 !default;
$button-floating-small-size: $button-height * .9 !default;
// Flat buttons
$button-flat-color: #343434 !default;
$button-flat-disabled-color: lighten(#999, 10%) !default;
// Floating buttons
$button-floating-background: $secondary-color !default;
$button-floating-background-hover: $button-floating-background !default;
$button-floating-color: #fff !default;
$button-floating-size: 40px !default;
$button-floating-radius: 50% !default;
// 4. Cards
// ==========================================================================
$card-padding: 24px !default;
$card-bg-color: #fff !default;
$card-link-color: color("orange", "accent-2") !default;
$card-link-color-light: lighten($card-link-color, 20%) !default;
// 5. Carousel
// ==========================================================================
$carousel-height: 400px !default;
$carousel-item-height: $carousel-height / 2 !default;
$carousel-item-width: $carousel-item-height !default;
// 6. Collapsible
// ==========================================================================
$collapsible-height: 3rem !default;
$collapsible-line-height: $collapsible-height !default;
$collapsible-header-color: #fff !default;
$collapsible-border-color: #ddd !default;
// 7. Chips
// ==========================================================================
$chip-bg-color: #e4e4e4 !default;
$chip-border-color: #9e9e9e !default;
$chip-selected-color: #26a69a !default;
$chip-margin: 5px !default;
// 8. Date + Time Picker
// ==========================================================================
$datepicker-display-font-size: 2.8rem;
$datepicker-calendar-header-color: #999;
$datepicker-weekday-color: rgba(0, 0, 0, .87) !default;
$datepicker-weekday-bg: darken($secondary-color, 7%) !default;
$datepicker-date-bg: $secondary-color !default;
$datepicker-year: rgba(255, 255, 255, .7) !default;
$datepicker-focus: rgba(0,0,0, .05) !default;
$datepicker-selected: $secondary-color !default;
$datepicker-selected-outfocus: desaturate(lighten($secondary-color, 35%), 15%) !default;
$datepicker-day-focus: transparentize(desaturate($secondary-color, 5%), .75) !default;
$datepicker-disabled-day-color: rgba(0, 0, 0, .3) !default;
$timepicker-clock-color: rgba(0, 0, 0, .87) !default;
$timepicker-clock-plate-bg: #eee !default;
// 9. Dropdown
// ==========================================================================
$dropdown-bg-color: #fff !default;
$dropdown-hover-bg-color: #eee !default;
$dropdown-color: $secondary-color !default;
$dropdown-item-height: 50px !default;
// 10. Forms
// ==========================================================================
// Text Inputs + Textarea
$input-height: 3rem !default;
$input-border-color: color("grey", "base") !default;
$input-border: 1px solid $input-border-color !default;
$input-background: #fff !default;
$input-error-color: $error-color !default;
$input-success-color: $success-color !default;
$input-focus-color: $secondary-color !default;
$input-font-size: 16px !default;
$input-margin-bottom: 8px;
$input-margin: 0 0 $input-margin-bottom 0 !default;
$input-padding: 0 !default;
$label-font-size: .8rem !default;
$input-disabled-color: rgba(0,0,0, .42) !default;
$input-disabled-solid-color: #949494 !default;
$input-disabled-border: 1px dotted $input-disabled-color !default;
$input-invalid-border: 1px solid $input-error-color !default;
$input-icon-size: 2rem;
$placeholder-text-color: lighten($input-border-color, 20%) !default;
// Radio Buttons
$radio-fill-color: $secondary-color !default;
$radio-empty-color: #5a5a5a !default;
$radio-border: 2px solid $radio-fill-color !default;
// Range
$range-height: 14px !default;
$range-width: 14px !default;
$track-height: 3px !default;
// Select
$select-border: 1px solid #f2f2f2 !default;
$select-background: rgba(255, 255, 255, 0.90) !default;
$select-focus: 1px solid lighten($secondary-color, 47%) !default;
$select-option-hover: rgba(0,0,0,.08) !default;
$select-option-focus: rgba(0,0,0,.08) !default;
$select-option-selected: rgba(0,0,0,.03) !default;
$select-padding: 5px !default;
$select-radius: 2px !default;
$select-disabled-color: rgba(0,0,0,.3) !default;
// Switches
$switch-bg-color: $secondary-color !default;
$switch-checked-lever-bg: desaturate(lighten($switch-bg-color, 25%), 25%) !default;
$switch-unchecked-bg: #F1F1F1 !default;
$switch-unchecked-lever-bg: rgba(0,0,0,.38) !default;
$switch-radius: 15px !default;
// 11. Global
// ==========================================================================
// Media Query Ranges
$small-screen-up: 601px !default;
$medium-screen-up: 993px !default;
$large-screen-up: 1201px !default;
$small-screen: 600px !default;
$medium-screen: 992px !default;
$large-screen: 1200px !default;
$medium-and-up: "only screen and (min-width : #{$small-screen-up})" !default;
$large-and-up: "only screen and (min-width : #{$medium-screen-up})" !default;
$extra-large-and-up: "only screen and (min-width : #{$large-screen-up})" !default;
$small-and-down: "only screen and (max-width : #{$small-screen})" !default;
$medium-and-down: "only screen and (max-width : #{$medium-screen})" !default;
$medium-only: "only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})" !default;
// 12. Grid
// ==========================================================================
$num-cols: 12 !default;
$gutter-width: 1.5rem !default;
$element-top-margin: $gutter-width/3 !default;
$element-bottom-margin: ($gutter-width*2)/3 !default;
// 13. Navigation Bar
// ==========================================================================
$navbar-height: 64px !default;
$navbar-line-height: $navbar-height !default;
$navbar-height-mobile: 56px !default;
$navbar-line-height-mobile: $navbar-height-mobile !default;
$navbar-font-size: 1rem !default;
$navbar-font-color: #fff !default;
$navbar-brand-font-size: 2.1rem !default;
// 14. Side Navigation
// ==========================================================================
$sidenav-width: 300px !default;
$sidenav-font-size: 14px !default;
$sidenav-font-color: rgba(0,0,0,.87) !default;
$sidenav-bg-color: #fff !default;
$sidenav-padding: 16px !default;
$sidenav-item-height: 48px !default;
$sidenav-line-height: $sidenav-item-height !default;
// 15. Photo Slider
// ==========================================================================
$slider-bg-color: color('grey', 'base') !default;
$slider-bg-color-light: color('grey', 'lighten-2') !default;
$slider-indicator-color: color('green', 'base') !default;
// 16. Spinners | Loaders
// ==========================================================================
$spinner-default-color: $secondary-color !default;
// 17. Tabs
// ==========================================================================
$tabs-underline-color: $primary-color-light !default;
$tabs-text-color: $primary-color !default;
$tabs-bg-color: #fff !default;
// 18. Tables
// ==========================================================================
$table-border-color: rgba(0,0,0,.12) !default;
$table-striped-color: rgba(242, 242, 242, 0.5) !default;
// 19. Toasts
// ==========================================================================
$toast-height: 48px !default;
$toast-color: #323232 !default;
$toast-text-color: #fff !default;
$toast-action-color: #eeff41;
// 20. Typography
// ==========================================================================
$font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif !default;
$off-black: rgba(0, 0, 0, 0.87) !default;
// Header Styles
$h1-fontsize: 4.2rem !default;
$h2-fontsize: 3.56rem !default;
$h3-fontsize: 2.92rem !default;
$h4-fontsize: 2.28rem !default;
$h5-fontsize: 1.64rem !default;
$h6-fontsize: 1.15rem !default;
// 21. Footer
// ==========================================================================
$footer-font-color: #fff !default;
$footer-bg-color: $primary-color !default;
$footer-copyright-font-color: rgba(255,255,255,.8) !default;
$footer-copyright-bg-color: rgba(51,51,51,.08) !default;
// 22. Flow Text
// ==========================================================================
$range : $large-screen - $small-screen !default;
$intervals: 20 !default;
$interval-size: $range / $intervals !default;
// 23. Collections
// ==========================================================================
$collection-border-color: #e0e0e0 !default;
$collection-bg-color: #fff !default;
$collection-active-bg-color: $secondary-color !default;
$collection-active-color: lighten($secondary-color, 55%) !default;
$collection-hover-bg-color: #ddd !default;
$collection-link-color: $secondary-color !default;
$collection-line-height: 1.5rem !default;
// 24. Progress Bar
// ==========================================================================
$progress-bar-color: $secondary-color !default;

View File

@ -0,0 +1,114 @@
/*!
* Waves v0.6.0
* http://fian.my.id/Waves
*
* Copyright 2014 Alfiana E. Sibuea and other contributors
* Released under the MIT license
* https://github.com/fians/Waves/blob/master/LICENSE
*/
.waves-effect {
position: relative;
cursor: pointer;
display: inline-block;
overflow: hidden;
user-select: none;
-webkit-tap-highlight-color: transparent;
vertical-align: middle;
z-index: 1;
transition: .3s ease-out;
.waves-ripple {
position: absolute;
border-radius: 50%;
width: 20px;
height: 20px;
margin-top:-10px;
margin-left:-10px;
opacity: 0;
background: rgba(0,0,0,0.2);
transition: all 0.7s ease-out;
transition-property: transform, opacity;
transform: scale(0);
pointer-events: none;
}
// Waves Colors
&.waves-light .waves-ripple {
background-color: rgba(255, 255, 255, 0.45);
}
&.waves-red .waves-ripple {
background-color: rgba(244, 67, 54, .70);
}
&.waves-yellow .waves-ripple {
background-color: rgba(255, 235, 59, .70);
}
&.waves-orange .waves-ripple {
background-color: rgba(255, 152, 0, .70);
}
&.waves-purple .waves-ripple {
background-color: rgba(156, 39, 176, 0.70);
}
&.waves-green .waves-ripple {
background-color: rgba(76, 175, 80, 0.70);
}
&.waves-teal .waves-ripple {
background-color: rgba(0, 150, 136, 0.70);
}
// Style input button bug.
input[type="button"], input[type="reset"], input[type="submit"] {
border: 0;
font-style: normal;
font-size: inherit;
text-transform: inherit;
background: none;
}
img {
position: relative;
z-index: -1;
}
}
.waves-notransition {
transition: none #{"!important"};
}
.waves-circle {
transform: translateZ(0);
-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
}
.waves-input-wrapper {
border-radius: 0.2em;
vertical-align: bottom;
.waves-button-input {
position: relative;
top: 0;
left: 0;
z-index: 1;
}
}
.waves-circle {
text-align: center;
width: 2.5em;
height: 2.5em;
line-height: 2.5em;
border-radius: 50%;
-webkit-mask-image: none;
}
.waves-block {
display: block;
}
/* Firefox Bug: link not triggered */
.waves-effect .waves-ripple {
z-index: -1;
}

View File

@ -0,0 +1,200 @@
/* Checkboxes
========================================================================== */
/* Remove default checkbox */
[type="checkbox"]:not(:checked),
[type="checkbox"]:checked {
position: absolute;
opacity: 0;
pointer-events: none;
}
// Checkbox Styles
[type="checkbox"] {
// Text Label Style
+ span:not(.lever) {
position: relative;
padding-left: 35px;
cursor: pointer;
display: inline-block;
height: 25px;
line-height: 25px;
font-size: 1rem;
user-select: none;
}
/* checkbox aspect */
+ span:not(.lever):before,
&:not(.filled-in) + span:not(.lever):after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 18px;
height: 18px;
z-index: 0;
border: 2px solid $radio-empty-color;
border-radius: 1px;
margin-top: 3px;
transition: .2s;
}
&:not(.filled-in) + span:not(.lever):after {
border: 0;
transform: scale(0);
}
&:not(:checked):disabled + span:not(.lever):before {
border: none;
background-color: $input-disabled-color;
}
// Focused styles
&.tabbed:focus + span:not(.lever):after {
transform: scale(1);
border: 0;
border-radius: 50%;
box-shadow: 0 0 0 10px rgba(0,0,0,.1);
background-color: rgba(0,0,0,.1);
}
}
[type="checkbox"]:checked {
+ span:not(.lever):before {
top: -4px;
left: -5px;
width: 12px;
height: 22px;
border-top: 2px solid transparent;
border-left: 2px solid transparent;
border-right: $radio-border;
border-bottom: $radio-border;
transform: rotate(40deg);
backface-visibility: hidden;
transform-origin: 100% 100%;
}
&:disabled + span:before {
border-right: 2px solid $input-disabled-color;
border-bottom: 2px solid $input-disabled-color;
}
}
/* Indeterminate checkbox */
[type="checkbox"]:indeterminate {
+ span:not(.lever):before {
top: -11px;
left: -12px;
width: 10px;
height: 22px;
border-top: none;
border-left: none;
border-right: $radio-border;
border-bottom: none;
transform: rotate(90deg);
backface-visibility: hidden;
transform-origin: 100% 100%;
}
// Disabled indeterminate
&:disabled + span:not(.lever):before {
border-right: 2px solid $input-disabled-color;
background-color: transparent;
}
}
// Filled in Style
[type="checkbox"].filled-in {
// General
+ span:not(.lever):after {
border-radius: 2px;
}
+ span:not(.lever):before,
+ span:not(.lever):after {
content: '';
left: 0;
position: absolute;
/* .1s delay is for check animation */
transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;
z-index: 1;
}
// Unchecked style
&:not(:checked) + span:not(.lever):before {
width: 0;
height: 0;
border: 3px solid transparent;
left: 6px;
top: 10px;
transform: rotateZ(37deg);
transform-origin: 100% 100%;
}
&:not(:checked) + span:not(.lever):after {
height: 20px;
width: 20px;
background-color: transparent;
border: 2px solid $radio-empty-color;
top: 0px;
z-index: 0;
}
// Checked style
&:checked {
+ span:not(.lever):before {
top: 0;
left: 1px;
width: 8px;
height: 13px;
border-top: 2px solid transparent;
border-left: 2px solid transparent;
border-right: 2px solid $input-background;
border-bottom: 2px solid $input-background;
transform: rotateZ(37deg);
transform-origin: 100% 100%;
}
+ span:not(.lever):after {
top: 0;
width: 20px;
height: 20px;
border: 2px solid $secondary-color;
background-color: $secondary-color;
z-index: 0;
}
}
// Focused styles
&.tabbed:focus + span:not(.lever):after {
border-radius: 2px;
border-color: $radio-empty-color;
background-color: rgba(0,0,0,.1);
}
&.tabbed:checked:focus + span:not(.lever):after {
border-radius: 2px;
background-color: $secondary-color;
border-color: $secondary-color;
}
// Disabled style
&:disabled:not(:checked) + span:not(.lever):before {
background-color: transparent;
border: 2px solid transparent;
}
&:disabled:not(:checked) + span:not(.lever):after {
border-color: transparent;
background-color: $input-disabled-solid-color;
}
&:disabled:checked + span:not(.lever):before {
background-color: transparent;
}
&:disabled:checked + span:not(.lever):after {
background-color: $input-disabled-solid-color;
border-color: $input-disabled-solid-color;
}
}

View File

@ -0,0 +1,44 @@
/* File Input
========================================================================== */
.file-field {
position: relative;
.file-path-wrapper {
overflow: hidden;
padding-left: 10px;
}
input.file-path { width: 100%; }
.btn {
float: left;
height: $input-height;
line-height: $input-height;
}
span {
cursor: pointer;
}
input[type=file] {
// Needed to override webkit button
&::-webkit-file-upload-button {
display: none;
}
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
width: 100%;
margin: 0;
padding: 0;
font-size: 20px;
cursor: pointer;
opacity: 0;
filter: alpha(opacity=0);
}
}

View File

@ -0,0 +1,22 @@
// Remove Focus Boxes
select:focus {
outline: $select-focus;
}
button:focus {
outline: none;
background-color: $button-background-focus;
}
label {
font-size: $label-font-size;
color: $input-border-color;
}
@import 'input-fields';
@import 'radio-buttons';
@import 'checkboxes';
@import 'switches';
@import 'select';
@import 'file-input';
@import 'range';

View File

@ -0,0 +1,354 @@
/* Text Inputs + Textarea
========================================================================== */
/* Style Placeholders */
::placeholder {
color: $placeholder-text-color;
}
/* Text inputs */
input:not([type]),
input[type=text]:not(.browser-default),
input[type=password]:not(.browser-default),
input[type=email]:not(.browser-default),
input[type=url]:not(.browser-default),
input[type=time]:not(.browser-default),
input[type=date]:not(.browser-default),
input[type=datetime]:not(.browser-default),
input[type=datetime-local]:not(.browser-default),
input[type=tel]:not(.browser-default),
input[type=number]:not(.browser-default),
input[type=search]:not(.browser-default),
textarea.materialize-textarea {
// General Styles
background-color: transparent;
border: none;
border-bottom: $input-border;
border-radius: 0;
outline: none;
height: $input-height;
width: 100%;
font-size: $input-font-size;
margin: $input-margin;
padding: $input-padding;
box-shadow: none;
box-sizing: content-box;
transition: box-shadow .3s, border .3s;
// Disabled input style
&:disabled,
&[readonly="readonly"] {
color: $input-disabled-color;
border-bottom: $input-disabled-border;
}
// Disabled label style
&:disabled+label,
&[readonly="readonly"]+label {
color: $input-disabled-color;
}
// Focused input style
&:focus:not([readonly]) {
border-bottom: 1px solid $input-focus-color;
box-shadow: 0 1px 0 0 $input-focus-color;
}
// Focused label style
&:focus:not([readonly])+label {
color: $input-focus-color;
}
// Hide helper text on data message
&.valid ~ .helper-text[data-success],
&:focus.valid ~ .helper-text[data-success],
&.invalid ~ .helper-text[data-error],
&:focus.invalid ~ .helper-text[data-error] {
@extend %hidden-text;
}
// Valid Input Style
&.valid,
&:focus.valid {
@extend %valid-input-style;
}
// Custom Success Message
&.valid ~ .helper-text:after,
&:focus.valid ~ .helper-text:after {
@extend %custom-success-message;
}
&:focus.valid ~ label {
color: $input-success-color;
}
// Invalid Input Style
&.invalid,
&:focus.invalid {
@extend %invalid-input-style;
}
// Custom Error message
&.invalid ~ .helper-text:after,
&:focus.invalid ~ .helper-text:after {
@extend %custom-error-message;
}
&:focus.invalid ~ label {
color: $input-error-color;
}
// Full width label when using validate for error messages
&.validate + label {
width: 100%;
}
// Form Message Shared Styles
& + label:after {
@extend %input-after-style;
}
}
/* Validation Sass Placeholders */
%valid-input-style {
border-bottom: 1px solid $input-success-color;
box-shadow: 0 1px 0 0 $input-success-color;
}
%invalid-input-style {
border-bottom: $input-invalid-border;
box-shadow: 0 1px 0 0 $input-error-color;
}
%hidden-text {
color: transparent;
user-select: none;
pointer-events: none;
}
%custom-success-message {
content: attr(data-success);
color: $input-success-color;
}
%custom-error-message {
content: attr(data-error);
color: $input-error-color;
}
%input-after-style {
display: block;
content: "";
position: absolute;
top: 100%;
left: 0;
opacity: 0;
transition: .2s opacity ease-out, .2s color ease-out;
}
// Styling for input field wrapper
.input-field {
// Inline styles
&.inline {
display: inline-block;
vertical-align: middle;
margin-left: 5px;
input,
.select-dropdown {
margin-bottom: 1rem;
}
}
// Gutter spacing
&.col {
label {
left: $gutter-width / 2;
}
.prefix ~ label,
.prefix ~ .validate ~ label {
width: calc(100% - 3rem - #{$gutter-width});
}
}
position: relative;
margin-top: 1rem;
margin-bottom: 1rem;
& > label {
color: $input-border-color;
position: absolute;
top: 0;
left: 0;
font-size: 1rem;
cursor: text;
transition: transform .2s ease-out, color .2s ease-out;
transform-origin: 0% 100%;
text-align: initial;
transform: translateY(12px);
&:not(.label-icon).active {
transform: translateY(-14px) scale(.8);
transform-origin: 0 0;
}
}
// Autofill + date + time inputs
& > input[type]:-webkit-autofill:not(.browser-default):not([type="search"]) + label,
& > input[type=date]:not(.browser-default) + label,
& > input[type=time]:not(.browser-default) + label {
transform: translateY(-14px) scale(.8);
transform-origin: 0 0;
}
.helper-text {
&::after {
opacity: 1;
position: absolute;
top: 0;
left: 0;
}
position: relative;
min-height: 18px;
display: block;
font-size: 12px;
color: rgba(0,0,0,.54);
}
// Prefix Icons
.prefix {
position: absolute;
width: $input-height;
font-size: $input-icon-size;
transition: color .2s;
top: ($input-height - $input-icon-size) / 2;
&.active { color: $input-focus-color; }
}
.prefix ~ input,
.prefix ~ textarea,
.prefix ~ label,
.prefix ~ .validate ~ label,
.prefix ~ .helper-text,
.prefix ~ .autocomplete-content {
margin-left: 3rem;
width: 92%;
width: calc(100% - 3rem);
}
.prefix ~ label { margin-left: 3rem; }
@media #{$medium-and-down} {
.prefix ~ input {
width: 86%;
width: calc(100% - 3rem);
}
}
@media #{$small-and-down} {
.prefix ~ input {
width: 80%;
width: calc(100% - 3rem);
}
}
}
/* Search Field */
.input-field input[type=search] {
display: block;
line-height: inherit;
transition: .3s background-color;
.nav-wrapper & {
height: inherit;
padding-left: 4rem;
width: calc(100% - 4rem);
border: 0;
box-shadow: none;
}
&:focus:not(.browser-default) {
background-color: $input-background;
border: 0;
box-shadow: none;
color: #444;
& + label i,
& ~ .mdi-navigation-close,
& ~ .material-icons {
color: #444;
}
}
& + .label-icon {
transform: none;
left: 1rem;
}
& ~ .mdi-navigation-close,
& ~ .material-icons {
position: absolute;
top: 0;
right: 1rem;
color: transparent;
cursor: pointer;
font-size: $input-icon-size;
transition: .3s color;
}
}
/* Textarea */
// Default textarea
textarea {
width: 100%;
height: $input-height;
background-color: transparent;
&.materialize-textarea {
line-height: normal;
overflow-y: hidden; /* prevents scroll bar flash */
padding: .8rem 0 .8rem 0; /* prevents text jump on Enter keypress */
resize: none;
min-height: $input-height;
box-sizing: border-box;
}
}
// For textarea autoresize
.hiddendiv {
visibility: hidden;
white-space: pre-wrap;
word-wrap: break-word;
overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */
padding-top: 1.2rem; /* prevents text jump on Enter keypress */
// Reduces repaints
position: absolute;
top: 0;
z-index: -1;
}
/* Autocomplete */
.autocomplete-content {
li {
.highlight { color: #444; }
img {
height: $dropdown-item-height - 10;
width: $dropdown-item-height - 10;
margin: 5px 15px;
}
}
}
/* Character Counter */
.character-counter {
min-height: 18px;
}

View File

@ -0,0 +1,115 @@
/* Radio Buttons
========================================================================== */
// Remove default Radio Buttons
[type="radio"]:not(:checked),
[type="radio"]:checked {
position: absolute;
opacity: 0;
pointer-events: none;
}
[type="radio"]:not(:checked) + span,
[type="radio"]:checked + span {
position: relative;
padding-left: 35px;
cursor: pointer;
display: inline-block;
height: 25px;
line-height: 25px;
font-size: 1rem;
transition: .28s ease;
user-select: none;
}
[type="radio"] + span:before,
[type="radio"] + span:after {
content: '';
position: absolute;
left: 0;
top: 0;
margin: 4px;
width: 16px;
height: 16px;
z-index: 0;
transition: .28s ease;
}
/* Unchecked styles */
[type="radio"]:not(:checked) + span:before,
[type="radio"]:not(:checked) + span:after,
[type="radio"]:checked + span:before,
[type="radio"]:checked + span:after,
[type="radio"].with-gap:checked + span:before,
[type="radio"].with-gap:checked + span:after {
border-radius: 50%;
}
[type="radio"]:not(:checked) + span:before,
[type="radio"]:not(:checked) + span:after {
border: 2px solid $radio-empty-color;
}
[type="radio"]:not(:checked) + span:after {
transform: scale(0);
}
/* Checked styles */
[type="radio"]:checked + span:before {
border: 2px solid transparent;
}
[type="radio"]:checked + span:after,
[type="radio"].with-gap:checked + span:before,
[type="radio"].with-gap:checked + span:after {
border: $radio-border;
}
[type="radio"]:checked + span:after,
[type="radio"].with-gap:checked + span:after {
background-color: $radio-fill-color;
}
[type="radio"]:checked + span:after {
transform: scale(1.02);
}
/* Radio With gap */
[type="radio"].with-gap:checked + span:after {
transform: scale(.5);
}
/* Focused styles */
[type="radio"].tabbed:focus + span:before {
box-shadow: 0 0 0 10px rgba(0,0,0,.1);
}
/* Disabled Radio With gap */
[type="radio"].with-gap:disabled:checked + span:before {
border: 2px solid $input-disabled-color;
}
[type="radio"].with-gap:disabled:checked + span:after {
border: none;
background-color: $input-disabled-color;
}
/* Disabled style */
[type="radio"]:disabled:not(:checked) + span:before,
[type="radio"]:disabled:checked + span:before {
background-color: transparent;
border-color: $input-disabled-color;
}
[type="radio"]:disabled + span {
color: $input-disabled-color;
}
[type="radio"]:disabled:not(:checked) + span:before {
border-color: $input-disabled-color;
}
[type="radio"]:disabled:checked + span:after {
background-color: $input-disabled-color;
border-color: $input-disabled-solid-color;
}

View File

@ -0,0 +1,161 @@
/* Range
========================================================================== */
.range-field {
position: relative;
}
input[type=range],
input[type=range] + .thumb {
@extend .no-select;
cursor: pointer;
}
input[type=range] {
position: relative;
background-color: transparent;
border: none;
outline: none;
width: 100%;
margin: 15px 0;
padding: 0;
&:focus {
outline: none;
}
}
input[type=range] + .thumb {
position: absolute;
top: 10px;
left: 0;
border: none;
height: 0;
width: 0;
border-radius: 50%;
background-color: $radio-fill-color;
margin-left: 7px;
transform-origin: 50% 50%;
transform: rotate(-45deg);
.value {
display: block;
width: 30px;
text-align: center;
color: $radio-fill-color;
font-size: 0;
transform: rotate(45deg);
}
&.active {
border-radius: 50% 50% 50% 0;
.value {
color: $input-background;
margin-left: -1px;
margin-top: 8px;
font-size: 10px;
}
}
}
// Shared
@mixin range-track {
height: $track-height;
background: #c2c0c2;
border: none;
}
@mixin range-thumb {
border: none;
height: $range-height;
width: $range-width;
border-radius: 50%;
background: $radio-fill-color;
transition: box-shadow .3s;
}
// WebKit
input[type=range] {
-webkit-appearance: none;
}
input[type=range]::-webkit-slider-runnable-track {
@include range-track;
}
input[type=range]::-webkit-slider-thumb {
@include range-thumb;
-webkit-appearance: none;
background-color: $radio-fill-color;
transform-origin: 50% 50%;
margin: -5px 0 0 0;
}
.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {
box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);
}
// FireFox
input[type=range] {
/* fix for FF unable to apply focus style bug */
border: 1px solid white;
/*required for proper track sizing in FF*/
}
input[type=range]::-moz-range-track {
@include range-track;
}
input[type=range]::-moz-focus-inner {
border: 0;
}
input[type=range]::-moz-range-thumb {
@include range-thumb;
margin-top: -5px;
}
// hide the outline behind the border
input[type=range]:-moz-focusring {
outline: 1px solid #fff;
outline-offset: -1px;
}
.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {
box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);
}
// IE 10+
input[type=range]::-ms-track {
height: $track-height;
// remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead
background: transparent;
// leave room for the larger thumb to overflow with a transparent border */
border-color: transparent;
border-width: 6px 0;
/*remove default tick marks*/
color: transparent;
}
input[type=range]::-ms-fill-lower {
background: #777;
}
input[type=range]::-ms-fill-upper {
background: #ddd;
}
input[type=range]::-ms-thumb {
@include range-thumb;
}
.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {
box-shadow: 0 0 0 10px rgba($radio-fill-color, .26);
}

View File

@ -0,0 +1,180 @@
/* Select Field
========================================================================== */
select { display: none; }
select.browser-default { display: block; }
select {
background-color: $select-background;
width: 100%;
padding: $select-padding;
border: $select-border;
border-radius: $select-radius;
height: $input-height;
}
.select-label {
position: absolute;
}
.select-wrapper {
&.valid .helper-text[data-success],
&.invalid ~ .helper-text[data-error] {
@extend %hidden-text;
}
&.valid {
& > input.select-dropdown {
@extend %valid-input-style;
}
& ~ .helper-text:after {
@extend %custom-success-message;
}
}
&.invalid {
& > input.select-dropdown,
& > input.select-dropdown:focus {
@extend %invalid-input-style;
}
& ~ .helper-text:after {
@extend %custom-error-message;
}
}
&.valid + label,
&.invalid + label {
width: 100%;
pointer-events: none;
}
& + label:after {
@extend %input-after-style;
}
position: relative;
input.select-dropdown {
&:focus {
border-bottom: 1px solid $input-focus-color;
}
position: relative;
cursor: pointer;
background-color: transparent;
border: none;
border-bottom: $input-border;
outline: none;
height: $input-height;
line-height: $input-height;
width: 100%;
font-size: $input-font-size;
margin: $input-margin;
padding: 0;
display: block;
user-select:none;
z-index: 1;
}
.caret {
position: absolute;
right: 0;
top: 0;
bottom: 0;
margin: auto 0;
z-index: 0;
fill: rgba(0,0,0,.87);
}
& + label {
position: absolute;
top: -26px;
font-size: $label-font-size;
}
}
// Disabled styles
select:disabled {
color: $input-disabled-color;
}
.select-wrapper.disabled {
+ label {
color: $input-disabled-color;
}
.caret {
fill: $input-disabled-color;
}
}
.select-wrapper input.select-dropdown:disabled {
color: $input-disabled-color;
cursor: default;
user-select: none;
}
.select-wrapper i {
color: $select-disabled-color;
}
.select-dropdown li.disabled,
.select-dropdown li.disabled > span,
.select-dropdown li.optgroup {
color: $select-disabled-color;
background-color: transparent;
}
body.keyboard-focused {
.select-dropdown.dropdown-content li:focus {
background-color: $select-option-focus;
}
}
.select-dropdown.dropdown-content {
li {
&:hover {
background-color: $select-option-hover;
}
&.selected {
background-color: $select-option-selected;
}
}
}
// Prefix Icons
.prefix ~ .select-wrapper {
margin-left: 3rem;
width: 92%;
width: calc(100% - 3rem);
}
.prefix ~ label { margin-left: 3rem; }
// Icons
.select-dropdown li {
img {
height: $dropdown-item-height - 10;
width: $dropdown-item-height - 10;
margin: 5px 15px;
float: right;
}
}
// Optgroup styles
.select-dropdown li.optgroup {
border-top: 1px solid $dropdown-hover-bg-color;
&.selected > span {
color: rgba(0, 0, 0, .7);
}
& > span {
color: rgba(0, 0, 0, .4);
}
& ~ li.optgroup-option {
padding-left: 1rem;
}
}

View File

@ -0,0 +1,89 @@
/* Switch
========================================================================== */
.switch,
.switch * {
-webkit-tap-highlight-color: transparent;
user-select: none;
}
.switch label {
cursor: pointer;
}
.switch label input[type=checkbox] {
opacity: 0;
width: 0;
height: 0;
&:checked + .lever {
background-color: $switch-checked-lever-bg;
&:before, &:after {
left: 18px;
}
&:after {
background-color: $switch-bg-color;
}
}
}
.switch label .lever {
content: "";
display: inline-block;
position: relative;
width: 36px;
height: 14px;
background-color: $switch-unchecked-lever-bg;
border-radius: $switch-radius;
margin-right: 10px;
transition: background 0.3s ease;
vertical-align: middle;
margin: 0 16px;
&:before, &:after {
content: "";
position: absolute;
display: inline-block;
width: 20px;
height: 20px;
border-radius: 50%;
left: 0;
top: -3px;
transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;
}
&:before {
background-color: transparentize($switch-bg-color, .85);
}
&:after {
background-color: $switch-unchecked-bg;
box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
}
}
// Switch active style
input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,
input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {
transform: scale(2.4);
background-color: transparentize($switch-bg-color, .85);
}
input[type=checkbox]:not(:disabled) ~ .lever:active:before,
input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {
transform: scale(2.4);
background-color: rgba(0,0,0,.08);
}
// Disabled Styles
.switch input[type=checkbox][disabled] + .lever {
cursor: default;
background-color: rgba(0,0,0,.12);
}
.switch label input[type=checkbox][disabled] + .lever:after,
.switch label input[type=checkbox][disabled]:checked + .lever:after {
background-color: $input-disabled-solid-color;
}

41
src/materialize/sass/materialize.scss vendored Normal file
View File

@ -0,0 +1,41 @@
@charset "UTF-8";
// Color
@import "components/color-variables";
@import "components/color-classes";
// Variables;
@import "components/variables";
// Reset
@import "components/normalize";
// components
@import "components/global";
@import "components/badges";
@import "components/icons-material-design";
@import "components/grid";
@import "components/navbar";
@import "components/typography";
@import "components/transitions";
@import "components/cards";
@import "components/toast";
@import "components/tabs";
@import "components/tooltip";
@import "components/buttons";
@import "components/dropdown";
@import "components/waves";
@import "components/modal";
@import "components/collapsible";
@import "components/chips";
@import "components/materialbox";
@import "components/forms/forms";
@import "components/table_of_contents";
@import "components/sidenav";
@import "components/preloader";
@import "components/slider";
@import "components/carousel";
@import "components/tapTarget";
@import "components/pulse";
@import "components/datepicker";
@import "components/timepicker";

View File

@ -29,16 +29,6 @@ const rutas = {
path: '/a/', path: '/a/',
name: 'Administracion', name: 'Administracion',
component: () => import('./views/Administracion.vue') component: () => import('./views/Administracion.vue')
},
{
path: '/cambios',
name: 'Lista de Cambios',
component: () => import('./views/ListaDeCambios.vue')
},
{
path: '/nosotros',
name: 'Nosotros',
component: () => import('./views/Nosotros.vue')
} }
], ],
scrollBehavior (to: any, from: any, savedPosition: any) { scrollBehavior (to: any, from: any, savedPosition: any) {

View File

@ -10,12 +10,8 @@
font-style: normal font-style: normal
font-weight: bold font-weight: bold
// Colores para el modo oscuro
// body -> background-color: black
// caja -> background-color: #1c1c1c
// color: #d2d2d2
body body
background-color: #eeeeee
font: font:
family: "Open Sans", serif family: "Open Sans", serif
size: large size: large
@ -24,38 +20,8 @@ body
user-select: none user-select: none
.caja .caja
background-color: white
margin: 10px 0 margin: 10px 0
box-shadow: 2px 2px 2px darkgrey
border-radius: 3px border-radius: 3px
padding: 15px padding: 15px
box-shadow: 0px 0px 2px #aaaaaa
.background1
//
// background-color: black
background-color: white
.background2
//
// background-color: #101010
background-color: #fafafa
.background__panel-descarga
background-color: #f2f2f2
// background-color: #1d1d1d
.colorTexto
//
// color: #d2d2d2
color: #101010
.sombraCaja
//
box-shadow: 2px 2px 2px #353535
.sombraTitulo
// text-shadow: 2px 2px 0 #ffffff, 6px 6px 0 #DDDDDD
text-shadow: 2px 2px 0 #373737, 6px 6px 0 #414141
.colorPrincipal
// color: #23bf87
color: #22a170

View File

@ -1,7 +1,6 @@
<template> <template>
<div class="background1"> <div class="container">
<div class="container" style="padding-top: 10px"> <div class="caja">
<div class="caja colorTexto background2" style="margin-top: 0">
Administracion. <br> Administracion. <br>
No voy a hacer muchas cosas por ahora porque esto es para mi :p <br> No voy a hacer muchas cosas por ahora porque esto es para mi :p <br>
<br> <br>
@ -24,7 +23,7 @@
</div> </div>
<br> <br>
<div class="caja colorTexto background2"> <div class="caja">
<button class="btn" @click="mostrarCrearAnime">Crear un anime</button> <button class="btn" @click="mostrarCrearAnime">Crear un anime</button>
<br> <br>
@ -39,7 +38,6 @@
<br> <br>
<br> <br>
</div> </div>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="background1"> <div>
<div class="container"> <div class="container">
<titulo-principal /> <titulo-principal />
<barra-titulo /> <barra-titulo />
@ -23,7 +23,6 @@
import BarraTitulo from '../components/Anime/BarraTitulo.vue' import BarraTitulo from '../components/Anime/BarraTitulo.vue'
import Tarjeta from '../components/Anime/Tarjeta.vue' import Tarjeta from '../components/Anime/Tarjeta.vue'
import MiFooter from '../components/mi-footer.vue' import MiFooter from '../components/mi-footer.vue'
import { global } from "../global";
export default { export default {
name: "Anime", name: "Anime",
@ -39,8 +38,6 @@
'mi-footer': MiFooter 'mi-footer': MiFooter
}, },
created: function () { created: function () {
global.color = '#22a170';
if (window.indiceAnimes[0]) { if (window.indiceAnimes[0]) {
console.log("Existe we v:"); console.log("Existe we v:");
console.log(window.indiceAnimes); console.log(window.indiceAnimes);

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="background1"> <div>
<nav-bar <nav-bar
:variante="'Anime'" :variante="'Anime'"
:anio="parseInt(this.$route.params.anio)" :anio="parseInt(this.$route.params.anio)"
@ -19,7 +19,9 @@
</div> </div>
<div class="col l4 hide-on-med-and-down"> <div class="col l4 hide-on-med-and-down">
<barra-lateral /> <div class="caja">
we
</div>
</div> </div>
</div> </div>
<mi-footer /> <mi-footer />
@ -29,7 +31,6 @@
<script> <script>
import ComponenteCarga from '../components/comp-cargando.vue'; import ComponenteCarga from '../components/comp-cargando.vue';
import { global } from "../global"; import { global } from "../global";
import BarraLateral from '../components/AnimeView/BarraLateral.vue';
export default { export default {
name: "AnimeView", name: "AnimeView",
@ -46,7 +47,6 @@
'mi-footer': () => ({ 'mi-footer': () => ({
component: import('../components/mi-footer') component: import('../components/mi-footer')
}), }),
'barra-lateral': BarraLateral
}, },
data: function () { data: function () {
return { return {

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="background1"> <div>
<div class="container"> <div class="container">
<titulo-principal /> <titulo-principal />
<slider-reciente /> <slider-reciente />
@ -36,8 +36,6 @@ import sliderReciente from '../components/slider-reciente.vue'
import tarjetaMenuPrin from '../components/tarjeta-menu-princ.vue' import tarjetaMenuPrin from '../components/tarjeta-menu-princ.vue'
import featuresCard from '../components/features-card.vue' import featuresCard from '../components/features-card.vue'
import footer from '../components/mi-footer.vue' import footer from '../components/mi-footer.vue'
import { global } from "../global";
export default { export default {
components: { components: {
@ -46,9 +44,6 @@ export default {
'tarjeta-menu-prin': tarjetaMenuPrin, 'tarjeta-menu-prin': tarjetaMenuPrin,
'features-card': featuresCard, 'features-card': featuresCard,
'mi-footer': footer 'mi-footer': footer
},
created: function () {
global.color = '#22a170';
} }
} }
</script> </script>

View File

@ -1,43 +1,10 @@
<template> <template>
<div> $END$
<nav-bar variante="" :anio="0" temporada="" nombre="" :renderizar-barra-inferior="false"/>
<div class="container row">
<div class="col l8 m12 s12">
<div class="caja contenido">
<cambio :data="'0.1'" />
</div>
</div>
<div class="col l4 hide-on-med-and-down">
<div class="caja">
:c
</div>
</div>
</div>
<mi-footer />
</div>
</template> </template>
<script> <script>
import NavBar from '../components/AnimeView/NavBar.vue'
import MiFooter from '../components/mi-footer.vue'
import Cambio from '../components/ListaDeCambios/Cambio.vue'
import { global } from "../global";
const YAML = require('yaml');
export default { export default {
name: "ListaDeCambios", name: "ListaDeCambios"
components: {
'nav-bar': NavBar,
'mi-footer': MiFooter,
cambio: Cambio
},
created: function () {
global.color = '#23bf87';
}
} }
</script> </script>

View File

@ -1,21 +1,10 @@
<template> <template>
<div> $END$
<nav-bar variante="" :anio="0" temporada="" nombre="" :renderizar-barra-inferior="false"/>
</div>
</template> </template>
<script> <script>
import NavBar from '../components/AnimeView/NavBar.vue'
import { global } from "../global";
export default { export default {
name: "Nosotros", name: "Nosotros"
components: {
'nav-bar': NavBar
},
created: function () {
global.color = '#23bf87';
}
} }
</script> </script>

View File

@ -1,35 +0,0 @@
interface Data {
anime_ID: number,
num_ED: number,
nombre: string,
artista: string,
eps: string
}
const nuevoED = (req: any, res: any) => {
const YAML = require('yaml');
const data: Data = YAML.parse(req.body.data);
const con = require('../../index').conexionMySQL;
if (data) {
const query = `INSERT INTO ED (anime_ID, num_ED, nombre, artista, eps) VALUES ( ${data.anime_ID}, ${data.num_ED},
${con.escape(data.nombre)}, ${con.escape(data.artista)}, ${con.escape(data.eps)} )`;
con.query(query, (err: Error) => {
if (!err) {
res.send("exito: true");
} else {
res.send("error: true");
console.log("Error al ejecutar query en /Admin/ED/nuevoED (con.query):\n" + query + "\n" + err);
}
});
} else {
res.send("error: true");
console.log("Error. La data no existe en /Admin/ED/nuevoED (con.connect)");
}
};
module.exports.nuevoED = nuevoED;

View File

@ -1,38 +0,0 @@
interface RespuestaED {
ED_ID: number,
anime_ID: number,
num_ED: number,
nombre: string,
artista: string,
eps: string
}
const obtenerEDs = (req: any, res: any) => {
const YAML = require('yaml');
const anime_ID: number = req.params.anime_ID;
const con = require('../../index').conexionMySQL;
if (anime_ID) {
const query = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`;
con.query(query, (err: Error, response: RespuestaED[]) => {
if (!err) {
res.send(YAML.stringify(response));
} else {
res.send("error: true");
console.log("Error al ejecutar query en /Admin/ED/nuevoED (con.query):\n" + query + "\n" + err);
}
});
} else {
res.send("error: true");
console.log("Error en /Admin/ED/obtenerEDs: anime_ID no existe.");
}
};
module.exports.obtenerEDs = obtenerEDs;

View File

@ -1,39 +0,0 @@
interface formatoDataARecibir {
opcion_ID: number,
num_ep: number,
visitas: number,
link: string,
peso: string
}
const crearLink = (req: any, res: any) => {
const con = require('../../index').conexionMySQL;
const YAML = require('yaml');
const parametros: formatoDataARecibir = YAML.parse(req.body.params);
if (parametros) {
const query = `INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (${parametros.opcion_ID},
${parametros.num_ep}, ${parametros.visitas}, ${con.escape(parametros.link)}, ${con.escape(parametros.peso)} )`;
con.query(query, (err: Error) => {
if (!err) {
res.send("error: false");
} else {
console.log("Error al ejecutar query en /Admin/Eps/crearEp -> con.query (linea 20). Query y error:\n" + query + "\n" + parametros);
res.send("error: true");
}
});
} else {
console.log("Error. 'parametros' no existe en /Admin/Eps/crearEp -> con.connect (linea 16):\n" + parametros);
res.send("error: true");
}
};
module.exports.crearLink = crearLink;

View File

@ -1,34 +0,0 @@
import {Connection, MysqlError} from "mysql";
import * as core from "express-serve-static-core";
const con: Connection = require('../../index').conexionMySQL;
const YAML = require('yaml');
interface respuesta {
peso: string
}
const estadisticas = (req: core.Request, res: core.Response) => {
con.query(`SELECT peso FROM eps`,(err: MysqlError, respuestas: respuesta[]) => {
if (!err) {
let totalMB = 0;
let cantidadEps = 0;
respuestas.forEach(data => {
totalMB += parseInt(data.peso);
cantidadEps++;
});
const respuesta: any = {
episodios: cantidadEps,
gigas: (totalMB/1024).toFixed(2)
};
res.send(YAML.stringify(respuesta));
}
});
};
module.exports.estadisticas = estadisticas;

View File

@ -1,38 +0,0 @@
interface epsRespuesta {
ep_ID: number,
opcion_ID: number,
num_ep: number,
visitas: number,
link: string,
peso: string
}
const obtenerLinks = (req: any, res: any) => {
const con = require('../../index').conexionMySQL;
const YAML = require('yaml');
const opcion_ID = req.params.opcion_ID;
if (opcion_ID) {
const query = `SELECT * FROM eps WHERE opcion_ID=${opcion_ID}`;
con.query(query, (err: Error, response: epsRespuesta[]) => {
if (!err) {
res.send(YAML.stringify(response));
} else {
console.log("Error al ejecutar query en /Admin/Eps/obtenerEps con.query (linea 21). Query:\n" + query + "\nError: \n" + err);
res.send("error: true");
}
});
} else {
console.log("Error. opcion_ID no existe en /Admin/Eps/obtenerEps con.connect (linea 8)");
res.send("error: true");
}
};
module.exports.obtenerLinks = obtenerLinks;

View File

@ -1,40 +0,0 @@
interface respuestaLinks {
opcion_ID: number,
links_ID: number,
num_opcion: number,
formato: string,
res: string,
servidor: string,
color: string
}
const obtenerVariantes = (req: any, res: any) => {
const con = require('../../index').conexionMySQL;
const YAML = require('yaml');
const anime_ID: string = req.params.anime_ID;
if (anime_ID) {
const query = `SELECT * FROM links_opciones WHERE links_ID=(SELECT links_ID FROM links WHERE anime_ID=${anime_ID})`;
con.query (query, (err: Error, response: respuestaLinks[]) => {
if (!err) {
res.send(YAML.stringify(response));
} else {
console.log("Error al ejecutar query sql. La query era:\n" + query + "\n y el error es:\n" + err);
res.send("error: true");
}
});
} else {
console.log("Error. anime_ID no existe en Admin/Eps/obtenerVariantes con.connect:\n" + anime_ID);
res.send("error: true");
}
};
module.exports.obtenerVariantes = obtenerVariantes;

View File

@ -1,14 +1,16 @@
const nuevoOP = (req: any, res: any) => { const nuevoOP = (req: any, res: any) => {
const con = require('../../index').conexionMySQL; const con = require('../../mysql').obtenerConexionMySql();
const YAML = require('yaml'); const YAML = require('yaml');
const data = YAML.parse(req.body.data); const data = YAML.parse(req.body.data);
con.connect((err: any) => {
if (!err) {
con.query( con.query(
`INSERT INTO OP (anime_ID, num_OP, nombre, artista, eps) VALUES \ `INSERT INTO OP (anime_ID, num_OP, nombre, artista, eps) VALUES \
( ${con.escape(data['anime_ID'])}, ${con.escape(data['num_OP'])}, ${con.escape(data['nombre'])}, (${con.escape(data['anime_ID'])}, ${con.escape(data['num_OP'])}, ${con.escape(data['nombre'])}, ${con.escape(data['artista'])}, ${con.escape(data['eps'])})`,
${con.escape(data['artista'])}, ${con.escape(data['eps'])} )`,
(err: any) => { (err: any) => {
if (!err) { if (!err) {
@ -20,6 +22,11 @@ const nuevoOP = (req: any, res: any) => {
} }
); );
} else {
}
});
}; };
module.exports.nuevoOP = nuevoOP; module.exports.nuevoOP = nuevoOP;

View File

@ -1,28 +1,31 @@
const obtenerOPs = (req: any, res: any) => { const obtenerOPs = (req: any, res: any) => {
const con = require('../../index').conexionMySQL; const con = require('../../mysql').obtenerConexionMySql();
const YAML = require('yaml'); const YAML = require('yaml');
const animeID: number = req.params.id; const animeID: string = req.params.id;
if (animeID) { con.connect((err: any) => {
if (!err && animeID) {
const query = `SELECT * FROM OP WHERE anime_ID=${animeID}`; con.query(
con.query( query, (err: any, resultado: object) => { `SELECT * FROM OP WHERE anime_ID=${con.escape(animeID)}`,
(err: any, resultado: object) => {
if (!err) { if (!err) {
res.send(YAML.stringify(resultado)); res.send(YAML.stringify(resultado));
} else { } else {
console.log("Error al ejecutar query en /Admin/OP/obtenerOPs (con.query):\n" + query + "\n" + err);
res.send("error: true"); }
}
);
} else {
} }
}); });
} else {
console.log("Error en /Admin/OP/obtenerOPs: animeID no existe");
res.send("error: true");
}
}; };
module.exports.obtenerOPs = obtenerOPs; module.exports.obtenerOPs = obtenerOPs;

View File

@ -1,12 +1,13 @@
const crearAnime = (req: any, res: any) => { const crearAnime = (req: any, res: any) => {
const con = require('../index').conexionMySQL; const con = require('../mysql').obtenerConexionMySql();
const YAML = require('yaml'); const YAML = require('yaml');
if (req.body.data) { if (req.body.data) {
const data = YAML.parse(req.body.data); const data = YAML.parse(req.body.data);
con.connect((err: any) => {
if (!err) {
const query = `INSERT INTO animes const query = `INSERT INTO animes
(titulo, link, imgUrl, descripcion, estudio, eps, alAire, temporada, anio, fuente, generos, color) (titulo, link, imgUrl, descripcion, estudio, eps, alAire, temporada, anio, fuente, generos, color)
VALUES (${con.escape(data.titulo)}, ${con.escape(data.link)}, ${con.escape(data.imgUrl)}, ${con.escape(data.descripcion)}, VALUES (${con.escape(data.titulo)}, ${con.escape(data.link)}, ${con.escape(data.imgUrl)}, ${con.escape(data.descripcion)},
@ -25,7 +26,14 @@ const crearAnime = (req: any, res: any) => {
); );
} else { } else {
res.send("Error al conectarse...\n" + err);
}
});
} else {
res.send("Error. El servidor no recibio ningun dato."); res.send("Error. El servidor no recibio ningun dato.");
} }
}; };

View File

@ -1,8 +1,11 @@
const obtenerTodosAnimes = (req: any, res: any) => { const obtenerTodosAnimes = (req: any, res: any) => {
const con = require('../index').conexionMySQL; const con = require('../mysql').obtenerConexionMySql();
const YAML = require('yaml'); const YAML = require('yaml');
con.connect((err: any) => {
if (!err) {
con.query( con.query(
`SELECT anime_ID ,titulo FROM animes ORDER BY anime_ID DESC `, `SELECT anime_ID ,titulo FROM animes ORDER BY anime_ID DESC `,
(err: any, respuesta: any) => { (err: any, respuesta: any) => {
@ -11,12 +14,17 @@ const obtenerTodosAnimes = (req: any, res: any) => {
const resultado = YAML.stringify(respuesta); const resultado = YAML.stringify(respuesta);
res.send(resultado); res.send(resultado);
} else { // TODO } else {
} }
} }
); );
} else {
}
});
}; };
module.exports.obtenerTodosAnimes = obtenerTodosAnimes; module.exports.obtenerTodosAnimes = obtenerTodosAnimes;

View File

@ -1,121 +0,0 @@
import {Connection} from "mysql";
interface RespuestaDatos {
estudio: string,
eps: number,
alAire: string,
temporada: string,
anio: number,
fuente: string,
generos: string
}
interface RespuestaOP {
OP_ID: number,
anime_ID: number,
num_OP: number,
nombre: string,
artista: string,
eps: string
}
interface RespuestaED {
ED_ID: number,
anime_ID: number,
num_ED: number,
nombre: string,
artista: string,
eps: string
}
interface Respuesta extends RespuestaDatos {
}
const GestorDeTareas = require("../GestorDeTareas/GestorDeTareas").GestorDeTareas;
const YAML = require('yaml');
const obtenerDatos = (req: any, res: any) => {
const anime_ID = req.params.anime_ID;
const con: Connection = require('../index').conexionMySQL;
const respuesta: any = {};
const gestor = new GestorDeTareas(() => {
console.log(YAML.stringify(respuesta));
res.send(YAML.stringify(respuesta));
});
const query1 = `SELECT estudio, eps, alAire, temporada, anio, fuente, generos FROM animes WHERE anime_ID=${anime_ID}`;
gestor.agregarTarea();
con.query(query1, (err: Error, res: RespuestaDatos[]) => {
if (!err) {
const data = res[0];
respuesta.estudio = data.estudio;
respuesta.eps = data.estudio;
respuesta.alAire = data.alAire;
respuesta.temporada = data.temporada;
respuesta.anio = data.anio;
respuesta.fuente = data.fuente;
respuesta.generos = data.generos;
gestor.terminarTarea();
} else {
respuesta.error = true;
console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(1):\n${query1}\n${err}`);
}
});
const query2 = `SELECT * FROM OP WHERE anime_ID=${anime_ID}`;
gestor.agregarTarea();
con.query(query2, (err: Error, res: RespuestaOP[]) => {
if (!err) {
const ops: any = {};
for (const op of res) {
ops[op.num_OP] = {
nombre: op.nombre,
artista: op.artista,
eps: op.eps
}
}
respuesta.OP = ops;
gestor.terminarTarea();
} else {
respuesta.error = true;
console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(2):\n${query2}\n${err}`);
}
});
const query3 = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`;
gestor.agregarTarea();
con.query(query3, (err: Error, res: RespuestaED[]) => {
if (!err) {
const eds: any = {};
for (const ed of res) {
eds[ed.num_ED] = {
nombre: ed.nombre,
artista: ed.artista,
eps: ed.eps
}
}
respuesta.ED = eds;
gestor.terminarTarea();
} else {
respuesta.error = true;
console.log(`Error al ejecutar sentencia SQL en /Anime/obtenerDatos (con.query)(3):\n${query3}\n${err}`);
}
});
};
module.exports.obtenerDatos = obtenerDatos;

View File

@ -1,24 +0,0 @@
class GestorDeTareas {
tareas: boolean[] = [];
alCompletar: (() => void);
constructor(alCompletar: (() => void)) {
this.alCompletar = alCompletar;
}
agregarTarea() {
return (this.tareas.push(false) - 1);
}
terminarTarea() {
this.tareas.pop();
this.verificarTareas();
}
verificarTareas() {
if (this.tareas.length === 0)
this.alCompletar();
}
}
module.exports.GestorDeTareas = GestorDeTareas;

View File

@ -2,7 +2,10 @@ const modificarLink = (req: any, res: any) => {
const ep_ID = req.body.ep_ID; const ep_ID = req.body.ep_ID;
const con = require('../index').conexionMySQL; const con = require('../mysql').obtenerConexionMySql();
con.connect((err: any) => {
if (!err) {
con.query( con.query(
`UPDATE eps SET visitas=visitas+1 WHERE ep_ID=${ep_ID};`, `UPDATE eps SET visitas=visitas+1 WHERE ep_ID=${ep_ID};`,
@ -15,6 +18,12 @@ const modificarLink = (req: any, res: any) => {
} }
); );
} else {
console.log("Error al conectarse a base de datos.");
con.end();
}
});
}; };
module.exports.modificarLinks = modificarLink; module.exports.modificarLinks = modificarLink;

View File

@ -1,4 +1,30 @@
const GestorDeTareas = require("../GestorDeTareas/GestorDeTareas").GestorDeTareas; class GestorDeTareas {
tareas: boolean[] = [];
alCompletar: (() => void);
constructor(alCompletar: (() => void)) {
console.log("Lo cree :c");
this.alCompletar = alCompletar;
}
agregarTarea() {
return (this.tareas.push(false) - 1);
}
terminarTarea(num: number) {
this.tareas[num] = true;
this.verificarTareas();
}
verificarTareas() {
this.tareas.forEach((x: boolean) => {
if (!x)
return;
});
this.alCompletar();
}
}
const YAML = require('yaml'); const YAML = require('yaml');
@ -50,11 +76,11 @@ interface Links {
const obtenerLinks = (req: any, res: any) => { const obtenerLinks = (req: any, res: any) => {
const con = require('../index').conexionMySQL; const con = require('../mysql').obtenerConexionMySql();
const animeID = req.body.animeID; const animeID = req.body.animeID;
con.connect((err: any) => {
if (animeID) { if (!err && animeID !== undefined) {
const data: Links = {aviso: '', sigEp: '', opciones: {}}; const data: Links = {aviso: '', sigEp: '', opciones: {}};
@ -69,6 +95,7 @@ const obtenerLinks = (req: any, res: any) => {
const gestorOpciones = new GestorDeTareas(() => { const gestorOpciones = new GestorDeTareas(() => {
console.log(YAML.stringify(data));
res.send(YAML.stringify(data)); res.send(YAML.stringify(data));
}); });
@ -80,7 +107,7 @@ const obtenerLinks = (req: any, res: any) => {
for (const opcionID in response) { for (const opcionID in response) {
const opcion = response[opcionID]; const opcion = response[opcionID];
gestorOpciones.agregarTarea(); const tareaActualOpcion = gestorOpciones.agregarTarea();
data.opciones[opcion.num_opcion] = { data.opciones[opcion.num_opcion] = {
formato: opcion.formato, formato: opcion.formato,
@ -99,15 +126,17 @@ const obtenerLinks = (req: any, res: any) => {
for (const epID in response) { for (const epID in response) {
const ep = response[epID]; const ep = response[epID];
data.opciones[opcion.num_opcion].eps[ep.num_ep] = { const eps: LinksEps = {
ep_ID: ep.ep_ID, ep_ID: ep.ep_ID,
visitas: ep.visitas, visitas: ep.visitas,
peso: ep.peso, peso: ep.peso,
link: ep.link link: ep.link
}; };
data.opciones[opcion.num_opcion].eps[ep.num_ep] = eps;
} }
gestorOpciones.terminarTarea(); gestorOpciones.terminarTarea(tareaActualOpcion);
} else if (!err) { } else if (!err) {
console.log("No existen episodios para esta variante"); console.log("No existen episodios para esta variante");
@ -143,9 +172,10 @@ const obtenerLinks = (req: any, res: any) => {
} else { } else {
console.log("AnimeID no existe"); console.log("Hubo un error al conectarse a la base de datos :c");
res.send(`{ "exito": false }`); res.send(`{ "exito": false }`);
} }
});
}; };

View File

@ -1,13 +1,17 @@
import express from 'express'; import express from 'express';
import * as core from "express-serve-static-core";
import mysql from "mysql2";
console.log("express??"); export default (app:any) => {
export default (app: core.Express) => {
app.use(express.json()); app.use(express.json());
app.use(express.urlencoded()); app.use(express.urlencoded());
//
// app.get('/foo', (req, res) => {
// res.json({msg: 'foo'});
// });
//
// app.post('/bar', (req, res) => {
// res.json(req.body);
// });
app.get("/"); app.get("/");
@ -20,35 +24,4 @@ export default (app: core.Express) => {
app.get('/op/:id', require('./Admin/OP/obtenerOPs').obtenerOPs); app.get('/op/:id', require('./Admin/OP/obtenerOPs').obtenerOPs);
app.post('/op/', require('./Admin/OP/nuevoOP').nuevoOP); app.post('/op/', require('./Admin/OP/nuevoOP').nuevoOP);
app.get('/ed/:anime_ID', require('./Admin/ED/obtenerEDs').obtenerEDs);
app.post('/ed/', require('./Admin/ED/nuevoED').nuevoED);
app.get('/eps/variantes/:anime_ID', require('./Admin/Eps/obtenerVariantes').obtenerVariantes);
app.get('/eps/links/:opcion_ID', require('./Admin/Eps/obtenerLinks').obtenerLinks);
app.post('/eps/links/', require('./Admin/Eps/crearLink').crearLink);
app.get('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas);
} }
export const conexionMySQL = (() => {
const con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '123456789',
database: 'pseudo',
});
con.connect((err) => {
if (!err) {
console.log("MySQL iniciado c:");
} else {
throw err;
}
});
return con;
})();
const color = '#cc2f66';
// module.exports.conexionMySQL = conexionMySQL;

View File

@ -14,16 +14,16 @@
1: 1:
nombre: Oonono nombre: Oonono
artista: aoetnaore artista: aoetnaore
eps: 1 al 13 episodios: 1 al 13
2: 2:
nombre: trnaontaoe nombre: trnaontaoe
artista: oaeao artista: oaeao
eps: 14 al 23 episodios: 14 al 23
ED: ED:
1: 1:
nombre: aaoeaoe nombre: aaoeaoe
artista: aoena artista: aoena
eps: 2 al 13 episodios: 2 al 13
links: links:
aviso: ooo654 aviso: ooo654
sigEp: 2 sigEp: 2

17
srv/mysql.ts Normal file
View File

@ -0,0 +1,17 @@
const obtenerConexionMySql = () => {
const mysql = require('mysql');
const SQL_CONNECT_DATA:object = {
// Solo para produccion habilitar socketPath
// socketPath: '/cloudsql/pseudosubs:us-central1:base-principal',
user: 'root',
password: 'GgwTo5GryvDhAr06wk5opKhd',
database: 'animes_links',
multipleStatements: true
};
return mysql.createConnection(SQL_CONNECT_DATA);
};
module.exports.obtenerConexionMySql = obtenerConexionMySql;