Sono molto curioso di sentire il contributo degli altri su un problema che sto contemplando da tempo.
In sostanza, vorrei presentare un utente con un documento di testo e consentirgli di effettuare selezioni di testo e annotarlo. Specifico per le annotazioni cerco di raggiungere il seguente:
- Permetti agli utenti di fare una selezione di testo, annotarla, quindi salvare la selezione e l'annotazione per riferimento più tardi
- (UI) Supporto che rappresenta annotazioni sovrapposte. Ad esempio se la stringa in cui: "Questa è la frase di test per la mia frase di prova di esempio", user1 potrebbe avere un'annotazione su "è la frase di prova per il mio esempio" e user2 potrebbe avere un'annotazione su "per il mio esempio".
- Tieni conto di situazioni in cui il testo del documento cambia. Le annotazioni dovrebbero essere aggiornate, se possibile.
Come affronteresti questo da un punto di vista tecnico?
Alcune idee che ho avuto sono:
- Utilizza intervalli javascript e memorizza un'annotazione come una coppia di numeri interi come: (document_start_char, document_end_char). Salva questa coppia nel db.
- In alternativa, utilizzando JS ottieni il testo selezionato e in realtà salva il testo completo nel db. (non sono sicuro di come farei le annotazioni sovrapposte)
- Rappresenta le annotazioni sovrapposte applicando uno stile css per evidenziare il testo, quindi scurisci lo "stack" di annotazioni in cui si sovrappongono. La più piccola annotazione dovrebbe sempre essere in cima allo "stack".
Quali sono i tuoi pensieri o aree di miglioramento? Come diamine potrei supportare il testo di un documento in fase di aggiornamento senza rompere tutte le annotazioni?