Skip to content

Commit

Permalink
Merge pull request #20 from webability-go/late-night
Browse files Browse the repository at this point in the history
patch v0.3.0
  • Loading branch information
metalwolf committed Apr 10, 2024
2 parents 227e299 + 43725eb commit a130cc7
Show file tree
Hide file tree
Showing 26 changed files with 2,804 additions and 874 deletions.
28 changes: 26 additions & 2 deletions README.md
@@ -1,7 +1,6 @@

[![Go Report Card](https://goreportcard.com/badge/github.com/webability-go/wajaf)](https://goreportcard.com/report/github.com/webability-go/wajaf)
[![GoDoc](https://godoc.org/github.com/webability-go/wajaf?status.png)](https://godoc.org/github.com/webability-go/wajaf)
[![GolangCI](https://golangci.com/badges/github.com/webability-go/wajaf.svg)](https://golangci.com)

WAJAF for GO v0.1
=============================
Expand Down Expand Up @@ -52,7 +51,7 @@ For objects:
- WA.extend: Will extends an object from another (inheritance).
- WA.clone: Will clone an object and all its children.
-- If you dont care the type of object but only its attributes, you can use WA.clone(object, true)
-- If you use the normal method WA.clone(object), it will close the whole object with attributes and methods.
-- If you use the normal method WA.clone(object), it will clone the whole object with attributes and methods.
- WA.sizeof: Will calculates the size (number of attributes) of an object.

For DOM nodes:
Expand Down Expand Up @@ -109,6 +108,31 @@ TO DO:
Version Changes Control
=======================

v0.3.0 - 2024-04-09
------------------------
- Added searcheabletextfieldElement, go and JS modified
- mmcFieldElement now supports multifile upload too, and a template to present information
- lovFieldElement now supports radio and checkboxes, and multiple select
- groupContainer now supports sub-forms for master-details administration screens with templates to format detail records
- Errors corrected con crowser getNodeDocumentLeft and getNodeDocumentTop to be correctly calculated with scroll offsets
- Added function findNodeByClass in browser class
- Added coretemplate.js to inject templates with data sets
- Added floatingContainer for floating windows in page
- Added resize of columns, order of columns and drag and drop for order into gridContainer
- Error corrected on tabContainer when unloading the instance
- TreeContainer now supports dragging and hover, sinchronized with server with the listener
- textfieldElement and textareafieldElement corrected to display correctly the number of words and letters
- New classes into css for new components


v0.1.4 - 2022-12-02
------------------------
- Added listener option to AjaxRequest to follow the upload of request to the server
- Error corrected in the 4GL Manager, the node with an inner application was not linking the application attribute
- ggraphElement has been changed to control errors with try-catch when calling the google library
- mmcFieldElement has been modified to work as expected and be able to manage any kind of files
- gridContainer has been modified to be able to order the information by columns

v0.1.3 - 2022-06-12
------------------------
- Added CodeNode.go to create a node of code.
Expand Down
Binary file added examples/public/skins/4gl/dommask-upload.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/public/skins/4gl/textfield-error.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
84 changes: 77 additions & 7 deletions examples/public/skins/css/4gl.css
Expand Up @@ -108,6 +108,9 @@

.group>fieldset>.hidden { display: none; }

.group>.group>fieldset {
margin-left: 50px; border-left: 1px solid black;
}

/* grid CONTAINER CLASSES */

Expand All @@ -116,10 +119,13 @@
/* 3 types of zones: title, field, control */
.grid .grid-header { position: absolute; left: 0px; right: 0px; top: 0px; height: 20px; background-color: #eee; border-bottom: 1px solid #ccc; overflow: hidden; }
.grid .grid-header-content { position: relative; }
.grid .grid-header-column { float: left; }
.grid .grid-header-column { float: left; position: relative; }
.grid .grid-header-column.hover { color: #336; }
.grid .grid-header-column-title { background-color: white; height: 16px; padding-top: 3px; padding-left: 5px; border-bottom: 1px solid #999; border-right: 1px solid #999; }
.grid .grid-header-column-sizer { float: right; background-color: green; width: 3px; height: 20px; cursor: col-resize; }

.grid .grid-header-column-order { float: right; width: 15px; height: 16px; background-image: url('../../skins/4gl/order-asc.png'); background-repeat: no-repeat; }
.grid .grid-header-column-order-asc { width: 15px; height: 16px; background-image: url('../../skins/4gl/order-asc.png'); background-repeat: no-repeat; background-position: center; position: absolute; right: 1px; top: 1px; background-color: #fff; border-radius: 50%; }
.grid .grid-header-column-order-desc { width: 15px; height: 16px; background-image: url('../../skins/4gl/order-desc.png'); background-repeat: no-repeat; background-position: center; position: absolute; right: 1px; top: 1px; background-color: #fff; border-radius: 50%; }

.grid .grid-body { position: absolute; left: 0px; right: 0px; top: 21px; bottom: 21px; background-color: #eee; overflow: auto; }
.grid .grid-body-content { position: relative; }
Expand Down Expand Up @@ -218,10 +224,34 @@ margin-left: 0px; }
.textfield.ok>.field { border-left: 1px solid #44aa44; border-bottom: 1px solid #44aa44; background-color: #eef8cc; }
.textfield.error>.field { border-left: 1px solid #cc8800; border-bottom: 1px solid #cc8800; background-color: #ffeeee; }
.textfield.edition>.field { border-left: 1px solid #8888ff; border-bottom: 1px solid #8888ff; background-color: #eeeeff; }

.textfield>.selected {
border: 0px;
padding: 2px;
height: 15px;
border-left: 1px solid #aaa;
border-bottom: 1px solid #aaa;
background-color: #eee;
color: #888;
}
.textfield>.help { display: block; padding: 5px; color: #999; float: right; width: 400px; }
.textfield>.error { display: block; padding: 5px; color: #f00; float: right; width: 400px; }

.textfield>.list {
position: absolute;
top: 20px;
background-color: #cceeff;
border: 2px solid blue;
height: 100px;
display: none;
z-index: 10;
overflow-y: scroll;
}
.textfield>.list>.item {
cursor: pointer;
}
.textfield>.list>.item:hover, .textfield>.list>.item.selected {
background-color: blue;
color: white;
}
.textfieldlabel.medium { }

.textfieldlabel.tiny { width: auto; float: none; text-align: left; padding-left: 20px; }
Expand Down Expand Up @@ -273,6 +303,9 @@ margin-left: 0px; }
.lovfield>.count { color: #999; font-size: 10px; padding-top: 3px; }
.lovfield>.value { }
.lovfield>.field { width: 270px; border: 0px; height: 20px; border-left: 1px solid #aaa; border-bottom: 1px solid #aaa; background-color: #eee; }
.lovfield>div.field {
height: auto;
}
.lovfield.ok>.field { border-left: 1px solid #44aa44; border-bottom: 1px solid #44aa44; background-color: #eef8cc; }
.lovfield.error>.field { border-left: 1px solid #cc8800; border-bottom: 1px solid #cc8800; background-color: #ffeeee; }
.lovfield.edition>.field { border-left: 1px solid #8888ff; border-bottom: 1px solid #8888ff; background-color: #eeeeff; }
Expand Down Expand Up @@ -364,9 +397,46 @@ margin-left: 0px; }
.dommaskcolorfield.maskdisabled .entryinput { border: 0px; background-color: #eeeeee; padding: 2px; height: 15px; }





/* MMC field */

.mmcfieldlabel { float: left; width: 140px; padding-top: 1px; text-align: right; display: block; color: #333; font-size: 12px; font-weight: bold; line-height: 18px;
width: auto; float: none; text-align: left; padding-left: 20px; }
.mmcfieldlabel.error { color: red; }

.mmcfield { padding-left: 20px; background-repeat: no-repeat; background-position: 2px 4px; position: relative; min-height: 50px; }
.mmcfield.ok { background-image: url('../../skins/4gl/field-ok.png'); }
.mmcfield.error { background-image: url('../../skins/4gl/field-error.png'); }
.mmcfield.edition { background-image: url('../../skins/4gl/field-edition.png'); }

.mmcfield .upload { border-left: 2px dashed #aaa; border-bottom: 2px dashed #aaa; background-color: #eee; margin: 1px; font-size: 10px; font-weight: bold; min-height: 50px; padding-top: 5px; cursor: pointer; }
.mmcfield .upload-icon { background-image: url('../../skins/4gl/filefield-upload.png'); background-size: cover; background-position: center; background-repeat: no-repeat; width: 25px; height: 25px;}
.mmcfield.ok .upload { border-left: 2px dashed #44aa44; border-bottom: 2px dashed #44aa44; background-color: #eef8cc; color: #0a0; }
.mmcfield.error .upload { border-left: 2px dashed #cc8800; border-bottom: 2px dashed #cc8800; background-color: #ffeeee; color: #a00; }
.mmcfield.edition .upload { border-left: 2px dashed #8888ff; border-bottom: 2px dashed #8888ff; background-color: #eeeeff; color: #00a; }
.mmcfield.ok .upload.dragover { border-left: 2px solid #44aa44; border-bottom: 2px solid #44aa44; background-color: #eef8cc; color: #0a0; }
.mmcfield.error .upload.dragover { border-left: 2px solid #cc8800; border-bottom: 2px solid #cc8800; background-color: #ffeeee; color: #a00; }
.mmcfield.edition .upload.dragover { border-left: 2px solid #8888ff; border-bottom: 2px solid #8888ff; background-color: #eeeeff; color: #00a; }

.mmcfield .uploading { position: relative; border-left: 2px solid #8888ff; border-bottom: 2px solid #8888ff; background-color: #eeeeff; margin: 1px; font-size: 12px; font-weight: bold; min-height: 50px; }
.mmcfield .uploading-icon { background-image: url('../../skins/4gl/loader.gif'); background-size: cover; background-position: center; background-repeat: no-repeat; width: 25px; height: 25px; margin-left: 10px; margin-top: 10px; float: left;}
.mmcfield .uploading-name { position: absolute; top: 10px; left: 60px; }
.mmcfield .uploading-perc { position: absolute; top: 10px; right: 5px; }
.mmcfield .uploading-bar { position: absolute; bottom: 10px; right: 5px; height: 10px; width: calc(100% - 55px); background-color: white;}
.mmcfield .uploading-progressbar { position: absolute; left: 0; width: 0; height: 10px; background-color: #77a;}

.mmcfield .uploaded { position: relative; margin: 3px; font-size: 10px; font-weight: bold; min-height: 50px; }
.mmcfield.editing .uploaded { background-color: #eef;}
.mmcfield .uploaded-icon { max-height: 50px; max-width: 50px; float: left; }
.mmcfield .uploaded-image { max-height: 50px; max-width: 100px; float: left; margin-right: 5px; }
.mmcfield .uploaded-value { margin-left: 5px; }
.mmcfield .uploaded-delete { width: auto; border: 1px solid red; padding: 5px; position: absolute; bottom: 0; right: 0; cursor: pointer; }
.mmcfield .uploaded-delete:hover { background-color: red; color: white; }

.mmcfield>.help { display: block;padding: 5px; color: #999; float: right; width: 400px; }
.mmcfield>.error { display: block; padding: 5px; color: #f00; float: right; width: 400px; }

.mmcfieldlabel.tiny { width: auto; float: none; text-align: left; padding-left: 20px; }
.mmcfield.tiny { margin-left: 0px; }



Expand Down
2 changes: 1 addition & 1 deletion groupcontainer.go
Expand Up @@ -13,7 +13,7 @@ func NewGroupContainer(id string) *GroupContainer {

c.RegisterKnownAttributes([]string{"display", "style", "classname", "classnamezone",
"left", "width", "right", "top", "height", "bottom", "haslistener",
"varmode", "varorder", "varkey",
"varmode", "varorder", "varkey", "maingroup",
"mode", "authmodes", "key"})
// c.RegisterKnownMessages([]string{"alertmessage", "servermessage", "titleinsert", "titleupdate", "titledelete", "titleview", "insertok", "updateok", "deleteok"})
c.RegisterKnownChildren([]string{"zone", "dataset", "event", "help"})
Expand Down

0 comments on commit a130cc7

Please sign in to comment.