Преглед на файлове

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.
Jantony Velazquez Gauthier преди 2 години
родител
ревизия
206568b325
променени са 2 файла, в които са добавени 85 реда и са изтрити 248 реда
  1. 39
    0
      src/pages/Flag.json
  2. 46
    248
      src/pages/Flag.tsx

+ 39
- 0
src/pages/Flag.json Целия файл

@@ -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 Целия файл

@@ -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;