From 1e183f50596d0590ee9c8fd4219134f977d2a4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Fri, 10 Aug 2018 18:11:34 +0200 Subject: [PATCH] UX improvements in table editor --- app/Http/Controllers/TableEditController.php | 38 +-- app/Tables/Changeset.php | 27 +- app/helpers.php | 5 + public/fonts/fa-dtbl-1-preview.html | 241 ++++++++++-------- public/fonts/fa-dtbl-1.css | 81 +++--- public/fonts/fa-dtbl-1.eot | Bin 11304 -> 11740 bytes public/fonts/fa-dtbl-1.svg | 234 +++++++++-------- public/fonts/fa-dtbl-1.ttf | Bin 11124 -> 11560 bytes public/fonts/fa-dtbl-1.woff | Bin 6948 -> 0 bytes public/fonts/fa-dtbl-1.woff2 | Bin 5460 -> 5760 bytes resources/assets/fa-config/wanted.ini | 18 +- .../assets/js/components/ColumnEditor.vue | 2 +- resources/assets/js/components/RowsEditor.vue | 224 ++++++++++++---- resources/assets/js/udash.js | 1 + resources/assets/js/vue-init.js | 6 +- resources/assets/sass/_fa-utils.scss | 13 + .../sass/bootstrap-customizations/_nav.scss | 7 + resources/views/table/conf.blade.php | 2 +- .../table/propose/add-rows-csv.blade.php | 27 ++ .../views/table/propose/add-rows.blade.php | 51 ++-- .../views/table/propose/edit-rows.blade.php | 5 + .../propose/layout-row-pagination.blade.php | 20 +- .../views/table/propose/layout.blade.php | 43 ++-- .../views/table/propose/review.blade.php | 10 +- 24 files changed, 652 insertions(+), 403 deletions(-) delete mode 100644 public/fonts/fa-dtbl-1.woff create mode 100644 resources/views/table/propose/add-rows-csv.blade.php diff --git a/app/Http/Controllers/TableEditController.php b/app/Http/Controllers/TableEditController.php index db17c66..a37ca85 100644 --- a/app/Http/Controllers/TableEditController.php +++ b/app/Http/Controllers/TableEditController.php @@ -123,20 +123,36 @@ class TableEditController extends Controller $input = objBag($request->all(), false); + $resp = null; + $code = 200; + try { - $code = 200; switch ($input->action) { case 'row.update': $data = (object)$input->data; $resp = $changeset->rowUpdate($data); break; + case 'row.update-many': + $newVals = $input->data; + $updated = []; + foreach ($newVals as $rowUpdate) { + $r = $changeset->rowUpdate($rowUpdate); + $updated[$r->_id] = $r; + } + $resp = $updated; + break; + case 'row.remove': $isNew = $changeset->isNewRow($input->id); $changeset->rowRemove($input->id); $resp = $isNew ? null : $changeset->fetchAndTransformRow($input->id); break; + case 'rows.remove-empty-new': + $changeset->removeEmptyNewRows(); + break; + case 'row.restore': $changeset->rowRestore($input->id); $resp = $changeset->fetchAndTransformRow($input->id); @@ -144,13 +160,6 @@ class TableEditController extends Controller case 'rows.add': $changeset->addBlankRows($input->count); - - // rows.add is sent via a form - if ($input->has('redirect')) { - return redirect($input->redirect); - } else { - $resp = null; - } break; case 'rows.add-csv': @@ -159,13 +168,6 @@ class TableEditController extends Controller } catch (\Exception $e) { return $this->backWithErrors(['data' => $e->getMessage()]); } - - // rows.add-csv is sent via a form - if ($input->has('redirect')) { - return redirect($input->redirect); - } else { - $resp = null; - } break; case 'col.update': @@ -190,7 +192,6 @@ class TableEditController extends Controller case 'col.sort': $changeset->setColOrder($input->order); - $resp = null; break; default: @@ -204,6 +205,11 @@ class TableEditController extends Controller $this->storeChangeset($changeset); + // Redirect requested via form + if ($code == 200 && $input->has('redirect')) { + return redirect($input->redirect); + } + return $this->jsonResponse($resp, $code); } } diff --git a/app/Tables/Changeset.php b/app/Tables/Changeset.php index 8e260dc..391d057 100644 --- a/app/Tables/Changeset.php +++ b/app/Tables/Changeset.php @@ -191,6 +191,13 @@ class Changeset if ($this->isNewRow($row->_id)) { if ($decorate) { $row->_new = true; + $row->_orig = array_diff((array)$row, []); + // remove junk + unset($row->_orig['_id']); + unset($row->_orig['_new']); + unset($row->_orig['_remove']); + unset($row->_orig['_changed']); + unset($row->_orig['_orig']); } return $row; } @@ -359,7 +366,9 @@ class Changeset public function fetchRow(int $id) { if ($this->isNewRow($id)) { - return (object)$this->newRows[$id]; + $nr = (object)$this->newRows[$id]; + $nr->_new = true; + return $nr; } $r = $this->revision->rowsData($this->fetchColumns(), true, false) @@ -557,7 +566,8 @@ class Changeset $rows = self::csvToRowsArray($columns, $csvArray, false) ->keyBy('_id'); - $this->newRows = array_merge($this->newRows, $rows->all()); + // using '+' to avoid renumbering + $this->newRows = $this->newRows + $rows->toArray(); } public function addBlankCol() @@ -587,4 +597,17 @@ class Changeset $this->columnOrder = array_merge($order, $missing); } + + public function removeEmptyNewRows() + { + $cols = $this->fetchColumns(); + $emptyTpl = collect($cols)->keyBy('id')->map(function(Column $c) { + return $c->cast(null); + })->all(); + + $this->newRows = array_filter($this->newRows, function ($r) use ($emptyTpl) { + $emptyTpl['_id'] = $r['_id']; + return $emptyTpl != $r; + }); + } } diff --git a/app/helpers.php b/app/helpers.php index eb39c42..bd3796a 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -126,6 +126,11 @@ function collection_paginate($items, $per_page, $mapFn = null) $page = Request::get('page', 1); $pageItems = $items->forPage($page, $per_page)->values(); + if (count($pageItems) == 0 && $page > 1) { + $page = 1; + Request::replace(['page' => $page]); + $pageItems = $items->forPage($page, $per_page)->values(); + } return new Illuminate\Pagination\LengthAwarePaginator( $mapFn ? $pageItems->map($mapFn) : $pageItems, diff --git a/public/fonts/fa-dtbl-1-preview.html b/public/fonts/fa-dtbl-1-preview.html index 79196f5..dc7a923 100644 --- a/public/fonts/fa-dtbl-1-preview.html +++ b/public/fonts/fa-dtbl-1-preview.html @@ -162,6 +162,7 @@ [data-icon]:before, .fa-address-card-o:before, +.fa-arrow-left:before, .fa-bars:before, .fa-calendar:before, .fa-chevron-down:before, @@ -172,13 +173,13 @@ .fa-exclamation-triangle:before, .fa-eye:before, .fa-facebook-square:before, +.fa-file-excel-o:before, .fa-floppy-o:before, .fa-github:before, .fa-globe:before, .fa-google:before, .fa-history:before, .fa-home:before, -.fa-hourglass:before, .fa-inbox:before, .fa-key-modern:before, .fa-link:before, @@ -186,14 +187,15 @@ .fa-pencil:before, .fa-plus:before, .fa-question-circle:before, +.fa-reply:before, .fa-sign-in:before, .fa-sign-out:before, +.fa-spinner:before, .fa-star:before, .fa-star-o:before, .fa-sun-o:before, .fa-table:before, .fa-th-list:before, -.fa-times:before, .fa-trash-o:before, .fa-undo:before, .fa-user:before, @@ -216,45 +218,47 @@ } .fa-address-card-o:before { content: "\f100"; } -.fa-bars:before { content: "\f101"; } -.fa-calendar:before { content: "\f102"; } -.fa-chevron-down:before { content: "\f103"; } -.fa-chevron-up:before { content: "\f104"; } -.fa-code-fork:before { content: "\f105"; } -.fa-comment:before { content: "\f106"; } -.fa-download:before { content: "\f107"; } -.fa-exclamation-triangle:before { content: "\f108"; } -.fa-eye:before { content: "\f109"; } -.fa-facebook-square:before { content: "\f10a"; } -.fa-floppy-o:before { content: "\f10b"; } -.fa-github:before { content: "\f10c"; } -.fa-globe:before { content: "\f10d"; } -.fa-google:before { content: "\f10e"; } -.fa-history:before { content: "\f10f"; } -.fa-home:before { content: "\f110"; } -.fa-hourglass:before { content: "\f111"; } -.fa-inbox:before { content: "\f112"; } -.fa-key-modern:before { content: "\f113"; } -.fa-link:before { content: "\f114"; } -.fa-moon-o:before { content: "\f115"; } -.fa-pencil:before { content: "\f116"; } -.fa-plus:before { content: "\f117"; } -.fa-question-circle:before { content: "\f118"; } -.fa-sign-in:before { content: "\f119"; } -.fa-sign-out:before { content: "\f11a"; } -.fa-star:before { content: "\f11b"; } -.fa-star-o:before { content: "\f11c"; } -.fa-sun-o:before { content: "\f11d"; } -.fa-table:before { content: "\f11e"; } -.fa-th-list:before { content: "\f11f"; } -.fa-times:before { content: "\f120"; } -.fa-trash-o:before { content: "\f121"; } -.fa-undo:before { content: "\f122"; } -.fa-user:before { content: "\f123"; } -.fa-user-circle-o:before { content: "\f124"; } -.fa-user-plus:before { content: "\f125"; } -.fa-users:before { content: "\f126"; } -.fa-wrench:before { content: "\f127"; } +.fa-arrow-left:before { content: "\f101"; } +.fa-bars:before { content: "\f102"; } +.fa-calendar:before { content: "\f103"; } +.fa-chevron-down:before { content: "\f104"; } +.fa-chevron-up:before { content: "\f105"; } +.fa-code-fork:before { content: "\f106"; } +.fa-comment:before { content: "\f107"; } +.fa-download:before { content: "\f108"; } +.fa-exclamation-triangle:before { content: "\f109"; } +.fa-eye:before { content: "\f10a"; } +.fa-facebook-square:before { content: "\f10b"; } +.fa-file-excel-o:before { content: "\f10c"; } +.fa-floppy-o:before { content: "\f10d"; } +.fa-github:before { content: "\f10e"; } +.fa-globe:before { content: "\f10f"; } +.fa-google:before { content: "\f110"; } +.fa-history:before { content: "\f111"; } +.fa-home:before { content: "\f112"; } +.fa-inbox:before { content: "\f113"; } +.fa-key-modern:before { content: "\f114"; } +.fa-link:before { content: "\f115"; } +.fa-moon-o:before { content: "\f116"; } +.fa-pencil:before { content: "\f117"; } +.fa-plus:before { content: "\f118"; } +.fa-question-circle:before { content: "\f119"; } +.fa-reply:before { content: "\f11a"; } +.fa-sign-in:before { content: "\f11b"; } +.fa-sign-out:before { content: "\f11c"; } +.fa-spinner:before { content: "\f11d"; } +.fa-star:before { content: "\f11e"; } +.fa-star-o:before { content: "\f11f"; } +.fa-sun-o:before { content: "\f120"; } +.fa-table:before { content: "\f121"; } +.fa-th-list:before { content: "\f122"; } +.fa-trash-o:before { content: "\f123"; } +.fa-undo:before { content: "\f124"; } +.fa-user:before { content: "\f125"; } +.fa-user-circle-o:before { content: "\f126"; } +.fa-user-plus:before { content: "\f127"; } +.fa-users:before { content: "\f128"; } +.fa-wrench:before { content: "\f129"; } @@ -270,7 +274,7 @@
-

fa-dtbl-1 contains 40 glyphs:

+

fa-dtbl-1 contains 42 glyphs:

Toggle Preview Characters
@@ -289,6 +293,19 @@
+
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+
PpPpPpPpPpPpPpPpPpPp @@ -298,7 +315,7 @@
- +
@@ -311,7 +328,7 @@
- +
@@ -324,7 +341,7 @@
- +
@@ -337,7 +354,7 @@
- +
@@ -350,7 +367,7 @@
- +
@@ -363,7 +380,7 @@
- +
@@ -376,7 +393,7 @@
- +
@@ -390,7 +407,7 @@
- +
@@ -403,7 +420,7 @@
- +
@@ -416,7 +433,20 @@
- + +
+ + +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ +
@@ -430,7 +460,7 @@
- +
@@ -443,7 +473,7 @@
- +
@@ -456,7 +486,7 @@
- +
@@ -469,7 +499,7 @@
- +
@@ -482,7 +512,7 @@
- +
@@ -495,20 +525,7 @@
- -
- - -
-
- PpPpPpPpPpPpPpPpPpPp -
-
- 12141618212436486072 -
-
- - +
@@ -521,7 +538,7 @@
- +
@@ -534,7 +551,7 @@
- +
@@ -547,7 +564,7 @@
- +
@@ -560,7 +577,7 @@
- +
@@ -573,7 +590,7 @@
- +
@@ -586,7 +603,7 @@
- +
@@ -599,7 +616,20 @@
- + +
+ + +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ +
@@ -612,7 +642,7 @@
- +
@@ -625,86 +655,85 @@
- +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - + +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - + +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - + +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - + +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - + +
- PpPpPpPpPpPpPpPpPpPp + PpPpPpPpPpPpPpPpPpPp
12141618212436486072
- - - + +
@@ -717,7 +746,7 @@
- +
@@ -730,7 +759,7 @@
- +
@@ -743,7 +772,7 @@
- +
@@ -756,7 +785,7 @@
- +
@@ -769,7 +798,7 @@
- +
@@ -782,7 +811,7 @@
- +
@@ -795,7 +824,7 @@
- +
diff --git a/public/fonts/fa-dtbl-1.css b/public/fonts/fa-dtbl-1.css index 8ceda4a..85efae6 100644 --- a/public/fonts/fa-dtbl-1.css +++ b/public/fonts/fa-dtbl-1.css @@ -7,7 +7,6 @@ src: url('./fa-dtbl-1.eot?v=1.1.0'); src: url('./fa-dtbl-1.eot?#iefix&v=1.1.0') format('embedded-opentype'), url('./fa-dtbl-1.woff2?v=1.1.0') format('woff2'), - url('./fa-dtbl-1.woff?v=1.1.0') format('woff'), url('./fa-dtbl-1.ttf?v=1.1.0') format('truetype'), url('./fa-dtbl-1.svg?v=1.1.0#fa-dtbl-1') format('svg'); font-weight: normal; @@ -40,42 +39,44 @@ } .fa-address-card-o::before, .fa-vcard-o::before { content: "\f100"; } -.fa-bars::before { content: "\f101"; } -.fa-calendar::before { content: "\f102"; } -.fa-chevron-down::before { content: "\f103"; } -.fa-chevron-up::before { content: "\f104"; } -.fa-code-fork::before { content: "\f105"; } -.fa-comment::before { content: "\f106"; } -.fa-download::before { content: "\f107"; } -.fa-exclamation-triangle::before, .fa-warning::before { content: "\f108"; } -.fa-eye::before { content: "\f109"; } -.fa-facebook-square::before { content: "\f10a"; } -.fa-floppy-o::before, .fa-save::before { content: "\f10b"; } -.fa-github::before { content: "\f10c"; } -.fa-globe::before { content: "\f10d"; } -.fa-google::before { content: "\f10e"; } -.fa-history::before { content: "\f10f"; } -.fa-home::before { content: "\f110"; } -.fa-hourglass::before { content: "\f111"; } -.fa-inbox::before { content: "\f112"; } -.fa-key-modern::before { content: "\f113"; } -.fa-link::before { content: "\f114"; } -.fa-moon-o::before { content: "\f115"; } -.fa-pencil::before { content: "\f116"; } -.fa-plus::before { content: "\f117"; } -.fa-question-circle::before { content: "\f118"; } -.fa-sign-in::before { content: "\f119"; } -.fa-sign-out::before { content: "\f11a"; } -.fa-star::before { content: "\f11b"; } -.fa-star-o::before { content: "\f11c"; } -.fa-sun-o::before { content: "\f11d"; } -.fa-table::before { content: "\f11e"; } -.fa-th-list::before { content: "\f11f"; } -.fa-times::before, .fa-close::before { content: "\f120"; } -.fa-trash-o::before { content: "\f121"; } -.fa-undo::before { content: "\f122"; } -.fa-user::before { content: "\f123"; } -.fa-user-circle-o::before { content: "\f124"; } -.fa-user-plus::before { content: "\f125"; } -.fa-users::before { content: "\f126"; } -.fa-wrench::before { content: "\f127"; } +.fa-arrow-left::before { content: "\f101"; } +.fa-bars::before { content: "\f102"; } +.fa-calendar::before { content: "\f103"; } +.fa-chevron-down::before { content: "\f104"; } +.fa-chevron-up::before { content: "\f105"; } +.fa-code-fork::before { content: "\f106"; } +.fa-comment::before { content: "\f107"; } +.fa-download::before { content: "\f108"; } +.fa-exclamation-triangle::before, .fa-warning::before { content: "\f109"; } +.fa-eye::before { content: "\f10a"; } +.fa-facebook-square::before { content: "\f10b"; } +.fa-file-excel-o::before { content: "\f10c"; } +.fa-floppy-o::before, .fa-save::before { content: "\f10d"; } +.fa-github::before { content: "\f10e"; } +.fa-globe::before { content: "\f10f"; } +.fa-google::before { content: "\f110"; } +.fa-history::before { content: "\f111"; } +.fa-home::before { content: "\f112"; } +.fa-inbox::before { content: "\f113"; } +.fa-key-modern::before { content: "\f114"; } +.fa-link::before { content: "\f115"; } +.fa-moon-o::before { content: "\f116"; } +.fa-pencil::before { content: "\f117"; } +.fa-plus::before { content: "\f118"; } +.fa-question-circle::before { content: "\f119"; } +.fa-reply::before { content: "\f11a"; } +.fa-sign-in::before { content: "\f11b"; } +.fa-sign-out::before { content: "\f11c"; } +.fa-spinner::before { content: "\f11d"; } +.fa-star::before { content: "\f11e"; } +.fa-star-o::before { content: "\f11f"; } +.fa-sun-o::before { content: "\f120"; } +.fa-table::before { content: "\f121"; } +.fa-th-list::before { content: "\f122"; } +.fa-trash-o::before { content: "\f123"; } +.fa-undo::before { content: "\f124"; } +.fa-user::before { content: "\f125"; } +.fa-user-circle-o::before { content: "\f126"; } +.fa-user-plus::before { content: "\f127"; } +.fa-users::before { content: "\f128"; } +.fa-wrench::before { content: "\f129"; } diff --git a/public/fonts/fa-dtbl-1.eot b/public/fonts/fa-dtbl-1.eot index ba9c715f20ab1c8892bef7051136396ff75fbee7..f7fcd1ff9ba62ba14cb3d7dd1e7bb3df6e92215d 100644 GIT binary patch delta 1552 zcmZ8heQZ-z6hG&_uXgMDLAN5KxOQD%yOnNZ{h$i6fs2s6#ScV75XQQ#jCI{w_o0J7 zY$FXJLWuB;k*HxPF(wj2(tl=xTEIZW#1Pa-5DgKPL<4A|i2?iSdEGGTdpYmi^EEVi>dI&Hm%i8l5HtaR^RXw}I{Gh;egJ@*$?hK< zi)X%HR#ygK8Nzx7pPO>QDn1RsogzO!9G}dT%fL}QPqtw=wQI*m-yLoymkXfrlbwn9 zkR!Bo9r>=3M0XNkJ|s~NSW9-(&atWNjQKX$2$&;aE|ngPpYESqP74&t?i-8GWFU*( zGQ-=WpF5+AVBo;~Mrdu1gTUP%8)e->!U#laY zd%Ap6(+nW$Oan0W3^sdPD{-x82aC=EMuHWr3tB4(FSe;x)``vP9z!_#uRKW^l)wXL_PMg``9{`Vpq6& zZZ~&sl&Z-`@JmH^raJJf>*Hc}e*W1UUUq*0F8!qE^dyjZfiWl9Kb70_+- zhU}at;;!>7cF-GIxduD2VsrLTojVfpwW3e~zRPJhgQr|6Hx{9Ml8@66*& zl}S5q!a=P+>yMQHgWYF7?8e64WVOg6W1NW}?!m|8QjVMiLJ{bIV=ZT95>njE%kV7D`{hvjSR)3+ix`;K;9YOFWfYAr^O z*u63_JN;C&!BmENxk96l!7kUAK^xm!xVU5&W(|~Hmzbm47^wl5P;~+jf>p4d8k6c% z$*Th>AvqlVM`Oi9faCw3d-gno{wdVqz|WOPxK~NChm@qEBuo1%iZAtsBg%Ff|Fya= z-`AJtf1P)KmYL0DX4#ARt=snO*|s%*HmT@L?S>w#u<42_9n@!36z(@Yw6FB`yz^x} zG^0(-N9F+v>z7{Q3vaq!6?|UyXQi3x#sDMNu`m|E%JnUbMZ))}TjZdxhn=8fjJ%P! zi@5t2#savw)eB>h@O0sQ`A5dBfOhqj=H+ZfyL!5LMvb+&u~psD679kzV8(hnBu-pL z2fhJa=*C9$U=w=jocqv^&Ddg&4-HKuCMSb~@rj{ex+*>~k$ygyO6-_YPq!p%OglzW ziC|)8Fp&zT)j*&{-5v-x2os4+YL_%QGCUp}88=jPdU{Hl%#4hWCnnV60hf9qu*!{e TG0)#))RSMGK>fb^&pr4zfz4*E delta 1075 zcmaJ=O=uHQ5T3XDvOkI0#MoABw=s>Hv}U)}8j|`Se-O2bL8Y`R*tLmGHEBu{rHa}L z6?(M3iw6%XJ@|JJ)`JHR;=w-pi=lJ2P0L1b;yD~=KbWLRufJ-5^ zwd-i!2P|E|`tLZ3J$nvt5QsuT5Y9%iohR2KwM6*@%1#`o3NxlkB|vBm%H# z8y0El%jWWz&Ifk`Gz??RBOn-s@})uku-~=n6F5W!0G^#qJpQ#7-xdlI2v(#79J@yv z7HOqCjm!a;6$Km$DPb{aEFn~=V{UFO39>l1gbj0Hc87Dbhn(sakQaO?LuI*M{9)Nv zVLHYHzLf;coqQA79w1YkoeOi9xoLhqe~y1my>!I3M;I4piO0nWDJ=C%cjUNyQGRK! zwh!B<9Wlo#$M~#GPQUYt^Nlj3Ot`44&2`_s&3(a~pbv;Cizfv0w2}}9u?IyE@Wmr6 zhb;iM=Bip!AuOo#2Ue4CWLb2L6m67(b&4c`X?1$8F4I{`0orLhf^E7_gxr^G#*j25x?D z*%lBVVjqLLzL~p$_kmCuV?BIL*|vd?UtYHH%zPSlLkg1YeSNLjQ-6;mEvzx5q23o7 za9GoaPtgY*Y?QAg8v7iIP*BJ`wnX!~6eE%7Pv&xZm(iclvn;J0VlTACb~%+j(%+pn zayjPI!?VR)Pj|20(<_zM?2$a{)O~_2-;+t^*pR*w|0%({J2UE7?&-6qudK3vUX`Eq CTldNU diff --git a/public/fonts/fa-dtbl-1.svg b/public/fonts/fa-dtbl-1.svg index 6f84d1b..44eae9d 100644 --- a/public/fonts/fa-dtbl-1.svg +++ b/public/fonts/fa-dtbl-1.svg @@ -1,12 +1,12 @@ -Created by FontForge 20180321 at Wed Aug 8 11:13:46 2018 - By cpsd +Created by FontForge 20170805 at Fri Aug 10 18:09:07 2018 + By ondra The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io @@ -22,149 +22,157 @@ The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/ bbox="-0.14014 -256.168 2048 1536.01" underline-thickness="89.6" underline-position="-179.2" - unicode-range="U+0020-F127" + unicode-range="U+0020-F129" /> - - + + - - - + + + + + + + + + + + + - - - - - + + - - - - - - - + + + - - - + + + + + + - - - - + - - - + - - - - - - - - + + + - - + - - - diff --git a/public/fonts/fa-dtbl-1.ttf b/public/fonts/fa-dtbl-1.ttf index 0bf2e9cc17989bfb8600bfec4244a1e2432799e9..36204acbf82b3fd7c6282ffb8b3f24697064ab3f 100644 GIT binary patch delta 1480 zcmZ8hdu&r>6hGg0@9k~3yFS(jP|DT^y=yzVjlNbh90M05yYq#Jk3dW#1Na3*ZI3+O85sI>;vE3;6v{&*lkx2L z>&!I(nni42Mf(XHiy zt*HANS7dxVk&kO%=KUDVguwdo$(cFrEij#JXB!d2p>7fh23ir~i6da)%3DH}KH?Td$sG>0Rc768dK9fhNffJJ(Q;@D zEfm61_4@ks`a#qkQ>^HVqBtO?&_Ke{1O8ON0qCF=I!ixuld3!dSO_Cn!38@ojTT}y zD496Luptx);>N3ZgG0oGh@lQT4DO(jafKab*D4GCgWbJY<+{umgJwrK*w#VX#5R{x zOLPPQ?t;w|^(>V=(Wr+hc!q36GS?tfFAHR(I+XWBD?t4H7vJqC&cRfpiY1gX0y{Q9 zRy}a3++Y1>aDp~bL8LMD4 zQZRm*){i){_08B^>MgF0ru0g=^f6d?WvIU+g7_g8}q;P0Z zO40kJlq97pN9%;G42HteUgYm>iWOtAB71vT{c(0ao1LdG6nF1AbZF1+;-!?NSXOT; z&Jvxilge==q9ifDE3UE18_UX<6xVDux9nL2D9P5VZ0VQQlU$pd{#n1Yc<({O1Xg$s z^h|7pS0R2#KI`_k4bbyA#)Q?NZ8Oud!gF9}Hm&d~#51KO_m7m>2wn1`X9L~XB{zBJ z1fa_NV_EI+wEP`4lMeZ;H^P!Npp_TBEiJ@LeA@WvXf825?H`HfM*W$FcrKUO?@uT8 z&B#r@RFkkTnNIi9WYY)u>EzgyKRKnY)6DD)Kb=iZO(k;j dZJ%AXwD&j&KB-C$%0mrboF{eq?+cc6{RQmfU0(nI delta 1035 zcmaJ=OK1~o6h8mVWFCo`)EFz)X-uLf+L>%@wg1LNxp<`u6&GISUT`5OE)a>)MOQuL6)6yS*c0^iC~VSOQ>7#CCR^ z%==&imjz(|LqFGPGnI1q5vy) z;UV$fY%c%L#ZVK#sf6};YR5`rjdlKznL)E z9VC;Cory4)nJIQFJIuc1yxfqjjV}uGgww*f7!mu#TT)WGBt5rR+0WXi90|vtj^exq zXTW*I`AQy?$6cJO*>$gCSH+0sT9qhoH)Kyj!55LSG z2yP;g=-ODl7+Wod{IV!`#YGE#^4cb4w_E;_nBhm*s=)f%WTaJ7RjoCWtX&_dV!5xs zLXUjU+UAxMZoDC;BTK~0=9WaGzQwC3-Yt4#qNUl4{R-pZM-o`!g_k+2wW^<3|0+eU zfd8oUmK)`UVHvK0$3^%+NJ17S!AML(wwXlh7D>pKl1h&t5pGl&Qj*H_#PkG;Aw?lU z)XEqMlHe>hJ%Q+Ny|Wq9ES9kf{)@KIa^_=s6>ytCV#9N~4Jz1!b2^XsAgvGS`X9`7 z+;zf980%)2%;`4pvFqk^?3wL`CNLpQH?FL<{tw+{NSvOo(ZskO*X!2Q#)nlOeO$Ab z`c)s%=vFn#flL9eu zySi7^SF3G(`=#4URZb272Y?kaIsn#xJ&VVG?fJ?r7=)0KlvKKMhW4hl~(v4)UOaX<0B0@qZzV=xlB34)c-0DB!;_ zQK3)(g0+K>70mYt01)H@0Mr82d4EG}EKMz7b8x~u|ACK)?On1BOoVAb7^i}P4*MGl zi;bg)H%vQ)aT6FC0Ga?i2WNAb4?YjZ_5VXNV)eYEsW)t1xL_EkgnSzf7 z5X06757Q6@fPGVZF3#?-vv}VQ^D4kFR-DDC<-KMOv;YDDI~O^5l)F!kJ)c~fxr6)e z(3mQKx6n4|n=5BSh?W~CXNU}(=`!Zi|M|^d9+FI{Q3jxGn3&|4m=bsdMF;@DIK-L% zi_e-8SpBsIz%fu+SpZ@LIS)e+0T_6I0lhoo;&7`((`XBk znZCZkzVS%_LOeVsDsD0)=l5)1(WQER!nQcVfE1sc978fG9X&c`JRlGULj>^OSjSck zRsi^NH7eK8kPrlg#t;_-+-C_+jN}@xN;Y0zxQF3pJif)Q-w)sVx1{VZkCS}_qBSn0RLQP4I4}(LR)83`-@^Dm7tE9#w z^pxJIQ5==L`9rb;**|X=Buj`XJ@5alHSKyCeS&Pdx-`{q`mZTybN$8zo@-1HV?o;! zTK(^&{vY(;$@33XdUv#9xHrY$crh)nfYEp#Rb>&u?B|e=$-mEBE3-E4gw@KMCtMz$uaJBm0T2@xZ`$;peyX&cEQykp=eBiHfqlF@x11Yvl zBD&NuxkQFHUfae}DcALQkhg5B>nt|8`O7a~gZXdMx2*o4)J@gIBuU`U0!qEMPHnZr z+lGVK@!dodm~7uV2s>~XdClmIgB!#uxYUnqItEQ#kaK^bBHLz7T$qV|1y$d0-a_P=pSHF{ zswrC$K#>G~8{VtOI_%Q^1WyA+`LyZ7)YDm616hfID|WwyFu%~4fHF9j;mcoDZeBra zads$%H>Qo5!jdoHqf`vsz`f4mER3-%9;sQ5>AJ|fuEdx?T=!TgmvH3*Sev%vOVSC_ zt3ijcXp99bfkOcu)%~^WFgF{u>aaKRCw8u3BGut)-zMLAv$6%R_Xl2gnaTLF9YZl! z%dVKiDVLL!u&Q7~Ox+ZothJ>O`v&~-W8a^R<4HC~sbnt%IhrdoIChFy*^X?%fjt^g zku9SmTq*%@mAL=GJm_{r=ia6#9oxi1)zZ@btvn?6y0*2Zy@#i_jlNXB&{K!_ZA1qY zlYW07uI)_GxtW!5)*)aBt$Ml6b<$6yV;5KF>)w`Y72Evete0R@n`x`$0DUi@Nx7e! z@?IU6er}W?zGO~T{ZEP{#uK|j>w$Mn9^Xn(yUQ5I)Hl7GCDa+TA~oW4E99ILv+4R* zn+w~+0Eo0eUu!m)$0TU{>J^Cs1Z*d>= z<%wP@{Tz77UbD$)EwRcV({4qY4FRB$N$6uk&WulS*nDP>qc!LXnPhQ?w1FUXbFKiajpn z*!8K`0fn;8PU>uj!*e3$gsQYN6Z+q}(RTTki1C;?)G?`2J#6mOqfjH_+qLjAx?vx<=<_nSc?lp7L8%sx{pb8_%0srl` zf{sjXTs(kr>NRn?0>#;Sdo6eG3$rLgZd1?5+Pa|gD3r6StA{wwH}a)#OTv>uos~yM zH;9Ny{6>o&b{XiM`AiJ#)=o^z~PljyovlNv?FSGlhluUL8XoPA1Z!TU|0hb1Um z?U44e6LKzOpIyIT=Plqb=haaaQlE@jiPVFVjVy4MhkUSF6W2*Io04ZduCfTYBM*^i znOch{(2J1<+i~5EY_c3V5f0vm$u$HT^6PU8)yIcel^$hf#ufu@L<+C7xxPZ2-(fs~ zSR3tx5DJ1lr6IW&vcHoHyFr^T5X+;Zxsy-B)+a$+p*rw@I<&!f?tFCrblC4`{}f{LA{}0b6)KajHvvpqw6XA z`i%~|m20#7Ed8R73pu-b1*xJGl4?Ry)aH?7-dlhA>^*;5UiPi(nrYF_3iHYS zKa^X?>)a@UHOArgWg{v?SmHz|tKF}zGTq-{Rm_WP&5$LeULwH zRT-r3I9AK?7^HU9`p#oWEX}%is@FbyqN|qQaT;xrPROIe#8ZZj#LlX;ii|R&93r+R_OGL2l=Ssa6ZCR9k2zq)TI(9E@S@-S1V$G9tEnMvyQq%GcrW=o-GrinbR zZfw6NTmRz=M8;lLK#Zhd^*CABnx41qKHui?o7SqB+m2?KV{%o18=eO{T zn2wefmZ~d}8Kx2~O5M#X7yX5B-=x#Th%PsgcRJctVc-vXJV8I3+38JoKqf*cVVI3Q zUtHFHeDrhK4yk~@^Y&&twVSP6K8!umEo^!H<%0RDj{ollQ3w~ALj!ruhii!fNAYl0 z^lu#XpzMi?OLz~&clhOv%!C{Keyt|}wZtTB8QjxxLwVudtl@K$$ntQ+{ z3m7#%eoT0})M&(u#oR|6As5E@1PQg1cKvor@(C<>`Qc`WjLyYh{p#O$J)Ll0laMCEX8mBISgBSnG2-i~ev2ZMz|zX}%-fpS0`N zqBl(>+2efA6D*rh<&X`uTCWnZ_|Hjv7s)ZIf|1k&h<(q=cgiLZv3KziD}ZRR#SUi# z%%ixh)Nc+=F3!Uee+^jmfE`4th+26)E?8!nphX^gXpaBCTZ2kj~mfw$V_RRIU z{UY=L!5)UUVu<7_SnFd#uB$`*0Y16_rU>wl!|YR>CC~2DQVpn7&>s8s(S~m!vd=6>k=n3oLS2d@<5Ga`*6v@LzG>DKX`{}z9eZ9LH-@Xj zNsDbQs)_ZKVx(Z;t^eW=M&EQ^)rkG9G-Wc~dM1u+F>#`VVTh`UhH z4ACVstv1K8Lxf+5QBK@=N-D8nC12vNoDw*02S5rJm+wLss8*a8%$OPf&VpOs(lk)r z_gy3fwN)qbe)rohM3MMjqHzyP(06SvDK_7YSp?j9%dzIM#{KNr}=JsJMVdb{^Nc@E6cYjLGrlzc6(5BlS!OZm1c^cwqz zBTp`yDEae8ZHluRCZ-{8qCCd+cFa(;c<>rtHL-oVF-d9qnm2}Z(?G=Ix2?e)?(ow0 zor6++Afh*<7mZP7G=w?blGO|nVy|Nj`DFu25U*Rzq1tyrvH(u~e98~8R@_)Pa;5b$ zITb&5oJ{WijytaFV%HirTiqo(>UOyer8y%$j*3q6cKp8Ea)|ma+_;gF&_j-P5jX$P zfSYg{XVswo{c1O%dgM#}Mw{Ex1WVhQVYd~Q+uLKsSycEzxN!7vvKMJZW(g+9Aj;8? zJ)OugC_1Y;%WM`6$D~H;VGvvQuPUK%0hftL*Ol%;ozL-JU40S#`vA!KHo|1k#&vy> z=yJ7P%#!^>g2-(|udUOq0+fj|a)&z%oMRn$(boAz%yVkmwsJMNNd1W)K4ZKi3HXMXqfsOZ@L6QgBvFEw^`J*1RMS*zB1Fht zDfntoY=X+Hap#DpNtznV$th%WkHI*PGW8Z#W!5k7ZCEFlWkVvlRU@=!Db5OdNQF7O zE%lEI(|>|9u&~h_bi3T@{<{O*m@K}owaYJhoCW=j#X#l8_bl9mS}-Efbl30liCCO+ z$7B#gt($3+qg?TxmA(64iwOf8a9kwE>8Z6Papy=%ttNabO1CuR1g?4g6x%KYVB{#K1%?X}D4$tK>ZcTH zKkILJ@?4<*g@9G}0QTZVl)>>w)s=_0ebVsm`L&uCP^EIpUB&lPrMz*yxdk8b@BHs9 za$=&e-uG^hio$^97oI)#hz|`P3flJUdK$hi;!GJ`wn6IHZ`vSh2ZaY|TwLx!QcAvc zvDVOs2>13C5^U+g^jkHLfM4tiaqmJ|6(<{nJKj@K=`dB=(wci9#L+0*B9BN(#YkrI z_znj%{~bFR0x10Hz5h}F`qo-s*UH`g?IBx!(>TfJw&9&FcCNf=+Hb!}5Wc`>-s*GsVO;%PB?fCXtD(6J1*>N9u?p$3RWi6YkHuMJDhi^hMOOtBM07 zExuT*L2W_iX_uGbm&;}$*v;+N{0g_3qdMHfdN^fx_pYpa$*9k?{OcfcYF7Vz^RkWq zYG5$#*>fY4FYP5-J@zGWpz4__T7kmuLtN?v{BpcL54NrKSi}iKCbbjZSNL8s4jsnW z4WFviwdM0&)hqDcL!-OEQ1a^cb$6fR&8~2DFn_6E$wVoH3__N579-c+mm-URfSGI6 z6S63-NA}^s>a7M zaEp4Ax*zT0eZTjpXNa3+%g&XXVfKx0^(&`d})81-eQYeTXf&cdg2&Klw2Wp7I66+shuPO8W>6+AL19eM}5fqEUq))!7BHg zmx^iLZnJWm2{M8dv)+bv>J(2Jy-0G4ZM!_%!p9kaR~NOl;MeQ1CgO0;jRRfT>aKVq zqp(soSH0aXSWqcgh_Wk*w&36kfXG9(7fiOE!3~4QfuK2MS_eHF``t*ecYr*g_W>GI#)j?1nhzX)dq?saPj{U<-RT!)gv0O$Hezoh-Hts= z{r(qK8{O*|WIt9R{v>COmB_T{ zm#R4^VellVLx>uFvXsrpKzmb*Kia&%T{en-HF|+Mc4F)=dS1#6hUnKJ?1y-d<2`4o z<=<~vd;MlMC;ZZ;u`uGUf_aqgDOY=;sBInP!tAaK`(7r`gXqQ9{Tq(Tg9a=*ytSyp zx~vhNYztCHknde&F$2 z)Ny0_e!M{yCCzc&QN9lw&s#SL5WAT=2#*4d8@JvA@38q)O=f5~d=HQ1|GrIzcJ^Yu z^QZVOGnwr{LAo_rYqZC>2L+IV4bos2pWbT`DUD9+oVbyyDdv3=>I8b78?)5!Rg~p| z+qd8mzaR*VCQ~Uhj+Ho2$J#`Dz&rbdOb3K8XwF3)4S1ZZ#xetO5-ej16GxzLw6Zc6 zN5n{rZ-FTF1qh_!V3DXr91{`wTc(%YU-Dr#dr!e)GA5!ActLVjvt$y7Q3jTRMFTD; zg5SNiy=L$N(1Lu==S*+sZs1&RSKTSEVx4SdQ?jhSR~Gxtz89q~xqAC+g|7A)S&L>| z%hV89KAiiV{2P`43O{i7&gn1(LQ-GsFcOaFR8BidW@w)?kD3{&gD}KvMk+{ZXxieG zk>$KXNqa4xRNK7R>FEBc%L|)u=dAfs$Wi`Th_TW=Rv2{B=3OAYKR0C*>`-WMus^LcC zZc%GFohy`yMYgwTIQ`_ycOXOO-}1>y^h3gJ3Db%khLMgG?*twsX{e57P-B!PrA$YS z@R4{_vY7oqCNDOtnXRxQDTQNR2#nsNfu*w&VW#aBSY-KUdHJK0?1GLYt8(+2MTv|m z5-FvbFxFa)1e(+lC%+yq;`v}F(94M%>iK7r@_8YrqZyp(u#4Z&Ju<2yVbLk|pgd;I z!?Pb0(Vx0)A&{6lW`KRMfl|K-w`!i0-|kY%E92EPM}JS3h>thI)l21Ej4a*Nl zwN*f9-ebbtSKAUtc!|*@+p@oAID)c{_chXTwmj`mZJLvu}!NHS(& z2#?y`8VcyS>mbBRRDR|CQ9!Zd0LKm6*-$dO3m^ZQ(?m!rQ6{Zk*_0je80Atrh`IK< zqgiVGABkY(2FlSm0xG+|N;l0Y1D-U8N(x&j#i(w-BDf+-W}V@3j|j!vfY}>VBZnX0 zI_m#)n&J<|DIE#ahW%=Auy-f;|K3@EKnp;q{Yt$k%G?U$_q@0I0PUCh&u;^V;i9)Go$u;veLl( zmkHWsar-bsWQZ0G7OkQc(WF}8Yq8iEt@Cpp`t7;m^wS=?M~Qx#*CJKKVl=HB$8rWE68~Oat_38FZW~m7Cw}2_I&?{U|g&|pCZeE)Fy!Yl!l9>+!A2L(Q zWGVRokOF|~stTDYW;s)4VOEt;R@V6%Qz>g>3>%o%_WOp?ao}sHW%kF)C?YB@wD|7Nz#;Bcl} zIY)nOA8CGS$EB*50O}s_(pn_P(FMY(N0Wyqgpx~vmndO##j$tcNKpb_6^S&eP62%$ zLR-pNCgOZ-7z*AnnpTp!ww45sR!6m{qvJIM z8pA>w*=xYg=RKc)%s=h#>rZnjD@0h-c?J-#=64c6NXvLE_aS08nb9;rUCaY{;$sz? z!o2{D2ZJgvTce05vO-wgH^LT|7T}|)_D$p-Z2+9UcP(e7x#=~UhaSD*CLQh~-KgM4+Reo&B+gG%C?5d97`gd8RQd=Cp z2_${H1=C|4s5dmyl*YpnYCWxX*_F$2H>AveU*p^!n(>HhlyO&9(co_ID?N zKBbicNFzv}+Y=c;Q$}R;iaYKInda^fFA=%`TFRIH=zv!Gh=tb$hcCN~*^ZM;_G~-z z%(aK4y!>(^f%Yy7PeVGCu~Tk3n{=)n%QxD=A|5mw&#Kj1l*mU3DnW|-9(76uo^X<2 z@!+>hzOQr-O=lmmPgp6JvsZ@X^G-xhc}rh^xkwAN$GA->VSkhmgWA5NBgM+S6~A6D zm-l_A$Iq|bn3UIk{$w^PM(c~&%`O%-QwRb#s`rymQts~EC}F2SwNQjK-ImU7P}lc4 zU3V0t9kddoUfPS8Nvn3KS888_JG~@!UQ+VB(q~?dtR-s*UvGR%Iq5jIov=L*Xy1SP zj9eIoiBc}VM1G!>j-Hot+pPzle;Mf&^Wl2x!n2DhH+ZM;PVh875d%`AXg1wrLx{Ndz*K8p9<8@NI0GoY{3eax>m%L_<4 zG!IE#aSD*0XtZaWKiU5unkIChVT6#H28hElqXI|QCAhdgTh`9ZG2d5UK@1jdkX_YQ zk=Qn*-8DbG_U$`H9_Zpp zk9mgbBaI7T&Q=vc1v@5~LXWNa*J*CKTJB2S3B7c5cR!Y!w+!5|SCHU4Wyjs+{uA#; z)k>12y7W7X)Y)rti5y}9r0ZeidANB9#mIm_tkJ7G%d&7RUS2P2Trtnf8WukjDXB<* ze&zhmVMG)Lmlle}EFItx98N=XWvjj*J2|J|6Sx`{4 zdT=KH#c!>&_#0puD+0C4|HrWZNOH3slP1d}SG3hT4fqyzSxZwX`lWPZ$K$O$-rD#s zzqY=4m(|(QP}kI6*V;_Iz=hS4&0@k1AuW?+KEvg?`kn6!Jz@E2)5tD_#fGicUnB^3yx?ar#RWnQww)&LkSC%x(EF-4( z6sn=n(5Q4{E^BtS2IvfNAxRyA&8Q|CN5p}HLL=&%&Xbsn3W?rx%FmtGMO|yWRw?Ha zO$fwJcmIgFywf3xCZK2CCGzhMDuKNo3e4r?PJ>Zbk=PV};O`S5*#=_;^klxYvw%L=s^JpI1u^N_I5J*>U~x zBL;_|Rfw^64WtyqO$RZ}KowHKVHtpKfzcfz6fr>n zJ~dP=`HYSFjP-5nGin0qlogM#pD+bn*)hWmnU-jyV@Lq#sFtjRPP#sQ+|7L&p#&G6Eo)je+_m}Cvr_^)k{1V=m+SOC zVkW|rGgG3T2e>B?yB7QCYr_?a0X>(icYxjiZA)nnu4Kydh{Mz|Vni{cIH7Q8a|VP# zQ#^M0=MTjdI~Io@aULf{6nPXS6luu@I|zeDMR!HzYvYTY0Rj-fMIi`6n9=Lx)ccXB zP3a+81eigL-KxKEjn#mMsVG|Z(q?JxH{|H3_YnieXJnPcXp~&~>Dlo#VNDMO1G<8w zy!s4B2?QrHYlQN|RL_hli}w}!6wJ$VKC#>%NlT{eW56QglM9*EAxV{}{`S=8Scb)Z z4})2<>FfR2_TNMYb92+ztJTNvM%#n|!7^`<8z?<%o+fy9{Jdn8mbt!?ySn$K z_O|2-H7(MAoa-7YT7lx!nMQ^F0GRz4^UuRiij&BkIhLh#z@W?@g}c?y27O z*$)NC6tV}(4T}rT?BP-%GKDlr!1l{i+RT_8&=kuvFecp={%;da3qbOF0HYzV08MwX z!Deu0o|{V+ns4w9(ACqVy1g_$Wsgg_&W;wUTbAQNNw;^%X>s&`gMFF^XV01XsIXbJvC+74LN)V3e7{Q|Ic1BPeH&lA~S)wp# z&q=O9wd7d64Y^bIhxWS0+CsYc75MvFT89PQ*qy>3zd1-#7>x>AphAJ;2B-Xg>f))g z<$J4dR;%t>DD*W{&+D8nijK^r&rKNx5_jP$N#B`rU<=eyQd?*tZ)(;M-_w}+R|@2^ zF@AG1f9#?{fqk;{O%B3t^F+fuqjb=TD21b~g5D%m- zrJE#q6#)nWd?pkI6?|hxqVB>$v5LbO{PGcaI(v5X~z)SmOH-_yQ-JbQFE@h(<# zb9WCFgnWQ`XkYY|x5w72peCbu^T%Pa?m;6F`5?IMwT~v03R6QhsHrx<@CJpPYW9?FN(aL(BgC4c@e<7c3^)G0sUQ8y*yV3=@g! z7O#K#3_*rqrvAbOJ(G2h@n^HIjL4KTi49!`-ZBU*rrvmdlP`0BSEv5aQ&Wqc>2rqp zI6>xKS$9WYzz6qtDan^FIa#4hPU#A$md_K;TTYomAlL-AaQn{*B))u}#@z#rj6iz~ z1#3>t{xkPlP2Q_bn_lJBbfC+;j)=~beK6(3C#Iwg^e%Ncc9vYBG23b3L=eu&IKQmB z^ZWPC?&S;E)o<<;fa19sFJ9QJ9tF~zZjdij>lX;s02gSpZ|3Ps`Mb4l;mWmh=Y3R7JeAhwBwIGTkw`)5jNxW{2Dt7>^Xi#X)@y0|KQY zo>QnDcPlM@?@7A6lt!H{#S4F5ClWm@2`wVs#`#aXXwev5-7c!F$r9Dnh_Y&Gd$QVE zAakWdZ;@2^5r?-=u(ORfyc||01sCmcu4Htvw8h>_@j1qHg2`igpeO~1ZnB%nTpKi2 zdE*A08nZ@uLUF=nnUyaOknOufr7yL9kulNNH<9sT;R!tJCBZ^Y@Fx#3n{@j5RS(g~ z*8%!~2Xe1IKTTru&Zl6w^}>12wj`=6w=!A}OKQ8N75p8RK^hSDFXG<*E?FO)jv>%2 zgQJB9Tu{v^73CBFo@N?u27lcR?YahpT}Kr7XmIA~0rD|KVb|wp19S|%|Nnsg;@{qj z>i#G)>M&u#z!=j63ma#cUMlMh>XiAvTS?+cMg<~8Y;GgT56icED(~^Q#DZ~r4b1=s*+_SAVgrm4kBR=2b)Ys9GJ2Wl#FYC z`?fuP&+fK(P>la~VH|k#u05`#{TLWEvA_G=j{yz^S9}^jxJqc$J6|9EZo^&A9tM3t zjNKs;Nk43%P~l$4V~KbCCVXZ=k+QQ{3E^_>O5Jmy`H^9{K0&rK5_xLgE;aAlZ-#AM ziufM&C%|8;!{(PYBroD8N-J=2zH-*=@KA>c*VY*Hhp4kfS)}wK3ZF(>g|d=3^{l4) z25eacao~|d9yO>N1e>uZR<1lA21)Nn;h$ksq=}38$qo5sIxN4m)iom2A$+!+73Yhq zP!&4r07Z`gY8xMJ-1r#pO%@gl{2}3n4c=0<`c|utL)f(X7wg(P=Wi{rihl41)4 zlc6YVMMhcOuL||f7I#wg9r7*$-v*pa@hLvk4Sd?u5!qtW-+;@aoPg6W+IRZj8FBrP z53Mfv*6J1hzy1GTlGH+psZKzEw$PnO6Ffo9-n>3`W$<{Y&EVIGjv=166HZ#UZu}tu zQ6K>d`I}+Bxjnub%j0tf2=O6FV#jk$`jTBYwt66SUb$}SI-LInGGi9e0V@GAwXGp4 z=k$?CYTQud>6{S|ptp`=5$?XNbp}~fY_n`6J0v?j>@No@K0uB%_=%zVp#nMx zlPsF-A{#ZfS9Zqsh#Y8gM~-y%15Fxv=7Wpa;EI%lB`lo^DJlnFTS@k@jG~l=(iNa) z14-qBT3_l1k|hbDJgmRF^#G24c6C+{M2{X6P&Lo;%;^LrlRycof@2Yqt^i@D+tKlW z9*%`FsjCdDjCPw=Ea2z_M};N0i6Rq#w1wISZBq z5XurrV~hl*M_kA!oz>Nt324PZld49rrcq(Zn}bOe9`R) z+4Y~~B)^fJTmhEG&~xMlRvQD?zRA>Wzxi9olfo zW)^xUvmO)rw`$psN|_ yvp-eisFqVM)L{Z}1eUHE=^VBECP_p^z<*Z*H!m28o)gb#MD@*vf-uts0000TLECZw literal 5460 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 K+UB-_FiZn81Bu4~ diff --git a/resources/assets/fa-config/wanted.ini b/resources/assets/fa-config/wanted.ini index 7fda533..e4820ed 100644 --- a/resources/assets/fa-config/wanted.ini +++ b/resources/assets/fa-config/wanted.ini @@ -38,20 +38,26 @@ download # export buttons wrench # Table options trash-o -plus -warning -undo +plus # Add column in table editor +warning # validation fail icon +undo # Used in table editor -close -hourglass +spinner +paper-plane-o # save proposal +# dark mode sun-o moon-o +# manual sort buttons chevron-up chevron-down -bars +bars # sort icon +file-excel-o # CSV button + +reply # reply, or back +arrow-left # back # Unused ; sliders diff --git a/resources/assets/js/components/ColumnEditor.vue b/resources/assets/js/components/ColumnEditor.vue index a54647a..64143da 100644 --- a/resources/assets/js/components/ColumnEditor.vue +++ b/resources/assets/js/components/ColumnEditor.vue @@ -5,7 +5,7 @@ Complex animated column editor for the table edit page