Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 7015 | Rev 7020 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
7015 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { axios } from '../../utils'
3
import { useDispatch, useSelector } from 'react-redux'
4
import { addNotification } from '../../redux/notification/notification.actions'
7019 stevensc 5
import EmptySection from '../../components/UI/EmptySection'
7015 stevensc 6
 
7019 stevensc 7
const mock = {
8
  items: [
9
    {
10
      image:
11
        '/storage/type/knowledge-area/code/facd46a7-70dd-4a8f-9827-605b8f32aaeb/filename/646e347a5124e-area1.png/',
12
      title: 'Programa #1',
13
      description:
14
        'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq...',
15
      category: 'Programas de Desarrollo',
16
      link_view: '/knowledge-area/view/facd46a7-70dd-4a8f-9827-605b8f32aaeb',
17
      link_edit: '/knowledge-area/edit/facd46a7-70dd-4a8f-9827-605b8f32aaeb',
18
      link_delete:
19
        '/knowledge-area/delete/facd46a7-70dd-4a8f-9827-605b8f32aaeb',
20
    },
21
    {
22
      image:
23
        '/storage/type/knowledge-area/code/174ae74a-3e97-4820-a35e-8315d3a698ff/filename/646e39ca08a08-profile_1.png/',
24
      title: 'Desarrollo web',
25
      description: 'Prueba de desarrollo',
26
      category: 'Programas de Desarrollo',
27
      link_view: '/knowledge-area/view/174ae74a-3e97-4820-a35e-8315d3a698ff',
28
      link_edit: '/knowledge-area/edit/174ae74a-3e97-4820-a35e-8315d3a698ff',
29
      link_delete:
30
        '/knowledge-area/delete/174ae74a-3e97-4820-a35e-8315d3a698ff',
31
    },
32
  ],
33
  total: 2,
34
  page: 1,
35
  total_pages: 10,
36
}
37
 
7015 stevensc 38
const KnowledgeAreaPage = ({ allowAdd = true, content_edit = true }) => {
39
  const [knowledges, setKnowledges] = useState([])
40
  const [knowledgesCategories, setKnowledgesCategories] = useState([])
41
  const labels = useSelector(({ intl }) => intl.labels)
42
  const dispatch = useDispatch()
43
 
44
  useEffect(() => {
45
    axios
46
      .get('/knowledge-area', {
47
        headers: {
48
          'Content-Type': 'application/json',
49
        },
50
      })
51
      .then((response) => {
7019 stevensc 52
        const { data, success } = response.data
53
 
54
        if (!success) {
55
          const errorMessage =
56
            typeof data === 'string'
57
              ? data
58
              : 'Ha ocurrido un error, por favor intente más tarde.'
59
 
60
          dispatch(addNotification({ style: 'danger', msg: errorMessage }))
61
          return
62
        }
63
 
64
        setKnowledges(data.items)
7015 stevensc 65
      })
66
      .catch((error) => {
67
        dispatch(
68
          addNotification({
69
            style: 'danger',
70
            msg: 'Ha ocurrido un error, por favor intente más tarde.',
71
          })
72
        )
73
        throw new Error(error)
74
      })
75
  }, [])
76
 
77
  return (
78
    <section className="companies-info container px-0">
79
      <div className="company-title">
80
        <h1 className="title mx-auto">{labels.knowledge_area_title}</h1>
81
        {content_edit && allowAdd && (
82
          <h2 className="title cursor-pointer" id="knowledge-add-a">
83
            {labels.knowledge_area_add}
84
          </h2>
85
        )}
86
      </div>
87
 
88
      <div className="row gap-3" id="row-list">
89
        <div className="knowledge-category-list col-12 col-md-3">
90
          <ul>
91
            <li className="knowledge-category-li knowledge-category-li-selected">
92
              <a className="knowledge-category-a" href="">
93
                {labels.knowledge_area_category_all}
94
              </a>
95
            </li>
96
            {knowledgesCategories.map((category, index) => (
97
              <li className="knowledge-category-li" key={index}>
98
                <a className="knowledge-category-a" href="">
99
                  {category.name}
100
                </a>
101
              </li>
102
            ))}
103
          </ul>
104
        </div>
105
 
106
        <div className="col px-0">
107
          <div className="search-box">
108
            <form id="form-filter" name="form-filter">
109
              <input
110
                type="text"
111
                name="search"
112
                id="search"
113
                className="form-control"
114
              />
115
              <button className="btn btn-search">{labels.search}</button>
116
            </form>
117
          </div>
118
 
7019 stevensc 119
          <div className="knowledge-record-list mt-3">
120
            {knowledges.length ? (
121
              knowledges.map((knowledge, index) => (
122
                <Item key={index} {...knowledge} />
123
              ))
124
            ) : (
125
              <EmptySection
126
                message={labels.error_no_record_matched_your_query}
127
              />
128
            )}
129
          </div>
7015 stevensc 130
 
7019 stevensc 131
          {/* <div id="knowledge-record-pagination"></div> */}
7015 stevensc 132
        </div>
133
      </div>
134
    </section>
135
  )
136
}
137
 
7019 stevensc 138
const Item = ({
139
  link_delete,
140
  link_view,
141
  link_edit,
142
  category,
143
  description,
144
  image,
145
  title,
146
}) => {
147
  return (
148
    <div className="knowledge-record-card">
149
      <a
150
        href={link_view}
151
        target="_blank"
152
        className="knowledge-record-card-actions-view"
153
        rel="noreferrer"
154
      >
155
        <img src={image} alt={`${title} image`} />
156
      </a>
157
      <div className="d-flex align-items-center justify-content-between">
158
        {link_edit && (
159
          <button data-link="{{>link_edit}}" className="btn-knowledge-edit">
160
            <i className="fa fa-pencil" aria-hidden="true" />
161
          </button>
162
        )}
163
 
164
        {link_delete && (
165
          <button data-link="{{>link_delete}}" className="btn-knowledge-delete">
166
            <i className="fa fa-trash" aria-hidden="true" />
167
          </button>
168
        )}
169
      </div>
170
      <h3>{category}</h3>
171
      <a href={link_view} target="_blank" rel="noreferrer">
172
        <h2>{title}</h2>
173
      </a>
174
      <p>{description}</p>
175
    </div>
176
  )
177
}
178
 
7015 stevensc 179
export default KnowledgeAreaPage