Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Side by Side Diff: experimental/webtry/webtry.go

Issue 244313007: Move to using HTML templates when filling out the workspace history. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 package main 1 package main
2 2
3 import ( 3 import (
4 "bytes" 4 "bytes"
5 "crypto/md5" 5 "crypto/md5"
6 "database/sql" 6 "database/sql"
7 "encoding/base64" 7 "encoding/base64"
8 "encoding/json" 8 "encoding/json"
9 "flag" 9 "flag"
10 "fmt" 10 "fmt"
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 match := imageLink.FindStringSubmatch(r.URL.Path) 339 match := imageLink.FindStringSubmatch(r.URL.Path)
340 if len(match) != 2 { 340 if len(match) != 2 {
341 http.NotFound(w, r) 341 http.NotFound(w, r)
342 return 342 return
343 } 343 }
344 filename := match[1] 344 filename := match[1]
345 http.ServeFile(w, r, fmt.Sprintf("../../../inout/%s", filename)) 345 http.ServeFile(w, r, fmt.Sprintf("../../../inout/%s", filename))
346 } 346 }
347 347
348 type Try struct { 348 type Try struct {
349 » Hash string 349 » Hash string `json:"hash"`
350 » CreateTS string 350 » CreateTS string `json:"create_ts"`
351 } 351 }
352 352
353 type Recent struct { 353 type Recent struct {
354 Tries []Try 354 Tries []Try
355 } 355 }
356 356
357 // recentHandler shows the last 20 tries. 357 // recentHandler shows the last 20 tries.
358 func recentHandler(w http.ResponseWriter, r *http.Request) { 358 func recentHandler(w http.ResponseWriter, r *http.Request) {
359 log.Printf("Recent Handler: %q\n", r.URL.Path) 359 log.Printf("Recent Handler: %q\n", r.URL.Path)
360 360
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 } 411 }
412 412
413 func workspaceHandler(w http.ResponseWriter, r *http.Request) { 413 func workspaceHandler(w http.ResponseWriter, r *http.Request) {
414 log.Printf("Workspace Handler: %q\n", r.URL.Path) 414 log.Printf("Workspace Handler: %q\n", r.URL.Path)
415 if r.Method == "GET" { 415 if r.Method == "GET" {
416 tries := []Try{} 416 tries := []Try{}
417 match := workspaceLink.FindStringSubmatch(r.URL.Path) 417 match := workspaceLink.FindStringSubmatch(r.URL.Path)
418 name := "" 418 name := ""
419 if len(match) == 2 { 419 if len(match) == 2 {
420 name = match[1] 420 name = match[1]
421 » » » rows, err := db.Query("SELECT create_ts, hash FROM works pacetry WHERE name=? ORDER BY create_ts DESC ", name) 421 » » » rows, err := db.Query("SELECT create_ts, hash FROM works pacetry WHERE name=? ORDER BY create_ts", name)
422 if err != nil { 422 if err != nil {
423 reportError(w, r, err, "Failed to select.") 423 reportError(w, r, err, "Failed to select.")
424 return 424 return
425 } 425 }
426 for rows.Next() { 426 for rows.Next() {
427 var hash string 427 var hash string
428 var create_ts time.Time 428 var create_ts time.Time
429 if err := rows.Scan(&create_ts, &hash); err != n il { 429 if err := rows.Scan(&create_ts, &hash); err != n il {
430 log.Printf("Error: failed to fetch from database: %q", err) 430 log.Printf("Error: failed to fetch from database: %q", err)
431 continue 431 continue
432 } 432 }
433 tries = append(tries, Try{Hash: hash, CreateTS: create_ts.Format("2006-02-01")}) 433 tries = append(tries, Try{Hash: hash, CreateTS: create_ts.Format("2006-02-01")})
434 } 434 }
435 } 435 }
436 var code string 436 var code string
437 if len(tries) == 0 { 437 if len(tries) == 0 {
438 code = DEFAULT_SAMPLE 438 code = DEFAULT_SAMPLE
439 } else { 439 } else {
440 » » » code = getCode(tries[0].Hash) 440 » » » code = getCode(tries[len(tries)-1].Hash)
mtklein 2014/04/21 16:19:01 Undo?
jcgregorio 2014/04/21 16:26:24 This was intentional, the history list is construc
mtklein 2014/04/21 16:31:14 Ah! Missed the DESC change. Thanks.
441 } 441 }
442 if err := workspaceTemplate.Execute(w, Workspace{Tries: tries, C ode: code, Name: name}); err != nil { 442 if err := workspaceTemplate.Execute(w, Workspace{Tries: tries, C ode: code, Name: name}); err != nil {
443 log.Printf("ERROR: Failed to expand template: %q\n", err ) 443 log.Printf("ERROR: Failed to expand template: %q\n", err )
444 } 444 }
445 } else if r.Method == "POST" { 445 } else if r.Method == "POST" {
446 name, err := newWorkspace() 446 name, err := newWorkspace()
447 if err != nil { 447 if err != nil {
448 http.Error(w, "Failed to create a new workspace.", 500) 448 http.Error(w, "Failed to create a new workspace.", 500)
449 return 449 return
450 } 450 }
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 flag.Parse() 600 flag.Parse()
601 http.HandleFunc("/i/", imageHandler) 601 http.HandleFunc("/i/", imageHandler)
602 http.HandleFunc("/w/", workspaceHandler) 602 http.HandleFunc("/w/", workspaceHandler)
603 http.HandleFunc("/recent/", recentHandler) 603 http.HandleFunc("/recent/", recentHandler)
604 http.HandleFunc("/iframe/", iframeHandler) 604 http.HandleFunc("/iframe/", iframeHandler)
605 http.HandleFunc("/css/", cssHandler) 605 http.HandleFunc("/css/", cssHandler)
606 http.HandleFunc("/js/", jsHandler) 606 http.HandleFunc("/js/", jsHandler)
607 http.HandleFunc("/", mainHandler) 607 http.HandleFunc("/", mainHandler)
608 log.Fatal(http.ListenAndServe(*port, nil)) 608 log.Fatal(http.ListenAndServe(*port, nil))
609 } 609 }
OLDNEW
« experimental/webtry/js/run.js ('K') | « experimental/webtry/templates/workspace.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698