Commit graph

473 commits

Author SHA1 Message Date
Alejandro Celaya
c53520ae56 Moved logic to dynamically render components based on server version to a separated component 2020-01-28 19:46:36 +01:00
Alejandro Celaya
f3154e770e Fixed maxVisits being set to 0 when trying to reset it 2020-01-28 18:36:23 +01:00
Alejandro Celaya
5762342d6c Ensured edit meta menu item is only displayed when shlink v1.18 or greater is run 2020-01-19 21:30:01 +01:00
Alejandro Celaya
2236ed467e Ensured date range filtering is only displayed if Shlink v1.21 ow higer is run 2020-01-19 21:25:45 +01:00
Alejandro Celaya
f52bcc5389 Ensured state is reset on edit meta modal after closing it 2020-01-19 20:37:12 +01:00
Alejandro Celaya
207a8cef20 Updated tests from modified code 2020-01-19 13:20:46 +01:00
Alejandro Celaya
d44a4b260e Finished component to allow metadata to be edited on existing short URLs 2020-01-19 13:07:33 +01:00
Alejandro Celaya
80a8e0b55c Created component to edit short URLs meta 2020-01-17 21:07:59 +01:00
Alejandro Celaya
2d60f830f7 Improved icons on short URL menu 2020-01-15 20:25:58 +01:00
Alejandro Celaya
301da4bb2a Recovered behavior to show amount of visits in selected date range on visits detail page 2020-01-15 18:31:28 +01:00
Alejandro Celaya
c90cd46095 Removed old ExternalLink component in favor of external one 2020-01-15 18:16:12 +01:00
Alejandro Celaya
5eb4a3adec Fixed tests and typos 2020-01-14 20:12:30 +01:00
Alejandro Celaya
b60908a5e9 Added filtering by date to short URLs list 2020-01-14 19:59:25 +01:00
Alejandro Celaya
124441238b Moved style to the proper scope 2020-01-12 12:08:26 +01:00
Alejandro Celaya
595858ac4b Used visits count component in short URL visits view 2020-01-11 20:10:12 +01:00
Alejandro Celaya
3f2162fe62 Extracted visits count component to reuse it in other places 2020-01-11 19:58:04 +01:00
Alejandro Celaya
5c4fec5a2f Displayed amount of max visits on those URLs which have it 2020-01-11 19:40:16 +01:00
Alejandro Celaya
0920962d72 Used already unpacked property 2020-01-11 14:16:23 +01:00
Alejandro Celaya
de41f50945 Ensured preview menu item is hidden when consuming Shlink 2 2020-01-11 14:12:58 +01:00
Alejandro Celaya
0f51bf95e3 Updated ShlinkApiClient so that it retries API version when v2 is not supported 2020-01-11 13:55:37 +01:00
Alejandro Celaya
ba8cade6fc When handling API errors, use the type prop and fallback to error if not found 2020-01-11 12:24:45 +01:00
Alejandro Celaya
0237af771d Fixed outdated comment 2019-10-21 19:45:35 +02:00
Alejandro Celaya
fc7a2e0c6d Ensured response from servers.json has been parsed to a json array 2019-10-21 19:38:32 +02:00
Alejandro Celaya
f74d135922 Ensured default servers is validated as JSON and ignored otherwise 2019-10-21 19:26:09 +02:00
Alejandro Celaya
12f6b94ece Ensured server version is properly parsed to avoid errors due to invalid semver 2019-10-18 17:39:38 +02:00
Alejandro Celaya
9d2494834c Fixed timing issue when navigating to another server 2019-10-05 19:51:50 +02:00
Alejandro Celaya
923cc3ba01 Updated dev dependencies 2019-10-05 19:08:50 +02:00
Alejandro Celaya
8fcf72f564 Updated production dependencies to latest versions 2019-10-05 18:50:49 +02:00
Alejandro Celaya
ce9ecd7b93 Defined custom function to compare versions which defines the operator in the middle 2019-10-05 11:03:17 +02:00
Alejandro Celaya
354d19af1b Disabled domain component for Shlink versions not supporting it 2019-10-05 10:54:58 +02:00
Alejandro Celaya
6d996baf5d Added tests for new logics 2019-10-05 10:40:32 +02:00
Alejandro Celaya
4120d09220 Loaded version of selected server and created component to filter content based on that version 2019-10-05 10:20:33 +02:00
Alejandro Celaya
67a23bfe33 Added domain input to create short url form 2019-10-05 09:02:02 +02:00
Alejandro Celaya
1c25db9179 Created SimplePaginator test 2019-09-22 11:14:08 +02:00
Alejandro Celaya
810ddd7717 Added foldable pagination to SimplePaginator 2019-09-22 10:41:31 +02:00
Alejandro Celaya
7bbff114a4 Extracted paginator used in SortableBarGraph to its own component 2019-09-21 18:29:58 +02:00
Haocen Xu
ab99213d8c When no order is specified, the order by indicator(triangle) in column header should be Cleared 2019-09-14 18:13:15 -04:00
Alejandro Celaya
2fe923678e Installed react-external-links 2019-08-29 17:47:18 +02:00
Alejandro Celaya
fb94077260 Created shortUrlTags reducer test 2019-05-19 13:22:16 +02:00
Alejandro Celaya
d3491869bd Created tags list reducer test 2019-05-19 12:54:19 +02:00
Alejandro Celaya
4c11d9c6d5 Catched error when loading servers from a servers.json file 2019-04-28 13:07:55 +02:00
Alejandro Celaya
78c34a342d Added tests for new use cases 2019-04-28 12:40:50 +02:00
Alejandro Celaya
20820c47d4 Updated list servers action so that it tries to fetch servers from the servers.json file when no local servers are found 2019-04-28 12:07:09 +02:00
Alejandro Celaya
7b80d78dc5 Removed duplicated code when building ShlinkApiClient 2019-04-21 11:31:40 +02:00
Alejandro Celaya
ce0f036bef Created custom react hook that can be used to handle toggles 2019-03-17 18:35:47 +01:00
Alejandro Celaya
2e452993ff Created Checkbox test 2019-03-17 18:09:10 +01:00
Alejandro Celaya
f4dbd03c7e Added checkbox to control the findIfExists shlink flag 2019-03-17 17:48:05 +01:00
Alejandro Celaya
232c059e4f Replaced usages of defaultState by initialState 2019-03-17 10:11:20 +01:00
Alejandro Celaya
5bb9d15e27 Refactored tagEdit reducer to take advantage of redux-actions 2019-03-17 10:07:28 +01:00
Alejandro Celaya
879034c9c6 Refactored tagDelete reducer to take advantage of redux-actions 2019-03-17 10:02:44 +01:00
Alejandro Celaya
740aacbbf1 Refactored tagsList reducer to take advantage of redux-actions 2019-03-17 09:59:26 +01:00
Alejandro Celaya
fcfab79bed Refactored shortUrlDetail reducer to take advantage of redux-actions 2019-03-17 09:38:37 +01:00
Alejandro Celaya
468e34aa3d Refactored shortUrlVisits reducer to take advantage of redux-actions 2019-03-17 09:36:07 +01:00
Alejandro Celaya
7ff7318089 Refactored shortUrlTags reducer to take advantage of redux-actions 2019-03-17 09:32:53 +01:00
Alejandro Celaya
4654bff737 Refactored shortUrlDeletion reducer to takle advantage of redux-actions 2019-03-17 09:27:01 +01:00
Alejandro Celaya
3075ccb4b9 Refactored shortUrlCreation reducer to takle advantage of redux-actions 2019-03-17 09:20:02 +01:00
Alejandro Celaya
4894ab9035 Refactored shortUrlsListParams reducer to takle advantage of redux-actions 2019-03-17 09:15:58 +01:00
Alejandro Celaya
4a09d99322 Refactored shortUrlsList to take advantage of redux-actions 2019-03-17 09:11:37 +01:00
Alejandro Celaya
51b5f6264d Refactored server reducer, removing duplicated code and taking advantage of redux-actions 2019-03-17 09:06:10 +01:00
Alejandro Celaya
724c804971 Installed redux-actions dependency and used it for selectedServer reducer 2019-03-17 08:49:24 +01:00
Alejandro Celaya
391424d8a1 Ensured bar charts are regenerated when their height changes 2019-03-16 09:02:40 +01:00
Alejandro Celaya
e0db6d5a57 Improved SortableBarGraph test 2019-03-10 17:55:02 +01:00
Alejandro Celaya
87dc24e8a2 Fixed and improved OpenMapModalBtn and ShortUrlVisit components tests 2019-03-10 13:05:20 +01:00
Alejandro Celaya
5233f5a07b Updated OpenMapModalBtn so that it allows showing only active cities 2019-03-10 12:09:54 +01:00
Alejandro Celaya
478ee59bb0 Updated cities chart so that map shows locations from current page when result set is paginated 2019-03-10 10:56:36 +01:00
Alejandro Celaya
b6f6b1ae9d Enabled stickiness on footer 2019-03-10 10:08:42 +01:00
Alejandro Celaya
1ad4290487 Applied some naming improvements 2019-03-10 09:54:40 +01:00
Alejandro Celaya
61480abd2e Updated charts to allow optional pagination 2019-03-10 08:28:14 +01:00
Alejandro Celaya
c094a27c97 Created PaginationDropdown component 2019-03-09 13:20:43 +01:00
Alejandro Celaya
83704ca4b5 Created rangeOf helper function which does a range + map 2019-03-09 12:19:33 +01:00
Alejandro Celaya
4e6ef6ac53 Removed empty line 2019-03-08 19:43:27 +01:00
Alejandro Celaya
3982d77775 Ensured visits loading is cancelled when the visits page is unmounted 2019-03-08 19:40:43 +01:00
Alejandro Celaya
87a4598391 Ensured maps modal btn is not rendered when the number of located cities is 0 2019-03-05 14:09:08 +01:00
Alejandro Celaya
701c143149 Updated ErrorHandler so that it logs errors in production 2019-03-05 14:04:52 +01:00
Alejandro Celaya
e303a80683 Updated bootstrap to solve security issue 2019-03-04 21:05:30 +01:00
Alejandro Celaya
ad9f0c00d0 Created ErrorHandler test 2019-03-04 20:49:18 +01:00
Alejandro Celaya
cd908fa358 Created ErrorHandler component 2019-03-04 20:41:02 +01:00
Alejandro Celaya
4c729a405d Fixed crash when trying to load a map with just one location 2019-03-04 20:24:28 +01:00
Alejandro Celaya
ba5ea7407b Used native javascript reduce instead of ramda reduce 2019-03-04 19:28:24 +01:00
Alejandro Celaya
1bc406b0d9 Ensured requests when loading visits are made in parallel for big dataset 2019-03-04 19:21:46 +01:00
Alejandro Celaya
7e27ceb885 Ensured same timestamp is used when generating memoization ID after mounting the component 2019-03-04 18:19:50 +01:00
Alejandro Celaya
252edaa2ca Improved performance while calculating status by doing one iteration only and memoizing the result when possible 2019-03-04 18:14:45 +01:00
Alejandro Celaya
127bcc14eb Prevented side menu to be swipeable while a modal window is displayed 2019-03-03 12:05:29 +01:00
Alejandro Celaya
6291af2865 Fixed initial zoom and center on maps 2019-03-03 11:47:19 +01:00
Alejandro Celaya
780e4a6e9e Replaced component by render on route rendering not found component with custom props 2019-03-03 11:18:58 +01:00
Alejandro Celaya
c4bc2f24d6 Used not-found component for menu layout inner router 2019-03-03 11:15:34 +01:00
Alejandro Celaya
d23ddd0e0b Created NotFound component 2019-03-03 11:02:29 +01:00
Alejandro Celaya
11d49fb70f Created DeleteTagConfirmModal test 2019-01-13 23:31:10 +01:00
Alejandro Celaya
056286636d Created ScrollToTop test 2019-01-13 23:03:31 +01:00
Alejandro Celaya
d020ed0b13 Created ShortUrlsRowMenu test 2019-01-13 13:08:47 +01:00
Alejandro Celaya
30b4cb4068 Created ShortUrlsRow test 2019-01-13 09:49:02 +01:00
Alejandro Celaya
1aa1d29d97 Removed direct calls between actions without DI 2019-01-12 23:59:03 +01:00
Alejandro Celaya
4f8c7afc76 Created SortableBarGraph test 2019-01-12 23:47:41 +01:00
Alejandro Celaya
0c1f533747 Updated short URL visits loading so that it loads visits in several requests 2019-01-10 19:50:25 +01:00
Alejandro Celaya
23af0de34a Simplified ShlinkApiCLient by using the new simplified authentication approach 2019-01-10 19:17:15 +01:00
Alejandro Celaya
77a624a889 Removed not needed call to function 2019-01-09 20:34:35 +01:00
Alejandro Celaya
b12dac1e35 Improved map modal title 2019-01-09 20:30:59 +01:00
Alejandro Celaya
c599d2837b Improved VisitsParser test 2019-01-09 07:59:56 +01:00
Alejandro Celaya
8b8be2d7ca Updated stateFlagTimeout to get the setTimeout function injected as a dependency 2019-01-08 20:49:47 +01:00
Alejandro Celaya
00d386f19f Skipped locations from unknown cities when processing cities stats for map 2019-01-07 21:11:09 +01:00
Alejandro Celaya
4870801f8f Implemented map to show visits from every city 2019-01-07 21:00:28 +01:00
Alejandro Celaya
78745366c2 Moved button to open map to separated component 2019-01-07 19:43:25 +01:00
Alejandro Celaya
2be771cbcc Improved styles 2019-01-07 13:45:16 +01:00
Alejandro Celaya
6abc0e7d02 Created component to show a map on a modal window 2019-01-07 13:35:25 +01:00
Alejandro Celaya
a2c1f5ce7d Improved function name 2019-01-07 11:56:54 +01:00
Alejandro Celaya
dc9c1712ff Added cities stats graphic on short url visits page 2019-01-07 11:53:14 +01:00
Alejandro Celaya
08488e9bad Imported config files and start script from new create react app 2019-01-05 22:54:54 +01:00
Alejandro Celaya
835d54e90c Updated dependencies and source code 2019-01-05 22:25:54 +01:00
Alejandro Celaya
03f409a803 Updated linting dependencies 2018-12-31 18:23:47 +01:00
Alejandro Celaya
8a9a4f40a7 Created shortUrlsList reducer test 2018-12-21 10:58:51 +01:00
Alejandro Celaya
047d99be6d Updated ScrollTop component so that it gets the window object injected as a dependency 2018-12-21 10:38:40 +01:00
Alejandro Celaya
16cf30f26f Created EditTagsModal component test 2018-12-21 10:34:12 +01:00
Alejandro Celaya
9268114fe1 Created shortUrlDeletion reducer test 2018-12-21 10:02:42 +01:00
Alejandro Celaya
77a2f32cfd Ensured bar graphs are sorted case insensitive 2018-12-19 11:07:47 +01:00
Alejandro Celaya
eec79043cc Moved common and utils services to their own service providers 2018-12-18 20:19:22 +01:00
Alejandro Celaya
4b1f5e9f4c Extracted short-url related services to its own service provider 2018-12-18 20:00:23 +01:00
Alejandro Celaya
cf1239cf6e Moved all server-related services to its own service provider 2018-12-18 19:45:09 +01:00
Alejandro Celaya
566322a8c5 Extracted tag related services to its own service provider 2018-12-18 14:55:00 +01:00
Alejandro Celaya
fa3e1eba93 Moved all visits-related services to its own service provide function inside visits 2018-12-18 14:36:32 +01:00
Alejandro Celaya
471322f4db Implemented dependency injection in all tag related components 2018-12-18 11:28:15 +01:00
Alejandro Celaya
4f54e3315f Simplified ShlinkApiClient and moved runtime creation logic to external service 2018-12-18 10:14:25 +01:00
Alejandro Celaya
7bd4b39b5a Added lazy loading to action services 2018-12-18 05:03:38 +01:00
Alejandro Celaya
12ddeebedf Registered first actions as services 2018-12-18 04:54:32 +01:00
Alejandro Celaya
d6e53918a2 Created function which dynamically resolve action services from the container for connected components 2018-12-18 04:34:37 +01:00
Alejandro Celaya
bab1e57ab1 Registered remaining short URLs components in DI container 2018-12-17 23:11:55 +01:00
Alejandro Celaya
5616d045ab Migrated a lot more components to new DI system 2018-12-17 22:18:47 +01:00
Alejandro Celaya
5e6ad14a85 More components migrated for dependency injection 2018-12-17 20:24:31 +01:00
Alejandro Celaya
79a518b02d Registered first components as services 2018-12-17 20:03:36 +01:00
Alejandro Celaya
07b1d5be2e Created shortUrlCreation reducer test 2018-11-01 14:55:30 +01:00
Alejandro Celaya
f94b5b7c68 Created tagDelete reducer test 2018-11-01 14:44:55 +01:00
Alejandro Celaya
824a2facac Created tagEdit reducer test 2018-11-01 14:13:49 +01:00
Alejandro Celaya
4445c79540 Created TagsList test 2018-11-01 13:51:03 +01:00
Alejandro Celaya
85cb849ba5 Created TagCard test 2018-11-01 13:34:31 +01:00
Alejandro Celaya
53132fa900 Created CreateShortUrl test 2018-11-01 13:15:09 +01:00
Alejandro Celaya
1697ef9306 Created QrCodeModal test 2018-11-01 12:35:51 +01:00
Alejandro Celaya
79a16a2c2c Created PreviewModal test 2018-11-01 12:34:18 +01:00
Alejandro Celaya
30192cb349 Created DeleteShortUrlModal test 2018-11-01 12:24:16 +01:00
Alejandro Celaya
70ebb0362a Converted DateInput into functional component 2018-11-01 09:16:18 +01:00
Alejandro Celaya
cccf57a35a Moved DateInput from common to utils 2018-11-01 09:05:20 +01:00
Alejandro Celaya
6784c30fa0 Ensured react router uses homepage defined in package.jsoin as basename 2018-11-01 08:20:33 +01:00
Alejandro Celaya
822afa6db7 Ensured tooltips are not intersect for bar charts 2018-10-30 20:41:36 +01:00
Alejandro Celaya
7a63f737ac Updated sort icons in SortingDropdown 2018-10-30 07:35:35 +01:00
Alejandro Celaya
99833b51a9 Ensured dropdown item styles are not overriden for disabled items 2018-10-28 23:06:57 +01:00
Alejandro Celaya
05936c52b3 Added sorting to referrers bar graph 2018-10-28 23:04:52 +01:00
Alejandro Celaya
368de2b4c7 Added order control to countries graph 2018-10-28 22:54:08 +01:00
Alejandro Celaya
6634fc41c5 Fixed short urls dropdown menu not properly located 2018-10-28 21:51:54 +01:00
Alejandro Celaya
4ad8e909d4 Extracted sorting dropdown to its own component 2018-10-28 21:26:47 +01:00
Alejandro Celaya
0e8631ae9d Updated GraphCard so that it automatically calculates the proper aspect ration for bar chart graphs 2018-10-19 20:27:25 +02:00
Alejandro Celaya
812e391e34 Moved helper functions in GraphCard outside of component function 2018-10-19 19:04:22 +02:00
Alejandro Celaya
bb17dbe680 Recovered missing class 2018-10-07 09:22:15 +02:00
Alejandro Celaya
644caf7dfb Ensured ColorGenerator matches keys in a case insensitive way 2018-10-07 08:59:25 +02:00
Alejandro Celaya
7d665f3933 Ensured tags returned from server are used after editing short URL tags in order to use the normalized values 2018-09-16 12:48:28 +02:00
Alejandro Celaya
fc1af04243 Created tests for Paginator and SearchBar 2018-09-16 12:18:02 +02:00
Alejandro Celaya
f2d03203ae Implemented short URLs deletion 2018-09-16 10:47:17 +02:00
Alejandro Celaya
2d6dda3576 Created delete short URLs modal 2018-09-16 09:35:39 +02:00
Alejandro Celaya
9b3bfe56bb Ensured list filtering params are reset when list component unmounts 2018-09-16 09:01:05 +02:00
Alejandro Celaya
5d5a2be498 Ensured bar charts start at 0 2018-09-08 20:42:14 +02:00
Alejandro Celaya
64c1b56973 Created ShortUrlVisits test 2018-09-08 13:28:40 +02:00
Alejandro Celaya
d37e7ca7ce Created VisitsHeader test 2018-09-08 09:31:44 +02:00
Alejandro Celaya
eb0f219403 Created GraphCard test 2018-09-08 09:06:18 +02:00
Alejandro Celaya
0c1656285b Created shortUrlVisits reducer test 2018-09-08 08:49:49 +02:00
Alejandro Celaya
bbce53ade6 Created shortUrlDetail reducer test 2018-09-07 20:41:21 +02:00
Alejandro Celaya
3e63734e2b Improved visits page 2018-09-05 20:17:46 +02:00
Alejandro Celaya
28bd39f974 Fixed stylelint not properly inspecting files in src root 2018-09-02 11:10:59 +02:00
Alejandro Celaya
8b17ff88ed Split short URL visits reducer into two individual reducers 2018-09-02 11:10:59 +02:00
Alejandro Celaya
0d97c084c2 Extracted components in ShortUrlVisits to simplify maintainability 2018-09-02 11:10:59 +02:00
Alejandro Celaya
b7ca32ff8f Moved visits-related elements to visits folder 2018-09-02 11:10:59 +02:00
Alejandro Celaya
b454810357 Moved tag helper components from utils to tags/helpers folder 2018-09-02 11:10:59 +02:00
Alejandro Celaya
fd57d70a0b Fixed tags input autofocus 2018-09-02 11:10:59 +02:00
Alejandro Celaya
b0bce7498a Added first autocomplete implementation on tags selector 2018-09-02 11:10:59 +02:00
Alejandro Celaya
1519f89318 Created different functions which load tags always or only once 2018-09-02 11:10:59 +02:00
Alejandro Celaya
0b089e24de Moved propTypes and defaultProps as static properties in class components 2018-09-02 11:10:59 +02:00
Alejandro Celaya
2b44d1b009 Fixed first item on aside menu only selected when in first page 2018-09-02 10:44:52 +02:00
Alejandro Celaya
850630092a Fixed selected tags lost when chaning page 2018-09-02 10:39:26 +02:00
Alejandro Celaya
34c5a0ef8f Removed duplicated code by creating a helper function 2018-08-27 16:45:46 +02:00
Alejandro Celaya
3d39fa724c Created App test 2018-08-26 19:48:21 +02:00
Alejandro Celaya
933de6e2c5 Fixed event handlers not properly called 2018-08-26 19:30:56 +02:00
Alejandro Celaya
2fdc7a0ff0 Fixed shape types not properly defined as shapes but as plane objects 2018-08-26 19:19:45 +02:00
Alejandro Celaya
3569202a62 Fixed typo 2018-08-26 10:52:45 +02:00
Alejandro Celaya
c0e116b17b Disabled specific eslint rules in small blocks 2018-08-26 10:49:23 +02:00
Alejandro Celaya
9b668f3365 Simplified Paginator component 2018-08-25 23:45:03 +02:00
Alejandro Celaya
6a016d8e6f Updated styles in javascript to fulfill adidas rules 2018-08-25 23:39:27 +02:00
Alejandro Celaya
ed0aa68452 Fixed linting issues in stylesheets 2018-08-25 15:59:51 +02:00
Alejandro Celaya
6d0753481d Refactored visits parser to be functional 2018-08-24 23:55:53 +02:00
Alejandro Celaya
4924f24e1a Refactored VisitsParser taking advantage of reduce function 2018-08-24 23:51:33 +02:00
Alejandro Celaya
26a3fdfd3d Created VisitsParser test 2018-08-24 23:38:37 +02:00
Alejandro Celaya
a83be0b45c Created CreateServer test 2018-08-24 23:19:49 +02:00
Alejandro Celaya
badc8a7324 Created DeleteServerModal test 2018-08-24 12:36:14 +02:00
Alejandro Celaya
7cd9caee77 Created DeleteServerButton test 2018-08-24 12:23:35 +02:00
Alejandro Celaya
76ae27707b Created ServersService test 2018-08-24 10:58:37 +02:00
Alejandro Celaya
53a4240219 Created ServersImporter test 2018-08-24 10:34:32 +02:00
Alejandro Celaya
12ac877e2d Created ServersExporter test 2018-08-24 10:14:00 +02:00
Alejandro Celaya
ff28169c74 Created ImportServersBtn test 2018-08-23 16:26:42 +02:00
Alejandro Celaya
da1616542d Minor refactoring on ImportServersBtn 2018-08-23 15:33:05 +02:00
Alejandro Celaya
a5865e6cec Improved ShlinkApiClient test 2018-08-22 22:38:05 +02:00
Alejandro Celaya
9b063a4616 Implemented importing servers from CSV file 2018-08-21 20:33:12 +02:00
Alejandro Celaya
ac52f55c5e Added button to import servers from CSV file 2018-08-20 17:31:45 +02:00
Alejandro Celaya
617a3b767b Replace json-csv parsing library 2018-08-20 17:08:15 +02:00
Alejandro Celaya
b72a5d0a66 Improved ServerDropdown.text.js 2018-08-20 16:53:48 +02:00
Alejandro Celaya
2b373cc4af Added feature to export servers list 2018-08-20 16:40:33 +02:00