Browse Source

Switch Flag.tsx to use Flag.json

Switched Flag.tsx to use Flag.json as it's source for content.
UI for red flags was changed to accordions as there were difficulties creating a dynamic
amount of modal dialogs.
parent
commit
206568b325
2 changed files with 85 additions and 248 deletions
  1. 39
    0
      src/pages/Flag.json
  2. 46
    248
      src/pages/Flag.tsx

+ 39
- 0
src/pages/Flag.json View File

@@ -0,0 +1,39 @@
1
+ [{"title" : "Amenazas",
2
+  "content" : ["Asustarla con amenazas de hacerle mal.",
3
+              "Amenazarla con dejarla, con el suicidio o con denunciarla falsamente a la autoridad.",
4
+              "Obligarla a retirar los cargos presentados contra él.",
5
+               "Obligarla a cometer actos ilegales."]},
6
+ {"title" : "Intimidación",
7
+  "content" : ["Provocándole miedo a través de sus miradas, acciones y gestos.",
8
+               "Destrozar objetos.",
9
+               "Intimidarla rompiéndole sus cosas, maltratando a los animales domésticos, mostrándole armas."]},
10
+  {"title" : "Abuso Emocional",
11
+   "content" : ["Hacerla sentir inferior.",
12
+                "Hacerla sentir mal.",
13
+                "Insultarle con nombres ofensivos.",
14
+                "Hacerla pensar que está loca.",
15
+                "Confundirla a propósito.",
16
+                "Humillarla.",
17
+                "Hacerla sentir culpable."]},
18
+  {"title": "Aislamiento",
19
+   "content" : ["Controlar lo que hace, a quién puede ver, con quién puede hablar, lo que puede leer y dónde va.",
20
+                "Limitarle su vida social utilizando los celos para justificar sus actos"]},
21
+  {"title" : "Desvalorizar, Negar, Culpar",
22
+   "content" : ["No tomar seriamente preocupación que ella tiene sobre el abuso.",
23
+                "Negar que uso hacerla sentir responsable de la conducta abusiva.",
24
+                "Decirle que ella lo provocó."]},
25
+  {"title" : "Manipulación de los Niño(a)s",
26
+   "content" : ["Hacerla sentir culpable por el comportamiento de los niño(a) como intermediarios y mantener así el control.",
27
+                "Usar las visitas con los niño(a)s para molestarla o amenazarla.",
28
+                "Amenazarla con quitarle los niño(a)s."]},
29
+  {"title" : "Abuso Económico",
30
+   "content" : ["No dejarla trabajar o impedirle que mantenga su empleo.",
31
+                "Obligarala a que le pida dinero.",
32
+                "Darle una mensualidad.",
33
+                "Quitarle el dinero.",
34
+                "No informarle acerca de los ingresos familiares o no permitirle disponer de los ingresos."]},
35
+  {"title" : "Privilegio Masculino",
36
+   "content": ["Tratarla como una sirvienta.",
37
+               "No dejarla tomar decisiones importantes.",
38
+               "Actuar como el rey de la casa.",
39
+               "Definir las partes del hombre y de la mujer."]}]

+ 46
- 248
src/pages/Flag.tsx View File

@@ -1,12 +1,45 @@
1
-import { IonCardHeader, IonCardTitle } from '@ionic/core/components';
2
-import React, { useState, useRef, useEffect } from 'react';
3
-import { IonButton, IonButtons, IonCard, IonCol, IonContent, IonGrid, IonHeader, IonModal, IonPage, IonRow, IonText, IonTitle, IonToolbar } from '@ionic/react';
4
-import ExploreContainer from '../components/ExploreContainer';
1
+import {
2
+  IonAccordion,
3
+  IonAccordionGroup,
4
+  IonCard,
5
+  IonContent,
6
+  IonHeader,
7
+  IonItem,
8
+  IonLabel,
9
+  IonPage,
10
+  IonTitle,
11
+  IonToolbar} from '@ionic/react';
12
+
5 13
 import './Flag.css';
6 14
 
