[Kimchi-devel] [PATCH] UI: Adding new checkbox widget to new kimchi UI

Wen Wang wenwang at linux.vnet.ibm.com
Fri Jan 23 07:48:13 UTC 2015


Signed-off-by: Wen Wang <wenwang at linux.vnet.ibm.com>
---
 ui/css/theme-default/checkbox-flat.css | 25 ++++++++++
 ui/js/widgets/checkbox-flat.js         | 86 ++++++++++++++++++++++++++++++++++
 2 files changed, 111 insertions(+)
 create mode 100644 ui/css/theme-default/checkbox-flat.css
 create mode 100644 ui/js/widgets/checkbox-flat.js

diff --git a/ui/css/theme-default/checkbox-flat.css b/ui/css/theme-default/checkbox-flat.css
new file mode 100644
index 0000000..b8712b3
--- /dev/null
+++ b/ui/css/theme-default/checkbox-flat.css
@@ -0,0 +1,25 @@
+/*
+ * Project Kimchi
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ .checkbox-item {
+    cursor: pointer;
+ }
+
+ .checkbox-inline {
+    display: inline-block;
+ }
\ No newline at end of file
diff --git a/ui/js/widgets/checkbox-flat.js b/ui/js/widgets/checkbox-flat.js
new file mode 100644
index 0000000..877a52d
--- /dev/null
+++ b/ui/js/widgets/checkbox-flat.js
@@ -0,0 +1,86 @@
+/*
+ * Project Kimchi
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+// How to use:
+//     $(".selector").checkboxFlat({
+//         id: "t",  //Checkbox base id.
+//         name: "test",  //Checkbox name.
+//         content: ["apple", "banana", "orange", "cherry"],  //Contents of the checkbox set.
+//         checked: [1,3]  //Set the checked item, which starts with number 1.
+//     });
+//     $(".selector").click(function() {
+//         console.log($(".selector").checkboxFlat("value"));  //Get value of the checked checkbox.
+//     });
+
+ (function($) {
+    $.widget("kimchi.checkboxFlat", {
+        options: {
+            id: "",
+            name: "",
+            content: [],
+            checked: []
+        },
+
+        _create: function() {
+            var that = this;
+            var idBase = that.options.id;
+            var name = that.options.name;
+            var checked = that.options.checked;
+            var content = that.options.content;
+            var html = "";
+            for (var i=1;i<content.length+1;i++) {
+                if($.inArray(i,checked) < 0) {
+                    html += "<div class='checkbox-item checkbox-inline icon-check-empty-1' id='" + idBase + i + "' name='" + name + "'></div>" +
+                            "<label class='checkbox-label checkbox-inline' for='" + idBase + i + "'>" + content[i-1] + "</label>";
+                } else {
+                    html += "<div class='checkbox-item checkbox-inline icon-ok-squared' id='" + idBase + i + "' name='" + name + "'></div>" +
+                            "<label class='checkbox-label checkbox-inline' for='" + idBase + i + "'>" + content[i-1] + "</label>";
+                }
+            }
+            $(html).appendTo(that.element);
+            $(".checkbox-item").on("click", function() {
+                var tickID = $(this).attr("id");
+                var tick = tickID.substring(idBase.length,tickID.length);
+                if($(this).hasClass("icon-check-empty-1")) {
+                    $(this).removeClass("icon-check-empty-1");
+                    $(this).addClass("icon-ok-squared");
+                    checked.push(Number(tick));
+                } else {
+                    $(this).removeClass("icon-ok-squared");
+                    $(this).addClass("icon-check-empty-1");
+                    checked.splice($.inArray(Number(tick),checked),1);
+                }
+            });
+        },
+
+        value: function() {
+            var value = new Array();
+            var vContent = this.options.content;
+            var vChencked = this.options.checked;
+            for(var i=0;i<vChencked.length;i++) {
+                value.push(vContent[vChencked[i]-1]);
+            }
+            return value;
+        },
+
+        _destroy: function() {
+            this.element.remove();
+        }
+    });
+ })(jQuery);
\ No newline at end of file
-- 
2.1.0




More information about the Kimchi-devel mailing list