Welcome! My name is ArmNo. I'm computer engineering student of Chiang Mai University, Thailand. This blog is about my internship program summer 2009. Enjoy!

email ประจำวัน #21

Friday, April 17th, 2009

สวัสดีครับ
รายงานประจำวันที่ 17/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • แก้ไขบั๊กของเมื่อวาน (ในหน้า report เมื่อเข้าสู่ mode browse ครั้งแรกจะไม่แสดงข้อมูลในช่อง O.T. request ต้องเลือกกดวันที่ในปฏิทินก่อน ถึงจะขึ้นมา) ให้แสดง O.T. Request ตั้งแต่ครั้งแรก
  • แก้ข้อมูล field ‘I_TREE’ ของ table t_task_ms ให้เป็นตาม structure ของ ldap tree (เช่น system.project.tasktype.taskname) 
  • สร้าง yui tree จากข้อมูลของตาราง t_task_ms แต่ยัง add child, delete, rename ไม่ได้ครับ (ได้เฉพาะแสดง tree จากข้อมูลใน I_TREE)
  • ทำ select form ของ project name เมื่อเลือก project แล้วให้แสดงผล task type ที่เป็น child ของ project นั้นๆ .. ซึ่ง model return ข้อมูลมาถูกต้องแล้ว แต่ยังแสดงผลใน select form ของ task type ไม่ได้ครับ

ปัญหาที่พบ

  • การ assign ค่าให้กับ select form ใน javascript ใช้วิธีต่างจาก form แบบอื่นๆ คือไม่สามารถกำหนด .value หรือ .innerHTML ลงไปตรงๆได้ .. ต้องใช้ javascript function ที่ชื่อว่า select ใน framework 

สิ่งที่ต้องทำ

  • แสดงผลข้อมูล child ของ project ใน select form ของ task type
  • สร้าง class สำหรับ encode/decode ข้อมูลเป็น ASCII Code ก่อนเก็บลง I_TREE

ขอบคุณครับ
อาม

email ประจำวัน #20

Thursday, April 16th, 2009

สวัสดีครับ
รายงานประจำวันที่ 16/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • popup confirm ของปุ่ม delete
  • ข้อมูลในช่อง ot_request_hour เดิมไม่เปลี่ยนแปลงตามวันที่หลังจากเลือกวันที่ในปฏิทิน จึงเพิ่ม Javascript code และ Controller, Model functions สำหรับการทำให้ ot_request_hour เปลี่ยนตามวันที่ในปฏิทิน โดยเพิ่ม ajax object เรียกหาข้อมูล ot_request_hour , return ข้อมูลเป็น xml แล้วแสดงในฟอร์ม ot request hour
  • สร้าง mode ใหม่เพื่อทดสอบการใช้งาน yuitree .. ซึ่งจริงๆแล้วต้อง implement yuitree ในหน้า input ของ T_TASK_MS ที่ได้จาก page generator เพื่อให้การใส่ข้อมูล tree และ upper task ของแต่ละ task นั้นถูกต้อง แต่ว่าที่แยกออกมาก่อนเพราะกันหายครับ เพราะถ้าหากต้อง generate หน้า T_TASK_MS นี้ใหม่ของเดิมจะหายหมดครับ .. ดูตัวอย่างการใช้งาน yuitree จาก ส่วนที่เป็น security manager ใน framework .. ซึ่งตอนนี้ตัว tree ยังไม่ขึ้นครับ ตัว yuitree ต้องเรียกใช้ฟังก์ชั่นค่อนข้างเยอะ ยังไล่ดูไม่หมดครับ

ปัญหาที่พบ

  • ในหน้า report เมื่อเข้าสู่ mode browse ครั้งแรกจะไม่แสดงข้อมูลในช่อง O.T. request ต้องเลือกกดวันที่ในปฏิทินก่อน ถึงจะขึ้นมา

สิ่งที่ต้องทำ

  • ทำ yuitree ให้ใช้การได้ คือสามารถ add child, delete และ rename  แต่ละ node ได้ เพื่อนำไปใช้สำหรับการ input ของ t_task_ms
  • ปุ่ม edit report detail (หลังจาก yuitree ใช้งานได้สำหรับ t_task_ms)

