Skip to content

Commit 268447b

Browse files
author
robocoder
committed
Rintagi Community version R11.132.00313
Squashed commit of the following: commit d880d30b27f1f201f555a7f6fe41c0f7bd0ccac2 Author: robocoder <cs@robocoder.com> Date: Mon Mar 16 12:36:45 2020 -0700 add AGPL license.txt to web site for community version commit 32c61c8 Author: rcpro <gary.ng@robocoder.com> Date: Mon Mar 16 12:30:48 2020 -0700 community installer for R11.132.00313 commit 228f10c Author: gary <gary.ng@robocoder.com> Date: Fri Mar 13 14:53:26 2020 -0700 Squashed commit of the following: commit e80880a309b3755d04fc1de1bf478218e4fe6c3b Author: gary <gary.ng@robocoder.com> Date: Fri Mar 13 14:28:58 2020 -0700 SP changes for R11.132.00313 (mainly re-generated to support context info passing to GetLis and GetDdl by GetScreenLis* and GetScreenObjDdl*) , also include MimeType in GetDocList download commit cc79bb7b9ea4dd6663484253fa68b2a9172d98f0 Author: gary <gary.ng@robocoder.com> Date: Fri Mar 13 13:09:42 2020 -0700 enhanced react generator to support pull up controls commit 76df318f6cdac867b9657f500246f6c05dab007e Author: gary <gary.ng@robocoder.com> Date: Fri Mar 13 09:28:27 2020 -0700 add pullup support in web service layer commit c264474490debe025261461b1da0694ef71d31e4 Author: gary <gary.ng@robocoder.com> Date: Fri Mar 13 09:27:34 2020 -0700 enhance cascade field change handling in react(to pullup etc.) commit c51f8d1405d1153bfea5a410ec819a1359a199b9 Author: gary <gary.ng@robocoder.com> Date: Fri Mar 13 09:25:24 2020 -0700 add support for PullUp(referencing contents) in redux commit c3aa323a1fe6ea1c023dd581012d924667379054 Author: gary <gary.ng@robocoder.com> Date: Tue Mar 10 14:50:57 2020 -0700 enhance React generator to handle Signature and EncryptedTextBox control content commit 0081c7aa10e78751baddf59253c4a6547f06e0f1 Author: gary <gary.ng@robocoder.com> Date: Mon Mar 9 11:22:47 2020 -0700 not return 401 to avoid browser prompt(Safari and may be others), relies on return status='access_denied' in message(standard 200 content) commit 3869b6b900cc057f9abb3cff908f9040f5d7bead Author: gary <gary.ng@robocoder.com> Date: Mon Mar 9 09:43:23 2020 -0700 enhancement for React js(and generator change) to support multi-doc control(Document), fix typo for textbox criteria in react generator commit 772e04252045e5ddc69e91bd7a3d16efea2714e3 Author: gary <gary.ng@robocoder.com> Date: Thu Mar 5 15:08:42 2020 -0800 fixed react field validation when columnLength is 0(unlimited instead of 0) commit 57d2d81b15f40cef32407833aa6ddc83d92f7ccd Author: gary <gary.ng@robocoder.com> Date: Thu Mar 5 15:00:51 2020 -0800 revised react generator to handle reference column(and helper function in _ScreenReducer.js) commit 77110ce697286f1b843ae200540d3f3943e69375 Author: gary <gary.ng@robocoder.com> Date: Wed Mar 4 13:53:06 2020 -0800 suppress GetLastCriteria error from end user(React side) but report it as error logging(since this is not a critical issue, must review why the SP failed in this manner) , handle hidden column saving for web service side(relax validation rule on empty incoming value which is correct because content is invisible thus not output to client side) commit 852637baff96317de7b6f4a089de7da83cd630de Author: gary <gary.ng@robocoder.com> Date: Wed Mar 4 13:49:12 2020 -0800 revised generated ascx.cs and autocomplete.aspx.cs to output proper icon for embedded image field commit 495fa879d5b478f73423f85b0236f30e8c5f0c46 Author: gary <gary.ng@robocoder.com> Date: Wed Mar 4 13:47:55 2020 -0800 add helper function to decode embedded document JSON return(handle new list of file style in generated React code) commit 0ad1a4c245ed1a748d49f4aa858fc046f695a63e Author: gary <gary.ng@robocoder.com> Date: Tue Mar 3 13:03:04 2020 -0800 revise PS helper scripts for first time installation(add explanation and some refinement) commit ef752f27af82b64bc0d91413fa6148499f1bc078 Author: aaron xu <aaron.xu@robocoder.com> Date: Tue Mar 3 11:15:49 2020 -0800 generate multiline textbox, check DdlKeyColumnId with certain control types in both master and detail commit c95ce16729a7a852daf746dc64ae23361be64d23 Author: gary <gary.ng@robocoder.com> Date: Mon Mar 2 14:20:44 2020 -0800 changed Upload module to store JSON instead of raw content commit ff18376f87f545908b4db62bc94a71e3855b4d83 Author: gary <gary.ng@robocoder.com> Date: Mon Mar 2 08:43:02 2020 -0800 install nodejs 10 instead of blind lts(which changes from time to time) commit 0b4a660f9308b2fff97c3a4ec00f456a3a3cb3f2 Author: gary <gary.ng@robocoder.com> Date: Mon Mar 2 08:27:54 2020 -0800 choco MADE2010(access database engine runtime) now needs ignore-checksums as it is no longer validate due to url change at Microsoft. commit 341807d1923ee1618dc59e10032afe01847b14ca Author: gary <gary.ng@robocoder.com> Date: Mon Mar 2 08:26:41 2020 -0800 change node-sass to 4.12.0 as nodejs 12+ cannot handle 4.9.4, this also required windows build tools(for native c++ compilation as well as python) commit c01a7c75fe8577c8e1cdf0f6bedcf4ab6d3361c7 Author: gary <gary.ng@robocoder.com> Date: Mon Mar 2 08:25:19 2020 -0800 add windows-build-tools to dev tools helper setup(required for building npm native modules like node-sass) commit 4b3e2ff Author: gary <gary.ng@robocoder.com> Date: Sat Feb 29 11:35:09 2020 -0800 Squashed commit of the following: commit 1c52b27a95bcfa8b6a1ab7aa383bb298d294782c Author: gary <gary.ng@robocoder.com> Date: Fri Feb 28 19:53:30 2020 -0800 more example in using context data in screen filter commit 94e352cbfe9a87af6577fd27808013438f48f123 Author: aaron xu <aaron.xu@robocoder.com> Date: Fri Feb 28 11:09:40 2020 -0800 Listbox Control and related generation code commit 6275b7df15c43f252f2150be48b8ee136545b080 Author: gary <gary.ng@robocoder.com> Date: Thu Feb 27 13:49:27 2020 -0800 better auditing info on access deny error for ValidatedMstId web service call and further enhancement to the filterIdIsName usage commit f50d87821ef7b6eca9bb08ff9e43c8e4e2d3bd16 Author: gary <gary.ng@robocoder.com> Date: Thu Feb 27 09:42:32 2020 -0800 make autocomplete to honour new image button content format from React Side commit fa991e32612e8faf46d99998fae6e589714c6a5c Author: gary <gary.ng@robocoder.com> Date: Thu Feb 27 08:12:31 2020 -0800 pass context info to filter SQL and normalize generated SP with CR/LF instead of just CR(line break inconsistency) commit ffd985b02538442117759cfcb7d02dc5165f5c62 Author: gary <gary.ng@robocoder.com> Date: Thu Feb 27 08:01:18 2020 -0800 preserve LImpr content order during duplicate removal commit f74d65058fec3ae68f38dd802cdb5011afd78f17 Author: gary <gary.ng@robocoder.com> Date: Wed Feb 26 14:45:39 2020 -0800 enhancement to react fileinput.js commit ed94820c224a990ace33989720b4a585a9d43fb3 Author: gary <gary.ng@robocoder.com> Date: Wed Feb 26 13:23:38 2020 -0800 more react fileinput component handling for 'no-user activated' scenary commit aa57adea5c8c4f595a0f7b408295001497a26d03 Author: gary <gary.ng@robocoder.com> Date: Tue Feb 25 11:48:08 2020 -0800 choco install ps script needs to change to handle TLS 1.2 commit f871d13 Author: gary <gary.ng@robocoder.com> Date: Mon Feb 24 18:14:54 2020 -0800 Squashed commit of the following: commit 25b51ef60ee12ae99fe22b7af99f27aab67a7fa6 Author: gary <gary.ng@robocoder.com> Date: Mon Feb 24 16:08:23 2020 -0800 stop endless redirect of error(from Msg.aspx) and better checking of null value in Msg.ascx.cs(assumption not always held) commit a377a04042a0aff936a42ced5c8f97aefc16d7f6 Author: gary <gary.ng@robocoder.com> Date: Mon Feb 24 13:51:21 2020 -0800 web service validateMstId must cater for non-specific id(nothing or -1) when checking
1 parent ba23eb8 commit 268447b

