Hello community,
here is the log from the commit of package perl-App-MFILE-WWW for
openSUSE:Factory checked in at 2016-11-10 13:27:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-App-MFILE-WWW (Old)
and /work/SRC/openSUSE:Factory/.perl-App-MFILE-WWW.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-App-MFILE-WWW"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-App-MFILE-WWW/perl-App-MFILE-WWW.changes
2016-10-20 23:10:43.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.perl-App-MFILE-WWW.new/perl-App-MFILE-WWW.changes
2016-11-10 13:28:00.000000000 +0100
@@ -1,0 +2,31 @@
+Sat Nov 5 06:02:38 UTC 2016 - [email protected]
+
+- updated to 0.151
+ see /usr/share/doc/packages/perl-App-MFILE-WWW/Changes
+
+
+ 0.150 2016-11-03 19:22 CET
+ - Resource.pm: expose REST server URI to JavaScript side
+ - Resource.pm: export foreign site params only if defined
+ - js demo: dtable return to demoSubmenu instead of demoMenu
+ - js demo: implement a proper hook for dbrowser demo
+ - html.js: do not concatenate undefined entries
+ - html.js: use text prop to determine max length
+ - html.js: implement and use getObjStr()
+ - start.js: simplify dtable start/listen code
+ - Implement a drowselect target (widget)
+ - demo: plumb in the new "drowselect" widget
+ - demo: implement proper dtable, drowselect hooks
+ - html.js: initial HTML for drowselect widget
+ - start.js: add drowselect start and listen functions
+ - html.js: put spans around table/rowselect rows
+ - core: implement drowselect reverse video, arrow-key navigation
+ - html.js: remove potential code duplication (dtable/drowselect)
+
+ 0.151 2016-11-04 22:02 CET
+ - demo: storage and accessors for dbrowser data set
+ - demo: move rowselect demo to submenu
+ - demo: enable editing in dbrowser/drowselect demos
+ - core: refactor to eliminate code duplication (and fix a bug)
+
+-------------------------------------------------------------------
Old:
----
App-MFILE-WWW-0.149.tar.gz
New:
----
App-MFILE-WWW-0.151.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-App-MFILE-WWW.spec ++++++
--- /var/tmp/diff_new_pack.TDFXgT/_old 2016-11-10 13:28:01.000000000 +0100
+++ /var/tmp/diff_new_pack.TDFXgT/_new 2016-11-10 13:28:01.000000000 +0100
@@ -17,7 +17,7 @@
Name: perl-App-MFILE-WWW
-Version: 0.149
+Version: 0.151
Release: 0
%define cpan_name App-MFILE-WWW
Summary: Web UI development toolkit with prototype demo app
++++++ App-MFILE-WWW-0.149.tar.gz -> App-MFILE-WWW-0.151.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/Changes
new/App-MFILE-WWW-0.151/Changes
--- old/App-MFILE-WWW-0.149/Changes 2016-09-29 01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/Changes 2016-11-04 22:02:52.000000000 +0100
@@ -890,3 +890,27 @@
- html.js: restore proper padding in dform
- js: make readableDate() take full "YYYY-MM-DD HH:DD:SS+TZ"
+0.150 2016-11-03 19:22 CET
+- Resource.pm: expose REST server URI to JavaScript side
+- Resource.pm: export foreign site params only if defined
+- js demo: dtable return to demoSubmenu instead of demoMenu
+- js demo: implement a proper hook for dbrowser demo
+- html.js: do not concatenate undefined entries
+- html.js: use text prop to determine max length
+- html.js: implement and use getObjStr()
+- start.js: simplify dtable start/listen code
+- Implement a drowselect target (widget)
+ - demo: plumb in the new "drowselect" widget
+ - demo: implement proper dtable, drowselect hooks
+ - html.js: initial HTML for drowselect widget
+ - start.js: add drowselect start and listen functions
+ - html.js: put spans around table/rowselect rows
+ - core: implement drowselect reverse video, arrow-key navigation
+ - html.js: remove potential code duplication (dtable/drowselect)
+
+0.151 2016-11-04 22:02 CET
+- demo: storage and accessors for dbrowser data set
+- demo: move rowselect demo to submenu
+- demo: enable editing in dbrowser/drowselect demos
+- core: refactor to eliminate code duplication (and fix a bug)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/MANIFEST
new/App-MFILE-WWW-0.151/MANIFEST
--- old/App-MFILE-WWW-0.149/MANIFEST 2016-09-29 01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/MANIFEST 2016-11-04 22:02:52.000000000 +0100
@@ -45,6 +45,7 @@
share/js/mfile-www/dmenu-init.js
share/js/mfile-www/dnotice-hooks.js
share/js/mfile-www/dnotice-init.js
+share/js/mfile-www/drowselect-init.js
share/js/mfile-www/dtable-init.js
share/js/mfile-www/lib.js
share/js/mfile-www/target-init.js
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/META.json
new/App-MFILE-WWW-0.151/META.json
--- old/App-MFILE-WWW-0.149/META.json 2016-09-29 01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/META.json 2016-11-04 22:02:52.000000000 +0100
@@ -58,7 +58,7 @@
"provides" : {
"App::MFILE::WWW" : {
"file" : "lib/App/MFILE/WWW.pm",
- "version" : "0.149"
+ "version" : "0.151"
},
"App::MFILE::WWW::Dispatch" : {
"file" : "lib/App/MFILE/WWW/Dispatch.pm"
@@ -73,6 +73,6 @@
"http://opensource.org/licenses/bsd-license.php"
]
},
- "version" : "0.149",
+ "version" : "0.151",
"x_serialization_backend" : "JSON::PP version 2.27203"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/META.yml
new/App-MFILE-WWW-0.151/META.yml
--- old/App-MFILE-WWW-0.149/META.yml 2016-09-29 01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/META.yml 2016-11-04 22:02:52.000000000 +0100
@@ -23,7 +23,7 @@
provides:
App::MFILE::WWW:
file: lib/App/MFILE/WWW.pm
- version: '0.149'
+ version: '0.151'
App::MFILE::WWW::Dispatch:
file: lib/App/MFILE/WWW/Dispatch.pm
App::MFILE::WWW::Resource:
@@ -50,5 +50,5 @@
perl: '5.012'
resources:
license: http://opensource.org/licenses/bsd-license.php
-version: '0.149'
+version: '0.151'
x_serialization_backend: 'CPAN::Meta::YAML version 0.012'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/lib/App/MFILE/WWW/Resource.pm
new/App-MFILE-WWW-0.151/lib/App/MFILE/WWW/Resource.pm
--- old/App-MFILE-WWW-0.149/lib/App/MFILE/WWW/Resource.pm 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/lib/App/MFILE/WWW/Resource.pm 2016-11-04
22:02:52.000000000 +0100
@@ -397,6 +397,11 @@
$r .= 'loginDialogMaxLengthUsername: ' .
$site->MFILE_WWW_LOGIN_DIALOG_MAXLENGTH_USERNAME . ',';
$r .= 'loginDialogMaxLengthPassword: ' .
$site->MFILE_WWW_LOGIN_DIALOG_MAXLENGTH_PASSWORD . ',';
+ # REST server URI
+ if ( defined( $site->DOCHAZKA_WWW_BACKEND_URI ) ) {
+ $r .= 'restURI: \'' . $site->DOCHAZKA_WWW_BACKEND_URI . '\',';
+ }
+
# dummyParam in last position so we don't have to worry about comma/no
comma
$r .= 'dummyParam: null';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/lib/App/MFILE/WWW.pm
new/App-MFILE-WWW-0.151/lib/App/MFILE/WWW.pm
--- old/App-MFILE-WWW-0.149/lib/App/MFILE/WWW.pm 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/lib/App/MFILE/WWW.pm 2016-11-04
22:02:52.000000000 +0100
@@ -58,11 +58,11 @@
=head1 VERSION
-Version 0.149
+Version 0.151
=cut
-our $VERSION = '0.149';
+our $VERSION = '0.151';
our @EXPORT_OK = ( '$VERSION' );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/share/js/core/html.js
new/App-MFILE-WWW-0.151/share/js/core/html.js
--- old/App-MFILE-WWW-0.149/share/js/core/html.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/core/html.js 2016-11-04
22:02:52.000000000 +0100
@@ -1,5 +1,5 @@
// *************************************************************************
-// Copyright (c) 2014, SUSE LLC
+// Copyright (c) 2014-2016, SUSE LLC
//
// All rights reserved.
//
@@ -109,7 +109,7 @@
prevVal = elem.text.length;
}
return prevVal;
- }, arr[0].name.length);
+ }, arr[0].text.length);
console.log("The longest entry is " + max + " characters long");
return max;
},
@@ -173,15 +173,112 @@
r = '';
}
return r;
- };
+ },
+ genericTable = function (tname, tobj, targetType) {
+ return function (set) {
+
+ console.log("Generating source code of " + tname);
+ // console.log("tobj", tobj);
+ // console.log("set", set);
+ var r = '<form id="' + tobj.name + '">',
+ entry,
+ column,
+ row,
+ col,
+ headingsentry = {},
+ superset,
+ maxl = [];
+
+ r += '<br><b>' + tobj.title + '</b><br><br>';
+
+ if (tobj.preamble) {
+ r += tobj.preamble + '<br><br>';
+ }
+
+ // populate maxl array
+ tobj.entries.map(function (e) {
+ headingsentry[e.prop] = e.text;
+ })
+ superset = set.concat([headingsentry]);
+ console.log("superset", superset);
+ for (column = 0; column < tobj.entries.length; column += 1) {
+ console.log("Column " + column);
+ entry = tobj.entries[column];
+ var elems = superset.map(function (obj) {
+ return obj[entry.prop];
+ });
+ var elemlengths = elems.map(function (elem) {
+ var ep = ((elem === null) ? '' : elem).toString();
+ return ep.length;
+ });
+ maxl[column] = elemlengths.reduce(function (a, b) {
+ return (a > b) ? a : b;
+ });
+ }
+
+ // display table header
+ for (column = 0; column < tobj.entries.length; column += 1) {
+ entry = tobj.entries[column];
+ if (lib.privCheck(entry.aclProfileRead)) {
+ r += '<span style="text-decoration: underline">';
+ r += lib.rightPadSpaces(entry.text, maxl[column]);
+ r += '</span>';
+ }
+ if (column !== tobj.entries.length - 1) {
+ r += ' ';
+ }
+ }
+ r += '<br>';
+
+ // display table rows
+ if (set.length > 0) {
+ for (row = 0; row < set.length; row += 1) {
+ r += '<span id="row' + row + '">';
+ var obj = set[row];
+ for (column = 0; column < tobj.entries.length; column
+= 1) {
+ entry = tobj.entries[column];
+ console.log("entry", entry);
+ if (lib.privCheck(entry.aclProfileRead)) {
+ var val = obj[entry.prop];
+ console.log("value", val);
+ r += lib.rightPadSpaces(val, maxl[column]);
+ }
+ if (column !== tobj.entries.length - 1) {
+ r += ' ';
+ }
+ }
+ r += '</span>';
+ r += '<br>';
+ }
+ r += '<br>';
+ }
+
+ // Navigation menu (drowselect only)
+ if (targetType === 'drowselect') {
+ r += 'Navigation: ';
+ r += '<span id="navBack">[\u2190] Previous </span>';
+ r += '<span id="navForward">[\u2192] Next </span>';
+ r += '<span id="navJumpToBegin">[\u2303\u2190] Jump to
first </span>';
+ r += '<span id="navJumpToEnd">[\u2303\u2192] Jump to last
</span>';
+ r += '<br>';
+ }
+
+ // miniMenu at the bottom: selections are target names defined
+ // in the 'miniMenu' property of the dform object
+ r += miniMenu(tobj.miniMenu);
+
+ // your choice section
+ r += yourChoice();
+
+ r += '</form>';
+ console.log("Assembled source code for " + tname + " - it has
" + r.length + " characters");
+ return r;
+ }
+ }; // genericTable
+
return {
- demoActionFromMenu: function () {
- return '<br><br>SAMPLE ACTION - SOMETHING IS
HAPPENING<br><br><br>';
- },
- demoActionFromSubmenu: function () {
- return '<br><br>SAMPLE ACTION - foo bar actioning
bazness<br><br><br>';
- },
+
loginDialog: function () {
var r = '';
r += '<form id="loginform">';
@@ -196,14 +293,16 @@
r += '<input type="submit" value="Submit"><br><br>';
r += '</form>';
return r;
- },
+ }, // loginDialog
+
logout: function () {
var r = '';
r += '<br><br><br>';
r += 'You have been logged out of our humble application<br><br>';
r += 'Have a lot of fun!<br><br><br>';
return r;
- },
+ }, // logout
+
body: function () {
var r = '';
r += '<div class="leftright">';
@@ -234,7 +333,8 @@
// r += appLib.fillNoticesLine();
r += '</div>';
return r;
- },
+ }, // body
+
dmenu: function (dmn) {
console.log("Entering html.dmenu with argument " + dmn);
// dmn is dmenu name
@@ -250,8 +350,8 @@
for (i = 0; i < len; i += 1) {
// the entries are names of targets
- console.log("Attempting to pull target " + dmo.entries[i]);
entry = target.pull(dmo.entries[i]);
+ console.log("Pulled target " + dmo.entries[i] + " with result
", entry);
if (lib.privCheck(entry.aclProfile)) {
r += i + '. ' + entry.menuText + '<br>';
}
@@ -262,7 +362,8 @@
r += '</form>';
return r;
- },
+ }, // dmenu
+
dform: function (dfn) {
// dfn is dform name
// dfo is dform object
@@ -285,8 +386,12 @@
// determine characters needed for padding (based on longest
// entry)
- allEntries = lib.forceArray(dfo.entriesRead);
- allEntries = allEntries.concat(dfo.entriesWrite);
+ if (dfo.entriesRead !== undefined) {
+ allEntries = lib.forceArray(dfo.entriesRead);
+ }
+ if (dfo.entriesWrite !== undefined) {
+ allEntries = allEntries.concat(dfo.entriesWrite);
+ }
needed = maxLength(allEntries) + 2;
// READ-ONLY entries first
@@ -327,14 +432,15 @@
//console.log("Assembled source code for " + dfn + " - it has
" + r.length + " characters");
return r;
};
- },
+ }, // dform
+
dbrowser: function (dbn) {
// dfn is dform name
// dfo is dform object
var dbo = target.pull(dbn);
return function (set, pos) {
- //console.log("Generating source code of dbrowser " + dbn);
+ // console.log("Generating source code of dbrowser " + dbn);
var r = '<form id="' + dbo.name + '">',
len,
i,
@@ -386,7 +492,8 @@
console.log("Assembled source code for " + dbn + " - it has "
+ r.length + " characters");
return r;
};
- },
+ }, // dbrowser
+
dnotice: function (dnn) {
console.log("Entering html.dnotice with argument " + dnn);
// dnn is dnotice name
@@ -402,95 +509,17 @@
r += '</div>';
return r;
};
- },
+ }, // dnotice
+
dtable: function (dtn) {
var dto = target.pull(dtn);
- return function (set) {
-
- console.log("Generating source code of dtable " + dtn);
- console.log("dto", dto);
- var r = '<form id="' + dto.name + '">',
- entry,
- column,
- row,
- col,
- headingsentry = {},
- superset,
- maxl = [];
-
- r += '<br><b>' + dto.title + '</b><br><br>';
-
- if (dto.preamble) {
- r += dto.preamble + '<br><br>';
- }
-
- // populate maxl array
- dto.entries.map(function (e) {
- headingsentry[e.prop] = e.text;
- })
- superset = set.concat([headingsentry]);
- console.log("superset", superset);
- for (column = 0; column < dto.entries.length; column += 1) {
- console.log("Column " + column);
- entry = dto.entries[column];
- var elems = superset.map(function (obj) {
- return obj[entry.prop];
- });
- var elemlengths = elems.map(function (elem) {
- var ep = ((elem === null) ? '' : elem).toString();
- return ep.length;
- });
- maxl[column] = elemlengths.reduce(function (a, b) {
- return (a > b) ? a : b;
- });
- }
+ return genericTable(dtn, dto, 'dtable');
+ }, // dtable
- // display table header
- for (column = 0; column < dto.entries.length; column += 1) {
- entry = dto.entries[column];
- if (lib.privCheck(entry.aclProfileRead)) {
- r += '<span style="text-decoration: underline">';
- r += lib.rightPadSpaces(entry.text, maxl[column]);
- r += '</span>';
- }
- if (column !== dto.entries.length - 1) {
- r += ' ';
- }
- }
- r += '<br>';
+ drowselect: function (drsn) {
+ var drso = target.pull(drsn);
+ return genericTable(drsn, drso, 'drowselect');
+ } // dtable
- // display table rows
- if (set.length > 0) {
- for (row = 0; row < set.length; row += 1) {
- var obj = set[row];
- for (column = 0; column < dto.entries.length; column
+= 1) {
- entry = dto.entries[column];
- console.log("entry", entry);
- if (lib.privCheck(entry.aclProfileRead)) {
- var val = obj[entry.prop];
- console.log("value", val);
- r += lib.rightPadSpaces(val, maxl[column]);
- }
- if (column !== dto.entries.length - 1) {
- r += ' ';
- }
- }
- r += '<br>';
- }
- r += '<br>';
- }
-
- // miniMenu at the bottom: selections are target names defined
- // in the 'miniMenu' property of the dform object
- r += miniMenu(dto.miniMenu);
-
- // your choice section
- r += yourChoice();
-
- r += '</form>';
- console.log("Assembled source code for " + dtn + " - it has "
+ r.length + " characters");
- return r;
- }
- }
};
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/share/js/core/lib.js
new/App-MFILE-WWW-0.151/share/js/core/lib.js
--- old/App-MFILE-WWW-0.149/share/js/core/lib.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/core/lib.js 2016-11-04
22:02:52.000000000 +0100
@@ -44,7 +44,18 @@
prototypes
) {
- var heldObject = null;
+ var heldObject = null,
+ dbrowserState = {
+ "obj": null, // the dbrowser object itself
+ "set": null, // the dataset (array) we are browsing
+ "pos": null // the current position within that array
+ },
+ drowselectState = {
+ "obj": null, // the drowselect object itself
+ "set": null, // the dataset (array) we are selecting from
+ "pos": null // the current position within that array
+ };
+
return {
@@ -182,7 +193,30 @@
// convert null to empty array
forceArray: function (arr) {
return (arr === null) ? [] : arr;
- }
+ },
+
+ // generate string "n objects" based on array length
+ genObjStr: function (len) {
+ return (len === 1) ?
+ '1 object' :
+ len + " objects";
+ },
+
+ // reverse-video a row (on/off)
+ reverseVideo: function (row, onoff) {
+ if (onoff === true) {
+ $('#row' + row).css('background-color','#000000');
+ $('#row' + row).css('color','#ffffff');
+ }
+ if (onoff === false) {
+ $('#row' + row).css('background-color','#d0e4fe');
+ $('#row' + row).css('color','#000000');
+ }
+ },
+
+ // dbrowser, drowselect states
+ dbrowserState: dbrowserState,
+ drowselectState: drowselectState
};
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/share/js/core/start.js
new/App-MFILE-WWW-0.151/share/js/core/start.js
--- old/App-MFILE-WWW-0.149/share/js/core/start.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/core/start.js 2016-11-04
22:02:52.000000000 +0100
@@ -109,8 +109,6 @@
//
// miniMenu handlers
//
- // mmKeyListener - generalized keypress handler for miniMenus
- // (see below for usage)
mmKeyListener = function (evt) {
var len = $("input:text").length,
@@ -142,16 +140,8 @@
}
},
+ mmSubmit = function (tgt, obj) {
- //
- // dform handlers
- //
- dformSubmit = function (dfn, obj) {
- // dfn is dform name
- // dfo is dform object
- var dfo = target.pull(dfn);
-
- //console.log("Entering MFILE.dformSubmit with argument " + dfn);
lib.clearResult();
var sel = $('input[name="sel"]').val(),
@@ -164,7 +154,7 @@
wlen;
// if miniMenu has zero or one entries, 'Back' is the only option
- len = dfo.miniMenu.entries.length;
+ len = tgt.miniMenu.entries.length;
if (len === 0) {
console.log("Setting sel to 'X' by default because miniMenu
has no entries");
sel = 'X';
@@ -173,35 +163,34 @@
return;
}
- // clone the object
- newObj = $.extend({}, obj);
+ if (obj !== undefined) {
+ newObj = $.extend({}, obj);
- // replace the writable properties with the values from the form
- if (dfo.entriesWrite) {
- wlen = dfo.entriesWrite.length;
- for (i = 0; i < wlen; i += 1) {
- entry = dfo.entriesWrite[i];
- newObj[entry.prop] = $('#' + entry.name).val();
+ // replace the writable properties with the values from the
form
+ if (tgt.entriesWrite) {
+ wlen = tgt.entriesWrite.length;
+ for (i = 0; i < wlen; i += 1) {
+ entry = tgt.entriesWrite[i];
+ newObj[entry.prop] = $('#' + entry.name).val();
+ }
+ //console.log("Modified object based on form contents",
newObj);
}
- //console.log("Modified object based on form contents",
newObj);
}
console.log("sel === " + sel + " and len === " + len);
if (sel >= 0 && sel <= len) {
//console.log("sel " + sel + " is within range");
// we can only select the item if we have sufficient priv level
- selection = target.pull(dfo.miniMenu.entries[sel]);
+ selection = target.pull(tgt.miniMenu.entries[sel]);
if (lib.privCheck(selection.aclProfile)) {
//console.log('Selection ' + sel + ' passed priv check');
item = selection;
}
} else if (sel === 'X' || sel === 'x') {
- //console.log('dfo.menu.back:', dfo.miniMenu.back);
- item = target.pull(dfo.miniMenu.back[1]);
+ item = target.pull(tgt.miniMenu.back[1]);
} else {
console.log('Selection is ' + sel + ' (invalid) -- doing
nothing');
}
-
if (item !== undefined) {
//console.log("Selected " + dfn + " menu item: " + item.name);
// WARNING about the next line: we send the new object
@@ -217,6 +206,14 @@
item.start(newObj);
}
},
+
+ //
+ // dform handlers
+ //
+ dformSubmit = function (dfn, obj) {
+ // dfn is dform name
+ mmSubmit(target.pull(dfn), obj);
+ },
dformListen = function (dfn, obj) {
console.log("Listening in form " + dfn);
var dfo = target.pull(dfn);
@@ -236,73 +233,17 @@
},
//
- // storage for dbrowser state
- //
- dbrowserState = {
- "obj": null, // the dbrowser object itself
- "set": null, // the set we are browsing
- "pos": null // the current position within that set
- },
-
- //
// dbrowser handlers
//
dbrowserSubmit = function () {
- var dbo = dbrowserState.obj,
- set = dbrowserState.set,
- pos = dbrowserState.pos;
-
- console.log("Submitting browser, whatever that means: ", set[pos]);
- lib.clearResult();
-
- var sel = $('input[name="sel"]').val(),
- len,
- i,
- selection,
- entry,
- item;
-
- // if miniMenu has zero or one entries, 'Back' is the only option
- len = dbo.miniMenu.entries.length;
- if (len === 0) {
- console.log("Setting sel to 'X' by default because miniMenu
has no entries");
- sel = 'X';
- } else if (sel === '') {
- // user hit ENTER ambiguously
- return;
- }
-
- console.log("sel === " + sel + " and len === " + len);
- if (sel >= 0 && sel <= len) {
- //console.log("sel " + sel + " is within range");
- // we can only select the item if we have sufficient priv level
- selection = target.pull(dbo.miniMenu.entries[sel]);
- if (lib.privCheck(selection.aclProfile)) {
- //console.log('Selection ' + sel + ' passed priv check');
- item = selection;
- }
- } else if (sel === 'X' || sel === 'x') {
- //console.log('dfo.menu.back:', dfo.miniMenu.back);
- item = target.pull(dbo.miniMenu.back[1]);
- } else {
- console.log('Selection is ' + sel + ' (invalid) -- doing
nothing');
- }
-
- if (item !== undefined) {
- console.log("Selected " + dbo.name + " miniMenu item " +
item.name);
- // WARNING about the next line: we send the current object
- // to the selected target's start method, but it will only
- // be available to the start method if the target is a
- // daction. If the target is a dform or a dbrowser, nothing
- // will be passed in because the start methods of these
- // target types do not have an argument. Use the 'hook'
- // property, instead.
- item.start(set[pos]);
- }
+ var dbo = lib.dbrowserState.obj,
+ set = lib.dbrowserState.set,
+ pos = lib.dbrowserState.pos;
+ mmSubmit(dbo, set[pos]);
},
dbrowserKeyListener = function () {
- var set = dbrowserState.set,
- pos = dbrowserState.pos;
+ var set = lib.dbrowserState.set,
+ pos = lib.dbrowserState.pos;
return function (evt) {
@@ -314,13 +255,13 @@
if (evt.ctrlKey) {
console.log('Listener detected CTRL-\u2190 keypress');
if ($("#navJumpToBegin").length) {
- dbrowserState.pos = 0;
+ lib.dbrowserState.pos = 0;
dbrowserListen();
}
} else {
console.log('Listener detected \u2190 keypress');
if ($("#navBack").length) {
- dbrowserState.pos -= 1;
+ lib.dbrowserState.pos -= 1;
dbrowserListen();
}
}
@@ -328,13 +269,13 @@
if (evt.ctrlKey) {
console.log('Listener detected CTRL-\u2192 keypress');
if ($("#navJumpToEnd").length) {
- dbrowserState.pos = set.length - 1;
+ lib.dbrowserState.pos = set.length - 1;
dbrowserListen();
}
} else {
console.log('Listener detected \u2192 keypress');
if ($("#navForward").length) {
- dbrowserState.pos += 1;
+ lib.dbrowserState.pos += 1;
dbrowserListen();
}
}
@@ -344,14 +285,15 @@
};
},
dbrowserListen = function () {
- var dbo = dbrowserState.obj,
- set = dbrowserState.set,
- pos = dbrowserState.pos;
+ var dbo = lib.dbrowserState.obj,
+ set = lib.dbrowserState.set,
+ pos = lib.dbrowserState.pos;
console.log("Listening in browser " + dbo.name);
$('#mainarea').html(dbo.source(set, pos));
lib.holdObject(set[pos]); // hold object so hooks can get it
- $('#result').html("Displaying no. " + (pos + 1) + " of " +
set.length + " objects in result set");
+ $('#result').html("Displaying no. " + (pos + 1) + " of " +
+ lib.genObjStr(set.length) + " in result set");
$('#' + dbo.name).submit( suppressSubmitEvent );
$('input[name="sel"]').val('').focus();
$('#submitButton').on("click", function (event) {
@@ -380,24 +322,12 @@
//
// dtable handlers
//
- dtableState = {
- "obj": null,
- "set": null,
- },
dtableSubmit = function (dto) {
- target.pull(dto.miniMenu.back[1]).start();
+ mmSubmit(dto);
},
- dtableListen = function () {
- var dto = dtableState.obj,
- set = dtableState.set,
- msg = 'Displaying table with ';
+ dtableListen = function (dto) {
+ var set = dto.hook();
console.log("Listening in table " + dto.name);
- $('#mainarea').html(dto.source(set));
- lib.holdObject(set); // hold object so hooks can get it
- msg += (set.length === 1) ?
- '1 object' :
- set.length + " objects";
- $('#result').text(msg);
$('#' + dto.name).submit(suppressSubmitEvent);
$('input[name="sel"]').val('').focus();
$('#submitButton').on("click", function (event) {
@@ -406,9 +336,80 @@
dtableSubmit(dto);
});
$('#' + dto.name).on("keypress", mmKeyListener);
+ },
+
+ //
+ // drowselect handlers
+ //
+ drowselectSubmit = function () {
+ var drso = lib.drowselectState.obj;
+ set = lib.drowselectState.set,
+ pos = lib.drowselectState.pos;
+ mmSubmit(drso, set[pos]);
+ },
+ drowselectKeyListener = function () {
+ var set = lib.drowselectState.set,
+ pos = lib.drowselectState.pos;
+
+ return function (evt) {
+
+ console.log("Entering drowselectKeyListener");
+ lib.logKeyPress(evt);
+
+ if (evt.keyCode === 37) { // up arrow
+ if (evt.ctrlKey) {
+ console.log('Listener detected CTRL-up arrow
keypress');
+ lib.reverseVideo(lib.drowselectState.pos, false);
+ lib.drowselectState.pos = 0;
+ drowselectListen();
+ } else {
+ console.log('Listener detected up arrow keypress');
+ if (lib.drowselectState.pos > 0) {
+ lib.reverseVideo(lib.drowselectState.pos, false);
+ lib.drowselectState.pos -= 1;
+ drowselectListen();
+ }
+ }
+ } else if (evt.keyCode === 39) { // down arrow
+ if (evt.ctrlKey) {
+ console.log('Listener detected CTRL-down arrow
keypress');
+ lib.reverseVideo(lib.drowselectState.pos, false);
+ lib.drowselectState.pos = set.length - 1;
+ drowselectListen();
+ } else {
+ console.log('Listener detected down arrow keypress');
+ if (lib.drowselectState.pos < set.length - 1) {
+ lib.reverseVideo(lib.drowselectState.pos, false);
+ lib.drowselectState.pos += 1;
+ drowselectListen();
+ }
+ }
+ } else {
+ mmKeyListener(evt);
+ }
+ };
+ },
+ drowselectListen = function () {
+ var drso = lib.drowselectState.obj,
+ set = lib.drowselectState.set,
+ pos = lib.drowselectState.pos;
+ $('#result').text("Displaying rowselect with " +
lib.genObjStr(set.length));
+ $('#mainarea').html(drso.source(set));
+ lib.holdObject(set[pos]); // hold object so hooks can get it
+ lib.reverseVideo(pos, true);
+ console.log("Listening in rowselect " + drso.name);
+ $('#' + drso.name).submit(suppressSubmitEvent);
+ $('input[name="sel"]').val('').focus();
+ $('#submitButton').on("click", function (event) {
+ event.preventDefault;
+ console.log("Submitting rowselect " + drso.name);
+ drowselectSubmit();
+ });
+ $('#' + drso.name).on("keypress", drowselectKeyListener());
};
return {
+
dmenu: function (dmn) {
// dmn is dmenu name
// dmo is dmenu object
@@ -421,7 +422,8 @@
$('#' + dmn).submit(dmenuSubmitKey(dmn));
$('input[name="sel"]').keydown(dmenuKeyListener(dmn));
};
- },
+ }, // dmenu
+
dform: function (dfn) {
var dfo = target.pull(dfn);
return function () {
@@ -432,7 +434,8 @@
$('#mainarea').html(dfo.source(obj));
dformListen(dfn, obj);
};
- },
+ }, // dform
+
dbrowser: function (dbn) {
if (dbn) {
// when called with dbn (dbrowser name) argument, we assume
@@ -443,21 +446,22 @@
lib.clearResult();
console.log('Starting new ' + dbn + ' dbrowser');
// (re)initialize dbrowser state
- dbrowserState.obj = target.pull(dbn);
- dbrowserState.set = dbrowserState.obj.hook();
- dbrowserState.pos = 0;
+ lib.dbrowserState.obj = target.pull(dbn);
+ lib.dbrowserState.set = lib.dbrowserState.obj.hook();
+ lib.dbrowserState.pos = 0;
// start browsing
dbrowserListen();
};
} else {
// when called _without_ an argument, we assume that there
// is an existing browser state to return to
- console.log('Returning to previous ' + dbrowserState.obj.name
+ ' dbrowser state');
+ console.log('Returning to previous ' +
lib.dbrowserState.obj.name + ' dbrowser state');
dbrowserListen();
}
- },
+ }, // dbrowser
+
dbrowserListen: dbrowserListen, // export so other modules can call it
- dbrowserState: dbrowserState, // export so other modules can modify
browser state
+
dnotice: function (dnn) {
var dno = target.pull(dnn);
return function () {
@@ -468,31 +472,46 @@
$('input[name="sel"]').focus();
dnoticeListen(dno);
};
- },
- dtableListen: dtableListen, // export so other modules can call it
- dtableState: dtableState, // export so other modules can modify
browser state
+ }, // dnotice
+
dtable: function (dtn) {
var dto = target.pull(dtn);
- if (dtn) {
- // when called with dtn (dtable name) argument, we assume
- // that we are being called from the second stage of dtable
+ return function () {
+ var set = dto.hook();
+ lib.clearResult();
+ console.log('Starting new ' + dtn + ' dtable');
+ $('#mainarea').html(dto.source(set));
+ $('#result').text('Displaying table with ' +
lib.genObjStr(set.length));
+ dtableListen(dto);
+ };
+ }, // dtable
+
+ drowselect: function (drsn) {
+ var drso = target.pull(drsn);
+ if (drsn) {
+ // when called with drsn (drowselect name) argument, we assume
+ // that we are being called from the second stage of drowselect
// initialization (i.e., one-time event) -- generate and
- // return the start function for this dtable
+ // return the start function for this drowselect
return function () {
lib.clearResult();
- console.log('Starting new ' + dtn + ' dtable');
- // (re)initialize dtable state
- dtableState.obj = target.pull(dtn);
- dtableState.set = dto.hook();
+ console.log('Starting new ' + drsn + ' drowselect');
+ // (re)initialize drowselect state
+ lib.drowselectState.obj = target.pull(drsn);
+ lib.drowselectState.set = drso.hook();
+ lib.drowselectState.pos = 0;
// start browsing
- dtableListen();
+ drowselectListen();
};
} else {
// when called _without_ an argument, we assume that there
- // is an existing browser state to return to
- console.log('Returning to previous ' + dtableState.obj.name +
' dtable state');
- dtableListen();
+ // is an existing state to return to
+ console.log('Returning to previous ' +
lib.drowselectState.obj.name + ' drowselect state');
+ drowselectListen();
}
- }
+ }, // drowselect
+
+ drowselectListen: drowselectListen // export so other modules can call
it
+
}
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/App-MFILE-WWW-0.149/share/js/mfile-www/daction-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/daction-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/daction-init.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/daction-init.js 2016-11-04
22:02:52.000000000 +0100
@@ -71,9 +71,30 @@
'aclProfile': 'passerby',
'start': dactionStart('demoActionFromSubmenu')
}),
+ target.push('demoActionFromTable', {
+ 'name': 'demoActionFromTable',
+ 'type': 'daction',
+ 'menuText': 'Action!',
+ 'aclProfile': 'passerby',
+ 'start': dactionStart('demoActionFromSubmenu')
+ }),
//
// dactions that you will probably want to use in your app
//
+ target.push('saveToBrowser', {
+ 'name': 'saveToBrowser',
+ 'type': 'daction',
+ 'menuText': 'Save',
+ 'aclProfile': 'passerby',
+ 'start': dactionStart('saveToBrowser')
+ }),
+ target.push('saveToRowselect', {
+ 'name': 'saveToRowselect',
+ 'type': 'daction',
+ 'menuText': 'Save',
+ 'aclProfile': 'passerby',
+ 'start': dactionStart('saveToRowselect')
+ }),
target.push('returnToBrowser', {
'name': 'returnToBrowser',
'type': 'daction',
@@ -81,6 +102,13 @@
'aclProfile': 'passerby',
'start': dactionStart('returnToBrowser')
}),
+ target.push('returnToRowselect', {
+ 'name': 'returnToRowselect',
+ 'type': 'daction',
+ 'menuText': 'Return to rowselect',
+ 'aclProfile': 'passerby',
+ 'start': dactionStart('returnToRowselect')
+ }),
target.push('logout', {
'name': 'logout',
'type': 'daction',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/App-MFILE-WWW-0.149/share/js/mfile-www/daction-start.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/daction-start.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/daction-start.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/daction-start.js 2016-11-04
22:02:52.000000000 +0100
@@ -42,34 +42,54 @@
define ([
"jquery",
- "html",
"logout",
"start",
- "target"
+ "target",
+ "lib"
], function (
$,
- html,
logout,
start,
- target
+ target,
+ lib
) {
var act = {
"demoActionFromMenu": function () {
- $('#mainarea').html(html.demoActionFromMenu);
- setTimeout(function () {
- target.pull('demoMenu').start();
- }, 1500);
+ $('#mainarea').html(
+ '<br><br>SAMPLE ACTION - SOMETHING IS
HAPPENING<br><br><br>'
+ );
+ setTimeout(function () { target.pull('demoMenu').start(); },
1500);
},
"demoActionFromSubmenu": function () {
- $('#mainarea').html(html.demoActionFromSubmenu);
- setTimeout(function () {
- target.pull('demoSubmenu').start();
- }, 1500);
+ $('#mainarea').html(
+ '<br><br>SAMPLE ACTION - foo bar actioning
bazness<br><br><br>'
+ );
+ setTimeout(function () { target.pull('demoSubmenu').start();
}, 1500);
+ },
+ "saveToBrowser": function () {
+ console.log("Now in saveToBrowser daction");
+ lib.dbrowserState.set[lib.dbrowserState.pos] = {
+ "prop1": $("#RWProp1").val(),
+ "prop2": $("#RWProp2").val()
+ };
+ start.dbrowserListen();
},
"returnToBrowser": function () {
console.log("Now in returnToBrowser daction");
- start.dbrowser();
+ start.dbrowserListen();
+ },
+ "saveToRowselect": function () {
+ console.log("Now in saveToRowselect daction");
+ lib.drowselectState.set[lib.drowselectState.pos] = {
+ "prop1": $("#RWProp1").val(),
+ "prop2": $("#RWProp2").val()
+ };
+ start.drowselectListen();
+ },
+ "returnToRowselect": function () {
+ console.log("Now in returnToRowselect daction");
+ start.drowselectListen();
},
"logout": logout
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/App-MFILE-WWW-0.149/share/js/mfile-www/dbrowser-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/dbrowser-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/dbrowser-init.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/dbrowser-init.js 2016-11-04
22:02:52.000000000 +0100
@@ -38,9 +38,11 @@
define ([
'lib',
+ 'app/lib',
'target'
], function (
lib,
+ appLib,
target
) {
@@ -49,36 +51,36 @@
//
var entries = {
- // read-only form entry no. 1
- 'browserEntry1': {
- name: 'browserEntry1',
- aclProfileRead: 'passerby',
- text: 'Entry 1',
- prop: 'prop1',
- maxlen: 20
- },
-
- // read-write form entry no. 1
- 'browserEntry2': {
- name: 'browserEntry2',
- aclProfileRead: 'passerby',
- text: 'Entry 2',
- prop: 'prop2',
- maxlen: 20
- }
-
- };
+ // read-only form entry no. 1
+ 'browserEntry1': {
+ name: 'browserEntry1',
+ aclProfileRead: 'passerby',
+ text: 'Entry 1',
+ prop: 'prop1',
+ maxlen: 20
+ },
+
+ // read-write form entry no. 2
+ 'browserEntry2': {
+ name: 'browserEntry2',
+ aclProfileRead: 'passerby',
+ text: 'Entry 2',
+ prop: 'prop2',
+ maxlen: 20
+ }
+
+ };
+
+ appLib.setBrowserSet([
+ { prop1: 'Some information here', prop2: 1234 },
+ { prop1: null, prop2: 'Some other info' },
+ { prop1: 'Mangled crab crackers', prop2: 'Umpteen whizzles' },
+ { prop1: 'Fandango', prop2: 'Professor!' },
+ { prop1: 'Emfeebled whipple weepers', prop2: 'A godg' },
+ { prop1: 'Wuppo wannabe', prop2: 'Jumbo jamb' }
+ ]);
return function () {
- // initialize sample result set
- lib.holdObject([
- { prop1: 'Some information here', prop2: 1234 },
- { prop1: null, prop2: 'Some other info' },
- { prop1: 'Mangled crab crackers', prop2: 'Umpteen whizzles' },
- { prop1: 'Fandango', prop2: 'Professor!' },
- { prop1: 'Emfeebled whipple weepers', prop2: 'A godg' },
- { prop1: 'Wuppo wannabe', prop2: 'Jumbo jamb' }
- ]);
//
// push dbrowser object definitions onto 'target' here
@@ -91,7 +93,7 @@
'preamble': 'This is just an illustration',
'aclProfile': 'passerby',
'entries': [ entries.browserEntry1, entries.browserEntry2 ],
- 'hook': lib.holdObject,
+ 'hook': appLib.getBrowserSet,
'miniMenu': {
entries: ['demoEditFromBrowser'],
back: ['Done', 'demoSubmenu']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/share/js/mfile-www/dform-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/dform-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/dform-init.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/dform-init.js 2016-11-04
22:02:52.000000000 +0100
@@ -122,14 +122,30 @@
'preamble': 'This is just an illustration',
'aclProfile': 'passerby',
'entriesRead': null,
- 'entriesWrite': [ entries.RWprop1, entries.RWprop2 ],
+ 'entriesWrite': [entries.RWprop1, entries.RWprop2],
'hook': lib.holdObject,
'miniMenu': {
- entries: ['demoActionFromForm'],
+ entries: ['saveToBrowser'],
back: ['Back', 'returnToBrowser']
}
});
+ target.push('demoEditFromRowselect', {
+ 'name': 'demoEditFromRowselect',
+ 'type': 'dform',
+ 'menuText': 'Edit',
+ 'title': 'Demo edit from rowselect',
+ 'preamble': 'This is just an illustration',
+ 'aclProfile': 'passerby',
+ 'entriesRead': null,
+ 'entriesWrite': [entries.RWprop1, entries.RWprop2],
+ 'hook': lib.holdObject,
+ 'miniMenu': {
+ entries: ['saveToRowselect'],
+ back: ['Back', 'returnToRowselect']
+ }
+ });
+
};
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/share/js/mfile-www/dmenu-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/dmenu-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/dmenu-init.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/dmenu-init.js 2016-11-04
22:02:52.000000000 +0100
@@ -50,7 +50,7 @@
'menuText': 'Demo menu',
'title': 'Demo menu',
'aclProfile': 'passerby',
- 'entries': ['demoActionFromMenu', 'demoNotice', 'demoSubmenu' ],
+ 'entries': ['demoActionFromMenu', 'demoNotice', 'demoSubmenu'],
'back': 'logout'
});
@@ -61,11 +61,10 @@
'title': 'Demo submenu',
'aclProfile': 'passerby',
'entries': ['demoActionFromSubmenu', 'demoForm', 'demoBrowser',
- 'demoTable'],
+ 'demoTable', 'demoRowselect'],
'back': 'demoMenu'
});
-
};
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/App-MFILE-WWW-0.149/share/js/mfile-www/drowselect-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/drowselect-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/drowselect-init.js
1970-01-01 01:00:00.000000000 +0100
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/drowselect-init.js
2016-11-04 22:02:52.000000000 +0100
@@ -0,0 +1,107 @@
+// *************************************************************************
+// Copyright (c) 2014-2016, SUSE LLC
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// 3. Neither the name of SUSE LLC nor the names of its contributors may be
+// used to endorse or promote products derived from this software without
+// specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+// *************************************************************************
+//
+// app/drowselect-init.js
+//
+// Round one of drowselect initialization (called from app/target-init)
+//
+"use strict";
+
+define ([
+ 'lib',
+ 'target'
+], function (
+ lib,
+ target
+) {
+
+ //
+ // define drowselect entries here
+ //
+ var entries = {
+
+ // read-only form entry no. 1
+ 'rowselectEntry1': {
+ name: 'rowselectEntry1',
+ aclProfileRead: 'passerby',
+ text: 'Entry 1',
+ prop: 'prop1',
+ maxlen: 20
+ },
+
+ // read-write form entry no. 1
+ 'rowselectEntry2': {
+ name: 'rowselectEntry2',
+ aclProfileRead: 'passerby',
+ text: 'Entry 2',
+ prop: 'prop2',
+ maxlen: 20
+ }
+
+ },
+
+ // set of objects from which to construct the rowselect
+ rowselectSet = [
+ { prop1: 'Some information here', prop2: 1234 },
+ { prop1: null, prop2: 'Some other info' },
+ { prop1: 'Mangled crab crackers', prop2: 'Umpteen whizzles' },
+ { prop1: 'Fandango', prop2: 'Professor!' },
+ { prop1: 'Emfeebled whipple weepers', prop2: 'A godg' },
+ { prop1: 'Wuppo wannabe', prop2: 'Jumbo jamb' }
+ ],
+ getRowselectSet = function () {
+ return rowselectSet;
+ };
+
+ return function () {
+
+ //
+ // push drowselect object definitions onto 'target' here
+ //
+ target.push('demoRowselect', {
+ 'name': 'demoRowselect',
+ 'type': 'drowselect',
+ 'menuText': 'Demonstrate rowselect',
+ 'title': 'Demo rowselect',
+ 'preamble': 'This is just an illustration',
+ 'aclProfile': 'passerby',
+ 'entries': [ entries.rowselectEntry1, entries.rowselectEntry2 ],
+ 'hook': getRowselectSet,
+ 'miniMenu': {
+ entries: ['demoEditFromRowselect'],
+ back: ['Done', 'demoSubmenu']
+ }
+ });
+
+ };
+
+});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/App-MFILE-WWW-0.149/share/js/mfile-www/dtable-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/dtable-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/dtable-init.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/dtable-init.js 2016-11-04
22:02:52.000000000 +0100
@@ -46,34 +46,38 @@
var entries = {
- 'tableEntry1': {
- name: 'tableEntry1',
- aclProfileRead: 'passerby',
- text: 'Entry 1',
- prop: 'prop1',
- maxlen: 20
+ 'tableEntry1': {
+ name: 'tableEntry1',
+ aclProfileRead: 'passerby',
+ text: 'Entry 1',
+ prop: 'prop1',
+ maxlen: 20
+ },
+
+ 'tableEntry2': {
+ name: 'tableEntry2',
+ aclProfileRead: 'passerby',
+ text: 'Entry 2',
+ prop: 'prop2',
+ maxlen: 20
+ }
+
},
-
- 'tableEntry2': {
- name: 'tableEntry2',
- aclProfileRead: 'passerby',
- text: 'Entry 2',
- prop: 'prop2',
- maxlen: 20
- }
-
- };
-
- return function () {
-
- lib.holdObject([
+
+ // set of objects from which to construct the table
+ tableSet = [
{ prop1: 'Some information here', prop2: 1234 },
{ prop1: null, prop2: 'Some other info' },
{ prop1: 'Mangled crab crackers', prop2: 'Umpteen whizzles' },
{ prop1: 'Fandango', prop2: 'Professor!' },
{ prop1: 'Emfeebled whipple weepers', prop2: 'A godg' },
{ prop1: 'Wuppo wannabe', prop2: 'Jumbo jamb' }
- ]);
+ ],
+ getTableSet = function () {
+ return tableSet;
+ };
+
+ return function () {
target.push('demoTable', {
'name': 'demoTable',
@@ -83,10 +87,10 @@
'preamble': 'This is just an illustration',
'aclProfile': 'passerby',
'entries': [ entries.tableEntry1, entries.tableEntry2 ],
- 'hook': lib.holdObject,
+ 'hook': getTableSet,
'miniMenu': {
- entries: ['demoEditFromBrowser'],
- back: ['Done', 'demoMenu']
+ entries: ['demoActionFromTable'],
+ back: ['Done', 'demoSubmenu']
}
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.149/share/js/mfile-www/lib.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/lib.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/lib.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/lib.js 2016-11-04
22:02:52.000000000 +0100
@@ -42,6 +42,8 @@
currentUser
) {
+ var browserSet;
+
return {
//
@@ -85,7 +87,14 @@
r += '<a href="http://sourceforge.net/p/mfile/tickets/new/">';
r += 'http://sourceforge.net/p/mfile/tickets/new/</a>';
return r;
- }
+ },
+
+ getBrowserSet: function () {
+ return browserSet;
+ },
+ setBrowserSet: function (newBrowserSet) {
+ browserSet = newBrowserSet;
+ }
};
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/App-MFILE-WWW-0.149/share/js/mfile-www/target-init.js
new/App-MFILE-WWW-0.151/share/js/mfile-www/target-init.js
--- old/App-MFILE-WWW-0.149/share/js/mfile-www/target-init.js 2016-09-29
01:09:53.000000000 +0200
+++ new/App-MFILE-WWW-0.151/share/js/mfile-www/target-init.js 2016-11-04
22:02:52.000000000 +0100
@@ -44,6 +44,7 @@
'app/dbrowser-init',
'app/dnotice-init',
'app/dtable-init',
+ 'app/drowselect-init',
'init2'
], function (
target,
@@ -53,6 +54,7 @@
dbrowserInitRoundOne,
dnoticeInitRoundOne,
dtableInitRoundOne,
+ drowselectInitRoundOne,
initRoundTwo
) {
@@ -67,6 +69,7 @@
dbrowserInitRoundOne();
dnoticeInitRoundOne();
dtableInitRoundOne();
+ drowselectInitRoundOne();
// round two - add 'source' and 'start' properties
// (widget targets only)
@@ -75,6 +78,7 @@
initRoundTwo('dbrowser');
initRoundTwo('dnotice');
initRoundTwo('dtable');
+ initRoundTwo('drowselect');
// return name of target to be called first (in main.js)
return 'demoMenu';