ขอบคุณครับ
อาม

email ประจำวัน #19

Friday, April 10th, 2009

สวัสดีครับ
รายงานประจำวันที่ 10/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • แก้ไขหน้าฟอร์มเล็กน้อย โดยย้าย total hour ไปไว้ด้านบน เพื่อที่จะทำให้สามารถส่งข้อมูลไปยัง table t_work_report_header ได้เมื่อกดปุ่ม add (ต้องส่ง total hour ไปเนื่องจากเป็น required field), เปลี่ยนชื่อ label และชื่อ mode ให้ถูกต้องและเหมาะสม
  • ลบ mode ออกไป 1 mode คือ showTask ซึ่งทำงานซ้ำซ้อนกับ browse .. ก่อนหน้านี้ไม่ได้รวมกันไว้ครับ เนื่องจาก template block ไม่เหมือนกัน แต่ตอนนี้รวมไว้แล้วครับ
  • เพิ่มการเช็ค report_header_id ในกรณีที่ใส่ detail และกด add แล้วไม่พบ report_header_id ก็จะไปเพิ่ม header_id ก่อน แล้วนำ id นั้นมาใช้กับ report detail ที่กรอกในวันนั้นๆ
  • ปุ่ม delete สำหรับ report detail ในแต่ละวัน .. ทำงานได้ปกติดีครับ เมื่อกด delete ไปแล้วก็จะ reload ตารางข้อมูล report detail ให้อัตโนมัติ

ปัญหาที่พบ

  • การเพิ่ม report_header_id ทำให้ต้อง input ข้อมูล detail ซ้ำอีกรอบ เพราะว่ากำหนดให้เมื่อบันทึก report_header_id ไปแล้ว ต้อง reload ตารางแสดงข้อมูล report detail ใหม่ โดยที่ยังไม่ได้บันทึกข้อมูล report detail ที่ส่งไปก่อนหน้า .. กรณีนี้จะเกิดเพียงครั้งเดียว คือเมื่อวันวันนั้น ยังไม่มี report_header_id ในตาราง header ครับ  ที่ทำแบบนี้ก่อนเพราะว่าเช็ค header_id ให้กับ report_detail ได้ง่ายกว่าครับ
  • ปุ่ม delete ยังไม่มี popup ขึ้นมา confirm .. ตอนนี้ยังเป็น กดแล้วลบเลย อยู่ครับ

สิ่งที่ต้องทำ

  • ทำให้ข้อมูล detail ที่ถูกส่งไปพร้อมกับ header บันทึกทันทีหลังจากที่บันทึก header เสร็จ (ไม่ต้องกรอกข้อมูลซ้ำอีกรอบ)
  • popup confirm การ delete
  • ปุ่ม edit ข้อมูล report detail

ขอบคุณครับ
อาม

email ประจำวัน #18

Thursday, April 9th, 2009

สวัสดีครับ
รายงานประจำวันที่ 09/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • แก้ไขส่วน addNew ให้สามารถแสดงข้อมูล report detail เดิมที่มีอยู่ใน database ได้ (ถ้ามี)
  • ทำส่วนบันทึกข้อมูล report detail ของแต่ละวัน โดยใช้ AJAX .. หน้า addNew สามารถบันทึก report detail ลงไปใน database ได้ และแสดงผลใน list ทันทีที่บันทึกข้อมูลสำเร็จ
  • ตรวจสอบ report header id ของข้อมูล report detail ที่เอาออกมาจาก database แล้วก็เจอปัญหาครับ

