-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
153 lines (128 loc) · 5.17 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
let requisicaoURL = "https://www.luizpicolo.com.br/api.json";
let requisicao = new XMLHttpRequest();
requisicao.open("GET", requisicaoURL);
requisicao.responseType = "json";
requisicao.send();
requisicao.onload = function() {
let noticias_Json = requisicao.response;
//Classe noticia
class Noticia {
settitulo(titulo) {
this.titulo = titulo;
}
gettitulo() {
return this.titulo;
}
setdataPublicacao(dataPublicacao) {
this.dataPublicacao = dataPublicacao;
}
getdataPublicacao() {
return this.dataPublicacao;
}
setautor(autor) {
this.autor = autor;
}
getautor() {
return this.autor;
}
setresumo(resumo) {
this.resumo = resumo;
}
getresumo() {
return this.resumo;
}
setlink(link) {
this.link = link;
}
getlink() {
return this.link;
}
mostrar_Noticias() {
if(this.titulo == undefined || this.dataPublicacao == undefined || this.autor == undefined || this.resumo == undefined ){
throw new ErrorCustomizado("É provavel que os atributos titulo, data de publicacão, autor ou resumo estejam vazios!");
}else{
return `<div id="Ncards">
<h1 id="Ntitulo">${this.titulo}<h1>
<p>Publicado em: ${this.dataPublicacao}<p>
<p>Por: ${this.autor}<p>
<h5 id="Nresumo">${this.resumo}<h5>
<a href="${this.link}">(Clique aqui, para ir ao site original)<a> <div>`;
}
}
Noticias(){
try{
return this.mostrar_Noticias();
}catch(erro){
return erro.stack;
}
}
}
//Classe Noticia_Destaque herdando somente os atributos da classe Noticias
class Noticia_Destaque extends Noticia {
setimagem(imagem) {
this.imagem = imagem;
}
getimagem() {
return this.imagem;
}
//Criei outro metodo porque nesse é adicionado a Imagem que é pedido somente na Noticia Destaque
mostrar_Destaque() {
if(this.titulo == undefined || this.dataPublicacao == undefined || this.autor == undefined || this.resumo == undefined ){
throw new ErrorCustomizado("É provavel que os atributos titulo, data de publicacão, autor ou resumo estejam vazios!");
}else{
return `<div id="destaque">
<h1 id="Ntitulo">${this.titulo}<h1>
<img id="imagem" src=${this.imagem}>
<p>Publicado em: ${this.dataPublicacao}<p>
<p>Por: ${this.autor}<p>
<h5 id="Nresumo">${this.resumo}<h5>
<a href="${this.link}">(Clique aqui, para ir ao site original)<a>
<div>`;
}
}
Destaque(){
try{
return this.mostrar_Destaque();
}catch(erro){
return erro.stack;
}
}
}
//Classe ErrorCustomizado hedando do Error
class ErrorCustomizado extends Error{
constructor(menssagem){
super(menssagem)
this.name = "Atributos Vazios";
}
}
//Pegando o ID da div no html e adicionando a tag h1 com o Titulo principal do site
const elemento = document.getElementById("lista");
let titulo = `<div id="head">
<h1 id="TituloSite">Noticias De Hoje!</h1>
<div>`;
elemento.insertAdjacentHTML('afterbegin', titulo);
//Criando o Objeto com a classe Noticia_Destaque
let noticiaDestaque = new Noticia_Destaque();
//Aqui o titulo ou outros é escrito(pego) usando o articles(que seria o Array) no indice 0(para pegar a primeira noticia).
noticiaDestaque.settitulo(noticias_Json.articles[0].title);
noticiaDestaque.setimagem(noticias_Json.articles[0].urlToImage);
noticiaDestaque.setdataPublicacao(noticias_Json.articles[0].publishedAt);
noticiaDestaque.setautor(noticias_Json.articles[0].author);
noticiaDestaque.setresumo(noticias_Json.articles[0].description);
noticiaDestaque.setlink(noticias_Json.articles[0].url);
//adiciona o codigo do metodo mostar noticas destque já com todos os valores dos atributos
elemento.insertAdjacentHTML('beforeend', noticiaDestaque.Destaque())
//Aqui o titulo ou outros é escrito(pego) usando o for começando no articles(que seria o Array) no indice 1(para pegar a segunda noticia em diante até a ultima).
for (let i = 1; i < noticias_Json.articles.length; i++) {
elem = noticias_Json.articles[i]
//Criando o objeto com a classe Noticias
let noticiaInteira = new Noticia();
noticiaInteira.settitulo(elem.title)
noticiaInteira.setdataPublicacao(elem.publishedAt);
noticiaInteira.setautor(elem.author);
noticiaInteira.setresumo(elem.description);
noticiaInteira.setlink(elem.url)
//adiciona todas as noticias pequenas no html com o metodo mostrar noticias
elemento.insertAdjacentHTML('beforeend', noticiaInteira.Noticias());
}
}