Citater fra studieordningen for specialiseringen i interaktionsdesing og multimedier:
Author: Per Thykjaer Jensen
-
Vælg RAW
Nogen gange kan RAW redde dagen. Her er nogle skitsebilleder fra Munch-udstillingen på Aros i Aarhus. JPG filen mister en masse nuancer.
Farverne og eksponeringen kan rettes fra RAW i programmer som Rawtherapee (Linux) eller lignende. Efter at have arbejdet med farverne kan billedet gemmes som .PNG eller noget andet browseren kan læse.
-
Kanban i San Francisco
Billedet er fra en rejse til San Francisco i 2010 med Erhvervsakademi Aarhus. Vi besøgte en virksomhed, der systematisk anvendte stick-it notes som planlægningsredskab. Problemet ved denne metode er at man ikke kan se sine vægge eller flytte sedlerne når man fysisk er et andet sted. Omvendt er det praktisk at alle kan se hvad der foregår.
-
Kanban til kanban-projektet
Opgaver I gang Venter / test ok Afhandling find litt. MySQL / PHP / CRUD Drag and Drop Research
Droppet pga. kompabilitet m. ældre browsere.DIV Dummy HTML / JS gebid Modulært design kanban – u8 Koncepttest (nov.)
kl + ko mglVælg litt. Database (MP) uge 8 PHP Uge 8 – scaffold WordPress PlugIN
Mob / Web – u8Kontakte vejleder Skema afsendt d. 7.11.12
OK 20130118
Vejleder: N-Info om mastermodulet
StudieordningScrum som ER HTML5 test AP (MLH=ok) PF 0.1 Wireframe 0.1 Mob HTML5 research Problemformulering -
Research drag and drop
“Drag and drop” (D&D) er alfa og omega når en GUI skal være intuitiv. D&D er en oplagt digital metafor, når vi skal efterligne et whiteboard. D&D er mulig i HTML5. Det er en relativt ny standard, og derfor må man forvente, at forældede browsere får problemer. Med D&D kan vi udvikle et interface på nettet med en funktionalitet, der minder om noget vi kender fra skrivebordsmetaforerne i OSX, Windows – eller Linux / Unix verdenens mangfoldighed af Windows Managers: Gnome, KDE, Ratpoison, LXDE, etc.
Det ser ud til at jQuery kan fyre en funktion af, når man dropper en dimmer et bestemt sted fx en firkant eller noget andet. ActionScript, Lingo etc. har noget, der minder om det her, nemlig “collision detection”.
Dette eksempel gør noget lignende.
Eksemplet “Drag and Drop To Columns” bruger et billedes position ved “drop” til at skabe strenge til databasen. Denne kode virker umiddelbart fornuftig som basis for mit projekt. Funktionen looper gennem arrayet af UL tags og laver en liste:
/* Preparing data to be saved */ function saveDragDropNodes() { var saveString = ""; var uls = dragDropTopContainer.getElementsByTagName('UL'); for(var no=0;no<uls.length;no++){ // LOoping through all <ul> var lis = uls[no].getElementsByTagName('LI'); for(var no2=0;no2<lis.length;no2++){ if(saveString.length>0)saveString = saveString + ";"; saveString = saveString + uls[no].id + '|' + lis[no2].id; } } document.getElementById('saveContent').innerHTML = '<h1>Ready to save these nodes:</h1> ' + saveString.replace(/;$ }
Principielt burde denne funktion (modificeret til at loope gennem DIV-tags med en passende ID) kunne sætte en variabel – og en variabel må igen kunne overføres til en database via en sendeknap og GET eller POST.
På denne side er to eksempler på “send” med JS og Json:
function save(type){ var table_content; table_content=REDIPS.drag.save_content('table1',type); if(!table_content){alert('Table is empty!');} else if(type==='json'){window.open('/my/multiple-parameters-json.php?p='+table_content,'Mypop','width=350,height=260,scrollbars=yes');} else{window.open('/my/multiple-parameters.php?'+table_content,'Mypop','width=350,height=260,scrollbars=yes');}} if(window.addEventListener){window.addEventListener('load',redips_init,false);} else if(window.attachEvent){window.attachEvent('onload',redips_init); }
GetElementsBy…. findes i disse varianter:
getElementById
getElementsByName
getElementsByTagName
getElementsByTagNames
getElementsByClassName
getElementsBySelector
getElementsByAttribute
getElementsByAnythingJson kan mao, fange værdier fra DOM.
Bemærk denne detalje – her fyres funktionen af efter drag:
<script> $( "#draggable" ).draggable(); $( "#droppable" ).droppable({ drop: function() { alert( "dropped" ); } }); </script>
En anden vej kunne være at få Json til at sende variable til PHP – i stil med dette:
document.getElementById("lname").innerHTML=obj.employees[1].lastName
Løsning: jeg forestiller mig, at værdierne fra loopene lægges ind i skjulte formfields via JS. Når denne form “submittes” via PHP gemmes positionerne i MySQL DB.
-
Første primitive Kanban
Her er den første primitive Kanban i html. Prototypen kan ikke overføre data til databasen. Man skal kunne gemme sit arbejde. Denne kanban virker i en webbrowser på Windows / Mac / Linux platforme.
Men drag and drop fungerer ikke på en iPad. Ny problemstilling:
- drag and drop på mobile enheder.
-
Scrum – set som database
Hele Scrum-processen kan anskues som et ralationsdiagram. Principielt kunne den bagvedliggende database programmeres ud fra denne oversigt.
-
Kanban – bør være en tabel
En kanban er pr. definition en tabel. Men virker drag-n-drop med tabeller. En hurtig test på W3Schools bekræfter det.
-
Drag and drop research
Det er relativt enkelt at lave en drag and drop i HTML5. Kanban-designet kan nemt implementeres; men hvordan gør man løsningen persistent? Her er et hack der ser lovende ud.
-
Udvikling af Scrum-Kanban
Her begynder notater til udvikling af en Scrum-Kanban. Formålet med projektet er at udvikle en Kanban, der kan køre som et plugin i WordPress. Dels for at arbejde teoretisk med IT-projektstyring – og dels for at prøve muligheder med HTML5 og CSS.
Koden herunder stammer fra W3Schools og den laver den basale funktionalitet; men løsningen er ikke persistent. En persistent løsning bør kunne udvikles via PHP og MySQL. Sprints er:
- Gemmefunktion – overfører data til databasen via POST.
- Udvikling af ER
- PHP
- Database
- Integration med WordPress API
<html> <head> <style type="text/css"> #div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;} #div2 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;} #div3 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;} .divX {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;} </style> <script> function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } </script> </head> <body> <p>Drag the W3Schools image into the rectangle:</p> <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">Backlog</div> <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">Todo</div> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">Done</div> <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69"> <div id="QQ" class="DQ" draggable="true" ondragstart="drag(event)"> Drag Queen </div> </body> </html>