TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
13 stars 4 forks source link

Pluginien yleinen graafinen editori #3582

Open sijualle opened 5 months ago

sijualle commented 5 months ago

Tällä hetkellä kaikki pluginien attribuutit annetaan markdownina ja käyttäjä kirjoittaa sen tekstinä. Tällöin käyttäjän pitää tietää että mitä attribuutteja pluginissa voi käyttää ja että missä muodossa ne pitää antaa. Noita pluginkohtaisia attribuutteja on dokumentoitu milloin missäkin päin TIMin ohjeita, mutta ne eivät ole aina ajan tasalla eikä uusi käyttäjä välttämättä löydä niitä tai lähde etsimään olisiko siellä joku ominaisuus jota en ole vielä huomannut. Itsekin olen lisännyt plugineihin monia attribuutteja eri käyttätapauksia varten, ja en edes omista lisäämistäni attribuuteista aina muista että kirjoitetaanko joku textArea isolla vai pienellä A:lla.

Plugineita voisi hyvin editoida graafisella käyttöliittymällä. Tässä liittymässä olisi lista kaikista plugineista, ja sille kelpaavia attribuutteja sen mukaan mikä plugin on kyseessä. Attribuuttien listasta voisi poimia ne attribuutit jotka haluaa käyttöön

kuva

Pohdintoja:

vesal commented 5 months ago

Olen tuota jo alusta asti miettinyt. Alunperin meillä ei ollut riittävästi käyttötapauksia suunitella tuota. Etenenisin seuraavasti:

  1. Siirrytään yhteen nimeämistapaan (ihanne tilanteessa, tästä on kai korttikin, kelpaisi autosave, autoSave tai auto_save. Jos tuo on hankalaa, niin etsitään ja vaihdetaan kaikki olemassa olevat "väärin" kirjoitetut. Toki tulevaisuudessa tulee ongelmia joskus että onko kyseessä yksi vai kaksi sanaa ja kirjoitusasuun voi tulla vaihtelua. Entä jos pluginista tehtävä JSON aina tekisi lowercase + remove('_ '). Ja sisäisesti kaikki nimet olisivat lowercase?
  2. Kiinnitetään mihin ja miten pluginien attribuutit dokumentoidaan. Yksi voisi olla että plugnien koodissa olisi ComTest-tyylisesti sovittu tapaa attribuuttien esittelyyn ja enkuksi kommentointiin. Sitten jokin funktio hakee attribuutit ja niiden kommentit TimTableen, jossa niitä on siten helppoa etsiä ja järjestää (yksi sarake voisi olla "tärkeys"). Muun kieliset versiot tehdään tuosta TIMin käännöksellä. Jos plugin perii muita kuin omat attribuuttinsa, niin niiden arvo "lainattaisiin" joko lainaamalla perityn pluginin TimTable tai yhdistämällä arvot (saattaisi mennä niin että TimTablen sisällön alkuun tuotaisiin makrolla edeltävät attribuutit, jolloin ylläpito olisi vaan siellä yhdessä paikassa). Jokaiselle pluginille on oma TIM-sivu. Joskus yritin aloittaa pluginien doc-sivuja, mutta se jäi kesken.
  3. Editori tunnistaa että ollaan tekemässä pluginia ja kykenee näyttämään sen dokumentaation editorin PopUpiina käyttäjän kielellä. Siellä TimTablessa klikkaamalla työnnetään attribuutin nimi ja oletusarvo editoriin (vrt. ImageX preview:ssa klikkaaminen työntää koordinaatin editoriin).
  4. Mietitään saadaanko edellisillä automaattisesti syntymään GUI-editori. Silloin olisi kaikki tavat käytössä. Ehkä Helpompi kuin tuo Simon kuva olisi jos siinä YAML-previewssa riviä klikaamalla editoriin tulisi sen attribuutin tiedot jossa arvoa voi tyypistä riippuen muuttaa ruksaamalla tai arvoa muuttamalla.

Haasteita tulee aika paljon tosiaan makroista. Sampsa on vienyt makrot vielä pykälää pidemmälle omalla kurssillaan. Simppelein ratkaisu olisi ettei koko editori aukea jos on makroja. Tai sitten editori voisi aueta readonlynä ja YAML-preview olisi näkymä makrot avattuun tilanteeseen, jolloin attrbuutteja voi kelailla. Jos attribuutin arvo tulee ilmankin makron avaamista (rivi esiintyy alkuperäisessä YAMLissa), niin silloin editori voisi toki sallia sen arvon muuttamisen.

Toinen haaste tulee olioattribuuteista. Sekin saattaisi välttävästi toimia jos YAML-previewessä näkyy ne oloina ja sitten klikataan jotakin olion omaa attribuuttia, niin editoriin tulee sen attribuutin muokkaus. Tähän taas haasteita voi tuoda jos olioita on esitetty JSONina.