ปัญหาที่พบ

  • การบันทึกข้อมูล report detail จำเป็นต้องใช้ report header id ซึ่งเป็น foreign key จะเกิดปัญหาเมื่อต้องการบันทึก report detail ในขณะที่ยังไม่มี header id จะไม่สามารถ insert ข้อมูลลง database ได้ .. ซึ่งกรณีนี้จะเกิดขึ้นเมื่อ เลือกที่จะเพิ่มข้อมูลในวันที่ยังไม่มีการสร้าง report header (ทำให้ไม่มี report header id มาให้กับ report detail) .. ปรึกษาพี่เต้กับคุณ itzco ได้คำแนะนำว่า ใช้วิธี subset ของ forum ในการเช็ค header id ของทั้งตาราง report header และตาราง report detail ก่อน ถ้ายังไม่มี header id ให้เพิ่ม header id ในตาราง report header ไปพร้อมกับที่บันทึกข้อมูล report detail เลย .. และคุณ itzco ได้ให้ sourcecode ของ subset มาดูแล้วครับ

สิ่งที่ต้องทำ

  • ใช้วิธี subset เพื่อเช็ค header id ของการ input
  • ทำส่วนเมนู edit, delete ข้อมูลที่มีใน report detail
  • ทำปุ่มบันทึกข้อมูลของ header .. ซึ่งก็คือการบันทึกทั้งหน้า add report

ขอบคุณครับ
อาม

email ประจำวัน #17

Wednesday, April 8th, 2009

สวัสดีครับ
รายงานประจำวันที่ 08/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • เปลี่ยนคอลัมน์ time to เป็น date/time to โดยมี มีปฏิทินให้เลือกวันที่และเวลา
  • สร้าง javascript functions ขึ้นมาเพื่อใช้แสดงผลข้อมูลของ report เมื่อเลือกวันจากปฏิทิน (จากช่อง report date) โดยสร้างขึ้นใหม่อีก 4 functions ซึ่งทำงานร่วมกับ AJAX library ของ Tequila Framework .. ใช้เป็นตัวเรียกข้อมูลจาก Model และแสดงผลในตารางเมื่อได้รับข้อมูลมา
  • ส่วน add ข้อมูลใหม่เข้าไปใน report .. ใช้ js functions ที่เขียนขึ้นมา รับข้อมูลจาก form แล้วค่อยส่งไปที่ controller ผ่าน method post โดยใช้ ajax .. ซึ่งตอนนี้ถึงตรงนี้ครับ ตัว controller รับข้อมูลจาก js function ได้แล้ว แต่ยังไม่ได้นำข้อมูลนั้นไป insert ใน database ครับ

ปัญหาที่พบ

  • พยายามให้ view ส่งข้อมูลเป็น json มาให้ callback function ของ ajax object แล้วมันไม่เวิร์กครับ .. เลยใช้วิธีส่งมาเป็น text (ซึ่งประกอบด้วย html code) แทน
  • ไม่ได้กำหนด Requested Response Type ให้กับ ajax function เมื่อเรียกข้อมูลมาแสดงผลจึงทำ ให้ header กับ footer มาอยู่ใน table ด้วย .. ตอนนี้แก้ไขแล้วครับ โดยกำหนด rrt=nh (no header) ไปกับ url ที่ ajax function เรียก ทำให้ข้อมูลที่แสดงผลใน table เหลือแต่ส่วนที่เป็นข้อมูล
  • ไม่ค่อยคุ้นกับ javascript ครับ เพราะไม่เคยเขียนมาก่อน .. ช่วงแรกๆก็มึนๆ ตอนนี้ก็พอได้แล้วครับ

สิ่งที่ต้องทำ

  • บันทึกข้อมูลที่ถูกส่งจาก js function ไปยัง controller ลงใน database
  • ทำปุ่ม edit/delete ของข้อมูลเดิม

ขอบคุณครับ
อาม

email ประจำวัน #16

Tuesday, April 7th, 2009

สวัสดีครับ
รายงานประจำวันที่ 07/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • แก้ไขหน้า input ของ report โดยแก้วันที่ให้วันที่ปัจจุบันเป็น default สำหรับฟอร์ม report date
  • ตัดคอลัมน์ date from และ date to ออก (ตามที่คุณ itzco แนะนำ) ให้เหลือแต่ time from, time to ในหน้า input
  • ทำ input ให้เหลือ 1 row ในตาราง .. (รูปแบบจะออกมาคล้ายๆส่วน table relations ของ page generator ครับ)
  • ดึงข้อมูลจาก table work_report_detail มาแสดงผลในหน้า input เพื่อกรณีที่ในวันที่ต้องการกรอกข้อมูล มีข้อมูลเดิมอยู่ก่อนแล้ว