File tree

379 files changed

+27449
-5588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

379 files changed

+27449
-5588
lines changed

Common3/Utils.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1705,7 +1705,11 @@ public static System.Security.SecureString ConvertToSecureString(string password
17051705
securePassword.MakeReadOnly();
17061706
return securePassword;
17071707
}
1708-
1708+
public static int ToUnixTime(DateTime time)
1709+
{
1710+
var utc0 = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
1711+
return (int)DateTime.SpecifyKind(time, DateTimeKind.Utc).Subtract(utc0).TotalSeconds;
1712+
}
17091713
public static void NeverThrow(Exception ex)
17101714
{
17111715
if (ex == null && ex != null) throw ex;

DeployExt/ROComPTYInstall.exe

1.84 MB
Binary file not shown.
Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
#visual studio code for quick code editing(cannot used to manage ASP.NET site, needs visual studio for that)
23
Write-Output "choco install vscode -y"
34
choco install vscode -y
45

@@ -8,8 +9,29 @@ choco install vscode -y
89
#Write-Output "choco install googlechrome -y"
910
#choco install googlechrome -y
1011

11-
Write-Output "choco install nodejs-lts -y"
12-
choco install nodejs-lts -y
12+
#Write-Output "choco install nodejs-lts -y"
13+
#choco install nodejs-lts -y
1314

15+
#stick to nodejs 10.x
16+
Write-Output "choco install nodejs --version=10.16.3 -y"
17+
choco install nodejs --version=10.16.3 -y
18+
19+
20+
21+
#force reloading of path after nodejs installation
22+
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
23+
24+
#below is a must for nodejs 12+ as node-sass require build from source instead of avaiable binary packages
25+
#Write-Output "npm install --global windows-build-tools"
26+
#npm install --global windows-build-tools
27+
28+
#git for windows
1429
Write-Output "choco install git -y"
15-
choco install git -y
30+
choco install git -y
31+
32+
#helpful and recommended even for non-developer BUT not really needed so here and not prerequesite
33+
#SQL Server Management Sutdio
34+
Write-Output "choco install sql-server-management-studio --version=14.0.17285.0 -y"
35+
choco install sql-server-management-studio --version=14.0.17285.0
36+
37+
Write-Output "You have to reboot for nodejs installation to be initialized properly"

DeploySetup/rintagi_machine_setup_install_prerequisite.ps1

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,32 +73,61 @@ If(!(test-path $path))
7373
#cmd /c mklink /j C:\SQLData D:\SQLData
7474
#cmd /c mklink /j C:\Backup D:\Backup
7575

76-
Write-Output "Installing software"
76+
Write-Output "Installing prerequisite software"
7777

78-
# missing
79-
Write-Output "choco install access2016runtime -y"
80-
choco install access2016runtime -y
78+
#MS oledb sql
79+
# source url
80+
# https://www.microsoft.com/en-us/download/details.aspx?id=56730
8181

8282
Write-Output "choco install msoledbsql -y"
8383
choco install msoledbsql -y
8484

85-
# microsoft access database engine 2016 with custom package
86-
#choco install made2016runtime -s="C:\ChocoPackages\made2016runtime" -y
87-
Write-Output "choco install made2010 -y"
88-
choco install made2010 -y
85+
# microsoft access database engine runtime(needs 2010+)
86+
# source url (2016)
87+
# https://www.microsoft.com/en-us/download/details.aspx?id=54920
88+
# or (2010)
89+
# https://www.microsoft.com/en-ca/download/details.aspx?id=13255
90+
91+
Write-Output "choco install access2016runtime -y"
92+
choco install access2016runtime -y
93+
94+
Write-Output "choco install made2010 --ignore-checksums -y "
95+
choco install made2010 --ignore-checksums -y
96+
97+
# SQL 2012 CLR types
98+
# source url
99+
# https://www.microsoft.com/en-us/download/details.aspx?id=35580
100+
89101
Write-Output "choco install SQL2012.ClrTypes --ignore-checksums -y"
90102
choco install SQL2012.ClrTypes --ignore-checksums -y
103+
104+
#MS SQL Report Viewer
105+
# source url(2015)
106+
# https://www.microsoft.com/en-us/download/details.aspx?id=45496
107+
# or
108+
# 2012
109+
# https://www.microsoft.com/en-ca/download/details.aspx?id=35747
110+
91111
Write-Output "choco install reportviewer2012 -y"
92112
choco install reportviewer2012 -y
113+
114+
# crystal report viewer runtime
115+
# source url
116+
# https://wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads
93117
Write-Output "choco install crystalreports2010runtime -y"
94118
choco install crystalreports2010runtime -y --install-arguments="'UPGRADE=1'"
95119

120+
# IIS urlrewrite module
121+
# source url
122+
# https://www.microsoft.com/en-ca/download/details.aspx?id=47337
123+
96124
Write-Output "choco install urlrewrite -y"
97125
choco install urlrewrite -y
126+
127+
# IIS Application Request Routing(proxying) 3.0
128+
# source url
129+
# https://www.microsoft.com/en-us/download/details.aspx?id=47333
98130
Write-Output "choco install iis-arr -y"
99131
choco install iis-arr -y
100132

101-
Write-Output "choco install sql-server-management-studio --version=14.0.17285.0 -y"
102-
choco install sql-server-management-studio --version=14.0.17285.0
103-
104133

DeploySetup/rintagi_machine_setup_install_sqlexpress.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
#Microsoft SQL Server Express edition
23
Write-Output "choco install sql-server-express -y"
34
choco install sql-server-express
45

React/Adm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
},
129129
"devDependencies": {
130130
"cpx": "1.5.0",
131-
"node-sass": "4.9.4",
131+
"node-sass": "4.12.0",
132132
"sass-loader": "6.0.7"
133133
},
134134
"jest": {

React/Adm/src/components/custom/ControlledPopover.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ export default class ControlledPopover extends Component {
4343
// }
4444

4545
render() {
46-
log.debug(this.state.popoverOpen);
4746
return (
4847
<span>
4948
<i

React/Adm/src/components/custom/FileInput.js

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ function getFile(file, index, options, success, state, setState) {
9797
var progress = false;
9898

9999
// debugger;
100-
log.debug(reader);
100+
// log.debug(reader);
101101

102102
reader.fileName = file.name;
103103

104104
reader.onloadstart = () => {
105-
log.debug('IM PROGRESSING!!!!');
105+
// log.debug('IM PROGRESSING!!!!');
106106
// success(index, {
107107
// fileName: reader.fileName,
108108
// width: '',
@@ -176,7 +176,7 @@ function getFile(file, index, options, success, state, setState) {
176176
});
177177

178178
setState({ progress: false });
179-
log.debug('IM FINISHED');
179+
//log.debug('IM FINISHED');
180180
}
181181
})
182182
};
@@ -194,7 +194,7 @@ function getFile(file, index, options, success, state, setState) {
194194
});
195195