7
-const Flag: React.FC = () => {
8
-  const modal = useRef<HTMLIonModalElement>(null);
15
+// generate single accordion item given a title and points of info
16
+const AccordionItem = (title: string, content: string[]) => {
17
+  return (
18
+    <IonAccordion value={title}>
19
+      <IonItem slot="header" color="light">
20
+        <IonLabel class="ion-text-center">{title}</IonLabel>
21
+      </IonItem>
22
+      <div className="ion-padding" slot="content">
23
+        {
24
+          // generate each point in content
25
+          content.map((text: string) =>{
26
+            return (
27
+              <IonCard color="light">
28
+                <IonItem>
29
+                <IonLabel class="ion-text-center">{text}</IonLabel>
30
+                </IonItem>
31
+              </IonCard>
32
+            );
33
+          })
34
+        }
35
+      </div>
36
+    </IonAccordion>)
37
+}
9 38
 
39
+const Flag: React.FC = () => {
40
+  // Load Flag.json which has format of Object[],
41
+  // where each object has a title and content field.
42
+  let content = require("./Flag.json")
10 43
   return (
11 44
     <IonPage>
12 45
       <IonHeader>
@@ -20,250 +53,15 @@ const Flag: React.FC = () => {
20 53
             <IonTitle size="large">Flag</IonTitle>
21 54
           </IonToolbar>
22 55
         </IonHeader>
23
-
24
-        <IonTitle class="ion-text-center" color="light">Pendiente a...</IonTitle>
25
-        <IonGrid>
26
-          <IonRow>
27
-            <IonCol>
28
-                <IonButton id="open-amenazas" color="light" expand="block">
29
-                  Amenazas
30
-                </IonButton>
31
-                <IonModal ref={modal} keepContentsMounted={true} trigger="open-amenazas">
32
-                  <IonHeader>
33
-                    <IonToolbar>
34
-                      <IonTitle>Amenazas</IonTitle>
35
-                      <IonButtons slot="end">
36
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
37
-                      </IonButtons>
38
-                   </IonToolbar>
39
-                  </IonHeader>
40
-                  <IonContent className="ion-padding">
41
-                    <IonCard color="light">
42
-                      <p>Asustarla con amenazas de hacerle mal.</p>
43
-                    </IonCard>
44
-                    <IonCard color="light">
45
-                      <p>Amenazarla con dejarla, con el suicidio o con denunciarla falsamente a la autoridad.</p>
46
-                    </IonCard>
47
-                    <IonCard color="light">
48
-                      <p>Obligarla a retirar los cargos presentados contra él.</p>
49
-                    </IonCard>
50
-                    <IonCard color="light">
51
-                      <p>Obligarla a cometer actos ilegales.</p>
52
-                    </IonCard>
53
-                  </IonContent>
54
-                </IonModal>
55
-            </IonCol>
56
-            <IonCol>
57
-                <IonButton id="open-intimidacion" color="light" expand="block" >
58
-                  Intimidación
59
-                </IonButton>
60
-                <IonModal ref={modal} keepContentsMounted={true} trigger="open-intimidacion">
61
-                  <IonHeader>
62
-                    <IonToolbar>
63
-                      <IonTitle>Intimidación</IonTitle>
64
-                      <IonButtons slot="end">
65
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
66
-                      </IonButtons>
67
-                   </IonToolbar>
68
-                  </IonHeader>
69
-                  <IonContent className="ion-padding">
70
-                    <IonCard color="light">
71
-                      <p>Provocándole miedo a través de sus miradas, acciones y gestos.</p>
72
-                    </IonCard>
73
-                    <IonCard color="light">
74
-                      <p>Destrozar objetos.</p>
75
-                    </IonCard>
76
-                    <IonCard color="light">
77
-                      <p>Intimidarla rompiéndole sus cosas, maltratando a los animales domésticos, mostrándole armas.</p>
78
-                    </IonCard>
79
-                  </IonContent>
80
-                </IonModal>
81
-            </IonCol>
82
-          </IonRow>
83
-          <IonRow>
84
-            <IonCol>
85
-              <IonButton id="open-abuso-emocional" color="light" expand="block">
86
-                 Abuso Emocional
87
-                </IonButton>
88
-                <IonModal ref={modal} trigger="open-abuso-emocional">
89
-                  <IonHeader>
90
-                    <IonToolbar>
91
-                      <IonTitle>Abuso Emocional</IonTitle>
92
-                      <IonButtons slot="end">
93
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
94
-                      </IonButtons>
95
-                   </IonToolbar>
96
-                  </IonHeader>
97
-                  <IonContent className="ion-padding">
98
-                    <IonCard color="light">
99
-                      <p>Hacerla sentir inferior.</p>
100
-                    </IonCard>
101
-                    <IonCard color="light">
102
-                      <p>Hacerla sentir mal.</p>
103
-                    </IonCard>
104
-                    <IonCard color="light">
105
-                      <p>Insultarle con nombres ofensivos.</p>
106
-                    </IonCard>
107
-                    <IonCard color="light">
108
-                      <p>Hacerla pensar que está loca.</p>
109
-                    </IonCard>
110
-                    <IonCard color="light">
111
-                      <p>Confundirla a propósito.</p>
112
-                    </IonCard>
113
-                    <IonCard color="light">
114
-                      <p>Humillarla.</p>
115
-                    </IonCard>
116
-                    <IonCard color="light">
117
-                      <p>Hacerla sentir culpable.</p>
118
-                    </IonCard>
119
-                  </IonContent>
120
-                </IonModal>
121
-            </IonCol>
122
-            <IonCol>
123
-              <IonButton id="open-aislamiento" color="light" expand="block">
124
-                 Aislamiento
125
-                </IonButton>
126
-                <IonModal ref={modal} trigger="open-aislamiento">
127
-                  <IonHeader>
128
-                    <IonToolbar>
129
-                      <IonTitle>Aislamiento</IonTitle>
130
-                      <IonButtons slot="end">
131
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
132
-                      </IonButtons>
133
-                   </IonToolbar>
134
-                  </IonHeader>
135
-                  <IonContent className="ion-padding">
136
-                    <IonCard color="light">
137
-                      <p>Controlar lo que hace, a quién puede ver, con quién puede hablar, lo que puede leer y dónde va.</p>
138
-                    </IonCard>
139
-                    <IonCard color="light">
140
-                      <p>Limitarle su vida social utilizando los celos para justificar sus actos</p>
141
-                    </IonCard>
142
-                  </IonContent>
143
-                </IonModal>
144
-            </IonCol>
145
-          </IonRow>
146
-          <IonRow>
147
-            <IonCol>
148
-            <IonButton id="open-des-neg-cul" color="light" expand="block">
149
-                 Desvalorizar, Negar, Culpar
150
-                </IonButton>
151
-                <IonModal  ref={modal} trigger="open-des-neg-cul">
152
-                  <IonHeader>
153
-                    <IonToolbar>
154
-                      <IonTitle>Desvalorizar, Negar, Culpar</IonTitle>
155
-                      <IonButtons slot="end">
156
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
157
-                      </IonButtons>
158
-                   </IonToolbar>
159
-                  </IonHeader>
160
-                  <IonContent className="ion-padding">
161
-                    <IonCard color="light">
162
-                      <p>No tomar seriamente preocupación que ella tiene sobre el abuso.</p>
163
-                    </IonCard>
164
-                    <IonCard color="light">
165
-                      <p>Negar que uso hacerla sentir responsable de la conducta abusiva.</p>
166
-                    </IonCard>
167
-                    <IonCard color="light">
168
-                      <p>Decirle que ella lo provocó.</p>
169
-                    </IonCard>
170
-                  </IonContent>
171
-                </IonModal>
172
-            </IonCol>
173
-            <IonCol>
174
-              <IonButton id="open-manipulacion" color="light" expand="block">
175
-                 Manipulación de los Niño(a)s
176
-                </IonButton>
177
-                <IonModal ref={modal} trigger="open-manipulacion">
178
-                  <IonHeader>
179
-                    <IonToolbar>
180
-                      <IonTitle>Manipulación de los Niño(a)s</IonTitle>
181
-                      <IonButtons slot="end">
182
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
183
-                      </IonButtons>
184
-                   </IonToolbar>
185
-                  </IonHeader>
186
-                  <IonContent className="ion-padding">
187
-                    <IonCard color="light">
188
-                      <p>Hacerla sentir culpable por el comportamiento de los niño(a) como intermediarios y mantener así el control.</p>
189
-                    </IonCard>
190
-                    <IonCard color="light">
191
-                      <p>Usar las visitas con los niño(a)s para molestarla o amenazarla.</p>
192
-                    </IonCard>
193
-                    <IonCard color="light">
194
-                      <p>Amenazarla con quitarle los niño(a)s.</p>
195
-                    </IonCard>
196
-                  </IonContent>
197
-                </IonModal>
198
-            </IonCol>
199
-          </IonRow>
200
-          <IonRow>
201
-            <IonCol>
202
-            <IonButton id="open-abuso-economico" color="light" expand="block">
203
-                 Abuso Económico
204
-                </IonButton>
205
-                <IonModal ref={modal} trigger="open-abuso-economico">
206
-                  <IonHeader>
207
-                    <IonToolbar>
208
-                      <IonTitle>Abuso Económico</IonTitle>
209
-                      <IonButtons slot="end">
210
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
211
-                      </IonButtons>
212
-                   </IonToolbar>
213
-                  </IonHeader>
214
-                  <IonContent className="ion-padding">
215
-                    <IonCard color="light">
216
-                      <p>No dejarla trabajar o impedirle que mantenga su empleo.</p>
217
-                    </IonCard>
218
-                    <IonCard color="light">
219
-                      <p>Obligarala a que le pida dinero.</p>
220
-                    </IonCard>
221
-                    <IonCard color="light">
222
-                      <p>Darle una mensualidad.</p>
223
-                    </IonCard>
224
-                    <IonCard color="light">
225
-                      <p>Quitarle el dinero.</p>
226
-                    </IonCard>
227
-                    <IonCard color="light">
228
-                      <p>No informarle acerca de los ingresos familiares o no permitirle disponer de los ingresos.</p>
229
-                    </IonCard>
230
-                  </IonContent>
231
-                </IonModal>
232
-            </IonCol>
233
-            <IonCol>
234
-              <IonButton id="open-priv-masculino" color="light" expand="block">
235
-                 Privilegio Masculino
236
-                </IonButton>
237
-                <IonModal ref={modal} trigger="open-priv-masculino">
238
-                  <IonHeader>
239
-                    <IonToolbar>
240
-                      <IonTitle>Privilegio Masculino</IonTitle>
241
-                      <IonButtons slot="end">
242
-                        <IonButton color="light" onClick={() => modal.current?.dismiss()}>Cerrar</IonButton>
243
-                      </IonButtons>
244
-                   </IonToolbar>
245
-                  </IonHeader>
246
-                  <IonContent className="ion-padding">
247
-                    <IonCard color="light">
248
-                      <p>Tratarla como una sirvienta.</p>
249
-                    </IonCard>
250
-                    <IonCard color="light">
251
-                      <p>No dejarla tomar decisiones importantes.</p>
252
-                    </IonCard>
253
-                    <IonCard color="light">
254
-                      <p>Actuar como el rey de la casa.</p>
255
-                    </IonCard>
256
-                    <IonCard color="light">
257
-                      <p>Definir las partes del hombre y de la mujer.</p>
258
-                    </IonCard>
259
-                  </IonContent>
260
-                </IonModal>
261
-            </IonCol>
262
-          </IonRow>
263
-        </IonGrid>
56
+        <IonAccordionGroup multiple={true}>
57
+          {
58
+            // generate an accordion item for each object in Flag.json
59
+            content.map((obj: any) => AccordionItem(obj.title, obj.content))
60
+          }
61
+        </IonAccordionGroup>
264 62
       </IonContent>
265 63
     </IonPage>
266 64
   );
267
-};
65
+}
268 66
 
269 67
 export default Flag;