ปัญหาที่พบ

  • ดึงข้อมูลผิด table .. เพราะไปเอาข้อมูลจาก t_task_ms แทนที่จะเป็น t_work_report_detail .. ข้อมูลออกมาเหมือนกัน แต่ผิด logic ครับ
  • หน้า T_TASK_MS ของ page generator ถูก reset ต้อง generate ใหม่
  • พยายามใช้ javascript ในการเพิ่มจำนวน row ใน table ส่วนที่เป็น input ทำให้เกิดความยุ่งยาก .. ซึ่งคุณ itzco ก็แนะนำให้ทำ input field เพียง 1 row ใน table อย่างที่บอกข้างบนครับ

สิ่งที่ต้องทำ

  • สร้าง javascript function สำหรับจัดการข้อมูลซึ่งเป็น json

ขอบคุณครับ
อาม

email ประจำวัน #15

Monday, April 6th, 2009

สวัสดีครับ
รายงานประจำวันที่ 06/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • สร้าง controller, model, view, template หน้า report ซึ่งตอนนี้มี 2 mode คือ addNew (input) และ viewReport (output) .. ซึ่งตอนนี้หน้าเน้นทำส่วน input อยู่ครับ .. กรอกข้อมูลได้แล้ว แต่ว่ายังบันทึกข้อมูลลงฐานข้อมูลไม่ได้ครับ .. ส่วนหน้า report ยังมีแต่โครงอยู่ครับ คิดไว้ว่าจะทำหน้า input ให้เสร็จก่อนเพื่อให้ได้ข้อมูลจริงๆมาแสดงผลหน้า output ครับ

ปัญหาที่พบ

  • นำข้อมูล resource name กับ task name มาลิสต์ใน select form ของ template แล้วมันไม่ออก .. ทำตามวิธีใน manual ของ Tequila ในเว็บ ตอนนี้ได้แล้วครับ เนื่องจากตอนแรก assign ตัวแปรให้ template แล้วชื่อตัวแปรไม่ตรงกัน
  • ปฏิทินจาก javascript ยังแสดงผลเหมือนกันทุกส่วน คือให้เลือกทั้งวันที่และเวลา .. ซึ่งบางส่วนนั้นต้องการเฉพาะวันที่หรือเวลา อย่างใดอย่างหนึ่งเท่านั้น .. สาเหตุมาจากหาฟังก์ชั่นของ javascript ที่แสดงเฉพาะวันที่หรือเวลาไม่เจอครับ .. ซึ่งจริงๆแล้วมีอยู่ใน Tequila Framework อยู่แล้วครับ

สิ่งที่ต้องทำ

  • ทำให้หน้า input สามารถบันทึกข้อมูลได้
  • เพิ่มการใช้ ajax ให้กับปุ่มต่างๆที่จำเป็น เช่น เพิ่มจำนวนแถว, validation

ขอบคุณครับ
อาม

email ประจำวัน #14

Thursday, April 2nd, 2009

สวัสดีครับ
รายงานประจำวันที่ 2/04/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • สร้าง Class ทำหรับการคำนวณเวลาที่จะต้องใช้ในการแสดงผลทั้งส่วนปฏิทิน และส่วน report (class timeCalculation)
  • แก้ไข database ตามที่พี่วรรณออกแบบมาใหม่ คือ ลบ table t_time_sheet_tr แล้วเพิ่ม table t_work_report_header และ t_work_report_detail พร้อมทั้งลิ้งก์ foreign key ที่จำเป็น
  • generate หน้าเพจจากทั้งสอง table ใหม่ .. สามารถ add ข้อมูล และแสดงผลข้อมูลได้

ปัญหาที่พบวันนี้

  • page generator ทำงานผิดพลาดสำหรับ table t_work_report_detail เนื่องจาก t_work_report_header ซึ่งเป็น parent ไม่มี field ที่เป็น label ทำให้ page generator ไม่สามารถ map field ที่เป็น label แล้วแสดงผลออกมาได้ ..