196196
setState({ progress: false });
197-
log.debug('IM FINISHED');
197+
// log.debug('IM FINISHED');
198198
// _this.setState({ progress: false });
199199
// this.props.onChange({ name: file.name, mimeType: file.type, size: file.size, lastModified: file.lastModified, base64: reader });
200200
// this.props.onChange({ name: files[0].name, base64: reader });
@@ -235,7 +235,7 @@ class FileInputField extends Component {
235235
if (!prevState.files || !prevState.files.length) return { files: nextProps.files };
236236
const revisedFiles = (nextProps.files || []).reduce((a, o) => { a[o.DocId || o.fileName] = o; return a; }, {});
237237

238-
log.debug(prevState);
238+
// log.debug(prevState);
239239

240240
const x = [
241241
...prevState.files.map(o => ({
@@ -278,7 +278,7 @@ class FileInputField extends Component {
278278
value.preventDefault();
279279
// convert files to an array
280280
const files = [...value.target.files];
281-
log.debug(files);
281+
// log.debug(files);
282282

283283
const _this = this;
284284

@@ -313,7 +313,7 @@ class FileInputField extends Component {
313313
// return;
314314
}
315315
else {
316-
log.debug(x, existingCount, file);
316+
// log.debug(x, existingCount, file);
317317
const newFile = { ...file, ts: actionTimeStamp + 1 };
318318
fileList[existingCount + i] = newFile;
319319
newFiles.push(newFile);
@@ -322,7 +322,7 @@ class FileInputField extends Component {
322322
}
323323
if (fileCount === x && typeof _this.props.onChange === "function") {
324324
// newFiles = newFile.filter(f => f);
325-
log.debug(_this.state.files);
325+
// log.debug(_this.state.files);
326326
_this.setState({ files: _this.state.files.filter(f => f && f.base64) });
327327
_this.props.onChange(fileList.filter(f => f), _this.props.name || (_this.props.field || {}).name, { fieldname: this.props.fieldname, listidx: _this.props.listidx, fieldpath: _this.props.fieldpath });
328328
if (typeof this.props.onAdd === "function" && this.props.multiple) {
@@ -349,6 +349,22 @@ class FileInputField extends Component {
349349
});
350350
};
351351

352+
downloadFile = i => () => {
353+
const _this = this;
354+
const currentUrlTitle = document.getElementsByTagName("title")[0].innerHTML;
355+
const selectedFile = this.props.multiple ? this.state.files.sort((a, b) => a.DocId - b.DocId)[i] : this.state.files.sort((a, b) => a.DocId - b.DocId)[0];
356+
const envPublicUrl = process.env.PUBLIC_URL;
357+
const isIE = window.navigator && window.navigator.msSaveOrOpenBlob && false;
358+
const isImage = (/image/i).test((selectedFile || {}).mimeType);
359+
360+
if (typeof this.props.onClick === "function" && !selectedFile.base64) {
361+
this.props.onClick(selectedFile);
362+
}
363+
else {
364+
log.debug('no content file selected document', selectedFile);
365+
};
366+
367+
}
352368
previewSelectedFile = i => () => {
353369
// must open window during the click event and not in the promise, browser security prevent that from happening
354370
const _this = this;
@@ -457,11 +473,11 @@ class FileInputField extends Component {
457473
// }
458474

459475
removeSelectedFile = i => (event) => {
460-
log.debug(event.target.value);
461-
log.debug(i);
476+
// log.debug(event.target.value);
477+
// log.debug(i);
462478
// const sortedFiles = this.state.files.sort((a, b) => a.DocId - b.DocId);
463479
const file = this.state.files.sort((a, b) => a.DocId - b.DocId)[i];
464-
log.debug(this.state.files)
480+
// log.debug(this.state.files)
465481

466482
this.state.files.splice(i, 1);
467483
this.setState({
@@ -474,7 +490,7 @@ class FileInputField extends Component {
474490
this.props.onDelete(file)
475491
.then(
476492
(result) => {
477-
log.debug('remove file result', result)
493+
//log.debug('remove file result', result)
478494
}
479495
)
480496
.catch(error => {
@@ -483,7 +499,7 @@ class FileInputField extends Component {
483499
}
484500

485501
const fileInput = document.getElementsByName(this.props.name || (this.props.field || {}).name)[0];
486-
log.debug(fileInput);
502+
// log.debug(fileInput);
487503
fileInput.value = '';
488504
// log.debug(fileInput);
489505

@@ -539,7 +555,7 @@ class FileInputField extends Component {
539555
// })
540556

541557
// const fileInfo = this.props.value || {};
542-
const mimeType = (this.state.files[0] || {}).mimeType;
558+
const mimeType = ((this.state.files || [])[0] || {}).mimeType;
543559
const options = this.props.options || {};
544560
// const inPlaceImg = ((this.state.files[0] || {}).mimeType || '').startsWith('image/') || true;
545561
// const fileContent = ((this.state.files[0] || {}).base64 || '').startsWith('data:') ? '' : 'data:' + mimeType + ';base64,' + ((this.state.files[0] || {}).base64 || '');
@@ -563,14 +579,14 @@ class FileInputField extends Component {
563579
const abc = {
564580
...o, previewUrl: o.previewUrl || ("data:" + o.mimeType + ";base64," + o.base64),
565581
}
566-
log.debug(abc);
582+
// log.debug(abc);
567583
return abc;
568584
}
569585

570586
const maxAllowed = (this.props.options || {}).maxFileCount;
571587
const filesAmount = (this.state.files || {}).length;
572588

573-
log.debug(maxAllowed, filesAmount);
589+
// log.debug(maxAllowed, filesAmount);
574590

575591
return (
576592
<div className="wth-100">
@@ -626,7 +642,9 @@ class FileInputField extends Component {
626642
.map((obj, i) => {
627643
return (
628644
<div className="dropzone__holder" key={i}>
629-
<div className={`dropzone__img pointer ${this.props.disabled && 'rad-4 mb-20'}`} style={{ backgroundImage: 'url(' + addPreviewUrl(obj).previewUrl + ')' }} onClick={this.previewSelectedFile(i)}>
645+
<div className={`dropzone__img pointer ${this.props.disabled && 'rad-4 mb-20'}`}
646+
style={{ minWidth: "40px", minHeight: "40px", backgroundImage: 'url(' + addPreviewUrl(obj).previewUrl + ')' }}
647+
onClick={(obj || {}).base64 || (obj || {}).icon ? this.previewSelectedFile(i) : this.downloadFile(i)} >
630648
{(!(obj || {}).base64 && !(obj || {}).icon) && <Skeleton height="100px" widthRandomness="0" />}
631649
{obj && !(obj.mimeType || '').match(/image/) &&
632650
<i className={`fa ${this.icon(i)} fs-38 color-green`}></i>

0 commit comments

Comments
 (0)