Informații principale
Custom HTML Element - Table
Poziție: Nu este specificat
Start: Îndată ce este posibil
Final: Nu este specificat
Localizare: Targu Mures, România
Metoda de colaborare: Doar proiect
Tarif pe oră: Nu este specificat
Ultima actualizare: 30 Apr. 2024
Descrierea și cerințele proiectului
Designul trebuie sa urmeze un anume stil care va fi prezentata dezvoltatorilor la acceptarea proiectului.
Functionalitatile tabelului:
- Prima coloana si headerul trebuie sa fie sticky
- Coloanele trebuie sa se poata reordona cu drag-and-drop
- Latimea coloanele trebuie sa se poata ajusta manual (UX similar cu excel)
- Coloanele trebuie sa se poata ascunde la alegere
- Sortarea elementelor dupa coloana la alegere
- Filtrarea elementelor dupa criterii specifice tipului de date: (de exemplu daca vorbim de un tip de date "boolean" filtrele trebuie sa fie doar (da/nu/toate), daca e vorba de text, filtrul va trebui sa fie un input pentru text.
- Paginare / setarea elementelor per pagina trebuie sa fie posibila
- Va trebui sa contina un rand de totaluri unde se vor afisa sumele coloanelor cu date numerice
Proprietati personalizate:
- Elementul HTML final trebuie sa se poata ajusta la latime si inaltime in in functie de unde este folosit
- Elementul HTML final trebuie sa se poata mari prin schimbarea valoarei de "scale" printr-o proprietate personalizata
- Elementul HTML trebuie sa aiba eventuri personalizate pentru click-dreapta, click-stanga, dublu-click, rearanjare coloana, schimbare marime coloana, schimbarea paginii (next/previous), la citirea carora datele aferte eventului trebui sa fie transmise (de exemplu cand se detecteaza un event de tip click-dreapta, acel event trebuie sa contina randul si coloana pe care s-a dat click, obiectul complet si pozitia cursorului)
Pluginul final va trebui sa arate in acest fel:
<tabel-personalizat id="untabel" data="{{json_array}}" columndata="" filters="" sort="" style="width:400px; height: 100%" ></tabel-personalizat>
Din javascript:
untabel.data = my_json_array;
untabel.columndata = [{
"Name": "Column0",
"Index": 0, //numarul de ordine a coloanei
"Visible": false,
"Width": "200px",
"DataType": "DateTime"
}]
In cazul in care columndata nu este specificat deloc sau doar pentru unele coloane, aceste date vor fi generate automat de catre plugin cu valori de baza.
untabel.addEventListener("click-dreapta", e => {
console.log(e.detalii);
/*
Xpos = "11"
Ypos = "421"
ColIndex = 0
ColName = "Column0"
RowIndex = 21
Object = {
"_id": "923jsa902",
"name": "New Item",
"date": null,
"value": 28,
"active": false
}
*/
})
Eventurile personalizate:
- click-stanga / click-dreapta
- dublu-click
- rearanjare-coloane
- ascundere-coloana
- filtrare-date
- sortare-date
- schimbarea paginii
ATENTIE! - Dezvoltatorul nu va trebui sa rezolve aceste operatiuni ci doar sa le transmita. Singurele operatiuni care vor fi rezolvate de dezvoltator este cel de modificarea latimii coloanelor si de rearanjarea coloanelor.