สิ่งที่ต้องทำ

  • รวมหน้า report header กับ report detail เข้าไว้ด้วยกัน แล้วให้สามารถ input ข้อมูล และ report ออกมาได้

วันพรุ่งนี้ผมลางาน 1 วันนะครับ
ขอบคุณครับ
อาม

email ประจำวัน #13

Thursday, April 2nd, 2009

สวัสดีครับ
รายงานประจำวันที่ 01/03/2009 – Web Time Sheet (Tequila Framework)
สิ่งที่ทำวันนี้

  • ย้ายการคำนวนวันที่และเวลามาไว้ใน Model โดยสร้างเป็นฟังก์ชั่นใหม่ ทำให้สามารถเรียกใช้ได้โดยตรงจาก View
  • ตัดการคำนวณที่ไม่จำเป็นออก แล้วใช้ฟังก์ชั่นของ Tequila ในการคำนวณแทน ทำให้โค้ดสั้นลง และไม่ผิดพลาด
  • ดึงข้อมูล activities จากฐานข้อมูล (ที่กรอกผ่านหน้า page generator) มาแสดงใน Calendar View ที่ทำไว้ก่อนแล้ว
  • แก้ array ของ VO จากที่เมื่อวานเป็น 1 มิติ ให้เป็น 2 มิติเหมือนตอนแรก เพื่อทำให้ไม่ต้องแก้โค้ดส่วน View มากนัก

ปัญหาที่พบ

  • ติดบั๊กตรงการแก้ไข array อยู่นาน เพราะไม่สามารถจัดให้ข้อมูลใน array ถูกต้องตาม logic .. คุณ itzco ช่วยแก้ให้ได้แล้วครับ

สิ่งที่ต้องทำ

  • แก้ไข table t_timesheet_tr ให้เป็น 2 table เหมือนที่พี่วรรณให้มาใหม่
  • generate page จากสอง table ใหม่
  • รวมสองหน้านั้นให้เป็นหน้าเดียว (หน้า report ที่ประกอบด้วย header และ detail)

ขอบคุณครับ
อาม

email ประจำวัน #12

Tuesday, March 31st, 2009

สวัสดีครับ
รายงานประจำวันที่ 31/03/2009 – Tequila Framework
สิ่งที่ทำวันนี้

  • ตรวจสอบการ input ข้อมูลจากหน้าที่ได้จาก Page Generator ทั้งหมด .. ซึ่งเท่าที่มีอยู่ก็ input ข้อมูลเข้าไปได้ครับ
  • แก้ไขตาราง t_task_ms ซึ่งจากเดิมที่ insert ข้อมูลในตารางไม่ได้ .. ซึ่งปัญหาเกิดจากลืมเซ็ตให้ task_id เป็น auto increment ครับ .. key มันเลย duplicated
  • แก้ไขส่วน Model, DAO และ VO ของปฏิทิน ให้สามารถถึงข้อมูลออกมาจาก database ได้

ปัญหาที่พบ

  • ในหน้าแสดงผล task_ms และ time_sheet_tr เมื่อกด delete ข้อมูลไปแล้ว ปุ่มกลับมายังหน้า view ไม่ทำงาน
  • หน้า time_sheet_tr ปุ่ม Save and Continue (saveAjax) ไม่ทำงาน
  • array ของ VO ที่ได้จาก model ไม่เหมือนกับแบบเดิมที่ทำไว้ .. ของเดิมเป็น array 2 มิติ แต่ของใหม่ที่ทำวันนี้เป็น array 1 มิติ

สิ่งที่ต้องทำ

  • แก้ไขส่วน view ให้ไม่มีการคำนวณวันที่และเวลาเหลืออยู่
  • แก้ไข VO ให้ส่งข้อมูลส่วนที่นอกเหนือจากที่มีใน database ไปยัง view ได้ .. เช่น เดือน/ปี ก่อนหน้าและถัด ควรถูกคำนวณใน Model -> เก็บใน VO และส่งไปยัง View เพื่อ assign ลงใน template

ขอบคุณครับ
อาม