]> lifelog.hopto.org Git - LifeLog.git/commitdiff
Impl. the buffered rtf document storing & loading.
authorwbudic <redacted>
Sat, 14 Aug 2021 04:40:19 +0000 (14:40 +1000)
committerwbudic <redacted>
Sat, 14 Aug 2021 04:40:19 +0000 (14:40 +1000)
.gitignore
Current Development Check List.md
htdocs/cgi-bin/main.cgi
htdocs/cgi-bin/wsrc/main.css
htdocs/cgi-bin/wsrc/main.js

index 8f15f5f343249d1c273484879320376a62b702dd..d0bfbb6e0058f1970dfee20b476f4d53f10d8a7f 100644 (file)
@@ -10,6 +10,8 @@
 *.pid
 *.log
 *.osz
+*.swm
+*.swn
 cgisess_*
 .DS_Store
 .idea
index aa9a4af54d01be18846006f8edaf656f00ec4b3f..354661344c98b50c50b8a9be73177f750ae54cdd 100644 (file)
@@ -6,10 +6,15 @@
 
 ### New Development
 
+* &#10004; RTF load of the zero document if present. When RTF attaching to a new log, you can save the rtf,
+  it is called a zero document (not assigned), as the log hasn't been saved yet. This reload can be useful, as it is always stored...
 * &#10004; Implement backup/restore on Pg based data. Restore only partially works from older backup.
 * &#10004; Bug 35. SQL migration, version update, not working for PG based databases.
 * &#10004; JS - Event, on expense sum in log numbers found at beginning of lines.
 * &#10004; Update to CNF v.2.2, branch to $RELEASE_VER = 2.3, Earth Stage initial.
+  
+#### Not Urgent New Development ( In Planning
+
 * Plugins
   * Perl files enabled by being including them in main.cnf file under the <<PLUGINS<>>> list, and placed in the plugins directory.
   * This plugin perl file is then be executed, to provide auto installation and checks.
index c085461c2ce4c884555a5d5adc03eaa43b3944d6..6edf73ad71ff8e4474360d67326c501dc3002b42 100755 (executable)
@@ -83,7 +83,7 @@ my $BGCOL       = Settings::bgcol();
 #Set to 1 to get debug help. Switch off with 0.
 my $DEBUG       = Settings::debug();
 #END OF SETTINGS
