Hi!
My app has services with implements method that will be to receive data of server.
I created a global array that simulate the database query.
I use this array in 3 services.
Into some service I get this var and create a other var to provide the datas to the controllers.
var services = angular.module('starter.services', ['ngResource']);
var view = [
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 1,
'QuestaoDescricao': 'A leitura do texto dá suporte para que se considere correto afirmar que o Estado da Bahia',
'AssuntoNome': 'Interpretação de Texto',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'resume toda a cultura do Brasil, na medida em que é o berço da formação identitária do povo brasileiro.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 1
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 1,
'QuestaoDescricao': 'A leitura do texto dá suporte para que se considere correto afirmar que o Estado da Bahia',
'AssuntoNome': 'Interpretação de Texto',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'tem como principal característica o multiculturalismo consolidado e preservado a partir da conciliação entre os costumes e as tradições de povos diversos.',
'AlternativaEhCorreta': 1,
'AlternativaOrdem': 2
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 1,
'QuestaoDescricao': 'A leitura do texto dá suporte para que se considere correto afirmar que o Estado da Bahia',
'AssuntoNome': 'Interpretação de Texto',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'revela, por meio do sincretismo cultural configurado ao longo dos séculos, a revisitação de práticas ligadas a preconceitos e intolerâncias identificadas na música, na religião e no discurso oficial da história étnica do brasileiro.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 3
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 1,
'QuestaoDescricao': 'A leitura do texto dá suporte para que se considere correto afirmar que o Estado da Bahia',
'AssuntoNome': 'Interpretação de Texto',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'permite o reconhecimento da miscigenação da população baiana tanto na organização geográfica quanto na construção ideológica da cidade de Salvador, que se torna espaço democrático de manifestações artísticas de todas as classes e culturas.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 4
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 1,
'QuestaoDescricao': 'A leitura do texto dá suporte para que se considere correto afirmar que o Estado da Bahia',
'AssuntoNome': 'Interpretação de Texto',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'tem a sua capital como representante da cultura do Brasil, o que possibilita a revelação de intelectuais e de artistas baianos que, por se tornarem famosos até fora do país, constituem a principal estratégia turística para a sua manutenção econômica e social.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 5
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 2,
'QuestaoDescricao': 'A alternativa que apresenta uma expressão equivalente, devidamente contextualizada, à que se encontra em negrito no fragmento "uma rica cultura em constante efervescência" (l. 12) é a',
'AssuntoNome': 'Semântica',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'permanente mudança.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 1
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 2,
'QuestaoDescricao': 'A alternativa que apresenta uma expressão equivalente, devidamente contextualizada, à que se encontra em negrito no fragmento "uma rica cultura em constante efervescência" (l. 12) é a',
'AssuntoNome': 'Semântica',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'ininterrupta evolução.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 2
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 2,
'QuestaoDescricao': 'A alternativa que apresenta uma expressão equivalente, devidamente contextualizada, à que se encontra em negrito no fragmento "uma rica cultura em constante efervescência" (l. 12) é a',
'AssuntoNome': 'Semântica',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'incessante criatividade.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 3
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 2,
'QuestaoDescricao': 'A alternativa que apresenta uma expressão equivalente, devidamente contextualizada, à que se encontra em negrito no fragmento "uma rica cultura em constante efervescência" (l. 12) é a',
'AssuntoNome': 'Semântica',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'contínua movimentação.',
'AlternativaEhCorreta': 1,
'AlternativaOrdem': 4
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 2,
'QuestaoDescricao': 'A alternativa que apresenta uma expressão equivalente, devidamente contextualizada, à que se encontra em negrito no fragmento "uma rica cultura em constante efervescência" (l. 12) é a',
'AssuntoNome': 'Semântica',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'inabalável comoção.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 5
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 3,
'QuestaoDescricao': 'A análise linguística que se faz do termo transcrito do texto está correta em',
'AssuntoNome': 'Análise Morfossintática',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'O vocábulo "marca" (l. 1) caracteriza-se como uma derivação imprópria, pois, em seu argumento sobre a principal característica da Bahia, o articulista utiliza-se da mudança da classe gramatical desse termo.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 1
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 3,
'QuestaoDescricao': 'A análise linguística que se faz do termo transcrito do texto está correta em',
'AssuntoNome': 'Análise Morfossintática',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'A expressão "à mistura de povos" (l. 2) apresenta o uso facultativo da crase e traz um modificador nominal, na medida em que o termo preposicionado "de povos" especifica o nome "mistura".',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 2
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 3,
'QuestaoDescricao': 'A análise linguística que se faz do termo transcrito do texto está correta em',
'AssuntoNome': 'Análise Morfossintática',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'O advérbio "aqui" (l. 4), embora apresente valor circunstancial de lugar, assume, principalmente, ideia de tempo presente, explicitando o contexto histórico a que o articulista, que se encontra no Estado da Bahia, se refere.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 3
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 3,
'QuestaoDescricao': 'A análise linguística que se faz do termo transcrito do texto está correta em',
'AssuntoNome': 'Análise Morfossintática',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'A expressão "manifestações folclóricas seculares" (l. 5), assim como "a maior população de origem negra do mundo" (l. 16-17), assume o valor sintático de sujeito posposto ao verbo, tematizando a ideia de manutenção e valorização da cultura presente na Bahia e também o traço negro que ela comporta.',
'AlternativaEhCorreta': 1,
'AlternativaOrdem': 4
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 3,
'QuestaoDescricao': 'A análise linguística que se faz do termo transcrito do texto está correta em',
'AssuntoNome': 'Análise Morfossintática',
'DisciplinaNome': 'Português',
'AlternativaDescricao': 'As formas verbais "pode ser vista e sentida", em "A cultura da Bahia é plural e pode ser vista e sentida no semblante da população", (l. 13-14), evidenciam uma ação praticada pelo sujeito a partir de comportamentos considerados antitéticos "ver e sentir"',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 5
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 4,
'QuestaoDescricao': 'A degradação do patrimônio histórico/cultural construído, como registra o texto, põe em risco a memória',
'AssuntoNome': 'História do Brasil',
'DisciplinaNome': 'História',
'AlternativaDescricao': 'de um segmento da sociedade baiana constituída por grandes proprietários, negociantes e altos funcionários que, no século XVIII e parte do século XIX, ocupavam os casarões da região.',
'AlternativaEhCorreta': 1,
'AlternativaOrdem': 1
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 4,
'QuestaoDescricao': 'A degradação do patrimônio histórico/cultural construído, como registra o texto, põe em risco a memória',
'AssuntoNome': 'História do Brasil',
'DisciplinaNome': 'História',
'AlternativaDescricao': 'da riqueza de um bairro essencialmente comercial que, no período colonial, abrigava lojas de comerciantes de gêneros e os traficantes de escravos.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 2
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 4,
'QuestaoDescricao': 'A degradação do patrimônio histórico/cultural construído, como registra o texto, põe em risco a memória',
'AssuntoNome': 'História do Brasil',
'DisciplinaNome': 'História',
'AlternativaDescricao': 'do grupo constituído pelo clero secular e pelas ordens religiosas que, no período monárquico, ocuparam a região com suas igrejas e conventos, desalojando os antigos moradores.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 3
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 4,
'QuestaoDescricao': 'A degradação do patrimônio histórico/cultural construído, como registra o texto, põe em risco a memória',
'AssuntoNome': 'História do Brasil',
'DisciplinaNome': 'História',
'AlternativaDescricao': 'da classe dos escravos libertos que, após a extinção do tráfico em 1850, foram ali confinados pelo governo da Província da Bahia.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 4
},
{
'id': 1,
'ano': 2015,
'semestre': 2,
'QuestaoNumero': 4,
'QuestaoDescricao': 'A degradação do patrimônio histórico/cultural construído, como registra o texto, põe em risco a memória',
'AssuntoNome': 'História do Brasil',
'DisciplinaNome': 'História',
'AlternativaDescricao': 'a instalação de imigrantes das mais variadas origens que recebiam, no século XVIII, autorização do governo colonial para que ali fixassem residências.',
'AlternativaEhCorreta': 0,
'AlternativaOrdem': 5
}
];
function containsQuestionInArray(_obj, _array){
if(_array.length == 0) return false;
var _i = 0;
while((_i < _array.length) && (_obj.ano != _array[_i].provaAno || _obj.semestre != _array[_i].provaSemestre || _obj.QuestaoNumero != _array[_i].numero)){
_i++;
}
return _i != _array.length;
}
services.factory('ProvaViewPorAno', function(){
//TODO: consulta de retorno JSON
var objView = {};
var idx = 0;
for(idx = 0; idx < view.length; idx++){
if(view.hasOwnProperty(idx.toString())){
//Add Ano
if(!objView.hasOwnProperty(view[idx].ano.toString())){
objView[view[idx].ano] = {};
}
//Add Semestre
if(!objView[view[idx].ano].hasOwnProperty(view[idx].semestre.toString())){
objView[view[idx].ano][view[idx].semestre] = {};
}
//Add questao
if(!objView[view[idx].ano][view[idx].semestre].hasOwnProperty(view[idx].QuestaoNumero.toString())){
objView[view[idx].ano][view[idx].semestre][view[idx].QuestaoNumero] = {
'numero': view[idx].QuestaoNumero,
'descricao': view[idx].QuestaoDescricao,
'assunto': view[idx].AssuntoNome,
'disciplina': view[idx].DisciplinaNome,
'complemento':{
'texto': view[idx].ComplementoTexto.split("<br/>"),
'imagem': view[idx].ComplementoImagem,
'referencia': view[idx].ComplementoReferencia
},
'alternativas':{}
};
}
objView[view[idx].ano][view[idx].semestre][view[idx].QuestaoNumero].alternativas[view[idx].AlternativaOrdem] = {
'descricao': view[idx].AlternativaDescricao,
'ehCorreta': view[idx].AlternativaEhCorreta,
'ordem': view[idx].AlternativaOrdem,
'class': '', //foi selecionado ? RED ou GREEN : VAZIO
'desabilitado': '', //Bloquear campo
'selecionado': false //Esta foi a alternativa selecionada pelo usuário
};
}
}
return{
getByYear: function(ano, semestre){
return ano in objView ? semestre in objView[ano] ? objView[ano][semestre] : [] : [];
},
getQuestion: function(ano, semestre, numero){
return ano in objView ? semestre in objView[ano] ? numero in objView[ano][semestre] ? objView[ano][semestre][numero] : [] : [] : [];
},
getTotalQuestions: function(ano, semestre){
var count = 0;
for(idx in objView[ano][semestre]){
count++;
}
return count;
},
setQuestion: function(ano, semestre, numero, _newObjView){
if(ano in objView && semestre in objView[ano] && numero in objView[ano][semestre]){
objView[ano][semestre][numero] = _newObjView;
}
}
};
});
services.factory('ProvaViewPorAssunto', function(){
//TODO: consulta de retorno JSON
var objView = {};
var idx;
var idxUltimoInserido;
var linha;
for(idx = 0; idx < view.length; idx++){
if(view.hasOwnProperty(idx.toString())){
linha = view[idx];
if(!objView.hasOwnProperty(linha.AssuntoNome.toString())){
objView[linha.AssuntoNome] = [];
}
if(!containsQuestionInArray(linha,objView[linha.AssuntoNome])){
objView[linha.AssuntoNome].push({
'provaAno': linha.ano,
'provaSemestre': linha.semestre,
'numero': linha.QuestaoNumero,
'descricao': linha.QuestaoDescricao,
'assunto': linha.AssuntoNome,
'disciplina': linha.DisciplinaNome,
'complemento':{
'texto': linha.ComplementoTexto.split("<br/>"),
'imagem': linha.ComplementoImagem,
'referencia': linha.ComplementoReferencia
},
'alternativas':{}
});
}
idxUltimoInserido = objView[linha.AssuntoNome].length-1;
objView[linha.AssuntoNome][idxUltimoInserido].alternativas[linha.AlternativaOrdem] = {
'descricao': linha.AlternativaDescricao,
'ehCorreta': linha.AlternativaEhCorreta,
'ordem': linha.AlternativaOrdem,
'class': '', //foi selecionado ? RED ou GREEN : VAZIO
'desabilitado': '', //Bloquear campo
'selecionado': false //Esta foi a alternativa selecionada pelo usuário
};
}
}
return{
getByAssunto: function(assunto){
return assunto in objView ? objView[assunto] : [];
},
getQuestion: function(assunto, idx){
return assunto in objView ? idx in objView[assunto] ? objView[assunto][idx] : [] : [];
},
getTotalQuestions: function(assunto){
return assunto in objView ? objView[assunto].length : 0;
},
setQuestion: function(assunto, idx, _newObjView){
objView[assunto][idx] = _newObjView;
}
};
});
services.factory('ProvaViewPorMateria', function(){
//TODO: consulta de retorno JSON
var _objView = {};
var idx;
var idxUltimoInserido;
var linha;
for(idx = 0; idx < view.length; idx++){
if(view.hasOwnProperty(idx.toString())){
linha = view[idx];
if(!_objView.hasOwnProperty(linha.DisciplinaNome.toString())){
_objView[linha.DisciplinaNome] = [];
}
if(!containsQuestionInArray(linha,_objView[linha.DisciplinaNome])){
_objView[linha.DisciplinaNome].push({
'provaAno': linha.ano,
'provaSemestre': linha.semestre,
'numero': linha.QuestaoNumero,
'descricao': linha.QuestaoDescricao,
'assunto': linha.AssuntoNome,
'disciplina': linha.DisciplinaNome,
'complemento':{
'texto': linha.ComplementoTexto.split("<br/>"),
'imagem': linha.ComplementoImagem,
'referencia': linha.ComplementoReferencia
},
'alternativas':{}
});
}
idxUltimoInserido = _objView[linha.DisciplinaNome].length-1;
_objView[linha.DisciplinaNome][idxUltimoInserido].alternativas[linha.AlternativaOrdem] = {
'descricao': linha.AlternativaDescricao,
'ehCorreta': linha.AlternativaEhCorreta,
'ordem': linha.AlternativaOrdem,
'class': '', //foi selecionado ? RED ou GREEN : VAZIO
'desabilitado': '', //Bloquear campo
'selecionado': false //Esta foi a alternativa selecionada pelo usuário
};
}
}
return{
getByMateria: function(materia){
return materia in _objView ? _objView[materia] : [];
},
getQuestion: function(materia, idx){
return materia in _objView ? idx in _objView[materia] ? _objView[materia][idx] : [] : [];
},
getTotalQuestions: function(materia){
return materia in _objView ? _objView[materia].length : 0;
},
setQuestion: function(materia, idx, _newObjView){
_objView[materia][idx] = _newObjView;
}
};
});
//Test service
services.factory("Customers",['$resource', function($resource){
return $resource("http://www.w3schools.com/angular/customers_mysql.php",{}, {
query: { method: 'GET' }
});
}]);
services.factory("DisciplinaService",function(){
return {
all: function(){
//TODO: chamada JSON para pegar as disciplinas por ordem alfabetica
return [
{'id': 3, 'nome': 'Biológia'},
{'id': 4, 'nome': 'Física'},
{'id': 7, 'nome': 'Geográfia'},
{'id': 6, 'nome': 'História'},
{'id': 2, 'nome': 'Matemática'},
{'id': 1, 'nome': 'Português'},
{'id': 5, 'nome': 'Química'}
];
}
}
});
services.factory("ProvaPorAnoService",function(){
//TODO: chamada JSON para pegar as provas por ordem de ano e semestre decrescente
return {
all: function(){
return [
{'id': 1, 'ano':2015, 'semestre':2},
{'id': 2, 'ano':2015, 'semestre':1},
{'id': 3, 'ano':2014, 'semestre':2},
{'id': 4, 'ano':2014, 'semestre':1},
{'id': 5, 'ano':2013, 'semestre':2},
{'id': 6, 'ano':2013, 'semestre':1}
];
}
}
});
services.factory("ProvaPorAssuntoService",function(){
//TODO: chamada JSON para pegar os assuntos e as disciplinas por ordem alfabetica
return {
all: function(){
return [
{'id': 1, 'nome': 'Doenças Endêmicas', 'Disciplina_id': 3, 'Disciplina_nome': 'Biológia'},
{'id': 2, 'nome': 'Ondulatória', 'Disciplina_id': 4, 'Disciplina_nome': 'Física'},
{'id': 4, 'nome': 'Indústria e Agricultura', 'Disciplina_id': 7, 'Disciplina_nome': 'Geográfia'},
{'id': 3, 'nome': 'Geografia Física', 'Disciplina_id': 7, 'Disciplina_nome': 'Geográfia'},
{'id': 5, 'nome': 'População', 'Disciplina_id': 7, 'Disciplina_nome': 'Geográfia'},
{'id': 6, 'nome': 'História do Brasil', 'Disciplina_id': 6, 'Disciplina_nome': 'História'},
{'id': 7, 'nome': 'Divisibilidade', 'Disciplina_id': 2, 'Disciplina_nome': 'Matemática'},
{'id': 8, 'nome': 'Mat. Básica', 'Disciplina_id': 2, 'Disciplina_nome': 'Matemática'},
{'id': 11, 'nome': 'Análise Morfossintática', 'Disciplina_id': 1, 'Disciplina_nome': 'Português'},
{'id': 9, 'nome': 'Interpretação de Texto', 'Disciplina_id': 1, 'Disciplina_nome': 'Português'},
{'id': 10, 'nome': 'Semântica', 'Disciplina_id': 1, 'Disciplina_nome': 'Português'},
{'id': 12, 'nome': 'Tabela Periódica', 'Disciplina_id': 5, 'Disciplina_nome': 'Química'}
];
}
}
});
services.factory('Chats', function() {
// Might use a resource here that returns a JSON array
// Some fake testing data
var chats = [{
id: 0,
name: 'Ben Sparrow',
lastText: 'You on your way?',
face: 'https://pbs.twimg.com/profile_images/514549811765211136/9SgAuHeY.png'
}, {
id: 1,
name: 'Max Lynx',
lastText: 'Hey, it\'s me',
face: 'https://avatars3.githubusercontent.com/u/11214?v=3&s=460'
}, {
id: 2,
name: 'Adam Bradleyson',
lastText: 'I should buy a boat',
face: 'https://pbs.twimg.com/profile_images/479090794058379264/84TKj_qa.jpeg'
}, {
id: 3,
name: 'Perry Governor',
lastText: 'Look at my mukluks!',
face: 'https://pbs.twimg.com/profile_images/598205061232103424/3j5HUXMY.png'
}, {
id: 4,
name: 'Mike Harrington',
lastText: 'This is wicked good ice cream.',
face: 'https://pbs.twimg.com/profile_images/578237281384841216/R3ae1n61.png'
}];
return {
all: function() {
return chats;
},
remove: function(chat) {
chats.splice(chats.indexOf(chat), 1);
},
get: function(chatId) {
for (var i = 0; i < chats.length; i++) {
if (chats[i].id === parseInt(chatId)) {
return chats[i];
}
}
return null;
}
};
});
My problem is because this code run on PC (“ionic run -lab”) but not work into Device correctly.
Is it okay to create a global variable in ionic?
What better way to do this?
tk