Updates for schedule app
authorSteve Sutton <steve@gaslightmedia.com>
Mon, 9 Jun 2014 20:50:43 +0000 (16:50 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Mon, 9 Jun 2014 20:50:43 +0000 (16:50 -0400)
also updates for php5.3

Toolkit/Schedule/Calendar.php
Toolkit/Schedule/CalendarMonthDecorator.php
Toolkit/Schedule/Database/tables/schedule.sql
css/colorPicker.css [new file with mode: 0644]
libjs/jquery.colorPicker.js [new file with mode: 0644]

index b93d00e..903ad2e 100644 (file)
@@ -4,15 +4,15 @@ class Toolkit_Schedule_Calendar
 {
     /**
      * buildCalendar
-     * 
+     *
      * @param type $month
      * @param type $year
      * @param type $dates
-     * @return string 
+     * @return string
      */
     public function buildCalendar($month, $year, $dates = array())
     {
-        
+
         $month = $month + 0;
         $year  = $year + 0;
         $mCal = new Calendar_Month_Weekdays(
@@ -20,11 +20,11 @@ class Toolkit_Schedule_Calendar
             $month,
             0
         );
-        $wrapper = new Calendar_Decorator_Wrapper(&$mCal);
+        $wrapper = new Calendar_Decorator_Wrapper($mCal);
         $wrapper->build($dates);
         $calYear      = $wrapper->thisYear();
         $calMonthName = date(
-            'F', 
+            'F',
             mktime(
                 0,
                 0,
@@ -67,7 +67,7 @@ class Toolkit_Schedule_Calendar
                 $html .= $day->thisMonth() . '/' . $day->thisDay() . '/' . $day->thisYear();
                 $html .= '">'.$day->thisDay().'</td>';
             }
-            
+
             if ($day->isLast()) {
                 $html .= '</tr>
                     ';
@@ -81,12 +81,12 @@ class Toolkit_Schedule_Calendar
         ';
         return $html;
     }
-    
+
     /**
      * getDepartureColors
-     * 
+     *
      * @param type $scheduleId
-     * @return type 
+     * @return type
      */
     public function getDepartureColors($scheduleId)
     {
@@ -116,12 +116,12 @@ class Toolkit_Schedule_Calendar
         }
         return $colors;
     }
-    
+
     /**
      * getDepartureDates
-     * 
+     *
      * @param type $scheduleId
-     * @return Calendar_Day 
+     * @return Calendar_Day
      */
     public function getDepartureDates($scheduleId)
     {
index bb66889..224eb0e 100644 (file)
@@ -5,9 +5,9 @@ class Toolkit_Schedule_CalendarMonthDecorator
 {
     public function Toolkit_Schedule_CalendarMonthDecorator(&$Calendar)
     {
-        parent::Calendar_Decorator(&$Calendar);
+        parent::Calendar_Decorator($Calendar);
     }
-    
+
     public function thisDay()
     {
         return parent::thisDay();
index ab4b169..db5841a 100644 (file)
@@ -2,8 +2,9 @@ CREATE TABLE boats.schedules (
 id SERIAL,
 name TEXT,
 active BOOLEAN DEFAULT false,
+schedule_year INTEGER,
 PRIMARY KEY (id)
 );
 
 GRANT ALL ON boats.schedules TO nobody;
-GRANT ALL ON boats.schedules_id_seq TO nobody;
\ No newline at end of file
+GRANT ALL ON boats.schedules_id_seq TO nobody;
diff --git a/css/colorPicker.css b/css/colorPicker.css
new file mode 100644 (file)
index 0000000..01b7743
--- /dev/null
@@ -0,0 +1,29 @@
+div.color_picker {
+  height: 16px;
+  width: 16px;
+  padding: 0 !important;
+  border: 1px solid #ccc;
+  cursor: pointer;
+  line-height: 16px;
+}
+
+div#color_selector {
+  width: 110px;
+  position: absolute;
+  border: 1px solid #598FEF;
+  background-color: #EFEFEF;
+  padding: 2px;
+}
+  div#color_custom {width: 100%; float:left }
+  div#color_custom label {font-size: 95%; color: #2F2F2F; margin: 5px 2px; width: 25%}
+  div#color_custom input {margin: 5px 2px; padding: 0; font-size: 95%; border: 1px solid #000; width: 65%; }
+
+div.color_swatch {
+  height: 12px;
+  width: 12px;
+  border: 1px solid #000;
+  margin: 2px;
+  float: left;
+  cursor: pointer;
+  line-height: 12px;
+}
diff --git a/libjs/jquery.colorPicker.js b/libjs/jquery.colorPicker.js
new file mode 100644 (file)
index 0000000..50d2072
--- /dev/null
@@ -0,0 +1,166 @@
+/**
+ * Really Simple Color Picker in jQuery
+ * 
+ * Copyright (c) 2008 Lakshan Perera (www.laktek.com)
+ * Licensed under the MIT (MIT-LICENSE.txt)  licenses.
+ * 
+ */
+
+(function($){
+  $.fn.colorPicker = function(){    
+    if(this.length > 0) buildSelector();
+    return this.each(function(i) { 
+      buildPicker(this)}); 
+  };
+  
+  var selectorOwner;
+  var selectorShowing = true;
+  
+  buildPicker = function(element){
+    //build color picker
+    control = $("<div class='color_picker'>&nbsp;</div>")
+    control.css('background-color', $(element).val());
+    
+    //bind click event to color picker
+    control.bind("click", toggleSelector);
+    
+    //add the color picker section
+    $(element).after(control);
+
+    //add even listener to input box
+    $(element).bind("change", function() {
+      selectedValue = toHex($(element).val());
+      $(element).next(".color_picker").css("background-color", selectedValue);
+    });
+    
+    //hide the input box
+    $(element).hide();
+
+  };
+  
+  buildSelector = function(){
+    selector = $("<div id='color_selector'></div>");
+
+     //add color pallete
+     $.each($.fn.colorPicker.defaultColors, function(i){
+      swatch = $("<div class='color_swatch'>&nbsp;</div>")
+      swatch.css("background-color", "#" + this);
+      swatch.bind("click", function(e){ changeColor($(this).css("background-color")) });
+      swatch.bind("mouseover", function(e){ 
+        $(this).css("border-color", "#598FEF"); 
+        $("input#color_value").val(toHex($(this).css("background-color")));    
+        }); 
+      swatch.bind("mouseout", function(e){ 
+        $(this).css("border-color", "#000");
+        $("input#color_value").val(toHex($(selectorOwner).css("background-color")));
+        });
+      
+     swatch.appendTo(selector);
+     });
+  
+     //add HEX value field
+     hex_field = $("<label for='color_value'>Hex</label><input type='text' size='8' id='color_value'/>");
+     hex_field.bind("keydown", function(event){
+      if(event.keyCode == 13) {changeColor($(this).val());}
+      if(event.keyCode == 27) {toggleSelector()}
+     });
+     
+     $("<div id='color_custom'></div>").append(hex_field).appendTo(selector);
+
+     $("body").append(selector); 
+     selector.hide();
+  };
+  
+  checkMouse = function(event){
+    //check the click was on selector itself or on selectorOwner
+    var selector = "div#color_selector";
+    var selectorParent = $(event.target).parents(selector).length;
+    if(event.target == $(selector)[0] || event.target == selectorOwner || selectorParent > 0) return
+    
+    hideSelector();   
+  }
+  
+  hideSelector = function(){
+    var selector = $("div#color_selector");
+    
+    $(document).unbind("mousedown", checkMouse);
+    selector.hide();
+    selectorShowing = false
+  }
+  
+  showSelector = function(){
+    var selector = $("div#color_selector");
+    
+    //alert($(selectorOwner).offset().top);
+    
+    selector.css({
+      top: $(selectorOwner).offset().top + ($(selectorOwner).outerHeight()),
+      left: $(selectorOwner).offset().left
+    }); 
+    hexColor = $(selectorOwner).prev("input").val();
+    $("input#color_value").val(hexColor);
+    selector.show();
+    
+    //bind close event handler
+    $(document).bind("mousedown", checkMouse);
+    selectorShowing = true 
+   }
+  
+  toggleSelector = function(event){
+    selectorOwner = this; 
+    selectorShowing ? hideSelector() : showSelector();
+  }
+  
+  changeColor = function(value){
+    if(selectedValue = toHex(value)){
+      $(selectorOwner).css("background-color", selectedValue);
+//      alert(selectedValue);
+//      alert($(selectorOwner).prev("input").val());
+      $(selectorOwner).prev("input").val(selectedValue).change();
+    
+      //close the selector
+      hideSelector();    
+    }
+  };
+  
+  //converts RGB string to HEX - inspired by http://code.google.com/p/jquery-color-utils
+  toHex = function(color){
+    //valid HEX code is entered
+    if(color.match(/[0-9a-fA-F]{3}$/) || color.match(/[0-9a-fA-F]{6}$/)){
+      color = (color.charAt(0) == "#") ? color : ("#" + color);
+    }
+    //rgb color value is entered (by selecting a swatch)
+    else if(color.match(/^rgb\(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\)$/)){
+      var c = ([parseInt(RegExp.$1),parseInt(RegExp.$2),parseInt(RegExp.$3)]);
+      
+      var pad = function(str){
+            if(str.length < 2){
+              for(var i = 0,len = 2 - str.length ; i<len ; i++){
+                str = '0'+str;
+              }
+            }
+            return str;
+      }
+
+      if(c.length == 3){
+        var r = pad(c[0].toString(16)),g = pad(c[1].toString(16)),b= pad(c[2].toString(16));
+        color = '#' + r + g + b;
+      }
+    }
+    else color = false;
+    
+    return color
+  }
+
+  
+  //public methods
+  $.fn.colorPicker.addColors = function(colorArray){
+    $.fn.colorPicker.defaultColors = $.fn.colorPicker.defaultColors.concat(colorArray);
+  };
+  
+  $.fn.colorPicker.defaultColors = 
+       [ '000000', '993300','333300', '000080', '333399', '333333', '800000', 'FF6600', '808000', '008000', '008080', '0000FF', '666699', '808080', 'FF0000', 'FF9900', '99CC00', '339966', '33CCCC', '3366FF', '800080', '999999', 'FF00FF', 'FFCC00', 'FFFF00', '00FF00', '00FFFF', '00CCFF', '993366', 'C0C0C0', 'FF99CC', 'FFCC99', 'FFFF99' , 'CCFFFF', '99CCFF', 'FFFFFF'];
+  
+})(jQuery);
+
+