-
+my $rtf_buffer = 0;
 my $BUFFER;
 sub toBuf {
     $BUFFER .= shift;        
@@ -751,7 +751,7 @@ $log_output .= <<_TXT;
 <tr class="r0" id="brw_row"><td colspan="2" style="font-size:small;text-align:left;">Show All hidden &#10132;
 <a id="menu_close" href="#" onclick="return showAll();"><span  class="ui-icon ui-icon-heart" style="float:none;"></span></a>
 
-<a href="#top">&#x219F;</a></td>
+<a id="to_bottom" href="#top" title="Go to top of page.">&#8613;</a></td>
 <td colspan="4" align="right" style="margin:5px;">
     <input type="hidden" name="opr" id="opr" value="0"/>
     <input type="submit" value="Sum" onclick="return sumSelected()"/>&nbsp;
@@ -765,7 +765,6 @@ $log_output .= <<_TXT;
     <input type="submit" value="Print" onclick="return viewSelected()"/>&nbsp;
     <input id="del_sel" type="submit" value="Delete" onclick="display('Please Wait!')"/>
     </span>
-
 </td></tr>
 </TABLE></FORM>
 _TXT
@@ -785,9 +784,11 @@ $log_output .= qq(<form id="frm_srch" action="main.cgi"><TABLE class="tbl" borde
     my $frm = qq(<a name="top"></a>
 <form id="frm_entry" action="main.cgi" onSubmit="return formValidation();">
        <table class="tbl" border="0" width=").&Settings::pagePrcWidth.qq(%">
-       <tr class="r0"><td colspan="3"><b>* LOG ENTRY FORM *</b>
-    <a id="log_close" href="#" onclick="return hide('#div_log');">$sp1</a>
-    <a id="log_close" href="#" onclick="return toggle('#div_log .collpsd');">$sp2</a>
+       <tr class="r0">
+    <td style="text-align:left;"><a id="to_bottom" href="#bottom" title="Go to bottom of page.">&#8615;</a></td>
+    <td colspan="2"><b>* LOG ENTRY FORM *</b>
+        <a id="log_close" href="#" onclick="return hide('#div_log');">$sp1</a>
+        <a id="log_close" href="#" onclick="return toggle('#div_log .collpsd');">$sp2</a>
     </td></tr>
        <tr class="collpsd">
        <td style="text-align:right; vertical-align:top; width:10%;">Date:</td>
@@ -797,9 +798,7 @@ $log_output .= qq(<form id="frm_srch" action="main.cgi"><TABLE class="tbl" borde
        &nbsp;<button type="button" onclick="return setNow();">Now</button>
                        &nbsp;<button type="reset"  onclick="setNow();resetDoc(); return true;">Reset</button>
 
-
                 <span id="cat_desc" name="cat_desc">Enter log...</span>
-
             
                        &nbsp;&nbsp;&nbsp;Category:&nbsp;
             
@@ -817,7 +816,8 @@ $log_output .= qq(<form id="frm_srch" action="main.cgi"><TABLE class="tbl" borde
                        <textarea id="el" name="log" rows="3" style="float:left; width:99%;" onChange="toggleVisibility('cat_desc',true)"></textarea>
                </td>
        </tr>
-       <tr class="collpsd"><td style="text-align:right"><a id="to_bottom" href="#bottom" title="Go to bottom of page.">&#x21A1;</a>&nbsp;Amount:</td>
+       <tr class="collpsd" style="text-align:right; vertical-align:top;">
+        <td>Amount:</td></span>
                <td id="al">
                        <input id="am" name="am" type="text">&nbsp;
             Marks as:
@@ -826,12 +826,19 @@ $log_output .= qq(<form id="frm_srch" action="main.cgi"><TABLE class="tbl" borde
                 <option value="1">Income</option>
                 <option value="2">Expense</option>
             </select>&nbsp;
-            RTF Attach <input id="RTF" name="rtf" type="checkbox" onclick="return toggleDoc(true);"/> 
-            Sticky <input id="STICKY" name="sticky" type="checkbox"/>
+            <span style="padding:5px; marging:10px; display:inline-block;">
+                <span>
+                    RTF Attach <input id="RTF" name="rtf" type="checkbox" onclick="return toggleDoc(true);"/></span>
+                <span>
+                    Sticky <input id="STICKY" name="sticky" type="checkbox"/>
+                </span>
+            </span>
                </td>
                <td align="right">
                 <span id="sss_status"></span>&nbsp;
-                               <input id="log_submit" type="submit" onclick="return saveRTF(-1, 'store');" value="Submit"/>
+                <span style="padding:5px; marging:10px; display:inline-block;">
+                               <input id="log_submit" type="submit" onclick="return saveRTF(-1, 'store');" value="Submit"/>
+                </span>
                </td>
        </tr>
        <tr class="collpsd"><td colspan="3"></td></tr>
@@ -845,6 +852,7 @@ $log_output .= qq(<form id="frm_srch" action="main.cgi"><TABLE class="tbl" borde
        <input type="hidden" name="rs_page" value="$rs_page"/>
        <input type="hidden" name="CGISESSID" value="$sid"/>
     <input type="hidden" id="isInViewMode" value="$isInViewMode"/>
+    <input type="hidden" id="rtf_buffer" value="$rtf_buffer"/>
        $tags
     </form>
        );
@@ -1079,6 +1087,7 @@ sub processSubmit {
     my $sticky = $cgi->param('sticky');
     my $stm;
     my $SQLID = 'rowid'; 
+    my @gzero;
 
     if($rtf eq 'on'){$rtf = 1}  else {$rtf = 0}
     if($sticky eq 'on'){$sticky = 1} else {$sticky = 0}           
@@ -1200,6 +1209,8 @@ try {
                 }
                 Settings::renumerate($db) if ( $dtCur > $dt );
             }
+            if(!@gzero){$st = traceDBExe('SELECT DOC FROM NOTES WHERE LID = 0;');@gzero = $st->fetchrow_array()}            
+            $rtf_buffer = 1 if $gzero[0];
 }
  catch {
 
@@ -1444,7 +1455,9 @@ return qq(
   </div>
   <div id="editor-container" style="$height"></div>
   <div class="save_button">
-  <input type="button" id="btn_save_doc" onclick="saveRTF(0, 'store'); return false;" value="Save"/>
+    <input type="button" id="btn_zero_doc" onclick="loadRTF(false, 0); return false;" value="Load Buffered"/>
+    <input type="button" id="btn_load_doc" onclick="loadRTF(false, -1); return false;" value="Load"/>
+    <input type="button" id="btn_save_doc" onclick="saveRTF(0, 'store'); return false;" value="Save"/>
   </div>
   </td></tr></table>
 )}
index f960317d4e4efa4b3ee00509006090e5de16ca0e..bb3d495926ed0fc187afb4108d5d47d86a16fdba 100644 (file)
@@ -283,18 +283,17 @@ img {
 .midnight{
     color:midnightblue;
 }
-
-
 a:link {
  color:#5b06fa;
 }
 a:visited {
- color: #065bfa;
+ color: #2d7081;
 }
 
 a:hover {
     color: #2d7081;
-    font-style: oblique;
+    font-style:normal;    
+    font-size: x-large;
 }
 
 #sss_status{
index d61ac3caa65bbed89a1e0a778f62c439de42bef6..d1f69f19b5c8b442805825685151997eeb9ad5e0 100644 (file)
@@ -15,6 +15,7 @@ var DEF_BACKGROUND = 'white';
 
 var RTF_DOC_RESIZED = false;
 var RTF_DOC_ORIG;
+var RTF_DOC_CUR_ID;
 var TIME_STAMP;
 var LOCALE;
 var TIMEZONE; 
@@ -23,6 +24,8 @@ var DBI_LVAR_SZ;
 function onBodyLoadGeneric() {
     $("input[type=submit], input[type=reset], .ui-widget-content, button, .a_").button();
     $("#btn_save_doc").button();
+    $("#btn_zero_doc").button(); if($("rtf_buffer").val()==0){$("#btn_zero_doc").hide()};
+    $("#btn_load_doc").button(); $("#btn_load_doc").hide();
     if(!LOCALE || LOCALE==="English"){
         LOCALE = "en-US";
     }
@@ -387,7 +390,6 @@ function onBodyLoad(toggle, locale, tz, today, expires, rs_cur, log_limit) {
             source: AUTOWORDS
             });
     });
-
     display("Log page is ready!");    
 }
 
@@ -570,8 +572,12 @@ function edit(row) {
 
     if(isRTF){
         display("Loading RTF: "+ ed_v.val() );
+        RTF_DOC_CUR_ID = row;
         loadRTF(false, row);
-    }else{display("Editing: "+ ed_v.val(),3);}
+    }else{
+        display("Editing: "+ ed_v.val(),3);
+        RTF_DOC_CUR_ID = 0;
+    }
 
     //Select category
     var ec_lb = $("#c" + row).text();
@@ -685,11 +691,10 @@ function resizeDoc() {
 
 }
 function resetDoc(){
-    if (RTF_SET) {
-        QUILL.setText("");
-    }
+    if (RTF_SET) { QUILL.setText(""); }
     $("#submit_is_edit").val("0");
     toggleDoc(true);
+    $('#btn_load_doc').hide();
 }
 
 
@@ -1050,7 +1055,7 @@ var RTF_SUBMIT = false;
 function saveRTF(id, action) {
     // alert(JSON.stringify(QUILL.getContents()));
 
-    //Strip ammount to show plain number.
+    //Strip amount to show plain number.
        var am = $("#am").val().trim();
            am = am.replace(/[^\d\.]/g,"");
        $("#am").val(am);
@@ -1064,28 +1069,40 @@ function saveRTF(id, action) {
     }
     RTF_SUBMIT = true;
     var bg = $("#fldBG").val();
-    $.post('json.cgi', {action:'store', id:id, bg:bg, doc: JSON.stringify(QUILL.getContents())},saveRTFResult).fail(
-        function(response) {dialogModal("Server Error: "+response.status,response.responseText);});
-    if(is_submit){
-        //we must wait before submitting actual form!
+    $.post('json.cgi', {action:'store', id:id, bg:bg, doc: JSON.stringify(
+            QUILL.getContents())},saveRTFResult).fail(
+                 function(response) {dialogModal("Server Error: "+response.status,response.responseText);}
+                                                 );
+    if(is_submit){        
         $("#idx_cat").value = "SAVING DOCUMENT...";
         $("#idx_cat").show();
+        //we must wait before submitting actual form!
         setTimeout(delayedSubmit, 200);
     }
     return false;
 }
 
 function saveRTFResult(result) {    
-    console.log("Result->" + result);
-    var obj = JSON.parse(result);
-    //alert(obj.response);
+    //console.log("Result->" + result);
+    var json = JSON.parse(result);    
     $("html, body").animate({ scrollTop: 0 }, "fast");
-    display(obj.response);
-    if(obj.log_id>0){
+    
+    let msg = json.response;
+    if(json.log_id==0){
+        console.log(msg = "Saved to Buffer");  
+
+    }else{
+        console.log(msg = "Saved document by lid -> "+json.log_id);        
+    }
+    display(msg, 5);
+
+    if(json.log_id>0){
         //update under log display
-        if($("#q-rtf"+obj.log_id).is(":visible")){
-            loadRTF(true, obj.log_id);
+        if($("#q-rtf"+json.log_id).is(":visible")){
+            loadRTF(true, json.log_id);
         }
+    }else{
+        $('#btn_zero_doc').show();
     }
     RTF_SUBMIT = false;
 }
@@ -1104,13 +1121,10 @@ function loadRTF(under, id){
     //show under log entry the document
     if(under){
 
-
         if($("#q-rtf"+id).is(":visible")){
             $("#q-rtf"+id).hide();
             return false;
         }
-
-
         QUILL_PNL = new Quill('#q-container'+id, {
             scrollingContainer: '#q-scroll'+id,
             placeholder: 'Loading Document...',
@@ -1123,8 +1137,10 @@ function loadRTF(under, id){
         return false;
     }
 
-    //var json = "[{'insert': 'Loading Document...', 'attributes': { 'bold': true }}, {'insert': '\n'}]";
-    //console.log("Query json.cgi action -> load, id:" + id);
+    if(id==-1){
+       id = RTF_DOC_CUR_ID; // btn_load_rtf clicked
+    }
+
     QUILL.setText('Loading Document...\n');    
     $.post('json.cgi', {action:'load', id:id}, loadRTFResult).fail(
            function(response) {dialogModal("Server Error: "+response.status,response.responseText);}
@@ -1142,7 +1158,7 @@ function loadRTFPnlResult(content, result, prms) {
 }
 
 function loadRTFResult(content, result, prms, quill) {
-    //console.log("Result->" + content);
+    
     var json = JSON.parse(content);
     if(!quill)quill=QUILL;
 
@@ -1157,8 +1173,16 @@ function loadRTFResult(content, result, prms, quill) {
         var css = $("#q-scroll"+id).prop('style');
         if(css){css.backgroundColor = json.content.bg;}
     }
-    display(json.response, 5);
-    //alert(obj.response);
+
+    let msg = json.response;
+    if(json.log_id==0){
+        console.log(msg = "Loaded in Buffer");
+        $('#btn_zero_doc').show();                
+    }else{
+        console.log(msg = "Loaded in document by lid -> "+json.log_id);
+        $('#btn_load_doc').show();
+    }
+    display(msg, 5);    
 }