I'm trying to get information from a factory and trying to print it dynamic.
Before I did it like this:
<div class="articlePage">
<h4> {{ posts[0].title }} </h4> <span style="color: #666;"> {{ posts[0].date }} </span>
<p> {{ posts[0].text }} </p> {{id}}
</div>
But now I said "[0]" so I asked only the first one in the array but from now on it is one page so it need to dynamic.
On my home page I have many posts and when I click on one I want to read the full post on a specific page.
This is how my factory looks like:
App.factory('PostsService', [function () {
var postsService = {};
var _posts = [{
id: 00,
title: 'Kabinet in hoger beroep tegen klimaatvonnis',
text: 'Dat bevestigen Haagse bronnen na berichtgeving in dagblad Trouw. Het kabinet zegt tegelijkertijd wel bereid te zijn om extra maatregelen te nemen om de uitstoot van broeikasgassen terug te dringen. Staatssecretaris Mansveld van Milieu maakt naar verluidt dinsdagmiddag bekend hoe het kabinet dat wil doen. De zaak tegen de overheid werd aangespannen door actiegroep Urgenda en negenhonderd klagers. Die stelden dat de Staat zich meer moet inspannen om de CO2-uitstoot in Nederland terug te dringen.',
date: '28 september 2015'
},
{
id: 01,
title: '\'Leraren kritisch over passend onderwijs\'',
text: 'Dat blijkt uit onderzoek van het AD en Duo Onderwijsonderzoek. Door passend onderwijs kunnen leerlingen die meer hulp nodig hebben, vaker terecht in het reguliere onderwijs. Bijna de helft van docenten (47 procent) in het voorgezet onderwijs zegt echter te weinig tijd te hebben om dergelijke jongeren goed te helpen. In het basisonderwijs is dat zelfs 84 procent. Extra handen in de klas staan dan ook op het verlanglijstje van vrijwel alle docenten in het voortgezet onderwijs (84 procent) en het basisonderwijs (99 procent). Ook zegt 98 procent van de leraren op de middelbare school behoefte te hebben aan kleinere klassen, tegenover ongeveer 95 procent van hun collega\'s in het basisonderwijs. Het onderzoek werd uitgevoerd onder 1668 onderwijsmedewerkers, zoals leraren, directeuren en zorgcoördinatoren.',
date: '15 januari 2015'
},
{
id: 02,
title: 'Premier Curaçao dient ontslag in',
text: 'De partij van Asjes, Pueblo Soberano (PS), had eerder op de dag het vertrouwen in de minister-president opgezegd. De partij heeft niet bekendgemaakt waarom het vertrouwen in de premier is opgezegd, maar de PS-fractie botste de afgelopen maanden een aantal keer openlijk met Asjes over verschillende beleidskwesties. Het vertrek van Asjes leidt niet direct tot de val van het kabinet. Een van de meningsverschillen draaide om de steun die de premier bleef geven aan de gevolmachtigde minister van Curaçao in Nederland, Marvelyne Wiels. Zij ligt zwaar onder vuur na het verschijnen van een kritisch rapport van de Curaçaose Ombudsman over haar functioneren. De fractie zou haar niet meer willen steunen. Minister van Volksgezondheid Ben Whiteman is maandagavond door de gouverneur gevraagd de functie van minister-president waar te nemen voor een periode van drie maanden. Whiteman heeft de functie geaccepteerd. Hij zei tegen de pers de gang van zaken rond het vertrek van Asjes te betreuren.',
date: '31 augustus 2015'
},
{
id: 03,
title: 'Asscher heeft nog geen akkoord met Marokko over uitkeringen',
text: 'Desondanks hoopt de bewindsman nog steeds tot een akkoord te komen, schrijft hij dinsdag aan de Tweede Kamer. Het socialezekerheidsverdrag regelt de uitbetaling van Nederlandse uitkeringen voor Marokkaanse-Nederlanders in Marokko. Asscher wil die uitkeringen aanpassen aan het levenspeil in Marokko en dus verlagen. De regering in Rabat voelt hier echter niets voor. Het is de tweede keer dat Asscher moet meldden dat hij niet tot een akkoord is gekomen. Eerder hoopte hij er al op 15 juni uit te zijn. Later verschoof die datum naar 1 september. In de afgelopen periode is intensief overleg gevoerd met Marokko. Tot op heden heeft dit echter nog niet geresulteerd in een akkoord, aldus Asscher. Een nieuwe datum voor een mogelijk akkoord noemt hij niet. Vooral regeringspartij VVD heeft zich hard gemaakt voor aanpassing van het socialezekerheidsverdrag. De Tweede Kamer nam vorig jaar een VVD-motie aan waarin stond dat het verdrag moest worden opgezegd als de onderhandelingen niet snel vruchten zouden afwerpen.',
date: '02 april 2015'
}
];
postsService.posts = _posts;
return postsService;
}
I hope you understand my problem if you don't ask something that you need to know I hope that you can help me.
Updated Answer
HTML
<div ng-controller="myCtrl">
<div >Post</div>
<div ng-repeat="post in posts | filter:filters">
<h4 ng-click="filters.id = post.id"> {{ post.title }}</h4>
<span style="color: #666;"> {{ post.date }} </span>
<p> {{ post.text }} </p>
</div>
<div ng-click="filters.id = ''" ng-if="filters.id == ''">Go Back</div>
</div>
Controller
app.controller("myCtrl" , function($scope,PostsService) {
$scope.posts = PostsService.posts;
$scope.filters = {};
});
Refer plunker.
Explaination
Click on the header of the post and then only that post is visible and then a 'Go Back' button is visible to go back to all post page.
The handling is done using a filters object which filter only that post on which the click is performed.
Related
I want to use react-pdf to generate PDF and just followed the exact same steps provided by its official documentation. However when the pdf renders it doesnt occupy the whole screen, and i dont know if im doing sth wrong or there's some property to define that. This is how it looks like:
Code:
import React from 'react';
import { Page, Text, View, Document, StyleSheet } from '#react-pdf/renderer';
import ReactPDF from '#react-pdf/renderer';
// Create styles
// Create Document Component
const MyDocument = () => (
<Document>
<Page size="A4" style={styles.body}>
<Text style={styles.header} fixed>
~ Created with react-pdf ~
</Text>
<Text style={styles.title}>Don Quijote de la Mancha</Text>
<Text style={styles.author}>Miguel de Cervantes</Text>
<Text style={styles.subtitle}>
Capítulo I: Que trata de la condición y ejercicio del famoso hidalgo D.
Quijote de la Mancha
</Text>
<Text style={styles.text}>
En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha
mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga
antigua, rocín flaco y galgo corredor. Una olla de algo más vaca que
carnero, salpicón las más noches, duelos y quebrantos los sábados,
lentejas los viernes, algún palomino de añadidura los domingos,
consumían las tres partes de su hacienda. El resto della concluían sayo
de velarte, calzas de velludo para las fiestas con sus pantuflos de lo
mismo, los días de entre semana se honraba con su vellori de lo más
fino. Tenía en su casa una ama que pasaba de los cuarenta, y una sobrina
que no llegaba a los veinte, y un mozo de campo y plaza, que así
ensillaba el rocín como tomaba la podadera. Frisaba la edad de nuestro
hidalgo con los cincuenta años, era de complexión recia, seco de carnes,
enjuto de rostro; gran madrugador y amigo de la caza. Quieren decir que
tenía el sobrenombre de Quijada o Quesada (que en esto hay alguna
diferencia en los autores que deste caso escriben), aunque por
conjeturas verosímiles se deja entender que se llama Quijana; pero esto
importa poco a nuestro cuento; basta que en la narración dél no se salga
un punto de la verdad
</Text>
<Text style={styles.pageNumber} render={({ pageNumber, totalPages }) => (
`${pageNumber} / ${totalPages}`
)} fixed />
</Page>
</Document>
);
App.js
export class App extends Component {
render(){
return (
<PDFViewer>
<MyDocument />
</PDFViewer>
)
}
}
try adding some css styles to your PDFViewer component, in your css file try adding:
.ClassName {
width: 99%;
height: 99vh;
}
I am currently using angular-datatables.
How can I see the interface of the table in other languages?
I mean the "Show entries", "Search:", "Showing 1 to 10 of 20 entries" literals fore example in Spanish.
You need to define a language struct like this (danish implementation, what I am using in my angular-datatables apps) :
var language = {
"sEmptyTable": "Ingen tilgængelige data (prøv en anden søgning)",
"sInfo": "Viser _START_ til _END_ af _TOTAL_ rækker",
"sInfoEmpty": "Viser 0 til 0 af 0 rækker",
"sInfoFiltered": "(filtreret ud af _MAX_ rækker ialt)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Vis _MENU_ rækker",
"sLoadingRecords": "Henter data...",
"sProcessing": "Processing...",
"sSearch": "Filter:",
"sZeroRecords": "Ingen rækker matchede filter",
"oPaginate": {
"sFirst": "Første",
"sLast": "Sidste",
"sNext": "Næste",
"sPrevious": "Forrige"
},
"oAria": {
"sSortAscending": ": activate to sort column ascending",
"sSortDescending": ": activate to sort column descending"
}
}
There is a bunch of languages here -> https://www.datatables.net/plug-ins/i18n/
And then you include the language using the withLanguage() option method
.withLanguage(language)
demo -> http://plnkr.co/edit/RCrqM3z7qwsUfFwy8HE6?p=preview
I created a .ts file like this:
export class LanguageApp {
public static spanish_datatables = {
processing: "Procesando...",
search: "Buscar:",
lengthMenu: "Mostrar _MENU_ &elementos",
info: "Mostrando desde _START_ al _END_ de _TOTAL_ elementos",
infoEmpty: "Mostrando ningún elemento.",
infoFiltered: "(filtrado _MAX_ elementos total)",
infoPostFix: "",
loadingRecords: "Cargando registros...",
zeroRecords: "No se encontraron registros",
emptyTable: "No hay datos disponibles en la tabla",
paginate: {
first: "Primero",
previous: "Anterior",
next: "Siguiente",
last: "Último"
},
aria: {
sortAscending: ": Activar para ordenar la tabla en orden ascendente",
sortDescending: ": Activar para ordenar la tabla en orden descendente"
}
}
}
Then in the component that was loading the DataTable just put that config inside dtOptions:
this.dtOptions = {
language: LanguageApp.spanish_datatables
};
In Angular2+ what worked for me is quite the same as mentioned by #davidkonrad, but without the starting letters (s and o), and adding the language as an attribute of the dtOptions. I.e.:
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 10,
dom: 'Bfrtip',
buttons: [
/*'print',
'csv'*/
],
responsive: true,
/* below is the relevant part, e.g. translated to spanish */
language: {
processing: "Procesando...",
search: "Buscar:",
lengthMenu: "Mostrar _MENU_ éléments",
info: "Mostrando desde _START_ al _END_ de _TOTAL_ elementos",
infoEmpty: "Mostrando ningún elemento.",
infoFiltered: "(filtrado _MAX_ elementos total)",
infoPostFix: "",
loadingRecords: "Cargando registros...",
zeroRecords: "No se encontraron registros",
emptyTable: "No hay datos disponibles en la tabla",
paginate: {
first: "Primero",
previous: "Anterior",
next: "Siguiente",
last: "Último"
},
aria: {
sortAscending: ": Activar para ordenar la tabla en orden ascendente",
sortDescending: ": Activar para ordenar la tabla en orden descendente"
}
}
};
I have been do it a template page for Wordpress Theme. In it, have to filter some tags from an user field.
But for test, I do it that:
$user_id = get_current_user_id();
$contexto = get_user_meta($user_id, 'contexto', true);
$contexto = '"' . $contexto . '"';
$array = array (
"Buscando mi nicho" => "buscando-mi-nicho",
"Montando mi blog" => "montando-mi-plataforma",
"Buscando lectores" => "buscando-lectores",
"Construyendo mi lista de correo" => "construyendo-mi-lista-de-correo",
"Vendiendo mi primer producto/servicio" => "vendiendo-mi-primer-productoservicio",
"Buscando más clientes" => "escalar-ventas",
"A punto de dar el gran salto (para vivir de mi blog)" => "a-punto-de-dar-el-gran-salto-para-vivir-de-mi-blog",
"Ya soy Knowmada Full Time" => "ya-soy-knowmada-full-time"
);
$etiqueta = $array[$contexto];
$user_first = get_user_meta( $user_id, 'first_name', true );
echo '<p>Hola '. $user_first . '. Queremos ayudarte a progresar, y tu etapa actual es <strong>' . $contexto . '</strong>, por eso, te recomendamos los siguientes contenidos con la etiqueta <b>' . $etiqueta . '</b></p>';
And I get:
Hola Javier. Queremos ayudarte a progresar, y tu etapa actual es "Montando mi blog", por eso, te recomendamos los siguientes contenidos con la etiqueta
You can see, that I don't get the variable $etiqueta.
If I put, for example:
$etiqueta = $array["Montando mi blog"];
I get:
Hola Javier. Queremos ayudarte a progresar, y tu etapa actual es "Montando mi blog", por eso, te recomendamos los siguientes contenidos con la etiqueta montando-mi-plataforma
So I get $etiqueta.
What is wrong whit:
$etiqueta = $array[$contexto];
It is because the keys in your array to not have the double quotes ("). Remove the line:
$contexto = '"' . $contexto . '"';
and it should work.
var obj={
method: 'feed',
name: 'Je viens de créer son premier domaine : "' + this.model.attributes.name + '"',
caption: 'Entrez dans l\'univers du vin avec Vinoga',
description: (
'Ayez un domaine plus grand, plus beau ou plus prestigieux que vos amis. Challengez vos amis à travers de nombreux mini-jeux et rendez-leur visite '
),
link: 'http://www.vinoga.com',
picture: 'https://twimg0-a.akamaihd.net/profile_images/3095682321/79e5bb5014d6b118b08c5b11bd2a81e8.jpeg'
};
function callback(response)
{
this.model.setActivation(); // HERE
alert('toto');
}
FB.ui(obj, callback);
},
I got an error about this.model.setActivation is undefined ...
Do you have any idea how to solve this?
Thanks in Advance
Pierre
You can use underscore's bind helper to set the context for the callback.
FB.ui(obj, _.bind(callback, this));
I'm using cakephp and I get a strange behavior with it.
Here is my validation rule in the Model:
public $validate = array(
'flyer' => array(
'rule' => array('fileValidation', 'flyer', array('image/jpeg', 'image/pjpeg'), NULL, TRUE)
)
// Other rules...
);
Here is the fileValidation method (yes I'm french =) )
public function fileValidation(array $check, $field, array $allowedMimeTypes = NULL, $maxFileSize = NULL, $allowEmpty = FALSE)
{
$file = array_shift($check);
$message = NULL;
if($file['error'] === UPLOAD_ERR_OK){
// checking uploaded file
if(empty($file['tmp_name']) || empty($file['tmp_name']) || $file['tmp_name'] === 'none' || !is_uploaded_file($file['tmp_name'])){
$message = "Une erreur est survenue lors de l'envoi du fichier, veuillez réessayer à nouveau. Si le problème persiste, merci de contacter le support technique.";
}
// checking mimeTypes if required
elseif(!empty($allowedMimeTypes) && !in_array($file['type'], $allowedMimeTypes)){
$message = "Le type de fichier envoyé n'est pas celui attendu.";
}
// checking file size if required
elseif(!empty($maxFileSize) && $file['size'] > $maxFileSize){
$message = "Le fichier envoyé est trop volumineux, réduisez sa taille et réessayez.";
}
else{
return TRUE;
}
}
elseif($file['error'] === UPLOAD_ERR_NO_FILE){
// validates if no upload is allowed
if(!$allowEmpty){
$message = "Une erreur est survenue lors de l'envoi du fichier, veuillez réessayer à nouveau. Si le problème persiste, merci de contacter le support technique.";
}
else{
return TRUE;
}
}
elseif($file['error'] === UPLOAD_ERR_INI_SIZE){
$message = "Le fichier envoyé est trop volumineux, réduisez sa taille et réessayez.";
}
elseif($file['error'] === UPLOAD_ERR_FORM_SIZE){
$message = "Le fichier envoyé est trop volumineux, réduisez sa taille et réessayez.";
}
elseif($file['error'] === UPLOAD_ERR_PARTIAL){
$message = "Une erreur est survenue lors de l'envoi du fichier, le serveur n'a reçu qu'une partie du fichier, veuillez réessayer à nouveau.";
}
elseif($file['error'] >= UPLOAD_ERR_NO_TMP_DIR){
$message = "Une erreur interne est survenue, veuillez réessayer à nouveau. Si le problème persiste, merci de contacter le support technique.";
}
// Here is the problem
$this->validationErrors[$field][] = $message;
return FALSE;
}
So far so good, my Validation rule seems to work correctly but when à get an error, I have two messages: "My custom message" and "This file cannot be left blank".
How to remove this message, where am I wrong?
Thanks in advance.
May be it will works for you
$this->validationErrors[$field][] = $message; // comment this Line
return FALSE // comment this Line
And Add the following line at last of your fileValidation function
return implode("\n", $message);
Cakephp.Saint's solution doesn't work because $message is a string, not an array but this works fine:
return $message;